- package botserv
-
- import (
- "crypto/md5"
- "fmt"
- "io"
- "time"
- )
-
- // This thing contains a channel that when initialized (see NewIdGenerator)
- // will return a bunch of (as best as I can tell) unique md5 hashes.
- //
- // we use this for naming players, games, etc.
- //
- // It will consume a single goroutine
- type IdGenerator struct {
- id chan int64
- }
-
- func NewIdGenerator() *IdGenerator {
- return &IdGenerator{
- id: make(chan int64),
- }
- }
-
- func (idg *IdGenerator) Run() {
- var i int64
- for i = 0; ; i++ {
- idg.id <- i
- }
- }
-
- func (id *IdGenerator) Hash() string {
- h := md5.New()
- ns := time.Now().UnixNano() + <-id.id
- io.WriteString(h, fmt.Sprintf("%d", ns))
- return fmt.Sprintf("%x", h.Sum(nil))[:8]
- }
|