mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-19 21:59:59 -08:00
48 lines
1 KiB
Go
48 lines
1 KiB
Go
package main
|
|
|
|
// A Mumble channel
|
|
type Channel struct {
|
|
Id int
|
|
Name string
|
|
Description string
|
|
Temporary bool
|
|
Position int
|
|
|
|
clients map[uint32]*Client
|
|
|
|
parent *Channel
|
|
children map[int]*Channel
|
|
}
|
|
|
|
func NewChannel(id int, name string) (channel *Channel) {
|
|
channel = new(Channel)
|
|
channel.Id = id
|
|
channel.Name = name
|
|
channel.clients = make(map[uint32]*Client)
|
|
channel.children = make(map[int]*Channel)
|
|
return
|
|
}
|
|
|
|
// Add a child channel to a channel
|
|
func (channel *Channel) AddChild(child *Channel) {
|
|
child.parent = channel
|
|
channel.children[child.Id] = child
|
|
}
|
|
|
|
// Remove a child channel from a parent
|
|
func (channel *Channel) RemoveChild(child *Channel) {
|
|
child.parent = nil
|
|
channel.children[child.Id] = nil, false
|
|
}
|
|
|
|
// Add client
|
|
func (channel *Channel) AddClient(client *Client) {
|
|
channel.clients[client.Session] = client
|
|
client.Channel = channel
|
|
}
|
|
|
|
// Remove client
|
|
func (channel *Channel) RemoveClient(client *Client) {
|
|
channel.clients[client.Session] = nil, false
|
|
client.Channel = nil
|
|
}
|