diff --git a/cmix/identity/tracker.go b/cmix/identity/tracker.go index 94d1757db1779abfc6c329e085f38884b06c0ad9..8d9f8a6d2a168d27147f9fe280f2d777e0b9935c 100644 --- a/cmix/identity/tracker.go +++ b/cmix/identity/tracker.go @@ -51,20 +51,20 @@ type Tracker interface { AddIdentity(id *id.ID, validUntil time.Time, persistent bool) RemoveIdentity(id *id.ID) GetEphemeralIdentity(rng io.Reader, addressSize uint8) (receptionID.IdentityUse, error) - GetIdentity(get *id.ID) (trackedID, error) + GetIdentity(get *id.ID) (TrackedID, error) } type manager struct { - tracked []*trackedID + tracked []*TrackedID ephemeral *receptionID.Store session storage.Session - newIdentity chan trackedID + newIdentity chan TrackedID deleteIdentity chan *id.ID addrSpace address.Space mux *sync.Mutex } -type trackedID struct { +type TrackedID struct { NextGeneration time.Time LastGeneration time.Time Source *id.ID @@ -76,9 +76,9 @@ type trackedID struct { func NewOrLoadTracker(session storage.Session, addrSpace address.Space) *manager { // Initialization t := &manager{ - tracked: make([]*trackedID, 0), + tracked: make([]*TrackedID, 0), session: session, - newIdentity: make(chan trackedID, trackedIDChanSize), + newIdentity: make(chan TrackedID, trackedIDChanSize), deleteIdentity: make(chan *id.ID, deleteIDChanSize), addrSpace: addrSpace, mux: &sync.Mutex{}, @@ -92,7 +92,7 @@ func NewOrLoadTracker(session storage.Session, addrSpace address.Space) *manager jww.WARN.Printf("No tracked identities found, creating a new " + "tracked identity from legacy stored timestamp.") - t.tracked = append(t.tracked, &trackedID{ + t.tracked = append(t.tracked, &TrackedID{ // Make the next generation now so a generation triggers on // first run NextGeneration: netTime.Now(), @@ -128,7 +128,7 @@ func (t *manager) StartProcesses() stoppable.Stoppable { // AddIdentity adds an identity to be tracked. func (t *manager) AddIdentity(id *id.ID, validUntil time.Time, persistent bool) { - t.newIdentity <- trackedID{ + t.newIdentity <- TrackedID{ NextGeneration: netTime.Now().Add(-time.Second), LastGeneration: netTime.Now().Add(-time.Duration(ephemeral.Period)), Source: id, @@ -150,15 +150,15 @@ func (t *manager) GetEphemeralIdentity(rng io.Reader, addressSize uint8) ( } // GetIdentity returns a currently tracked identity -func (t *manager) GetIdentity(get *id.ID) (*trackedID, error) { +func (t *manager) GetIdentity(get *id.ID) (TrackedID, error) { t.mux.Lock() defer t.mux.Unlock() for i := range t.tracked { if get.Cmp(t.tracked[i].Source) { - return t.tracked[i], nil + return *t.tracked[i], nil } } - return nil, errors.Errorf("could not find id %s", get) + return TrackedID{}, errors.Errorf("could not find id %s", get) } func (t *manager) track(stop *stoppable.Single) { @@ -268,7 +268,7 @@ func (t *manager) processIdentities(addressSize uint8) time.Time { // Process any deletions if len(toRemove) > 0 { - newTracked := make([]*trackedID, 0, len(t.tracked)) + newTracked := make([]*TrackedID, 0, len(t.tracked)) for i := range t.tracked { if _, remove := toRemove[i]; !remove { newTracked = append(newTracked, t.tracked[i]) @@ -306,7 +306,7 @@ func unmarshalTimestamp(lastTimestampObj *versioned.Object) (time.Time, error) { // generateIdentitiesOverRange generates and adds all not yet existing ephemeral Ids // and returns the timestamp of the next generation for the given TrackedID -func (t *manager) generateIdentitiesOverRange(inQuestion *trackedID, +func (t *manager) generateIdentitiesOverRange(inQuestion *TrackedID, addressSize uint8) time.Time { // Ensure that ephemeral IDs will not be generated after the // identity is invalid @@ -371,7 +371,7 @@ func (t *manager) generateIdentitiesOverRange(inQuestion *trackedID, func (t *manager) save() { t.mux.Lock() defer t.mux.Unlock() - persistent := make([]trackedID, 0, len(t.tracked)) + persistent := make([]TrackedID, 0, len(t.tracked)) for i := range t.tracked { if t.tracked[i].Persistent { diff --git a/cmix/identity/tracker_test.go b/cmix/identity/tracker_test.go index ab282870d1c69f7ea66eb8672b89d0886fbfa260..dc9a895764c996abf1cf947c92139f2b7a23c71e 100644 --- a/cmix/identity/tracker_test.go +++ b/cmix/identity/tracker_test.go @@ -67,9 +67,9 @@ func TestManager_processIdentities(t *testing.T) { addrSpace.UpdateAddressSpace(18) session := storage.InitTestingSession(t) m := &manager{ - tracked: make([]*trackedID, 0), + tracked: make([]*TrackedID, 0), session: session, - newIdentity: make(chan trackedID, trackedIDChanSize), + newIdentity: make(chan TrackedID, trackedIDChanSize), deleteIdentity: make(chan *id.ID, deleteIDChanSize), addrSpace: addrSpace, ephemeral: receptionID.NewOrLoadStore(session.GetKV()), @@ -79,7 +79,7 @@ func TestManager_processIdentities(t *testing.T) { // Add some expired test IDs testId := id.NewIdFromUInt(0, id.User, t) validUntil := netTime.Now().Add(time.Minute) - m.tracked = append(m.tracked, &trackedID{ + m.tracked = append(m.tracked, &TrackedID{ NextGeneration: netTime.Now(), LastGeneration: time.Time{}, Source: testId,