// NewZipkinTraceReporter returns a zipkin trace reporter that submits span to tcollector service. func NewZipkinTraceReporter(ch *tc.Channel) *ZipkinTraceReporter { thriftClient := thrift.NewClient(ch, tcollectorServiceName, nil) client := tcollector.NewTChanTCollectorClient(thriftClient) // create the goroutine method to actually to the submit Span. reporter := &ZipkinTraceReporter{ tchannel: ch, client: client, c: make(chan zipkinData, chanBufferSize), logger: ch.Logger(), } go reporter.zipkinSpanWorker() return reporter }
// NewTCollectorReporter return trace reporter that submits span to TCollector. func NewTCollectorReporter(ch *tc.Channel) *TCollectorReporter { thriftClient := thrift.NewClient(ch, tcollectorServiceName, nil) client := tcollector.NewTChanTCollectorClient(thriftClient) curHostIP, err := tc.ListenIP() if err != nil { ch.Logger().WithFields(tc.ErrField(err)).Warn("TCollector TraceReporter failed to get IP.") curHostIP = net.IPv4(0, 0, 0, 0) } // create the goroutine method to actually to the submit Span. reporter := &TCollectorReporter{ tchannel: ch, client: client, c: make(chan tc.TraceData, chanBufferSize), logger: ch.Logger(), curHostIP: inetAton(curHostIP.String()), } go reporter.worker() return reporter }