snowflake_default.go 781 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package mhayaSnowflake
  2. import (
  3. ccrypto "github.com/mhaya/extend/crypto"
  4. clog "github.com/mhaya/logger"
  5. )
  6. var (
  7. defaultNode *Node
  8. )
  9. func InitDefaultNode(str string) {
  10. var (
  11. crc32Value = int64(ccrypto.CRC32(str))
  12. nodeValue = crc32Value % nodeMax
  13. )
  14. SetDefaultNode(nodeValue)
  15. }
  16. func SetDefaultNode(nodeValue int64) {
  17. if defaultNode != nil {
  18. clog.Warn("default snowflake node is created.")
  19. return
  20. }
  21. var err error
  22. defaultNode, err = NewNode(nodeValue)
  23. if err != nil {
  24. clog.Warn(err)
  25. clog.Warnf("create default snowflake node fail. nodeValue = %d", nodeValue)
  26. }
  27. clog.Infof("[snowflake] nodeValue = %d, nodeMax = %d", nodeValue, nodeMax)
  28. }
  29. func Next() ID {
  30. return defaultNode.Generate()
  31. }
  32. func NextId() int64 {
  33. return defaultNode.Generate().Int64()
  34. }