package transport import ( "ripple/bug" "ripple/types" ) type AccountSenderManager struct { transport *AccountTransport workers map[types.UserIdentifier]*doubleSenderWorker } func newAccountSenderManager(transport *AccountTransport) *AccountSenderManager { return &AccountSenderManager{ transport: transport, workers: make(map[types.UserIdentifier]*doubleSenderWorker), } } func (m *AccountSenderManager) AddAccount(id types.UserIdentifier) { if _, ok := m.workers[id]; ok { panic(bug.BugStateViolated) } w := newDoubleSenderWorker(m.transport) 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) enqueueWithIndex(idx int, tx types.Transaction) { w, ok := m.workers[tx.Identifier] if !ok { panic(bug.BugStateViolated) } w.enqueueWithIndex(idx, tx) }