|
|
@@ -9,7 +9,12 @@ const (
|
|
|
cacheDurationSec = 120
|
|
|
)
|
|
|
|
|
|
-type UserSet struct {
|
|
|
+type UserSet interface {
|
|
|
+ AddUser(user User) error
|
|
|
+ GetUser(timeHash []byte) (*ID, bool)
|
|
|
+}
|
|
|
+
|
|
|
+type TimedUserSet struct {
|
|
|
validUserIds []ID
|
|
|
userHashes map[string]int
|
|
|
}
|
|
|
@@ -19,8 +24,8 @@ type hashEntry struct {
|
|
|
timeSec int64
|
|
|
}
|
|
|
|
|
|
-func NewUserSet() *UserSet {
|
|
|
- vuSet := new(UserSet)
|
|
|
+func NewTimedUserSet() UserSet {
|
|
|
+ vuSet := new(TimedUserSet)
|
|
|
vuSet.validUserIds = make([]ID, 0, 16)
|
|
|
vuSet.userHashes = make(map[string]int)
|
|
|
|
|
|
@@ -28,7 +33,7 @@ func NewUserSet() *UserSet {
|
|
|
return vuSet
|
|
|
}
|
|
|
|
|
|
-func (us *UserSet) updateUserHash(tick <-chan time.Time) {
|
|
|
+func (us *TimedUserSet) updateUserHash(tick <-chan time.Time) {
|
|
|
now := time.Now().UTC()
|
|
|
lastSec := now.Unix() - cacheDurationSec
|
|
|
|
|
|
@@ -57,13 +62,13 @@ func (us *UserSet) updateUserHash(tick <-chan time.Time) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func (us *UserSet) AddUser(user User) error {
|
|
|
+func (us *TimedUserSet) AddUser(user User) error {
|
|
|
id := user.Id
|
|
|
us.validUserIds = append(us.validUserIds, id)
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func (us UserSet) IsValidUserId(userHash []byte) (*ID, bool) {
|
|
|
+func (us TimedUserSet) GetUser(userHash []byte) (*ID, bool) {
|
|
|
idIndex, found := us.userHashes[string(userHash)]
|
|
|
if found {
|
|
|
return &us.validUserIds[idIndex], true
|