implement channel modes and messages properly

This commit is contained in:
Jeremy Latt 2014-02-15 19:49:20 -08:00
parent 0bfa2fb98f
commit 488b2ccf8f
6 changed files with 156 additions and 80 deletions

View file

@ -15,6 +15,10 @@ type Mask string
// add, remove, list modes
type ModeOp rune
func (op ModeOp) String() string {
return string(op)
}
// user mode flags
type UserMode rune
@ -37,9 +41,6 @@ func (mode ChannelMode) String() string {
return fmt.Sprintf("%c", mode)
}
// user-channel mode flags
type ChannelMemberMode rune
type ChannelNameMap map[string]*Channel
func (channels ChannelNameMap) Add(channel *Channel) error {
@ -84,19 +85,19 @@ func (clients ClientNameMap) Remove(client *Client) error {
return nil
}
type ChannelMemberModeSet map[ChannelMemberMode]bool
type ChannelModeSet map[ChannelMode]bool
type ClientSet map[*Client]ChannelMemberModeSet
type ClientSet map[*Client]ChannelModeSet
func (clients ClientSet) Add(client *Client) {
clients[client] = make(ChannelMemberModeSet)
clients[client] = make(ChannelModeSet)
}
func (clients ClientSet) Remove(client *Client) {
delete(clients, client)
}
func (clients ClientSet) HasMode(client *Client, mode ChannelMemberMode) bool {
func (clients ClientSet) HasMode(client *Client, mode ChannelMode) bool {
modes, ok := clients[client]
if !ok {
return false