YHEchoPackage/tcp/engine.go

47 lines
982 B
Go

/*
* 版权所有 (c) 上海元泓软件科技有限公司 2022.
* 严禁通过任何媒介未经授权复制本文件.
*
* 作者:mic
* Email:funui@outlook.com
*/
package tcpgnet
import (
"fmt"
"git.yhrjkj.com/YuanHong/YHEchoPackage/tcp/internal"
goPool "github.com/panjf2000/gnet/v2/pkg/pool/goroutine"
"github.com/zeromicro/go-zero/core/logx"
)
type engine struct {
conf EchoConf
routes featuredRoutes
}
func newEngine(c EchoConf) *engine {
svr := &engine{
conf: c,
}
return svr
}
func (ng *engine) addRoutes(r featuredRoutes) {
ng.routes = r
}
func (ng *engine) start() error {
ss := &GnetServer{
workerPool: goPool.Default(),
network: ng.conf.Network,
addr: fmt.Sprintf("%s:%d", ng.conf.Host, ng.conf.Port),
}
ss.addRoutes(ng.routes)
return internal.StartEcho(ss, ng.conf.Network, ng.conf.Host, ng.conf.Port)
}
func (ng *engine) stop() error {
internal.StopEcho(ng.conf.Network, ng.conf.Host, ng.conf.Port)
return logx.Close()
}