func()

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()
	}
}