aboutsummaryrefslogtreecommitdiff
path: root/demo/main.go
diff options
context:
space:
mode:
authorDeterminant <tederminant@gmail.com>2019-06-07 16:00:27 -0400
committerDeterminant <tederminant@gmail.com>2019-06-07 16:00:27 -0400
commit316b61a15ff334a27462715ed4c99cf244a25701 (patch)
treed97616afca2171e335f99b8d222634f62eabfd64 /demo/main.go
parentf32e3109526f2d4e980c03dd65f7c94edff4d2b2 (diff)
use SigEvent callback in the example
Diffstat (limited to 'demo/main.go')
-rw-r--r--demo/main.go31
1 files changed, 26 insertions, 5 deletions
diff --git a/demo/main.go b/demo/main.go
index e156f45..8dcbe98 100644
--- a/demo/main.go
+++ b/demo/main.go
@@ -1,10 +1,20 @@
package main
+// void onTerm_cgo(int sig);
+import "C"
+
import "salticidae-go"
+import "unsafe"
+
+var ec salticidae.EventContext
+
+//export onTerm
+func onTerm(_ int) {
+ ec.Stop()
+}
-func run(my_addr string, other_addr string) {
+func run(ec salticidae.EventContext, my_addr string, other_addr string) salticidae.MsgNetwork {
netconfig := salticidae.NewMsgNetworkConfig()
- ec := salticidae.NewEventContext()
net := salticidae.NewMsgNetwork(ec, netconfig)
listen_addr := salticidae.NewAddrFromIPPortString(my_addr)
connect_addr := salticidae.NewAddrFromIPPortString(other_addr)
@@ -12,12 +22,23 @@ func run(my_addr string, other_addr string) {
net.Start()
net.Listen(listen_addr)
net.Connect(connect_addr)
- ec.Dispatch()
+ return net
}
func main() {
+ ec = salticidae.NewEventContext()
+ ev_int := salticidae.NewSigEvent(ec, salticidae.SigEventCallback(unsafe.Pointer(C.onTerm_cgo)))
+ ev_int.Add(salticidae.SIGINT)
+ ev_term := salticidae.NewSigEvent(ec, salticidae.SigEventCallback(unsafe.Pointer(C.onTerm_cgo)))
+ ev_term.Add(salticidae.SIGTERM)
+
alice := "127.0.0.1:10000"
bob := "127.0.0.1:10001"
- go run(alice, bob)
- run(bob, alice)
+ alice_net := run(ec, alice, bob)
+ bob_net := run(ec, bob, alice)
+ ec.Dispatch()
+ ev_int.Free()
+ ev_term.Free()
+ alice_net.Free()
+ bob_net.Free()
}