Implement pubsub for channel events.
parent
92ca29cfac
commit
a7394217d5
|
@ -11,6 +11,7 @@ type Channel struct {
|
||||||
metadataLock sync.RWMutex
|
metadataLock sync.RWMutex
|
||||||
metadata map[string]string
|
metadata map[string]string
|
||||||
metadataChannel chan map[string]string
|
metadataChannel chan map[string]string
|
||||||
|
Id string
|
||||||
Name string
|
Name string
|
||||||
Description string
|
Description string
|
||||||
MimeType string
|
MimeType string
|
||||||
|
|
|
@ -3,15 +3,19 @@ package channels
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"github.com/cskr/pubsub"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ChannelManager struct {
|
type ChannelManager struct {
|
||||||
channels map[string]*Channel
|
channels map[string]*Channel
|
||||||
channelsLock sync.RWMutex
|
channelsLock sync.RWMutex
|
||||||
|
pubsub *pubsub.PubSub
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewChannelManager() *ChannelManager {
|
func NewChannelManager() *ChannelManager {
|
||||||
return &ChannelManager{
|
mgr := &ChannelManager{
|
||||||
|
pubsub: pubsub.New(1),
|
||||||
channels: map[string]*Channel{},
|
channels: map[string]*Channel{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,6 +42,7 @@ func (manager *ChannelManager) Close(uuid string) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pubsub.PubSub.Pub("close", manager.channels[uuid])
|
||||||
delete(manager.channels, uuid)
|
delete(manager.channels, uuid)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -52,8 +57,14 @@ func (manager *ChannelManager) Open(uuid string) (channel *Channel, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
channel = new(Channel)
|
channel = &Channel{Id: uuid}
|
||||||
manager.channels[uuid] = channel
|
manager.channels[uuid] = channel
|
||||||
|
|
||||||
|
pubsub.PubSub.Pub("open", channel)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (manager *ChannelManager) Shutdown() {
|
||||||
|
manager.pubsub.Shutdown()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue