vRp.CD2g_test/server/gnet.go

55 lines
994 B
Go

package server
import (
"bytes"
"github.com/panjf2000/gnet"
"time"
)
type gNet struct {
*Server
state chan<- error
}
func (g *gNet) OnInitComplete(server gnet.Server) (action gnet.Action) {
if g.state != nil {
g.state <- nil
g.state = nil
}
return
}
func (g *gNet) OnShutdown(server gnet.Server) {
return
}
func (g *gNet) OnOpened(c gnet.Conn) (out []byte, action gnet.Action) {
conn := newGNetConn(g.Server, c)
c.SetContext(conn)
g.OnConnectionOpenedEvent(conn)
return
}
func (g *gNet) OnClosed(c gnet.Conn, err error) (action gnet.Action) {
conn := c.Context().(*Conn)
conn.Close(err)
return
}
func (g *gNet) PreWrite(c gnet.Conn) {
return
}
func (g *gNet) AfterWrite(c gnet.Conn, b []byte) {
return
}
func (g *gNet) React(packet []byte, c gnet.Conn) (out []byte, action gnet.Action) {
g.Server.PushPacketMessage(c.Context().(*Conn), 0, bytes.Clone(packet))
return nil, gnet.None
}
func (g *gNet) Tick() (delay time.Duration, action gnet.Action) {
return
}