1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-29 13:49:28 +08:00
Sammy Kerata Oina 1eaa8056a7
NOISSUE - Trace MQTT forward operations (#1775)
* 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>
2023-05-31 12:30:28 +02:00

91 lines
2.9 KiB
Go

package tracing
import (
"context"
"github.com/mainflux/mproxy/pkg/session"
"github.com/opentracing/opentracing-go"
)
const (
authConnectOP = "auth_connect_op"
authPublishOP = "auth_publish_op"
authSubscribeOP = "auth_subscribe_op"
connectOP = "connect_op"
disconnectOP = "disconnect_op"
subscribeOP = "subscribe_op"
unsubscribeOP = "unsubscribe_op"
publishOP = "publish_op"
)
var _ session.Handler = (*handlerMiddleware)(nil)
type handlerMiddleware struct {
handler session.Handler
tracer opentracing.Tracer
}
// NewHandler creates a new session.Handler middlware with tracing.
func NewHandler(tracer opentracing.Tracer, handler session.Handler) session.Handler {
return &handlerMiddleware{
tracer: tracer,
handler: handler,
}
}
// AuthConnect traces auth connect operations.
func (h *handlerMiddleware) AuthConnect(ctx context.Context) error {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, authConnectOP)
defer span.Finish()
return h.handler.AuthConnect(ctx)
}
// AuthPublish traces auth publish operations.
func (h *handlerMiddleware) AuthPublish(ctx context.Context, topic *string, payload *[]byte) error {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, authPublishOP)
defer span.Finish()
return h.handler.AuthPublish(ctx, topic, payload)
}
// AuthSubscribe traces auth subscribe operations.
func (h *handlerMiddleware) AuthSubscribe(ctx context.Context, topics *[]string) error {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, authSubscribeOP)
defer span.Finish()
return h.handler.AuthSubscribe(ctx, topics)
}
// Connect traces connect operations.
func (h *handlerMiddleware) Connect(ctx context.Context) {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, connectOP)
defer span.Finish()
h.handler.Connect(ctx)
}
// Disconnect traces disconnect operations.
func (h *handlerMiddleware) Disconnect(ctx context.Context) {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, disconnectOP)
defer span.Finish()
h.handler.Disconnect(ctx)
}
// Publish traces publish operations.
func (h *handlerMiddleware) Publish(ctx context.Context, topic *string, payload *[]byte) {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, publishOP)
defer span.Finish()
h.handler.Publish(ctx, topic, payload)
}
// Subscribe traces subscribe operations.
func (h *handlerMiddleware) Subscribe(ctx context.Context, topics *[]string) {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, subscribeOP)
defer span.Finish()
h.handler.Subscribe(ctx, topics)
}
// Unsubscribe traces unsubscribe operations.
func (h *handlerMiddleware) Unsubscribe(ctx context.Context, topics *[]string) {
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, h.tracer, unsubscribeOP)
defer span.Finish()
h.handler.Unsubscribe(ctx, topics)
}