aceld / aceld/zinx

connection.go SendBuffMsg函数代码重复

Offen
#292 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Go
Sterne
7.8k
Forks
1.3k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

原函数
```ruby
func (c *Connection) SendBuffMsg(msgID uint32, data []byte) error {
if c.isClosed() == true {
return errors.New("connection closed when send buff msg")
}
if c.msgBuffChan == nil && c.setStartWriterFlag() {
c.msgBuffChan = make(chan []byte, zconf.GlobalObject.MaxMsgChanLen)
// Start a Goroutine to write data back to the client
// This method only reads data from the MsgBuffChan without allocating memory or starting a Goroutine
// (开启用于写回客户端数据流程的Goroutine
// 此方法只读取MsgBuffChan中的数据没调用SendBuffMsg可以分配内存和启用协程)
go c.StartWriter()
}

idleTimeout := time.NewTimer(5 * time.Millisecond)
defer idleTimeout.Stop()

msg, err := c.packet.Pack(zpack.NewMsgPackage(msgID, data))
if err != nil {
zlog.Ins().ErrorF("Pack error msg ID = %d", msgID)
return errors.New("Pack error msg ")
}

// send timeout
select {
case <-idleTimeout.C:
return errors.New("send buff msg timeout")
case c.msgBuffChan <- msg:
return nil
}
}
```
其实前文已经写了一个SendToQueue的函数,却没有调用,因此代码可以简化为
```ruby
func (c *Connection) SendBuffMsg(msgID uint32, data []byte) error {
msg, err := c.packet.Pack(zpack.NewMsgPackage(msgID, data))
if err != nil {
zlog.Ins().ErrorF("Pack error msg ID = %d", msgID)
return errors.New("Pack error msg ")
}
return c.SendToQueue(msg)
}
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.