From 4a37b259717e545c090fb11b6a36f7e75118c2f9 Mon Sep 17 00:00:00 2001 From: Determinant Date: Fri, 7 Jun 2019 19:32:54 -0400 Subject: ... --- salticidae.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 6 deletions(-) (limited to 'salticidae.go') diff --git a/salticidae.go b/salticidae.go index 1dce21e..ad80b88 100644 --- a/salticidae.go +++ b/salticidae.go @@ -13,6 +13,7 @@ import "unsafe" type rawptr_t = unsafe.Pointer + type NetAddr = *C.struct_netaddr_t func NewAddrFromIPPortString(addr string) (res NetAddr) { @@ -22,26 +23,88 @@ func NewAddrFromIPPortString(addr string) (res NetAddr) { return } -type MsgNetwork = *C.struct_msgnetwork_t +func (self NetAddr) Free() { C.netaddr_free(self) } type EventContext = *C.struct_eventcontext_t func NewEventContext() EventContext { return C.eventcontext_new() } +func (self EventContext) Free() { C.eventcontext_free(self) } func (self EventContext) Dispatch() { C.eventcontext_dispatch(self) } func (self EventContext) Stop() { C.eventcontext_stop(self) } +type Opcode = uint8 + +type Msg = *C.struct_msg_t + +func NewMsg(opcode Opcode, _moved_payload ByteArray) Msg { + return C.msg_new(C._opcode_t(opcode), _moved_payload) +} + +func (self Msg) Free() { C.msg_free(self) } + +func (self Msg) GetPayload() DataStream { + return C.msg_get_payload(self) +} + +func (self Msg) GetOpcode() Opcode { + return Opcode(C.msg_get_opcode(self)) +} + +type MsgNetworkInner = *C.struct_msgnetwork_t + +type MsgNetwork struct { + inner MsgNetworkInner +} + +type MsgNetworkConn = *C.struct_msgnetwork_conn_t + +type MsgNetworkConnMode = C.msgnetwork_conn_mode_t + + +func (self MsgNetworkConn) GetNet() MsgNetworkInner { + return C.msgnetwork_conn_get_net(self) +} + +var ( + CONN_MODE_ACTIVE = MsgNetworkConnMode(C.CONN_MODE_ACTIVE) + CONN_MODE_PASSIVE = MsgNetworkConnMode(C.CONN_MODE_PASSIVE) + CONN_MODE_DEAD = MsgNetworkConnMode(C.CONN_MODE_DEAD) +) + +func (self MsgNetworkConn) GetMode() MsgNetworkConnMode { + return C.msgnetwork_conn_get_mode(self) +} + +func (self MsgNetworkConn) GetAddr() NetAddr { + return C.msgnetwork_conn_get_addr(self) +} + type MsgNetworkConfig = *C.struct_msgnetwork_config_t func NewMsgNetworkConfig() MsgNetworkConfig { return C.msgnetwork_config_new() } +func (self MsgNetworkConfig) Free() { C.msgnetwork_config_free(self) } + func NewMsgNetwork(ec EventContext, config MsgNetworkConfig) MsgNetwork { - return C.msgnetwork_new(ec, config) + return MsgNetwork { + inner: C.msgnetwork_new(ec, config), + } } -func (self MsgNetwork) Start() { C.msgnetwork_start(self) } -func (self MsgNetwork) Listen(addr NetAddr) { C.msgnetwork_listen(self, addr) } -func (self MsgNetwork) Connect(addr NetAddr) { C.msgnetwork_connect(self, addr) } -func (self MsgNetwork) Free() { C.msgnetwork_free(self) } +func (self MsgNetwork) Free() { C.msgnetwork_free(self.inner) } +func (self MsgNetwork) SendMsg(msg Msg, conn MsgNetworkConn) { self.inner.SendMsg(msg, conn) } +func (self MsgNetwork) Connect(addr NetAddr) { self.inner.Connect(addr) } +func (self MsgNetwork) Listen(addr NetAddr) { C.msgnetwork_listen(self.inner, addr) } +func (self MsgNetwork) Start() { C.msgnetwork_start(self.inner) } +func (self MsgNetwork) GetInner() MsgNetworkInner { return self.inner } + +func (self MsgNetworkInner) SendMsg(msg Msg, conn MsgNetworkConn) { + C.msgnetwork_send_msg(self, msg, conn) +} + +func (self MsgNetworkInner) Connect(addr NetAddr) { + C.msgnetwork_connect(self, addr) +} type SigEvent = *C.sigev_t type SigEventCallback = C.sigev_callback_t -- cgit v1.2.3