YHEchoPackage/tcp/engine.go

55 lines
1.1 KiB
Go

/*
* 版权所有 (c) 上海元泓软件科技有限公司 2023.
* 严禁通过任何媒介未经授权复制本文件.
*
* 作者:mic
* Email:funui@outlook.com
*/
/*
* 版权所有 (c) 上海元泓软件科技有限公司 2022.
* 严禁通过任何媒介未经授权复制本文件.
*
* 作者:mic
* Email:funui@outlook.com
*/
package tcp
import (
"fmt"
goPool "github.com/panjf2000/gnet/v2/pkg/pool/goroutine"
"github.com/zeromicro/go-zero/core/logx"
"yh-core/common/sapi/tcp/internal"
)
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()
}