vuserset.go 846 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package core
  2. import (
  3. "encoding/base64"
  4. )
  5. type VUserSet struct {
  6. validUserIds []VID
  7. userIdsAskHash map[string]int
  8. }
  9. func NewVUserSet() *VUserSet {
  10. vuSet := new(VUserSet)
  11. vuSet.validUserIds = make([]VID, 0, 16)
  12. vuSet.userIdsAskHash = make(map[string]int)
  13. return vuSet
  14. }
  15. func hashBytesToString(hash []byte) string {
  16. return base64.StdEncoding.EncodeToString(hash)
  17. }
  18. func (us *VUserSet) AddUser(user VUser) error {
  19. id := user.Id
  20. us.validUserIds = append(us.validUserIds, id)
  21. idBase64 := hashBytesToString(id.Hash([]byte("ASK")))
  22. us.userIdsAskHash[idBase64] = len(us.validUserIds) - 1
  23. return nil
  24. }
  25. func (us VUserSet) IsValidUserId(askHash []byte) (*VID, bool) {
  26. askBase64 := hashBytesToString(askHash)
  27. idIndex, found := us.userIdsAskHash[askBase64]
  28. if found {
  29. return &us.validUserIds[idIndex], true
  30. }
  31. return nil, false
  32. }