Removing empty channels.
Removing empty channels when the channel becomes vacated.
This commit is contained in:
@@ -8,10 +8,10 @@ IPÊ
|
|||||||
* [ ] Escrever testes automatizados
|
* [ ] Escrever testes automatizados
|
||||||
* [ ] SSL
|
* [ ] SSL
|
||||||
* [X] Expvar - Canais, inscritos
|
* [X] Expvar - Canais, inscritos
|
||||||
* [-] Otimizações [1/3]
|
* [-] Otimizações [2/3]
|
||||||
* [ ] Refatorar partes do código, remover repetições
|
* [ ] Refatorar partes do código, remover repetições
|
||||||
* [X] Alterar tipos de dados de slices para mapas em alguns locais.
|
* [X] Alterar tipos de dados de slices para mapas em alguns locais.
|
||||||
* [ ] Remover Canais vazios com uma go routine - Uma especie de coletor de lixo
|
* [X] Remover Canais vazios.
|
||||||
* [ ] Segurança, tempo de expiração, etc
|
* [ ] Segurança, tempo de expiração, etc
|
||||||
* [X] Dados extra na conexão do usuário. Ver Websockets onOpen
|
* [X] Dados extra na conexão do usuário. Ver Websockets onOpen
|
||||||
* [X] Webhooks [5/5]
|
* [X] Webhooks [5/5]
|
||||||
|
|||||||
@@ -134,6 +134,29 @@ func (a *App) FindConnection(socketID string) (*Connection, error) {
|
|||||||
return nil, errors.New("Connection not found")
|
return nil, errors.New("Connection not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteChannel removes the channel from app
|
||||||
|
func (a *App) RemoveChannel(c *Channel) {
|
||||||
|
log.Infof("Remove the channel %s from app %s", c.ChannelID, a.Name)
|
||||||
|
a.Lock()
|
||||||
|
defer a.Unlock()
|
||||||
|
|
||||||
|
delete(a.Channels, c.ChannelID)
|
||||||
|
|
||||||
|
if c.IsPresence() {
|
||||||
|
a.Stats.Add("TotalPresenceChannels", -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.IsPrivate() {
|
||||||
|
a.Stats.Add("TotalPrivateChannels", -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.IsPublic() {
|
||||||
|
a.Stats.Add("TotalPublicChannels", -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
a.Stats.Add("TotalChannels", -1)
|
||||||
|
}
|
||||||
|
|
||||||
// Add a new Channel to this APP
|
// Add a new Channel to this APP
|
||||||
func (a *App) AddChannel(c *Channel) {
|
func (a *App) AddChannel(c *Channel) {
|
||||||
log.Infof("Adding a new channel %s to app %s", c.ChannelID, a.Name)
|
log.Infof("Adding a new channel %s to app %s", c.ChannelID, a.Name)
|
||||||
|
|||||||
@@ -176,9 +176,12 @@ func (c *Channel) Unsubscribe(a *App, conn *Connection) error {
|
|||||||
a.TriggerMemberRemovedHook(c, subscription)
|
a.TriggerMemberRemovedHook(c, subscription)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WebHook
|
|
||||||
if !c.IsOccupied() {
|
if !c.IsOccupied() {
|
||||||
|
// WebHook
|
||||||
a.TriggerChannelVacatedHook(c)
|
a.TriggerChannelVacatedHook(c)
|
||||||
|
|
||||||
|
// Remove the empty Channel
|
||||||
|
a.RemoveChannel(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user