Register adds a unit to the manager if it is not already registered. If a Unit is already registered (per the ID field), it is not updated.
(id ID)
| 99 | // Register adds a unit to the manager if it is not already registered. |
| 100 | // If a Unit is already registered (per the ID field), it is not updated. |
| 101 | func (m *Manager) Register(id ID) error { |
| 102 | m.mu.Lock() |
| 103 | defer m.mu.Unlock() |
| 104 | |
| 105 | if id == "" { |
| 106 | return xerrors.Errorf("registering unit %q: %w", id, ErrUnitIDRequired) |
| 107 | } |
| 108 | |
| 109 | if m.registered(id) { |
| 110 | return xerrors.Errorf("registering unit %q: %w", id, ErrUnitAlreadyRegistered) |
| 111 | } |
| 112 | |
| 113 | m.units[id] = Unit{ |
| 114 | id: id, |
| 115 | status: StatusPending, |
| 116 | ready: true, |
| 117 | } |
| 118 | |
| 119 | return nil |
| 120 | } |
| 121 | |
| 122 | // registered checks if a unit is registered in the manager. |
| 123 | func (m *Manager) registered(id ID) bool { |