in xray/default_emitter.go [60:90]
func (de *DefaultEmitter) Emit(seg *Segment) {
defer func() {
if r := recover(); r != nil {
logger.Errorf("Panic emitting segment: %s\n%s", r, string(debug.Stack()))
}
}()
HeaderBytes := []byte(Header)
if seg == nil || !seg.ParentSegment.Sampled {
return
}
for _, p := range packSegments(seg, nil) {
logger.Debug(string(p))
de.Lock()
if de.conn == nil {
if err := de.refresh(de.addr); err != nil {
de.Unlock()
return
}
}
_, err := de.conn.Write(append(HeaderBytes, p...))
if err != nil {
logger.Error(err)
}
de.Unlock()
}
}