Files
bl/common/socket/ServerOption.go
2025-06-20 17:00:56 +08:00

64 lines
1.2 KiB
Go

package socket
import (
"blazing/common/socket/codec"
"blazing/common/socket/handler"
"github.com/panjf2000/gnet/pkg/pool/goroutine"
"github.com/panjf2000/gnet/v2"
)
type Server struct {
gnet.BuiltinEventEngine
eng gnet.Engine
addr string
network string
multicore bool
bufferSize int
workerPool *goroutine.Pool
codec codec.SocketCodec
handler handler.Handler
}
type Option func(*Server)
// NewServer returns a new Server
func NewServer(options ...Option) *Server {
server := &Server{
handler: handler.NewTomeeHandler(), //请求返回
codec: codec.NewTomeeSocketCodec(), //默认解码器 len+pack
workerPool: goroutine.Default(),
bufferSize: 4096, //默认缓冲区大小
multicore: true,
}
for _, option := range options {
option(server)
}
//...
return server
}
func WithSocketCodec(codec codec.SocketCodec) Option {
return func(u *Server) {
u.codec = codec
}
}
func WithSocketHandler(handler handler.Handler) Option {
return func(u *Server) {
u.handler = handler
}
}
func WithBufferSize(bufferSize int) Option {
return func(u *Server) {
u.bufferSize = bufferSize
}
}
func WithPort(port string) Option {
return func(s *Server) {
s.network = "tcp"
s.addr = ":" + port
}
}