Files
cunicu/pkg/signaling/inprocess/backend.go
Steffen Vogel 70460f7f7e refactor callback handlers
Signed-off-by: Steffen Vogel <post@steffenvogel.de>
2022-07-27 13:39:18 +02:00

66 lines
1.2 KiB
Go

package inprocess
import (
"context"
"go.uber.org/zap"
"riasc.eu/wice/pkg/crypto"
"riasc.eu/wice/pkg/pb"
"riasc.eu/wice/pkg/signaling"
)
var (
subs = signaling.NewSubscriptionsRegistry()
)
func init() {
signaling.Backends["inprocess"] = &signaling.BackendPlugin{
New: NewBackend,
Description: "In-Process",
}
}
type Backend struct {
onReady []signaling.BackendReadyHandler
logger *zap.Logger
}
func NewBackend(cfg *signaling.BackendConfig, logger *zap.Logger) (signaling.Backend, error) {
b := &Backend{
onReady: []signaling.BackendReadyHandler{},
logger: logger,
}
for _, h := range b.onReady {
h.OnBackendReady(b)
}
return b, nil
}
func (b *Backend) OnReady(h signaling.BackendReadyHandler) {
b.onReady = append(b.onReady, h)
}
func (b *Backend) Type() pb.BackendReadyEvent_Type {
return pb.BackendReadyEvent_INPROCESS
}
func (b *Backend) Subscribe(ctx context.Context, kp *crypto.KeyPair) (chan *pb.SignalingMessage, error) {
return subs.Subscribe(kp)
}
func (b *Backend) Publish(ctx context.Context, kp *crypto.KeyPair, msg *pb.SignalingMessage) error {
env, err := msg.Encrypt(kp)
if err != nil {
return err
}
return subs.NewMessage(env)
}
func (b *Backend) Close() error {
return nil
}