mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-27 13:48:49 +08:00
37 lines
783 B
Go
37 lines
783 B
Go
![]() |
package ws
|
||
|
|
||
|
import (
|
||
|
"github.com/mainflux/mainflux"
|
||
|
broker "github.com/nats-io/go-nats"
|
||
|
)
|
||
|
|
||
|
var _ Service = (*adapterService)(nil)
|
||
|
|
||
|
type adapterService struct {
|
||
|
pubsub Service
|
||
|
}
|
||
|
|
||
|
// New instantiates the domain service implementation.
|
||
|
func New(pubsub Service) Service {
|
||
|
return &adapterService{pubsub}
|
||
|
}
|
||
|
|
||
|
func (as *adapterService) Publish(msg mainflux.RawMessage) error {
|
||
|
if err := as.pubsub.Publish(msg); err != nil {
|
||
|
switch err {
|
||
|
case broker.ErrConnectionClosed, broker.ErrInvalidConnection:
|
||
|
return ErrFailedConnection
|
||
|
default:
|
||
|
return ErrFailedMessagePublish
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (as *adapterService) Subscribe(chanID string, channel Channel) error {
|
||
|
if err := as.pubsub.Subscribe(chanID, channel); err != nil {
|
||
|
return ErrFailedSubscription
|
||
|
}
|
||
|
return nil
|
||
|
}
|