Files
bl/common/socket/ServerOption.go

79 lines
1.5 KiB
Go
Raw Normal View History

2025-06-20 17:00:56 +08:00
package socket
import (
"blazing/common/socket/codec"
"github.com/gogf/gf/v2/util/gconv"
2025-06-20 17:00:56 +08:00
"github.com/panjf2000/gnet/pkg/pool/goroutine"
"github.com/panjf2000/gnet/v2"
)
type Handler interface {
Handle(gnet.Conn, []byte)
}
2025-06-20 17:00:56 +08:00
type Server struct {
gnet.BuiltinEventEngine
2026-02-14 03:05:51 +08:00
eng gnet.Engine
addr string
2025-06-20 17:00:56 +08:00
network string
multicore bool
bufferSize int
workerPool *goroutine.Pool
codec codec.SocketCodec
handler Handler
2025-06-24 22:09:05 +08:00
discorse bool
2026-02-10 13:05:45 +08:00
//quit bool
2026-02-07 21:51:34 +08:00
// batchRead int
serverid uint16
port uint16
2025-06-20 17:00:56 +08:00
}
type Option func(*Server)
// NewServer returns a new Server
func NewServer(options ...Option) *Server {
server := &Server{
// handler: handler.NewTomeeHandler(), //请求返回
2025-06-20 17:00:56 +08:00
codec: codec.NewTomeeSocketCodec(), //默认解码器 len+pack
workerPool: goroutine.Default(),
2026-02-07 21:51:34 +08:00
bufferSize: 40960, //默认缓冲区大小
2025-06-20 17:00:56 +08:00
multicore: true,
2026-02-07 21:51:34 +08:00
//batchRead: 8,
//discorse: true,
2025-06-20 17:00:56 +08:00
}
for _, option := range options {
option(server)
}
//...
return server
}
func WithSocketCodec(codec codec.SocketCodec) Option {
return func(u *Server) {
u.codec = codec
}
}
2025-06-24 22:09:05 +08:00
func WithCORS() Option {
return func(u *Server) {
u.discorse = true
2025-06-24 22:09:05 +08:00
}
}
func WithSocketHandler(handler Handler) Option {
2025-06-20 17:00:56 +08:00
return func(u *Server) {
u.handler = handler
}
}
func WithBufferSize(bufferSize int) Option {
return func(u *Server) {
u.bufferSize = bufferSize
}
}
func WithPort(port int) Option {
2025-06-20 17:00:56 +08:00
return func(s *Server) {
s.network = "tcp"
s.addr = ":" + gconv.String(port)
2025-06-20 17:00:56 +08:00
}
}