From f7fd67fcdc911e8f01137694dfdbb64c895ddcbb Mon Sep 17 00:00:00 2001 From: magiclvzs <441707528@qq.com> Date: Fri, 16 Nov 2018 21:16:43 +0800 Subject: [PATCH] =?UTF-8?q?cmd=E5=8F=AF=E4=BB=A5=E8=AF=BB=E5=8F=96raw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cmd可以读取raw --- init.go | 3 ++- msgque.go | 7 ++++++- msgque_tcp.go | 22 +++++++++++++++++++--- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/init.go b/init.go index d2bbabf..6cb0fbd 100644 --- a/init.go +++ b/init.go @@ -89,7 +89,8 @@ var Config = struct { SSLCrtPath string SSLKeyPath string EnableWss bool -}{UdpServerGoCnt: 64, TimeSyncInterval: 10, PoolSize: 50000} + ReadDataBuffer int +}{UdpServerGoCnt: 64, TimeSyncInterval: 10, PoolSize: 50000, ReadDataBuffer: 1 << 12} var stopCheckIndex uint64 var stopCheckMap = struct { diff --git a/msgque.go b/msgque.go index 5d446eb..0310e43 100644 --- a/msgque.go +++ b/msgque.go @@ -56,6 +56,7 @@ type IMsgQue interface { DelCallback(m *Message) SetSendFast() SetTimeout(t int) + SetCmdReadRaw() GetTimeout() int Reconnect(t int) //重连间隔 最小1s,此函数仅能连接关闭是调用 @@ -115,7 +116,9 @@ func (r *msgQue) getGMsg(add bool) *gMsg { gm := gmsgArray[r.gmsgId] return gm } +func (r *msgQue) SetCmdReadRaw() { +} func (r *msgQue) Available() bool { return r.available } @@ -490,7 +493,9 @@ func StartServer(addr string, typ MsgType, handler IMsgHandler, parser IParserFa if addrs[0] == "wss" { Config.EnableWss = true } - LogInfo("ws type msgque noly support MsgTypeCmd now auto set to MsgTypeCmd") + if typ != MsgTypeCmd { + LogInfo("ws type msgque noly support MsgTypeCmd now auto set to MsgTypeCmd") + } msgque := newWsListen(naddr[0], url, MsgTypeCmd, handler, parser) Go(func() { LogDebug("process listen for ws msgque:%d", msgque.id) diff --git a/msgque_tcp.go b/msgque_tcp.go index 57d123a..73c3035 100644 --- a/msgque_tcp.go +++ b/msgque_tcp.go @@ -17,6 +17,11 @@ type tcpMsgQue struct { address string wait sync.WaitGroup connecting int32 + rawBuffer []byte +} + +func (r *tcpMsgQue) SetCmdReadRaw() { + r.rawBuffer = make([]byte, Config.ReadDataBuffer) } func (r *tcpMsgQue) GetNetType() NetType { @@ -57,8 +62,8 @@ func (r *tcpMsgQue) LocalAddr() string { } func (r *tcpMsgQue) RemoteAddr() string { - if r.realRemoteAddr != ""{ - return r.realRemoteAddr + if r.realRemoteAddr != "" { + return r.realRemoteAddr } if r.conn != nil { return r.conn.RemoteAddr().String() @@ -221,8 +226,19 @@ func (r *tcpMsgQue) writeMsg() { func (r *tcpMsgQue) readCmd() { reader := bufio.NewReader(r.conn) + var err error + var len int + var data []byte for !r.IsStop() { - data, err := reader.ReadBytes('\n') + if r.rawBuffer != nil { + len, err = reader.Read(r.rawBuffer) + if err == nil && len > 0 { + data = make([]byte, len) + copy(data, r.rawBuffer) + } + } else { + data, err = reader.ReadBytes('\n') + } if err != nil { break }