1
0
Fork 0
forked from External/ergo

implement CHANSERV AMODE

This commit is contained in:
Shivaram Lingamneni 2018-05-23 15:35:50 -04:00
parent f142bf065d
commit 1016f86f70
4 changed files with 126 additions and 27 deletions

View file

@ -303,3 +303,37 @@ func (channel *Channel) Founder() string {
defer channel.stateMutex.RUnlock()
return channel.registeredFounder
}
func (channel *Channel) AccountToUmode() (result []modes.ModeChange) {
channel.stateMutex.RLock()
defer channel.stateMutex.RUnlock()
for account, mode := range channel.accountToUMode {
result = append(result, modes.ModeChange{
Mode: mode,
Arg: account,
Op: modes.Add,
})
}
return
}
func (channel *Channel) ApplyAccountToUmodeChange(change modes.ModeChange) (applied bool) {
channel.stateMutex.Lock()
defer channel.stateMutex.Unlock()
current := channel.accountToUMode[change.Arg]
switch change.Op {
case modes.Add:
applied = (current != change.Mode)
if applied {
channel.accountToUMode[change.Arg] = change.Mode
}
case modes.Remove:
applied = (current == change.Mode)
if applied {
delete(channel.accountToUMode, change.Arg)
}
}
return
}