MCPcopy
hub / github.com/wavetermdev/waveterm / RecvData

Method RecvData

pkg/streamclient/streamreader.go:48–80  ·  view source on GitHub ↗
(dataPk wshrpc.CommandStreamData)

Source from the content-addressed store, hash-verified

46}
47
48func (r *Reader) RecvData(dataPk wshrpc.CommandStreamData) {
49 r.lock.Lock()
50 defer r.lock.Unlock()
51
52 if r.closed || r.eof || r.err != nil {
53 return
54 }
55
56 if dataPk.Id != r.id {
57 return
58 }
59
60 // error packets can be sent without a valid Seq, so check for errors before validating sequence
61 if dataPk.Error != "" {
62 r.err = fmt.Errorf("stream error: %s", dataPk.Error)
63 r.cond.Broadcast()
64 r.sendAckLocked(true, false, "")
65 return
66 }
67
68 if dataPk.Seq < r.nextSeq {
69 return
70 }
71 if dataPk.Seq > r.nextSeq {
72 r.addOOOPacketLocked(dataPk)
73 return
74 }
75
76 r.recvDataOrderedLocked(dataPk)
77 r.processOOOPacketsLocked()
78 r.cond.Broadcast()
79 r.sendAckLocked(r.eof, false, "")
80}
81
82func (r *Reader) recvDataOrderedLocked(dataPk wshrpc.CommandStreamData) {
83 if dataPk.Data64 != "" {

Callers 11

TestBasicReadWriteFunction · 0.95
TestEOFFunction · 0.95
TestFlowControlFunction · 0.95
TestErrorFunction · 0.95
TestCancelFunction · 0.95
TestMultipleWritesFunction · 0.95
TestOutOfOrderPacketsFunction · 0.95
TestOutOfOrderWithGapsFunction · 0.95
TestOutOfOrderWithEOFFunction · 0.95
handleStreamDataMethod · 0.45

Calls 4

sendAckLockedMethod · 0.95
addOOOPacketLockedMethod · 0.95
recvDataOrderedLockedMethod · 0.95

Tested by 10

TestBasicReadWriteFunction · 0.76
TestEOFFunction · 0.76
TestFlowControlFunction · 0.76
TestErrorFunction · 0.76
TestCancelFunction · 0.76
TestMultipleWritesFunction · 0.76
TestOutOfOrderPacketsFunction · 0.76
TestOutOfOrderWithGapsFunction · 0.76
TestOutOfOrderWithEOFFunction · 0.76