func (cs *CollectorServer) handleConn(conn net.Conn) (err error) { defer func() { if err != nil { cs.log().Printf("Client %s: %s", conn.RemoteAddr(), err) } }() defer conn.Close() rdr := pio.NewDelimitedReader(conn, maxMessageSize) defer rdr.Close() for { p := &wire.CollectPacket{} if err = rdr.ReadMsg(p); err != nil { if err == io.EOF { return nil } return fmt.Errorf("ReadMsg: %s", err) } spanID := spanIDFromWire(p.Spanid) if cs.Debug || cs.Trace { cs.log().Printf("Client %s: received span %v with %d annotations", conn.RemoteAddr(), spanID, len(p.Annotation)) } if cs.Trace { for i, ann := range p.Annotation { cs.log().Printf("Client %s: span %v: annotation %d: %s=%q", conn.RemoteAddr(), p.Spanid.Span, i, *ann.Key, ann.Value) } } if err = cs.c.Collect(spanID, annotationsFromWire(p.Annotation)...); err != nil { return fmt.Errorf("Collect %v: %s", spanID, err) } } }
func TestVarintNoClose(t *testing.T) { buf := bytes.NewBuffer(nil) writer := io.NewDelimitedWriter(buf) reader := io.NewDelimitedReader(buf, 1024*1024) if err := iotest(writer, reader); err != nil { t.Error(err) } }
func TestVarintError(t *testing.T) { buf := newBuffer() buf.Write([]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}) reader := io.NewDelimitedReader(buf, 1024*1024) msg := &test.NinOptNative{} err := reader.ReadMsg(msg) if err == nil { t.Fatalf("Expected error") } }
//issue 32 func TestVarintMaxSize(t *testing.T) { buf := newBuffer() writer := io.NewDelimitedWriter(buf) reader := io.NewDelimitedReader(buf, 20) if err := iotest(writer, reader); err != goio.ErrShortBuffer { t.Error(err) } else { t.Logf("%s", err) } }
func TestVarintNormal(t *testing.T) { buf := newBuffer() writer := io.NewDelimitedWriter(buf) reader := io.NewDelimitedReader(buf, 1024*1024) if err := iotest(writer, reader); err != nil { t.Error(err) } if !buf.closed { t.Fatalf("did not close buffer") } }
func (ids *IDService) ResponseHandler(s inet.Stream) { defer s.Close() c := s.Conn() r := ggio.NewDelimitedReader(s, 2048) mes := pb.Identify{} if err := r.ReadMsg(&mes); err != nil { return } ids.consumeMessage(&mes, c) log.Debugf("%s received message from %s %s", ID, c.RemotePeer(), c.RemoteMultiaddr()) }