From b2f7b18aaae5d182376daa14291423e3eaa3661b Mon Sep 17 00:00:00 2001 From: boyce Date: Tue, 11 Feb 2020 14:56:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9tcp=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=AF=B9=E5=A4=96=E5=8F=AA=E6=9A=B4=E9=9C=B2clientid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Test/SubNet1_Service1.go | 66 ---------------------------- Test/SubNet1_Service2.go | 31 ------------- Test/SubNet2_Service1.go | 31 ------------- Test/SubNet2_Service2.go | 31 ------------- Test/logicservice/SubNet1_Service.go | 56 ++++++++++++++--------- Test/main.go | 8 ++-- network/tcpsocketserver.go | 9 ++++ sysservice/tcpsocketpbservice.go | 18 +++++--- 8 files changed, 59 insertions(+), 191 deletions(-) delete mode 100644 Test/SubNet1_Service1.go delete mode 100644 Test/SubNet1_Service2.go delete mode 100644 Test/SubNet2_Service1.go delete mode 100644 Test/SubNet2_Service2.go diff --git a/Test/SubNet1_Service1.go b/Test/SubNet1_Service1.go deleted file mode 100644 index f1e082b..0000000 --- a/Test/SubNet1_Service1.go +++ /dev/null @@ -1,66 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/duanhf2012/origin/originnode" - "github.com/duanhf2012/origin/service" - "github.com/duanhf2012/origin/sysservice/originhttp" - "net/http" - -) - -type InputData struct { - A1 int - A2 int -} - -type SubNet1_Service1 struct { - service.BaseService -} - -func init() { - originnode.InitService(&SubNet1_Service1{}) -} - -//OnInit ... -func (ws *SubNet1_Service1) OnInit() error { - originhttp.Post("", ws.HTTP_UserIntegralInfo) - originhttp.Get("/aaa/bbb", ws.HTTP_Test) - originhttp.Get("/Login/bbb", ws.HTTP_UserIntegralInfo) - originhttp.SetStaticResource(originhttp.METHOD_GET, "/file/", "d:\\") - - return nil -} - -//OnRun ... -func (ws *SubNet1_Service1) OnRun() bool { - return false -} - -//服务要对外的接口规划如下: -//RPC_MethodName(arg *DataType1, ret *DataType2) error -//如果不符合规范,在加载服务时,该函数将不会被映射,其他服务将不允能调用。 -func (slf *SubNet1_Service1) RPC_Add(arg *InputData, ret *int) error { - *ret = arg.A1 + arg.A2 - return nil -} - - - -func (slf *SubNet1_Service1) HTTP_Test(request *originhttp.HttpRequest, resp *originhttp.HttpRespone) error { - var cookieList []*http.Cookie - cookieList = append(cookieList,&http.Cookie{Name: "X-Xsrftoken",Value: "df41ba54db5011e89861002324e63af81", HttpOnly: true,Domain:"urquant.net"}) - resp.Redirect("https://www.urquant.net?sdaf=1",cookieList) - //redirects(&resp.Resp, &request.Req) - return nil -} - -func (slf *SubNet1_Service1) HTTP_UserIntegralInfo(request *originhttp.HttpRequest, resp *originhttp.HttpRespone) error { - ret, ok := request.Query("a") - fmt.Print(ret, ok) - - return nil -} - - diff --git a/Test/SubNet1_Service2.go b/Test/SubNet1_Service2.go deleted file mode 100644 index 83e87e1..0000000 --- a/Test/SubNet1_Service2.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "github.com/duanhf2012/origin/originnode" - "github.com/duanhf2012/origin/service" -) - -type SubNet1_Service2 struct { - service.BaseService -} - -func init() { - originnode.InitService(&SubNet1_Service2{}) -} - -//OnInit ... -func (ws *SubNet1_Service2) OnInit() error { - return nil -} - -//OnRun ... -func (ws *SubNet1_Service2) OnRun() bool { - return false -} - -func (slf *SubNet1_Service2) RPC_Sub(arg *InputData, ret *int) error { - - *ret = arg.A1 - arg.A2 - - return nil -} diff --git a/Test/SubNet2_Service1.go b/Test/SubNet2_Service1.go deleted file mode 100644 index 78e7d54..0000000 --- a/Test/SubNet2_Service1.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "github.com/duanhf2012/origin/originnode" - "github.com/duanhf2012/origin/service" -) - -type SubNet2_Service1 struct { - service.BaseService -} - -func init() { - originnode.InitService(&SubNet2_Service1{}) -} - -//OnInit ... -func (ws *SubNet2_Service1) OnInit() error { - return nil -} - -//OnRun ... -func (ws *SubNet2_Service1) OnRun() bool { - return false -} - -func (slf *SubNet2_Service1) RPC_Multi(arg *InputData, ret *int) error { - - *ret = arg.A1 * arg.A2 - - return nil -} diff --git a/Test/SubNet2_Service2.go b/Test/SubNet2_Service2.go deleted file mode 100644 index b2ed516..0000000 --- a/Test/SubNet2_Service2.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "github.com/duanhf2012/origin/originnode" - "github.com/duanhf2012/origin/service" -) - -type SubNet2_Service2 struct { - service.BaseService -} - -func init() { - originnode.InitService(&SubNet2_Service2{}) -} - -//OnInit ... -func (ws *SubNet2_Service2) OnInit() error { - return nil -} - -//OnRun ... -func (ws *SubNet2_Service2) OnRun() bool { - return false -} - -func (slf *SubNet2_Service2) RPC_Div(arg *InputData, ret *int) error { - - *ret = arg.A1 / arg.A2 - - return nil -} diff --git a/Test/logicservice/SubNet1_Service.go b/Test/logicservice/SubNet1_Service.go index ba7e451..d70ddb4 100644 --- a/Test/logicservice/SubNet1_Service.go +++ b/Test/logicservice/SubNet1_Service.go @@ -3,6 +3,7 @@ package logicservice import ( "fmt" "github.com/duanhf2012/origin/Test/msgpb" + "github.com/duanhf2012/origin/cluster" "github.com/duanhf2012/origin/network" "github.com/duanhf2012/origin/sysservice" "github.com/golang/protobuf/proto" @@ -37,60 +38,73 @@ func (ws *SubNet1_Service) OnInit() error { return nil } +type InputData struct { + A1 int + A2 int +} + //OnRun ... func (ws *SubNet1_Service) OnRun() bool { time.Sleep(time.Second * 10) var cli network.TcpSocketClient - cli.Connect("127.0.0.1:9004") + cli.Connect("127.0.0.1:9402") test := msgpb.Test{} test.AssistCount = proto.Int32(343) cli.SendMsg(110, &test) cli.SendMsg(110, &test) + + var a InputData + var rs int + a.A1 = 3 + a.A2 = 4 + cluster.Call("SubNet1_Service2.RPC_Sub",&a,&rs) + fmt.Print(rs) return false } -func (ws *SubNet1_Service) MessageHandler(pClient *network.SClient, msgtype uint16, msg proto.Message) { - fmt.Print("recv:",pClient.GetId(), ":", msg,"\n") - pClient.SendMsg(msgtype,msg) - +func (ws *SubNet1_Service) MessageHandler(clientid uint64, msgtype uint16, msg proto.Message) { + fmt.Print("recv:",clientid, ":", msg,"\n") + sysservice.GetTcpSocketPbService("ls").SendMsg(clientid,msgtype,msg) +/*test core dump var a map[int]int a[33] = 3 fmt.Print(a[44]) + */ } -func (ws *SubNet1_Service) ConnEventHandler(pClient *network.SClient) { - fmt.Print("connected..",pClient.GetId(),"\n") - +func (ws *SubNet1_Service) ConnEventHandler(clientid uint64) { + fmt.Print("connected..",clientid,"\n") } -func (ws *SubNet1_Service) DisconnEventHandler(pClient *network.SClient) { - fmt.Print("disconnected..",pClient.GetId(),"\n") +func (ws *SubNet1_Service) DisconnEventHandler(clientid uint64) { + fmt.Print("disconnected..",clientid,"\n") } -func (ws *SubNet1_Service) ExceptMessage(pClient *network.SClient, pPack *network.MsgBasePack, err error) { - fmt.Print("except..",pClient.GetId(),",",pPack,"\n") +func (ws *SubNet1_Service) ExceptMessage(clientid uint64, pPack *network.MsgBasePack, err error) { + fmt.Print("except..",clientid,",",pPack,"\n") } /////////////////////////// -func (ws *SubNet1_Service) MessageHandler2(pClient *network.SClient, msgtype uint16, msg proto.Message) { - fmt.Print("recv:",pClient.GetId(), ":", msg,"\n") - pClient.SendMsg(msgtype,msg) +func (ws *SubNet1_Service) MessageHandler2(clientid uint64, msgtype uint16, msg proto.Message) { + fmt.Print("recv:",clientid, ":", msg,"\n") + //pClient.SendMsg(msgtype,msg) + sysservice.GetTcpSocketPbService("ls").SendMsg(clientid,msgtype,msg) } -func (ws *SubNet1_Service) ConnEventHandler2(pClient *network.SClient) { - fmt.Print("connected..",pClient.GetId(),"\n") +func (ws *SubNet1_Service) ConnEventHandler2(clientid uint64) { + fmt.Print("connected..",clientid,"\n") } -func (ws *SubNet1_Service) DisconnEventHandler2(pClient *network.SClient) { - fmt.Print("disconnected..",pClient.GetId(),"\n") +func (ws *SubNet1_Service) DisconnEventHandler2(clientid uint64) { + fmt.Print("disconnected..",clientid,"\n") } -func (ws *SubNet1_Service) ExceptMessage2(pClient *network.SClient, pPack *network.MsgBasePack, err error) { - fmt.Print("except..",pClient.GetId(),",",pPack,"\n") +func (ws *SubNet1_Service) ExceptMessage2(clientid uint64, pPack *network.MsgBasePack, err error) { + fmt.Print("except..",clientid,",",pPack,"\n") } \ No newline at end of file diff --git a/Test/main.go b/Test/main.go index 2980b47..feaea83 100644 --- a/Test/main.go +++ b/Test/main.go @@ -37,15 +37,15 @@ func main() { httpserver.SetHttps(ca.CertFile, ca.KeyFile) } - pTcpService := sysservice.NewTcpSocketPbService(":9004") + pTcpService := sysservice.NewTcpSocketPbService(":9402") pTcpService.SetServiceName("ls") - +/* pTcpService2 := sysservice.NewTcpSocketPbService(":9005") pTcpService2.SetServiceName("lc") - +*/ httpserver.SetPrintRequestTime(true) - node.SetupService(httpserver,pTcpService,pTcpService2) + node.SetupService(httpserver,pTcpService) node.Init() node.Start() } diff --git a/network/tcpsocketserver.go b/network/tcpsocketserver.go index ba92981..55a54aa 100644 --- a/network/tcpsocketserver.go +++ b/network/tcpsocketserver.go @@ -115,6 +115,14 @@ func (slf *TcpSocketServer) listenServer(){ } } +func (slf *TcpSocketServer) SendMsg(clientid uint64,packtype uint16,message proto.Message) error{ + pClient := slf.mapClient.Get(clientid) + if pClient == nil { + return fmt.Errorf("clientid %d is not in connect pool.",clientid) + } + + return pClient.(*SClient).SendMsg(packtype,message) +} func (slf *SClient) listendata(){ defer func() { @@ -205,6 +213,7 @@ func (slf *MsgBasePack) FillData(bdata []byte,datasize uint16) (uint16,bool,bool return fillsize,false,fillhead } + func (slf *MsgBasePack) Clear() { } diff --git a/sysservice/tcpsocketpbservice.go b/sysservice/tcpsocketpbservice.go index f926384..0782c34 100644 --- a/sysservice/tcpsocketpbservice.go +++ b/sysservice/tcpsocketpbservice.go @@ -21,9 +21,9 @@ type TcpSocketPbService struct { } -type MessageHandler func(pClient *network.SClient,msgtype uint16,msg proto.Message) -type EventHandler func(pClient *network.SClient) -type ExceptMsgHandler func(pClient *network.SClient,pPack *network.MsgBasePack,err error) +type MessageHandler func(clientid uint64,msgtype uint16,msg proto.Message) +type EventHandler func(clientid uint64) +type ExceptMsgHandler func(clientid uint64,pPack *network.MsgBasePack,err error) @@ -88,13 +88,13 @@ func (slf *TcpSocketPbService) RegExceptMessage(exceptMsgHandler ExceptMsgHandle func (slf *TcpSocketPbService) OnConnected(pClient *network.SClient){ if slf.connEvent!=nil { - slf.connEvent(pClient) + slf.connEvent(pClient.GetId()) } } func (slf *TcpSocketPbService) OnDisconnect(pClient *network.SClient){ if slf.disconnEvent!=nil { - slf.disconnEvent(pClient) + slf.disconnEvent(pClient.GetId()) } } @@ -106,7 +106,7 @@ func (slf *TcpSocketPbService) VerifyPackType(packtype uint16) bool{ func (slf *TcpSocketPbService) OnExceptMsg (pClient *network.SClient,pPack *network.MsgBasePack,err error){ if slf.exceptMsgHandler!=nil { - slf.exceptMsgHandler(pClient,pPack,err) + slf.exceptMsgHandler(pClient.GetId(),pPack,err) }else{ pClient.Close() //记录日志 @@ -124,7 +124,7 @@ func (slf *TcpSocketPbService) OnRecvMsg(pClient *network.SClient, pPack *networ return } - info.msgHandler(pClient,pPack.PackType(), msg.(proto.Message)) + info.msgHandler(pClient.GetId(),pPack.PackType(), msg.(proto.Message)) return } @@ -149,4 +149,8 @@ func GetTcpSocketPbService(serviceName string) *TcpSocketPbService{ } return iservice.(*TcpSocketPbService) +} + +func (slf *TcpSocketPbService) SendMsg(clientid uint64,packtype uint16,message proto.Message) error{ + return slf.tcpsocketserver.SendMsg(clientid,packtype,message) } \ No newline at end of file