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

* Add pagination to clients and channels endpoints Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Refactor code Change method signature and rename Bulk methods back to All. Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Rename transport_test.go to endpoint_test.go Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Fix manager tests to support pagination Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Add default offset and limit support Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Update docs Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Update tests to support pagination - Move maxLimitSize checking to request validation. - Add tests to support pagination. Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Fix handling query params for pagination Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Fix empty result set Return empty results if invalid offset and limit is passed to channel and client repository. Update tests accordingly. Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Update manager API docs Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Fix response to invalid limit query param Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com> * Remove offset and limmit checks in repository methods Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com>
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
package adapter
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"net"
|
|
|
|
"github.com/dustin/go-coap"
|
|
"github.com/mainflux/mainflux"
|
|
broker "github.com/nats-io/go-nats"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
const protocol string = "coap"
|
|
|
|
type Observer struct {
|
|
conn *net.UDPConn
|
|
addr *net.UDPAddr
|
|
message *coap.Message
|
|
}
|
|
|
|
type CoAPAdapter struct {
|
|
obsMap map[string][]Observer
|
|
logger *zap.Logger
|
|
pub mainflux.MessagePublisher
|
|
}
|
|
|
|
// NewCoAPAdapter creates new CoAP adapter struct
|
|
func NewCoAPAdapter(logger *zap.Logger, pub mainflux.MessagePublisher) *CoAPAdapter {
|
|
ca := &CoAPAdapter{
|
|
logger: logger,
|
|
pub: pub,
|
|
obsMap: make(map[string][]Observer),
|
|
}
|
|
|
|
return ca
|
|
}
|
|
|
|
// Serve function starts CoAP server
|
|
func (ca *CoAPAdapter) Serve(addr string) error {
|
|
ca.logger.Info("Starting CoAP server", zap.String("address", addr))
|
|
return coap.ListenAndServe("udp", addr, ca.COAPServer())
|
|
}
|
|
|
|
// BridgeHandler functions is a handler for messages received via NATS
|
|
func (ca *CoAPAdapter) BridgeHandler(nm *broker.Msg) {
|
|
log.Printf("Received a message: %s\n", string(nm.Data))
|
|
|
|
// And write it into the database
|
|
m := mainflux.RawMessage{}
|
|
if len(nm.Data) > 0 {
|
|
if err := json.Unmarshal(nm.Data, &m); err != nil {
|
|
log.Println("Can not decode adapter msg")
|
|
return
|
|
}
|
|
}
|
|
|
|
log.Println("Calling obsTransmit()")
|
|
log.Println(m.Publisher, m.Protocol, m.Channel, m.Payload)
|
|
ca.obsTransmit(m)
|
|
}
|