This commit is contained in:
adman
2025-12-19 17:26:58 +01:00
parent cb38382a07
commit d7df6b25ef
20 changed files with 401 additions and 167 deletions
+67
View File
@@ -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)
}
}()
}
}