Newer
Older
// ClientManager manages clients of routing tables (observer pattern)
clients map[RouteTableClient]struct{} // Ensures a client registers at most once
}
// NewClientManager creates and initializes a new client manager
return ClientManager{
clients: make(map[RouteTableClient]struct{}, 0),
func (c *ClientManager) Register(client RouteTableClient) {
if c.clients == nil {
c.clients = make(map[RouteTableClient]struct{}, 0)
}
c.clients[client] = struct{}{}
func (c *ClientManager) Unregister(client RouteTableClient) {
if _, ok := c.clients[client]; !ok {
return
}
delete(c.clients, client)
}