diff options
author | Determinant <[email protected]> | 2019-06-16 23:27:05 -0400 |
---|---|---|
committer | Determinant <[email protected]> | 2019-06-16 23:27:05 -0400 |
commit | 3ba5b6536e730baf01efb3203be280c3e61319bd (patch) | |
tree | d07fd2d8f2e8db1fcfe5a14be38ba2fbf87a9075 /test_p2p_stress | |
parent | 63e3f71d4d6bed69b99bebc9866d1214837259f6 (diff) |
eliminate the use of Free()
Diffstat (limited to 'test_p2p_stress')
-rw-r--r-- | test_p2p_stress/main.go | 60 |
1 files changed, 20 insertions, 40 deletions
diff --git a/test_p2p_stress/main.go b/test_p2p_stress/main.go index 7cda52d..404956f 100644 --- a/test_p2p_stress/main.go +++ b/test_p2p_stress/main.go @@ -1,6 +1,7 @@ package main // #cgo CFLAGS: -I${SRCDIR}/../salticidae/include/ +// #cgo LDFLAGS: ${SRCDIR}/../salticidae/libsalticidae.so -Wl,-rpath=${SRCDIR}/salticidae/ // #include <stdlib.h> // #include <arpa/inet.h> // #include "salticidae/network.h" @@ -68,7 +69,6 @@ func msgAckUnserialize(msg salticidae.Msg) salticidae.UInt256 { p := msg.ConsumePayload() hash := salticidae.NewUInt256() hash.Unserialize(p) - p.Free() return hash } @@ -89,11 +89,13 @@ type TestContext struct { func (self TestContext) Free() { if self.timer != nil { - self.timer.Free() C.free(unsafe.Pointer(self.timer_ctx)) } - if self.hash != nil { - self.hash.Free() +} + +func (self AppContext) Free() { + for _, tc:= range self.tc { + tc.Free() } } @@ -105,16 +107,6 @@ type AppContext struct { tc map[uint64] *TestContext } -func (self AppContext) Free() { - self.addr.Free() - self.net.Free() - self.tcall.Free() - for _, tc:= range self.tc { - tc.Free() - } - self.ec.Free() -} - func NewTestContext() TestContext { return TestContext { ncompleted: 0 } } @@ -137,10 +129,6 @@ func sendRand(size int, app *AppContext, conn salticidae.MsgNetworkConn) { msg, hash := msgRandSerialize(size) addr := conn.GetAddr() tc := app.getTC(addr2id(addr)) - addr.Free() - if tc.hash != nil { - salticidae.UInt256(tc.hash).Free() - } tc.hash = hash app.net.AsMsgNetwork().SendMsgByMove(msg, conn) } @@ -149,6 +137,7 @@ var apps []AppContext var threads sync.WaitGroup var segBuffSize = 4096 var ec salticidae.EventContext +var ids []*C.int //export onTimeout func onTimeout(_ *C.timerev_t, userdata unsafe.Pointer) { @@ -156,7 +145,9 @@ func onTimeout(_ *C.timerev_t, userdata unsafe.Pointer) { app := &apps[ctx.app_id] tc := app.getTC(uint64(ctx.addr_id)) tc.ncompleted++ - app.net.AsMsgNetwork().Terminate(salticidae.MsgNetworkConn(ctx.conn)) + app.net.AsMsgNetwork().Terminate( + salticidae.MsgNetworkConnFromC( + salticidae.CMsgNetworkConn(ctx.conn))) var s string for addr_id, v := range app.tc { s += fmt.Sprintf(" %d(%d)", C.ntohs(C.ushort(addr_id >> 32)), v.ncompleted) @@ -166,33 +157,29 @@ func onTimeout(_ *C.timerev_t, userdata unsafe.Pointer) { //export onReceiveRand func onReceiveRand(_msg *C.struct_msg_t, _conn *C.struct_msgnetwork_conn_t, userdata unsafe.Pointer) { - msg := salticidae.Msg(_msg) + msg := salticidae.MsgFromC(salticidae.CMsg(_msg)) bytes := msgRandUnserialize(msg) hash := bytes.GetHash() - bytes.Free() - conn := salticidae.MsgNetworkConn(_conn) + conn := salticidae.MsgNetworkConnFromC(salticidae.CMsgNetworkConn(_conn)) net := conn.GetNet() ack := msgAckSerialize(hash) - hash.Free() net.SendMsgByMove(ack, conn) } //export onReceiveAck func onReceiveAck(_msg *C.struct_msg_t, _conn *C.struct_msgnetwork_conn_t, userdata unsafe.Pointer) { - hash := msgAckUnserialize(salticidae.Msg(_msg)) + hash := msgAckUnserialize(salticidae.MsgFromC(salticidae.CMsg(_msg))) id := *(* int)(userdata) app := &apps[id] - conn := salticidae.MsgNetworkConn(_conn) + conn := salticidae.MsgNetworkConnFromC(salticidae.CMsgNetworkConn(_conn)) _addr := conn.GetAddr() addr := addr2id(_addr) - _addr.Free() tc := app.getTC(addr) if !hash.IsEq(tc.hash) { //fmt.Printf("%s %s\n", hash.GetHex(), tc.hash.GetHex()) panic("corrupted I/O!") } - hash.Free() if tc.state == segBuffSize * 2 { sendRand(tc.state, app, conn) @@ -200,10 +187,9 @@ func onReceiveAck(_msg *C.struct_msg_t, _conn *C.struct_msgnetwork_conn_t, userd ctx := C.timeout_callback_context_new() ctx.app_id = C.int(id) ctx.addr_id = C.uint64_t(addr) - ctx.conn = (*C.struct_msgnetwork_conn_t)(conn.Copy()) + ctx.conn = C.msgnetwork_conn_copy(_conn) if tc.timer != nil { - tc.timer.Free() - salticidae.MsgNetworkConn(tc.timer_ctx.conn).Free() + C.msgnetwork_conn_free(tc.timer_ctx.conn) C.free(unsafe.Pointer(tc.timer_ctx)) } tc.timer = salticidae.NewTimerEvent(app.ec, salticidae.TimerEventCallback(C.onTimeout), unsafe.Pointer(ctx)) @@ -221,14 +207,13 @@ func onReceiveAck(_msg *C.struct_msg_t, _conn *C.struct_msgnetwork_conn_t, userd //export connHandler func connHandler(_conn *C.struct_msgnetwork_conn_t, connected C.bool, userdata unsafe.Pointer) { - conn := salticidae.MsgNetworkConn(_conn) + conn := salticidae.MsgNetworkConnFromC(salticidae.CMsgNetworkConn(_conn)) id := *(*int)(userdata) app := &apps[id] if connected { if conn.GetMode() == salticidae.CONN_MODE_ACTIVE { addr := conn.GetAddr() tc := app.getTC(addr2id(addr)) - addr.Free() tc.state = 1 fmt.Printf("INFO: increasing phase\n") sendRand(tc.state, app, conn) @@ -246,7 +231,7 @@ func errorHandler(_err *C.struct_SalticidaeCError, fatal C.bool, _ unsafe.Pointe //export onStopLoop func onStopLoop(_ *C.threadcall_handle_t, userdata unsafe.Pointer) { - ec := salticidae.EventContext(userdata) + ec := apps[*(*int)(userdata)].ec ec.Stop() } @@ -256,7 +241,7 @@ func onTerm(_ C.int, _ unsafe.Pointer) { a := &apps[i] a.tcall.AsyncCall( salticidae.ThreadCallCallback(C.onStopLoop), - unsafe.Pointer(a.ec)) + unsafe.Pointer(ids[i])) } threads.Wait() ec.Stop() @@ -277,7 +262,7 @@ func main() { netconfig.ConnTimeout(5) netconfig.PingPeriod(2) apps = make([]AppContext, len(addrs)) - ids := make([](*C.int), len(addrs)) + ids = make([](*C.int), len(addrs)) for i, addr := range addrs { ec := salticidae.NewEventContext() apps[i] = AppContext { @@ -297,7 +282,6 @@ func main() { net.RegErrorHandler(salticidae.MsgNetworkErrorCallback(C.errorHandler), _i) net.Start() } - netconfig.Free() threads.Add(len(apps)) for i, _ := range apps { @@ -324,8 +308,4 @@ func main() { ev_term.Add(salticidae.SIGTERM) ec.Dispatch() - - ev_int.Free() - ev_term.Free() - ec.Free() } |