yess
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
|
||||
"github.com/admin-else/strom/event"
|
||||
"github.com/admin-else/strom/proto"
|
||||
"github.com/admin-else/strom/proto_base"
|
||||
)
|
||||
|
||||
func Servee(c net.Conn) (ret *proto.Conn) {
|
||||
ret = &proto.Conn{}
|
||||
ret.Version = "1.21.8"
|
||||
ret.State = proto_base.Handshaking
|
||||
ret.CompressionThreshold = -1
|
||||
ret.Actor = proto_base.Server
|
||||
ret.Conn = c
|
||||
ret.R = c
|
||||
ret.W = c
|
||||
return
|
||||
}
|
||||
|
||||
func ServeClient(cNet net.Conn, factory func(c *proto.Conn) (h event.HandlerInst, err error)) (err error) {
|
||||
c := Servee(cNet)
|
||||
h, err := factory(c)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = c.Start(h)
|
||||
return
|
||||
}
|
||||
|
||||
func StartServerWithFactory(listenAddr string, factory func(c *proto.Conn) (h event.HandlerInst, err error)) (err error) {
|
||||
l, err := net.Listen("tcp", listenAddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var cNet net.Conn
|
||||
for {
|
||||
cNet, err = l.Accept()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
go ServeClient(cNet, factory)
|
||||
}
|
||||
}
|
||||
|
||||
func StartServerWithOnConn(listenAddr string, onConn func(c *proto.Conn) (err error)) (err error) {
|
||||
l, err := net.Listen("tcp", listenAddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var cNet net.Conn
|
||||
for {
|
||||
cNet, err = l.Accept()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
connErr := onConn(Servee(cNet))
|
||||
if connErr != nil {
|
||||
log.Println(connErr)
|
||||
}
|
||||
}()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user