From 0cea5671752bc0753d61aae993b8aa2b0df0ae18 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 11 Aug 2023 13:13:15 +0800 Subject: [PATCH] 1 --- types.go | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/types.go b/types.go index 4f65803..0a14770 100644 --- a/types.go +++ b/types.go @@ -1,6 +1,15 @@ package f5 -import "q5" +import ( + "q5" + "net" +) + +const ( + WSPROXYPACKHEAD_C_SIZE = 20 + WSPROXYPACKHEAD_S_SIZE = 16 + NET_MSG_MAGIC_CODE = uint16('K') + uint16('S') << 8 +) type MsgNode struct { @@ -19,3 +28,86 @@ type middleware struct { handlerFunc HandlerFunc entry q5.ListHead } + +type MsgHdr struct { + MsgId uint16 + SeqId uint32 + SocketHandle uint16 + IpSaddr uint32 + + Conn net.Conn + Data []byte + Msg interface{} + Entry q5.ListHead +} + +type NetMsg interface { + GetNetMsgId() uint16 +} + +/* + struct WSProxyPackHead_C + { + unsigned short packlen; + unsigned short msgid; + unsigned int seqid; + unsigned short magic_code; + + unsigned short socket_handle; + unsigned long ip_saddr; + }; +*/ +type WSProxyPackHead_C struct { + PackLen uint16 + MsgId uint16 + SeqId uint32 + MagicCode uint16 + SocketHandle uint16 + + IpSaddr uint64 +} + +/* + struct WSProxyPackHead_S + { + unsigned short packlen; + unsigned short msgid; + unsigned int seqid; + unsigned short magic_code; + unsigned short rpc_error_code; + + unsigned short socket_handle; + unsigned short ext_len; + }; +*/ +type WSProxyPackHead_S struct { + PackLen uint16 + MsgId uint16 + SeqId uint32 + MagicCode uint16 + RpcErrCode uint16 + + SocketHandle uint16 + ExtLen uint16 +} + +func (this *WSProxyPackHead_C) Read(data []byte, offset int) { + this.PackLen = q5.MkUInt16(data[offset + 0], data[offset + 1]) + this.MsgId = q5.MkUInt16(data[offset + 2], data[offset + 3]) + this.SeqId = q5.MkUInt32(data[offset + 4], data[offset + 5], + data[offset + 6], data[offset + 7]) + this.MagicCode = q5.MkUInt16(data[offset + 8], data[offset + 9]) + this.SocketHandle = q5.MkUInt16(data[offset + 10], data[offset + 11]) +} + +func (this *WSProxyPackHead_S) Write(data []byte, offset int) { + data[offset + 0] = byte(this.PackLen & 0xFF) + data[offset + 1] = byte(this.PackLen >> 8) + data[offset + 2] = byte(this.MsgId & 0xFF) + data[offset + 3] = byte(this.MsgId >> 8) + data[offset + 8] = byte('K') + data[offset + 9] = byte('S') + + data[offset + 12] = byte(this.SocketHandle & 0xFF) + data[offset + 13] = byte(this.SocketHandle >> 8) +}