Blame view

common/components/connector.go 2.03 KB
54b3f133   zhangqijia   add connector int...
1
2
3
4
  package components
  
  import (
  	"fmt"
495e9142   zhangqijia   fix: 增加DisConnect...
5
  	"github.com/golang/protobuf/proto"
54b3f133   zhangqijia   add connector int...
6
7
  	"net"
  	"pro2d/common/logger"
495e9142   zhangqijia   fix: 增加DisConnect...
8
  	"pro2d/pb"
54b3f133   zhangqijia   add connector int...
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  )
  
  type ConnectorOption func(*Connector)
  
  func WithCtorSplitter(splitter ISplitter) ConnectorOption {
  	return func(connector *Connector) {
  		connector.splitter = splitter
  	}
  }
  
  func WithCtorCount(count int) ConnectorOption {
  	return func(connector *Connector) {
  		connector.sum = count
  	}
  }
  
  type Connector struct {
  	IConnector
495e9142   zhangqijia   fix: 增加DisConnect...
27
  	IConnection
54b3f133   zhangqijia   add connector int...
28
  	IServer
495e9142   zhangqijia   fix: 增加DisConnect...
29
  	Id       int
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
30
31
32
33
  	splitter ISplitter
  	ip       string
  	port     int
  	sum      int
54b3f133   zhangqijia   add connector int...
34
35
36
37
  }
  
  func NewConnector(ip string, port int, options ...ConnectorOption) IConnector {
  	c := &Connector{
495e9142   zhangqijia   fix: 增加DisConnect...
38
39
  		ip:   ip,
  		port: port,
54b3f133   zhangqijia   add connector int...
40
41
42
43
44
45
46
  	}
  	for _, option := range options {
  		option(c)
  	}
  	return c
  }
  
495e9142   zhangqijia   fix: 增加DisConnect...
47
48
49
50
  func (c *Connector) GetConn() IConnection {
  	return c.IConnection
  }
  
54b3f133   zhangqijia   add connector int...
51
  func (c *Connector) Connect() error {
495e9142   zhangqijia   fix: 增加DisConnect...
52
53
54
  	conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", c.ip, c.port))
  	if err != nil {
  		return err
54b3f133   zhangqijia   add connector int...
55
  	}
495e9142   zhangqijia   fix: 增加DisConnect...
56
57
58
59
60
  	cli := NewConn(c.Id, conn, c.splitter)
  	cli.SetMessageCallback(c.OnMessage)
  	cli.SetCloseCallback(c.OnClose)
  	cli.SetTimerCallback(c.OnTimer)
  	c.IConnection = cli
54b3f133   zhangqijia   add connector int...
61
62
63
64
  
  	return nil
  }
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
65
  func (c *Connector) DisConnect() {
495e9142   zhangqijia   fix: 增加DisConnect...
66
  	c.IConnection.Stop()
54b3f133   zhangqijia   add connector int...
67
68
  }
  
8568cf44   zhangqijia   update preserve
69
  func (c *Connector) Send(cmd uint32, b []byte, preserve uint32) error {
495e9142   zhangqijia   fix: 增加DisConnect...
70
  	logger.Debug("connector send cmd: %d, msg: %s", cmd, b)
8568cf44   zhangqijia   update preserve
71
  	return c.IConnection.Send(0, cmd, b, preserve)
54b3f133   zhangqijia   add connector int...
72
73
  }
  
8568cf44   zhangqijia   update preserve
74
  func (c *Connector) SendPB(cmd pb.ProtoCode, b proto.Message, preserve uint32) error {
495e9142   zhangqijia   fix: 增加DisConnect...
75
  	if b == nil {
8568cf44   zhangqijia   update preserve
76
  		return c.Send(uint32(cmd), nil, preserve)
495e9142   zhangqijia   fix: 增加DisConnect...
77
78
79
80
81
82
  	}
  
  	l, err := proto.Marshal(b)
  	if err != nil {
  		return err
  	}
8568cf44   zhangqijia   update preserve
83
  	return c.Send(uint32(cmd), l, preserve)
54b3f133   zhangqijia   add connector int...
84
85
  }
  
495e9142   zhangqijia   fix: 增加DisConnect...
86
87
  func (c *Connector) GetSplitter() ISplitter {
  	return c.splitter
54b3f133   zhangqijia   add connector int...
88
89
  }
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
90
  func (c *Connector) OnMessage(msg IMessage) {
495e9142   zhangqijia   fix: 增加DisConnect...
91
  	logger.Debug("recv msg errorCode: %d cmd: %d, conn: %d data: %s", msg.GetHeader().GetErrCode(), msg.GetHeader().GetMsgID(), msg.GetSID(), msg.GetData())
54b3f133   zhangqijia   add connector int...
92
93
  }
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
94
  func (c *Connector) OnClose(conn IConnection) {
54b3f133   zhangqijia   add connector int...
95
96
97
  	logger.Debug("onclose id: %d", conn.GetID())
  }
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
98
  func (c *Connector) OnTimer(conn IConnection) {
495e9142   zhangqijia   fix: 增加DisConnect...
99
  	//logger.Debug("ontimer id: %d", conn.GetID())
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
100
  }