|
@@ -110,7 +110,11 @@ func (self *Session) Write(pkt nnet.IPacket, timeout time.Duration) error {
|
|
|
if timeout > 0 {
|
|
if timeout > 0 {
|
|
|
_ = self.conn.SetWriteDeadline(time.Now().Add(timeout))
|
|
_ = self.conn.SetWriteDeadline(time.Now().Add(timeout))
|
|
|
}
|
|
}
|
|
|
- _, err := self.conn.Write(pkt.Serialize())
|
|
|
|
|
|
|
+ data, err := self.hub.Protocol().Serialize(pkt)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ _, err = self.conn.Write(data)
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -204,11 +208,13 @@ func (self *Session) loopWrite() {
|
|
|
if self.IsClosed() {
|
|
if self.IsClosed() {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- data := pkt.Serialize()
|
|
|
|
|
- defer pkt.Destroy(data)
|
|
|
|
|
|
|
+ data, err := self.hub.Protocol().Serialize(pkt)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ continue
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
_ = self.conn.SetWriteDeadline(time.Now().Add(self.hub.Conf().Timeout))
|
|
_ = self.conn.SetWriteDeadline(time.Now().Add(self.hub.Conf().Timeout))
|
|
|
- _, err := self.conn.Write(data)
|
|
|
|
|
|
|
+ _, err = self.conn.Write(data)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
reason = CLOSE_REASON_WRITE
|
|
reason = CLOSE_REASON_WRITE
|
|
|
return
|
|
return
|