mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-28 13:48:49 +08:00

* trace forward operations Signed-off-by: SammyOina <sammyoina@gmail.com> * add alias Signed-off-by: SammyOina <sammyoina@gmail.com> * replace client from handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add comments Signed-off-by: SammyOina <sammyoina@gmail.com> * update mproxy Signed-off-by: SammyOina <sammyoina@gmail.com> * pass context Signed-off-by: SammyOina <sammyoina@gmail.com> * simplify span context management Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing tests on nil clients Signed-off-by: SammyOina <sammyoina@gmail.com> * add topic Signed-off-by: SammyOina <sammyoina@gmail.com> * update mproxy Signed-off-by: SammyOina <sammyoina@gmail.com> * vendor modified handler Signed-off-by: SammyOina <sammyoina@gmail.com> * update mproxy Signed-off-by: SammyOina <sammyoina@gmail.com> * update mproxy Signed-off-by: SammyOina <sammyoina@gmail.com> * update mproxy Signed-off-by: SammyOina <sammyoina@gmail.com> * use current mproxy Signed-off-by: SammyOina <sammyoina@gmail.com> * use mproxy new release Signed-off-by: SammyOina <sammyoina@gmail.com> * update mproxy version Signed-off-by: SammyOina <sammyoina@gmail.com> * wrap errors Signed-off-by: SammyOina <sammyoina@gmail.com> * fix ci Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
38 lines
998 B
Go
38 lines
998 B
Go
package tracing
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/mainflux/mainflux/mqtt"
|
|
"github.com/mainflux/mainflux/pkg/messaging"
|
|
"github.com/opentracing/opentracing-go"
|
|
)
|
|
|
|
const forwardOP = "forward_op"
|
|
|
|
var _ mqtt.Forwarder = (*forwarderMiddleware)(nil)
|
|
|
|
type forwarderMiddleware struct {
|
|
topic string
|
|
forwarder mqtt.Forwarder
|
|
tracer opentracing.Tracer
|
|
}
|
|
|
|
// New creates new mqtt forwarder tracing middleware.
|
|
func New(tracer opentracing.Tracer, forwarder mqtt.Forwarder, topic string) mqtt.Forwarder {
|
|
return &forwarderMiddleware{
|
|
forwarder: forwarder,
|
|
tracer: tracer,
|
|
topic: topic,
|
|
}
|
|
}
|
|
|
|
// Forward traces mqtt forward operations
|
|
func (fm *forwarderMiddleware) Forward(ctx context.Context, id string, sub messaging.Subscriber, pub messaging.Publisher) error {
|
|
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, fm.tracer, forwardOP)
|
|
defer span.Finish()
|
|
span.SetTag("subscriber", id)
|
|
span.SetTag("topic", fm.topic)
|
|
return fm.forwarder.Forward(ctx, id, sub, pub)
|
|
}
|