package transport import ( "ripple/bug" "ripple/types" "ripple/udpr" ) type AccountSenderManager struct { conn *udpr.UDPRConn workers map[types.UserIdentifier]*senderWorker } func newAccountSenderManager(conn *udpr.UDPRConn) *AccountSenderManager { return &AccountSenderManager{ conn: conn, workers: make(map[types.UserIdentifier]*senderWorker), } } func (m *AccountSenderManager) AddAccount(id types.UserIdentifier) { if _, ok := m.workers[id]; ok { panic(bug.BugStateViolated) } w := newSenderWorker(m.conn) m.workers[id] = w } func (m *AccountSenderManager) RemoveAccount(id types.UserIdentifier) { w, ok := m.workers[id] if !ok { panic(bug.BugStateViolated) } w.stop() delete(m.workers, id) } func (m *AccountSenderManager) enqueue(id types.UserIdentifier, req sendRequest) { w, ok := m.workers[id] if !ok { panic(bug.BugStateViolated) } w.enqueue(req) }