package Ġch . max ant . k dc . mf . library Ċ Ċ import Ġch . max ant . k dc . mf . library . Context . Companion . REQUEST _ ID Ċ import Ġch . max ant . k dc . mf . library . Context . Companion . SESSION _ ID Ċ import Ġio . op entr acing . contrib . kafka . Client Span Name Provider Ċ import Ġio . op entr acing . contrib . kafka . Span Decorator Ċ import Ġio . op entr acing . contrib . kafka . Tracing Kafka Utils Ċ import Ġio . op entr acing . util . Global Tracer Ċ import Ġorg . apache . kafka . clients . producer . Producer Record Ċ Ċ class ĠTr acing Producer Interceptor < K , ĠV > Ġ: Ġio . op entr acing . contrib . kafka . Tracing Producer Interceptor < K , ĠV >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Send ( producer Record : ĠProducer Record < K , ĠV >): ĠProducer Record < K , ĠV > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĠTr acing Kafka Utils . extract Span Context ( producer Record . headers (), ĠGlobal Tracer . get ()) ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠTr acing Kafka Utils . build And Inject Span ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproducer Record , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Tracer . get (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClient Span Name Provider . PRO DU CER _ OPERATION _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Span Decorator . STANDARD _ TAGS ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠrequestId Ġ= ĠString ( producer Record ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . find Ġ{ Ġit . key () Ġ== ĠREQUEST _ ID Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbyte ArrayOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar sets . UTF _ 8 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= ĠString ( producer Record ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . find Ġ{ Ġit . key () Ġ== ĠSESSION _ ID Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbyte ArrayOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar sets . UTF _ 8 ) ĊĊĠĠĠĠĠĠĠ Ġspan . setTag ( REQUEST _ ID , ĠrequestId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTag ( SESSION _ ID , ĠsessionId ) ĊĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproducer Record ĊĠĠĠ Ġ} Ċ } Ċ