forked from ergo-services/ergo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimple.go
43 lines (35 loc) · 967 Bytes
/
simple.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
import (
"fmt"
"time"
"github.com/ergo-services/ergo"
"github.com/ergo-services/ergo/etf"
"github.com/ergo-services/ergo/gen"
"github.com/ergo-services/ergo/node"
)
// simple implementation of Server
type simple struct {
gen.Server
}
func (s *simple) HandleInfo(process *gen.ServerProcess, message etf.Term) gen.ServerStatus {
value := message.(int)
fmt.Printf("HandleInfo: %#v \n", message)
if value > 104 {
return gen.ServerStatusStop
}
// sending message with delay 1 second
process.SendAfter(process.Self(), value+1, time.Second)
return gen.ServerStatusOK
}
func main() {
// create a new node
node, _ := ergo.StartNode("node@localhost", "cookies", node.Options{})
// spawn a new process of gen.Server
process, _ := node.Spawn("gs1", gen.ProcessOptions{}, &simple{})
// send a message to itself
process.Send(process.Self(), 100)
// wait for the process termination.
process.Wait()
fmt.Println("exited")
node.Stop()
}