mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-04 22:17:59 +08:00

* Switch CoAP lib Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Revert removed adapter code Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * WIP CoAP refactor Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Add auth key Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Fix observers map Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Fix reading message body Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Fix subtopic parsing Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Fix error handling Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Fix multi-protocol communication Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Separate client from observer Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Remove unused config Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Remove TCP option Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Inline error check Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Add logging client errors Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Replace RWMutex since we're not using RLock Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Inline error handling Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com> * Inline error handling Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com>
41 lines
932 B
Go
41 lines
932 B
Go
package tcp
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/plgd-dev/go-coap/v2/message"
|
|
"github.com/plgd-dev/go-coap/v2/message/codes"
|
|
"github.com/plgd-dev/go-coap/v2/mux"
|
|
"github.com/plgd-dev/go-coap/v2/tcp/message/pool"
|
|
)
|
|
|
|
// WithMux set's multiplexer for handle requests.
|
|
func WithMux(m mux.Handler) HandlerFuncOpt {
|
|
h := func(w *ResponseWriter, r *pool.Message) {
|
|
muxw := &muxResponseWriter{
|
|
w: w,
|
|
}
|
|
muxr, err := pool.ConvertTo(r)
|
|
if err != nil {
|
|
return
|
|
}
|
|
m.ServeCOAP(muxw, &mux.Message{
|
|
Message: muxr,
|
|
SequenceNumber: r.Sequence(),
|
|
})
|
|
}
|
|
return WithHandlerFunc(h)
|
|
}
|
|
|
|
type muxResponseWriter struct {
|
|
w *ResponseWriter
|
|
}
|
|
|
|
func (w *muxResponseWriter) SetResponse(code codes.Code, contentFormat message.MediaType, d io.ReadSeeker, opts ...message.Option) error {
|
|
return w.w.SetResponse(code, contentFormat, d, opts...)
|
|
}
|
|
|
|
func (w *muxResponseWriter) Client() mux.Client {
|
|
return w.w.ClientConn().Client()
|
|
}
|