unified gateway interface

This commit is contained in:
Stephan D
2025-12-31 17:47:32 +01:00
parent 19b7b69bd8
commit 97ba7500dc
104 changed files with 8228 additions and 1742 deletions

View File

@@ -0,0 +1,56 @@
package discovery
import (
"encoding/json"
"errors"
messaging "github.com/tech/sendico/pkg/messaging/envelope"
"github.com/tech/sendico/pkg/model"
)
type jsonEnvelope struct {
messaging.Envelope
payload any
}
func (e *jsonEnvelope) Serialize() ([]byte, error) {
if e.payload == nil {
return nil, errors.New("discovery envelope payload is nil")
}
data, err := json.Marshal(e.payload)
if err != nil {
return nil, err
}
return e.Envelope.Wrap(data)
}
func newEnvelope(sender string, event model.NotificationEvent, payload any) messaging.Envelope {
return &jsonEnvelope{
Envelope: messaging.CreateEnvelope(sender, event),
payload: payload,
}
}
func NewServiceAnnounceEnvelope(sender string, payload Announcement) messaging.Envelope {
return newEnvelope(sender, ServiceAnnounceEvent(), payload)
}
func NewGatewayAnnounceEnvelope(sender string, payload Announcement) messaging.Envelope {
return newEnvelope(sender, GatewayAnnounceEvent(), payload)
}
func NewHeartbeatEnvelope(sender string, payload Heartbeat) messaging.Envelope {
return newEnvelope(sender, HeartbeatEvent(), payload)
}
func NewLookupRequestEnvelope(sender string, payload LookupRequest) messaging.Envelope {
return newEnvelope(sender, LookupRequestEvent(), payload)
}
func NewLookupResponseEnvelope(sender string, payload LookupResponse) messaging.Envelope {
return newEnvelope(sender, LookupResponseEvent(), payload)
}
func NewRefreshUIEnvelope(sender string, payload RefreshEvent) messaging.Envelope {
return newEnvelope(sender, RefreshUIEvent(), payload)
}