Blame view

common/components/icompontents.go 1.53 KB
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  package components
  
  //网络包头
  type IHead interface {
  	GetDataLen() uint32 //获取消息数据段长度
  	GetMsgID() uint32   //获取消息ID
  	GetErrCode() int32   //获取消息错误码
  	GetPreserve() uint32   //获取预留数据
  }
  
  //网络包
  type IMessage interface {
  	IHead
  	GetHeader() IHead       //获取消息头
  	SetHeader(header IHead) //设置消息头
  
  	GetData() []byte    //获取消息内容
  	SetData([]byte)    //设置消息内容
  
  	SetSessId(int)	//设置连接id
  	GetSessId() int	//获取连接id
  }
  
  //网络拆包解包器
  type ISplitter interface {
  	UnPack([]byte) (IMessage, error)
  	Pack(cmd uint32, data []byte, errcode int32, preserve uint32) ([]byte, error)
  	ParseMsg (data []byte, atEOF bool) (advance int, token []byte, err error)
  	GetHeadLen() uint32
  }
  
9a9d092e   zhangqijia   每条连接增加一个定时器,每条连接增...
32
33
34
35
36
  type ConnectionCallback func(IConnection)
  type CloseCallback func(IConnection)
  type MessageCallback func(IMessage)
  type TimerCallback func(IConnection)
  
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
37
38
39
40
41
42
43
44
45
46
  //链接
  type IConnection interface {
  	GetID() int
  	Start()
  	Stop()
  	Send(code int32, cmd uint32, b []byte) error
  
  	SetConnectionCallback(ConnectionCallback)
  	SetMessageCallback(MessageCallback)
  	SetCloseCallback(CloseCallback)
9a9d092e   zhangqijia   每条连接增加一个定时器,每条连接增...
47
  	SetTimerCallback(TimerCallback)
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
48
49
  }
  
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  //server
  type IServer interface {
  	Start() error
  	Stop()
  
  	GetSplitter() ISplitter
  	GetIConnection(id int) IConnection
  
  	SetConnectionCallback(ConnectionCallback)
  	SetMessageCallback(MessageCallback)
  	SetCloseCallback(CloseCallback)
  	SetTimerCallback(TimerCallback)
  }
  
  //httpserver
  type IHttp interface {
  	Start() error
  	Stop()
  	BindHandler(interface{})
  }