| 
					
				 | 
			
			
				@@ -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 
			 |