Browse Source

Added docstrings and cleaned up code.

pull/265/head
Simon Eisenmann 9 years ago
parent
commit
ebfe0f58f9
  1. 17
      src/app/spreed-webrtc-server/bus_manager.go
  2. 3
      src/app/spreed-webrtc-server/channelling_api.go
  3. 12
      src/app/spreed-webrtc-server/nats.go

17
src/app/spreed-webrtc-server/bus_manager.go

@ -37,21 +37,32 @@ const ( @@ -37,21 +37,32 @@ const (
BusManagerAuth = "auth"
)
// A BusManager provides the API to interact with a bus.
type BusManager interface {
Trigger(name, from, payload string, data interface{}) error
}
type BusEvent struct {
// A BusTrigger is a container to serialize trigger events
// for the bus backend.
type BusTrigger struct {
Name string
From string
Payload string `json:",omitempty"`
Data interface{} `json:",omitempty"`
}
// BusSubjectTrigger returns the bus subject for trigger payloads.
func BusSubjectTrigger(prefix, suffix string) string {
return fmt.Sprintf("%s.%s", prefix, suffix)
}
type busManager struct {
BusManager
}
// NewBusManager creates and initializes a new BusMager with the
// provided flags for NATS support. It is intended to connect the
// backend bus with a easy to use API to send and receive bus data.
func NewBusManager(useNats bool, subjectPrefix string) BusManager {
var b BusManager
if useNats {
@ -94,13 +105,13 @@ func newNatsBus(prefix string) (*natsBus, error) { @@ -94,13 +105,13 @@ func newNatsBus(prefix string) (*natsBus, error) {
func (bus *natsBus) Trigger(name, from, payload string, data interface{}) (err error) {
if bus.ec != nil {
event := &BusEvent{
trigger := &BusTrigger{
Name: name,
From: from,
Payload: payload,
Data: data,
}
err = bus.ec.Publish(fmt.Sprintf("%s.%s", bus.prefix, name), event)
err = bus.ec.Publish(BusSubjectTrigger(bus.prefix, name), trigger)
if err != nil {
log.Println("Failed to trigger NATS event", err)
}

3
src/app/spreed-webrtc-server/channelling_api.go

@ -49,6 +49,9 @@ type channellingAPI struct { @@ -49,6 +49,9 @@ type channellingAPI struct {
BusManager
}
// NewChannellingAPI creates and initializes a new ChannellingAPI using
// various other services for initialization. It is intended to handle
// incoming and outgoing channeling API events from clients.
func NewChannellingAPI(config *Config, roomStatus RoomStatusManager, sessionEncoder SessionEncoder, sessionManager SessionManager, statsCounter StatsCounter, contactManager ContactManager, turnDataCreator TurnDataCreator, unicaster Unicaster, busManager BusManager) ChannellingAPI {
return &channellingAPI{
config,

12
src/app/spreed-webrtc-server/nats.go

@ -8,9 +8,17 @@ import ( @@ -8,9 +8,17 @@ import (
"github.com/nats-io/nats"
)
// DefaultNatsEstablishTimeout is the default timeout for
// calls to EstablishNatsConnection.
var DefaultNatsEstablishTimeout = 60 * time.Second
// DefaultNatsURL is the default NATS server URL used for
// calls to NewNatsConnection and EstablishNatsConnection.
var DefaultNatsURL = nats.DefaultURL
// NewNatsConnection creates a connetion to the default NATS server
// and tries to establish the connection. It returns the connection
// and any connection error encountered.
func NewNatsConnection() (*nats.EncodedConn, error) {
nc, err := nats.Connect(DefaultNatsURL)
if err != nil {
@ -23,6 +31,10 @@ func NewNatsConnection() (*nats.EncodedConn, error) { @@ -23,6 +31,10 @@ func NewNatsConnection() (*nats.EncodedConn, error) {
return ec, nil
}
// EstablishNatsConnection is a blocking way to create and establish
// connection to the default NATS server. The function will only return
// after a timeout has reached or a connection has been established. It
// returns the connection and and any timeout error encountered.
func EstablishNatsConnection(timeout *time.Duration) (*nats.EncodedConn, error) {
if timeout == nil {
timeout = &DefaultNatsEstablishTimeout

Loading…
Cancel
Save