func (us *TimedUserSet) AddUser(user *vmess.User) error { idx := len(us.validUsers) us.validUsers = append(us.validUsers, user) nowSec := time.Now().Unix() entry := &idEntry{ id: user.ID, userIdx: idx, lastSec: Timestamp(nowSec - cacheDurationSec), hashes: collect.NewSizedQueue(2*cacheDurationSec + 1), } us.generateNewHashes(Timestamp(nowSec+cacheDurationSec), idx, entry) us.ids = append(us.ids, entry) for _, alterid := range user.AlterIDs { entry := &idEntry{ id: alterid, userIdx: idx, lastSec: Timestamp(nowSec - cacheDurationSec), hashes: collect.NewSizedQueue(2*cacheDurationSec + 1), } us.generateNewHashes(Timestamp(nowSec+cacheDurationSec), idx, entry) us.ids = append(us.ids, entry) } return nil }
func TestSizedQueue(t *testing.T) { v2testing.Current(t) queue := collect.NewSizedQueue(2) assert.Pointer(queue.Put(1)).IsNil() assert.Pointer(queue.Put(2)).IsNil() assert.Int(queue.Put(3).(int)).Equals(1) }