diff options
author | Determinant <[email protected]> | 2019-06-07 22:06:56 -0400 |
---|---|---|
committer | Determinant <[email protected]> | 2019-06-07 22:06:56 -0400 |
commit | 3a8f691708ab6bb047c94c7ce2b40e83e821a979 (patch) | |
tree | fef7854ca2fcd397aea8b4bb9f95dd65cbaed186 /test_msgnet | |
parent | 4a37b259717e545c090fb11b6a36f7e75118c2f9 (diff) |
the first MsgNetwork example is working
Diffstat (limited to 'test_msgnet')
-rw-r--r-- | test_msgnet/main.go | 40 | ||||
-rw-r--r-- | test_msgnet/main_.go | 7 |
2 files changed, 31 insertions, 16 deletions
diff --git a/test_msgnet/main.go b/test_msgnet/main.go index b9a5048..ce6d0d0 100644 --- a/test_msgnet/main.go +++ b/test_msgnet/main.go @@ -1,6 +1,13 @@ package main +// void onReceiveAck(const msg_t *, const msgnetwork_conn_t *); -// void onTerm_cgo(int sig); + +// #cgo CFLAGS: -I${SRCDIR}/../salticidae/include/ +// #include "salticidae/network.h" +// void onTerm(int sig); +// void onReceiveHello(msg_t *, msgnetwork_conn_t *); +// void onReceiveAck(msg_t *, msgnetwork_conn_t *); +// void connHandler(msgnetwork_conn_t *, bool); import "C" import ( @@ -17,7 +24,7 @@ const ( ) //export onTerm -func onTerm(_ int) { +func onTerm(_ C.int) { ec.Stop() } @@ -56,7 +63,10 @@ type MyNet struct { var alice, bob MyNet -func onReceiveHello(_msg salticidae.Msg, conn salticidae.MsgNetworkConn) { +//export onReceiveHello +func onReceiveHello(__msg *C.struct_msg_t, _conn *C.struct_msgnetwork_conn_t) { + _msg := salticidae.Msg(__msg) + conn := salticidae.MsgNetworkConn(_conn) net := conn.GetNet() name := bob.name if net == alice.net.GetInner() { @@ -69,7 +79,9 @@ func onReceiveHello(_msg salticidae.Msg, conn salticidae.MsgNetworkConn) { ack.Free() } -func onReceiveAck(msg salticidae.Msg, conn salticidae.MsgNetworkConn) { +//export onReceiveAck +func onReceiveAck(_ *C.struct_msg_t, _conn *C.struct_msgnetwork_conn_t) { + conn := salticidae.MsgNetworkConn(_conn) net := conn.GetNet() name := bob.name if net == alice.net.GetInner() { @@ -78,7 +90,9 @@ func onReceiveAck(msg salticidae.Msg, conn salticidae.MsgNetworkConn) { fmt.Printf("[%s] the peer knows\n", name) } -func connHandler(conn salticidae.MsgNetworkConn, connected bool) { +//export connHandler +func connHandler(_conn *C.struct_msgnetwork_conn_t, connected C.bool) { + conn := salticidae.MsgNetworkConn(_conn) net := conn.GetNet() n := &bob if net == alice.net.GetInner() { @@ -115,8 +129,16 @@ func main() { alice_addr := salticidae.NewAddrFromIPPortString("127.0.0.1:12345") bob_addr := salticidae.NewAddrFromIPPortString("127.0.0.1:12346") - alice := genMyNet(ec, "Alice") - bob := genMyNet(ec, "Bob") + alice = genMyNet(ec, "Alice") + bob = genMyNet(ec, "Bob") + + alice.net.RegHandler(MSG_OPCODE_HELLO, salticidae.MsgNetworkMsgCallback(unsafe.Pointer(C.onReceiveHello))) + alice.net.RegHandler(MSG_OPCODE_ACK, salticidae.MsgNetworkMsgCallback(unsafe.Pointer(C.onReceiveAck))) + alice.net.RegConnHandler(salticidae.MsgNetworkConnCallback(unsafe.Pointer(C.connHandler))) + + bob.net.RegHandler(MSG_OPCODE_HELLO, salticidae.MsgNetworkMsgCallback(unsafe.Pointer(C.onReceiveHello))) + bob.net.RegHandler(MSG_OPCODE_ACK, salticidae.MsgNetworkMsgCallback(unsafe.Pointer(C.onReceiveAck))) + bob.net.RegConnHandler(salticidae.MsgNetworkConnCallback(unsafe.Pointer(C.connHandler))) alice.net.Start() bob.net.Start() @@ -130,9 +152,9 @@ func main() { alice_addr.Free() bob_addr.Free() - ev_int := salticidae.NewSigEvent(ec, salticidae.SigEventCallback(unsafe.Pointer(C.onTerm_cgo))) + ev_int := salticidae.NewSigEvent(ec, salticidae.SigEventCallback(unsafe.Pointer(C.onTerm))) ev_int.Add(salticidae.SIGINT) - ev_term := salticidae.NewSigEvent(ec, salticidae.SigEventCallback(unsafe.Pointer(C.onTerm_cgo))) + ev_term := salticidae.NewSigEvent(ec, salticidae.SigEventCallback(unsafe.Pointer(C.onTerm))) ev_term.Add(salticidae.SIGTERM) ec.Dispatch() diff --git a/test_msgnet/main_.go b/test_msgnet/main_.go deleted file mode 100644 index 2f53d93..0000000 --- a/test_msgnet/main_.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -// void onTerm_cgo(int sig) { -// void onTerm(int); -// onTerm(sig); -// } -import "C" |