MCPcopy Create free account
hub / github.com/DOSNetwork/core / readFrom

Function readFrom

p2p/client.go:570–608  ·  view source on GitHub ↗

read shold not be called in multiple go routine

(conn net.Conn)

Source from the content-addressed store, hash-verified

568
569//read shold not be called in multiple go routine
570func readFrom(conn net.Conn) (buffer []byte, err error) {
571 // Read until all header bytes have been read.
572 header := make([]byte, headerSize)
573 // Read until all header bytes have been read.
574 bytesRead, totalBytesRead := 0, 0
575 //TestPoint
576 //conn.Close()
577 for totalBytesRead < headerSize && err == nil {
578 if bytesRead, err = conn.Read(header[totalBytesRead:]); err != nil {
579 err = errors.Errorf("conn read header: %w", err)
580 return
581 }
582 totalBytesRead += bytesRead
583 }
584
585 // Decode message size.
586 size := binary.BigEndian.Uint32(header)
587 header = nil
588 //TestPoint
589 //size = msgSizeLimit + 1
590 if size > msgSizeLimit || size <= 0 {
591 err = errors.Errorf("SizeLimit %d size %d: %w", msgSizeLimit, size, ErrMsgOverSize)
592 return
593 }
594
595 // Read until all message bytes have been read.
596 buffer = make([]byte, size)
597 contentBytesRead, totalContentBytesRead := 0, 0
598 //TestPoint
599 //conn.Close()
600 for totalContentBytesRead < int(size) && err == nil {
601 if contentBytesRead, err = conn.Read(buffer[totalContentBytesRead:]); err != nil {
602 err = errors.Errorf("conn read content: %w", err)
603 return
604 }
605 totalContentBytesRead += contentBytesRead
606 }
607 return
608}
609
610func (c *client) reportError(err error) {
611 select {

Callers 2

receiveIDMethod · 0.85
readPipeMethod · 0.85

Calls 1

ReadMethod · 0.45

Tested by

no test coverage detected