From dcd9ad9903a13a589973341d53272f1d1ed3c514 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@qq.com>
Date: 星期四, 16 五月 2019 09:56:36 +0800
Subject: [PATCH] add mangos reqrep mode

---
 areaApi_test.go      |    2 
 reqrepClient_test.go |   23 +++++++++++
 go.sum               |    2 +
 go.mod               |    2 +
 reqrepClient.go      |   43 +++++++++++++++++++++
 5 files changed, 71 insertions(+), 1 deletions(-)

diff --git a/areaApi_test.go b/areaApi_test.go
index 5a3274f..40d8d3a 100644
--- a/areaApi_test.go
+++ b/areaApi_test.go
@@ -7,7 +7,7 @@
 
 func TestGetLocalCameraTree(t *testing.T) {
 	var api AreaApi
-	body := api.GetLocalCameraTree(0)
+	body := api.GetLocalCameraTree(0, 0, "c")
 	fmt.Println(body)
 }
 
diff --git a/go.mod b/go.mod
index cc2d2a4..6134be4 100644
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,5 @@
 module dbapi
 
 go 1.12
+
+require nanomsg.org/go-mangos v1.4.0
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..7d77097
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,2 @@
+nanomsg.org/go-mangos v1.4.0 h1:pVRLnzXePdSbhWlWdSncYszTagERhMG5zK/vXYmbEdM=
+nanomsg.org/go-mangos v1.4.0/go.mod h1:MOor8xUIgwsRMPpLr9xQxe7bT7rciibScOqVyztNxHQ=
diff --git a/reqrepClient.go b/reqrepClient.go
new file mode 100644
index 0000000..1a32afc
--- /dev/null
+++ b/reqrepClient.go
@@ -0,0 +1,43 @@
+package dbapi
+
+import (
+	"fmt"
+	"os"
+	"nanomsg.org/go-mangos"
+	"nanomsg.org/go-mangos/protocol/req"
+	"nanomsg.org/go-mangos/transport/ipc"
+	"nanomsg.org/go-mangos/transport/tcp"
+)
+
+type ReqrepApi struct {
+
+}
+
+const (
+	ReqRep_URL = "tcp://127.0.0.1:8002"
+)
+
+func (api ReqrepApi)SendRequest(reqStr string) string {
+	var sock mangos.Socket
+	var err error
+	var msg []byte
+
+	if sock, err = req.NewSocket(); err !=nil {
+		fmt.Println("can't get new req socket!")
+		os.Exit(1)
+	}
+	sock.AddTransport(ipc.NewTransport())
+	sock.AddTransport(tcp.NewTransport())
+	if err = sock.Dial(ReqRep_URL);err !=nil {
+		fmt.Println("can't dial on req socket!!")
+		os.Exit(1)
+	}
+	if err =sock.Send([]byte(reqStr));err !=nil {
+		fmt.Println("can't send msg")
+	}
+	if msg,err = sock.Recv();err !=nil {
+		fmt.Println("can't get msg from mangos reqrep server")
+	}
+	defer sock.Close()
+	return string(msg)
+}
\ No newline at end of file
diff --git a/reqrepClient_test.go b/reqrepClient_test.go
new file mode 100644
index 0000000..9d5eadd
--- /dev/null
+++ b/reqrepClient_test.go
@@ -0,0 +1,23 @@
+package dbapi
+
+import (
+	"fmt"
+	"testing"
+	"time"
+)
+
+func TestMangosReqClient(t *testing.T){
+	var reqClient1 ReqrepApi
+	var reqClient2 ReqrepApi
+	
+	go doRequest(reqClient1, "one")
+	go doRequest(reqClient2, "two")
+	time.Sleep(time.Duration(5)*time.Second)
+}
+
+func doRequest(client ReqrepApi, idx string){
+	for {
+		msg := client.SendRequest(idx)
+		fmt.Printf("receive msg: %s", msg)
+	}
+}
\ No newline at end of file

--
Gitblit v1.8.0