skipping pushing message to client if there are no messages; fixes flaky test and de-intensifies read loop
This commit is contained in:
@@ -92,8 +92,9 @@ func (ch *CaddyHugo) handleConn(conn DeltaConn, doc *docref) (int, error) {
|
|||||||
wroteMessagesCh := make(chan Message, 2)
|
wroteMessagesCh := make(chan Message, 2)
|
||||||
|
|
||||||
client := doc.doc.Client(acedoc.DeltaHandlerFunc(func(ds []acedoc.Delta) error {
|
client := doc.doc.Client(acedoc.DeltaHandlerFunc(func(ds []acedoc.Delta) error {
|
||||||
wroteMessagesCh <- Message{Deltas: ds}
|
m := ch.Message(ds...)
|
||||||
return conn.WriteJSON(ch.Message(ds...))
|
wroteMessagesCh <- m
|
||||||
|
return conn.WriteJSON(m)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
ch.mtx.Lock()
|
ch.mtx.Lock()
|
||||||
@@ -119,6 +120,11 @@ func (ch *CaddyHugo) handleConn(conn DeltaConn, doc *docref) (int, error) {
|
|||||||
}
|
}
|
||||||
ch.ObserveLTime(message.LTime)
|
ch.ObserveLTime(message.LTime)
|
||||||
|
|
||||||
|
if len(message.Deltas) == 0 {
|
||||||
|
time.Sleep(10 * time.Microsecond)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
err = client.PushDeltas(message.Deltas...)
|
err = client.PushDeltas(message.Deltas...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errCh <- err
|
errCh <- err
|
||||||
|
|||||||
+1
-1
@@ -233,7 +233,7 @@ func TestDeltasDouble(t *testing.T) {
|
|||||||
// send the second message, via clientB
|
// send the second message, via clientB
|
||||||
clientB.ReceiveJSON(w.CH.Message(acedoc.Insert(0, 0, "b")))
|
clientB.ReceiveJSON(w.CH.Message(acedoc.Insert(0, 0, "b")))
|
||||||
|
|
||||||
time.Sleep(200 * time.Millisecond)
|
time.Sleep(400 * time.Millisecond)
|
||||||
|
|
||||||
clientA.mtx.Lock()
|
clientA.mtx.Lock()
|
||||||
clientB.mtx.Lock()
|
clientB.mtx.Lock()
|
||||||
|
|||||||
Reference in New Issue
Block a user