From e49473afa5e9c1586c06b971d19fbc51560deef6 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 31 五月 2019 13:13:26 +0800
Subject: [PATCH] add rply mode

---
 reqrepClient.go |   86 ++++++++++++++++++++++++++++---------------
 1 files changed, 56 insertions(+), 30 deletions(-)

diff --git a/reqrepClient.go b/reqrepClient.go
index 1a32afc..ebdc397 100644
--- a/reqrepClient.go
+++ b/reqrepClient.go
@@ -1,43 +1,69 @@
 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"
+	"basic.com/valib/deliver.git"
+	"encoding/json"
+	"errors"
 )
 
-type ReqrepApi struct {
+type ReqRepClient struct {}
 
+var ReqRep_URL = "tcp://192.168.1.11:8002"
+
+//鍒濆鍖杛ply鐨勫湴鍧�
+func InitRplyUrl(url string) {
+	ReqRep_URL = url
 }
 
-const (
-	ReqRep_URL = "tcp://127.0.0.1:8002"
-)
+func (api ReqRepClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	var destMap map[string]interface{}
+	for idx,val := range params {
+		destMap[idx] = interface{}(val)
+	}
+	reqBody.Params = destMap
+	return doRply(reqBody)
+}
 
-func (api ReqrepApi)SendRequest(reqStr string) string {
-	var sock mangos.Socket
-	var err error
-	var msg []byte
+func (api ReqRepClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	reqBody.Params = body
+	return doRply(reqBody)
+}
 
-	if sock, err = req.NewSocket(); err !=nil {
-		fmt.Println("can't get new req socket!")
-		os.Exit(1)
+func (api ReqRepClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	reqBody.Params = body
+	return doRply(reqBody)
+}
+
+func (api ReqRepClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	reqBody.Params = body
+	return doRply(reqBody)
+}
+
+type RplyParamBody struct {
+	Action string	`json:"action"`	//鏍规嵁action鍒ゆ柇鍋氫綍绉嶅搷搴�
+	Params map[string]interface{}	`json:"params"`//鍙傛暟map
+}
+
+func doRply(body RplyParamBody)([]byte,error){
+	sender := deliver.NewClient(deliver.Mode(deliver.ReqRep), ReqRep_URL)
+	bytes,err := json.Marshal(body)
+	if err !=nil {
+		return nil,err
 	}
-	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)
+	err = sender.Send(bytes)
+	if err !=nil {
+		resMsg, _ := sender.Recv()
+		if resMsg !=nil {
+			return resMsg,nil
+		}
 	}
-	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)
+	return nil,errors.New("nng no resp")
 }
\ No newline at end of file

--
Gitblit v1.8.0