vuserset.go 801 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. return vuSet
  13. }
  14. func hashBytesToString(hash []byte) string {
  15. return base64.StdEncoding.EncodeToString(hash)
  16. }
  17. func (us *VUserSet) AddUser(user VUser) error {
  18. id := user.Id
  19. us.validUserIds = append(us.validUserIds, id)
  20. idBase64 := hashBytesToString(id.Hash([]byte("ASK")))
  21. us.userIdsAskHash[idBase64] = len(us.validUserIds) - 1
  22. return nil
  23. }
  24. func (us VUserSet) IsValidUserId(askHash []byte) (*VID, bool) {
  25. askBase64 := hashBytesToString(askHash)
  26. idIndex, found := us.userIdsAskHash[askBase64]
  27. if found {
  28. return &us.validUserIds[idIndex], true
  29. }
  30. return nil, false
  31. }