Skip to content

Commit

Permalink
优化: 事件成员及枚举
Browse files Browse the repository at this point in the history
  • Loading branch information
davyxu committed Jul 20, 2017
1 parent df9afe6 commit 7f4e8a0
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 91 deletions.
4 changes: 2 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@

## 变化及修改

- 去除Protobuf协议依赖(依然支持Protobuf)
- 底层去除Protobuf协议依赖(依然支持Protobuf)

- 大幅降低底层内存分配, GC降低后, benchmark提升1w QPS
- 大幅降低底层内存分配, GC降低后, benchmark IOPS提升

- 现在使用cellnet.RegisterMessage注册消息, 回调参数统一为*Event

Expand Down
73 changes: 37 additions & 36 deletions event.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"sync/atomic"
)

type EventType int
type EventType int32

const (
Event_None EventType = iota
Expand All @@ -17,7 +17,39 @@ const (
Event_Closed
Event_Recv
Event_Send
Event_Post
)

func (self EventType) String() string {
switch self {
case Event_Recv:
return "recv"
case Event_Send:
return "send"
case Event_Connected:
return "connected"
case Event_ConnectFailed:
return "connectfailed"
case Event_Accepted:
return "accepted"
case Event_AcceptFailed:
return "acceptfailed"
case Event_Closed:
return "closed"
}

return fmt.Sprintf("unknown(%d)", self)
}

type Result int32

const (
Result_OK Result = iota
Result_SocketError // 网络错误
Result_SocketTimeout // Socket超时
Result_PackageCrack // 封包破损
Result_CodecError
Result_RequestClose // 请求关闭
Result_NextChain
)

// 会话事件
Expand Down Expand Up @@ -116,27 +148,6 @@ func (self *Event) PeerName() string {
return self.Ses.FromPeer().Address()
}

func (self *Event) TypeString() string {
switch self.Type {
case Event_Recv:
return "Event_Recv"
case Event_Send:
return "Event_Send"
case Event_Connected:
return "Event_Connected"
case Event_ConnectFailed:
return "Event_ConnectFailed"
case Event_Accepted:
return "Event_Accepted"
case Event_AcceptFailed:
return "Event_AcceptFailed"
case Event_Closed:
return "Event_Closed"
}

return fmt.Sprintf("unknown(%d)", self.Type)
}

func (self *Event) SessionID() int64 {
if self.Ses == nil {
return 0
Expand Down Expand Up @@ -178,27 +189,17 @@ func (self *Event) MsgName() string {
return meta.Name
}

func (self *Event) String() string {
return fmt.Sprintf("#%s(%s) sid: %d MsgID: %d %s | %s Raw: (%d)%v", self.TypeString(), self.PeerName(), self.Ses.ID(), self.MsgID, self.MsgName(), self.MsgString(), self.MsgSize(), self.Data)
}

func (self *Event) FromMessage(msg interface{}) *Event {

var err error
self.Data, self.MsgID, err = EncodeMessage(msg)

if err != nil {
log.Debugln(err, self.String())
log.Debugln(err, *self)
}

return self
}

func (self *Event) FromMeta(meta *MessageMeta) *Event {

if meta != nil {
self.MsgID = meta.ID
}
// Data+ID / Msg 二选一
self.Msg = nil

return self
}
Expand Down
13 changes: 5 additions & 8 deletions extend/sysevent.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,15 @@ func PostSystemEvent(ses cellnet.Session, t cellnet.EventType, chain cellnet.Han
// 直接放在这里, decoder里遇到系统事件不会进行decode操作
switch t {
case cellnet.Event_Closed:
ev.Msg = &coredef.SessionClosed{Result: r}
ev.FromMessage(ev.Msg)
ev.FromMessage(&coredef.SessionClosed{Result: r})
case cellnet.Event_AcceptFailed:
ev.Msg = &coredef.SessionAcceptFailed{Result: r}
ev.FromMessage(ev.Msg)
ev.FromMessage(&coredef.SessionAcceptFailed{Result: r})
case cellnet.Event_ConnectFailed:
ev.Msg = &coredef.SessionConnectFailed{Result: r}
ev.FromMessage(ev.Msg)
ev.FromMessage(&coredef.SessionConnectFailed{Result: r})
case cellnet.Event_Accepted:
ev.FromMeta(metaSessionAccepted)
ev.MsgID = metaSessionAccepted.ID
case cellnet.Event_Connected:
ev.FromMeta(metaSessionConnected)
ev.MsgID = metaSessionConnected.ID
default:
panic("unknown system error")
}
Expand Down
4 changes: 2 additions & 2 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ func HandlerString(h EventHandler) string {
func HandlerLog(h EventHandler, ev *Event) {

if EnableHandlerLog {
log.Debugf("%d %s [%s] chain: %d <%s> SesID: %d Result: %d MsgID: %d(%s) {%s} Tag: %v TransmitTag: %v Raw: (%d)%v",
log.Debugf("evid: %d #%s [%s] chain: %d <%s> SesID: %d Result: %d MsgID: %d(%s) {%s} Tag: %v TransmitTag: %v Raw: (%d)%v",
ev.UID,
ev.TypeString(),
ev.Type.String(),
ev.PeerName(),
ev.chainid,
HandlerString(h),
Expand Down
28 changes: 1 addition & 27 deletions handler_msglog.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package cellnet

import (
"fmt"

"errors"
"sync"
)
Expand Down Expand Up @@ -38,32 +36,8 @@ func MsgLog(ev *Event) {

// 需要在收到消息, 不经过decoder时, 就要打印出来, 所以手动解开消息, 有少许耗费

log.Debugf("#%s(%s) sid: %d %s(%d) size: %d | %s", dirString(ev), ev.PeerName(), ev.SessionID(), ev.MsgName(), ev.MsgID, ev.MsgSize(), ev.MsgString())

}

func dirString(ev *Event) string {

switch ev.Type {
case Event_Recv:
return "recv"
case Event_Post:
return "post"
case Event_Send:
return "send"
case Event_Connected:
return "connected"
case Event_ConnectFailed:
return "connectfailed"
case Event_Accepted:
return "accepted"
case Event_AcceptFailed:
return "acceptefailed"
case Event_Closed:
return "closed"
}
log.Debugf("#%s(%s) sid: %d %s(%d) size: %d | %s", ev.Type.String(), ev.PeerName(), ev.SessionID(), ev.MsgName(), ev.MsgID, ev.MsgSize(), ev.MsgString())

return fmt.Sprintf("unknown(%d)", ev.Type)
}

var (
Expand Down
13 changes: 0 additions & 13 deletions result.go

This file was deleted.

3 changes: 0 additions & 3 deletions rpc/handler_box.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ func (self *BoxHandler) Call(ev *cellnet.Event) {
CallID: ev.TransmitTag.(int64),
})

// 让msglog重新从data中解析出msg来
ev.Msg = nil

}

func NewBoxHandler() cellnet.EventHandler {
Expand Down

0 comments on commit 7f4e8a0

Please sign in to comment.