Skip to content

Commit

Permalink
Challenge #2: Unique ID Generation
Browse files Browse the repository at this point in the history
  • Loading branch information
charlesonunze committed Mar 24, 2023
1 parent 552337f commit eb2c16f
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
2 changes: 2 additions & 0 deletions 02-unique-id/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
update:
go install .
5 changes: 5 additions & 0 deletions 02-unique-id/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module maelstrom-unique-ids

go 1.19

require github.com/jepsen-io/maelstrom/demo/go v0.0.0-20230321201811-151ad3cff117
2 changes: 2 additions & 0 deletions 02-unique-id/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
github.com/jepsen-io/maelstrom/demo/go v0.0.0-20230321201811-151ad3cff117 h1:B7h6hYmW+bgtHKlHJnqW6bf8mGycFSLYvZAeKIkihnU=
github.com/jepsen-io/maelstrom/demo/go v0.0.0-20230321201811-151ad3cff117/go.mod h1:i6aVIs5AIOOaQF1lAisBm7DDeWM1Iopf+26UxjagsCU=
41 changes: 41 additions & 0 deletions 02-unique-id/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package main

import (
"crypto/rand"
"encoding/json"
"fmt"
"log"
"math/big"
"os"

maelstrom "github.com/jepsen-io/maelstrom/demo/go"
)

func main() {
n := maelstrom.NewNode()

n.Handle("generate", func(msg maelstrom.Message) error {
var body map[string]any
if err := json.Unmarshal(msg.Body, &body); err != nil {
return err
}

// generate a random number between 0 and 999999999999999999
randomNum, err := rand.Int(rand.Reader, big.NewInt(1000000000000000000))
if err != nil {
fmt.Println("error generating random number:", err)
return err
}

// Update the message type.
body["type"] = "generate_ok"
body["id"] = randomNum

return n.Reply(msg, body)
})

if err := n.Run(); err != nil {
log.Printf("ERROR: %s", err)
os.Exit(1)
}
}

0 comments on commit eb2c16f

Please sign in to comment.