MCPcopy Create free account
hub / github.com/JoshuaDoes/tensor-usbdl / WriteMsg

Method WriteMsg

dnw.go:206–271  ·  view source on GitHub ↗
(msg *Message)

Source from the content-addressed store, hash-verified

204 return dnw.WriteMsg(NewMessage(cmd.Bytes()))
205}
206func (dnw *DNW) WriteMsg(msg *Message) error {
207 dnw.mutex.Lock()
208 defer dnw.mutex.Unlock()
209 if dnw.Closed() {
210 return fmt.Errorf("dnw: closed")
211 }
212
213 p := msg.Bytes()
214
215 /*r := dnw.buffer.Reference()
216 defer r.Close()
217 r.Seek(0, io.SeekEnd) //Seek to the end of the buffer to only process new responses after writing each block*/
218
219 //Write on loop until the end of message or error
220 blockSize := 10240
221 left := blockSize
222 wrote := 0
223 for {
224 if dnw.Closed() {
225 return fmt.Errorf("dnw: closed but only wrote %d/%d bytes", wrote, len(p))
226 }
227
228 /*msg, err := dnw.readMsg(r)
229 if err != nil {
230 return fmt.Errorf("dnw: failed to read message after writing %d/%d bytes: %v", wrote, len(p), err)
231 }
232 if msg != nil {
233 switch msg.Command() {
234 case "C":
235 return fmt.Errorf("dnw: %s control received after writing %d/%d bytes", msg.Command(), wrote, len(p))
236 case "\x00":
237 return fmt.Errorf("dnw: 0x%0X control received after writing %d/%d bytes", msg.Command(), wrote, len(p))
238 case "eub":
239 switch msg.SubCommand() {
240 case "req":
241 return fmt.Errorf("dnw: new request received after writing %d/%d bytes", wrote, len(p))
242 case "ack":
243 return fmt.Errorf("dnw: ack received after writing %d/%d bytes", wrote, len(p))
244 case "nak":
245 return fmt.Errorf("dnw: nak received after writing %d/%d bytes", wrote, len(p))
246 }
247 }
248 fmt.Printf("dnw: received message after writing %d/%d bytes: %s\n", wrote, len(p), msg.String())
249 }*/
250
251 //Keep leftover bytes within msg bounds
252 if wrote+left >= len(p) {
253 left -= (wrote + left) - len(p)
254 }
255
256 n, err := dnw.write(p[wrote : wrote+left])
257 wrote += n
258 if err != nil {
259 return fmt.Errorf("dnw: failed to write after %d/%d bytes: %v", wrote, len(p), err)
260 }
261 if wrote >= len(p) {
262 break
263 }

Callers 1

WriteCmdMethod · 0.95

Calls 3

ClosedMethod · 0.95
writeMethod · 0.95
BytesMethod · 0.45

Tested by

no test coverage detected