From ca319178f45ce6256aed7913565d445571f6db22 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期二, 20 四月 2021 11:04:07 +0800
Subject: [PATCH] add go api, wrap C api, not finished.

---
 src/bh_api.cpp |   92 ++++++++++++++++++++++++---------------------
 1 files changed, 49 insertions(+), 43 deletions(-)

diff --git a/src/bh_api.cpp b/src/bh_api.cpp
index 2abe66d..3844000 100644
--- a/src/bh_api.cpp
+++ b/src/bh_api.cpp
@@ -83,44 +83,50 @@
 		return false;
 	}
 	MsgOut msg_reply;
-	if ((ProcNode().*mfunc)(input, msg_reply, timeout_ms)) {
-		return PackOutput(msg_reply, reply, reply_len);
-
-	} else {
-		return false;
-	}
+	return (ProcNode().*mfunc)(input, msg_reply, timeout_ms) &&
+	       PackOutput(msg_reply, reply, reply_len);
 }
 
 } // namespace
 
-bool BHRegister(const void *proc_info, const int proc_info_len, void **reply, int *reply_len, const int timeout_ms)
+int BHApiIn1Out1Proxy(FBHApiIn1Out1 func,
+                      const void *request,
+                      const int request_len,
+                      void **reply,
+                      int *reply_len,
+                      const int timeout_ms)
+{
+	return (*func)(request, request_len, reply, reply_len, timeout_ms);
+}
+
+int BHRegister(const void *proc_info, const int proc_info_len, void **reply, int *reply_len, const int timeout_ms)
 {
 	return BHApiIn1Out1<ProcInfo>(&TopicNode::Register, proc_info, proc_info_len, reply, reply_len, timeout_ms);
 }
 
-bool BHHeartBeatEasy(const int timeout_ms)
+int BHHeartbeatEasy(const int timeout_ms)
 {
 	return ProcNode().Heartbeat(timeout_ms);
 }
 
-bool BHHeartBeat(const void *proc_info, const int proc_info_len, void **reply, int *reply_len, const int timeout_ms)
+int BHHeartbeat(const void *proc_info, const int proc_info_len, void **reply, int *reply_len, const int timeout_ms)
 {
 	return BHApiIn1Out1<ProcInfo>(&TopicNode::Heartbeat, proc_info, proc_info_len, reply, reply_len, timeout_ms);
 }
 
-bool BHRegisterTopics(const void *topics, const int topics_len, void **reply, int *reply_len, const int timeout_ms)
+int BHRegisterTopics(const void *topics, const int topics_len, void **reply, int *reply_len, const int timeout_ms)
 {
 	return BHApiIn1Out1<MsgTopicList>(&TopicNode::ServerRegisterRPC, topics, topics_len, reply, reply_len, timeout_ms);
 }
 
-bool BHSubscribeTopics(const void *topics, const int topics_len, void **reply, int *reply_len, const int timeout_ms)
+int BHSubscribeTopics(const void *topics, const int topics_len, void **reply, int *reply_len, const int timeout_ms)
 {
 	return BHApiIn1Out1<MsgTopicList>(&TopicNode::Subscribe, topics, topics_len, reply, reply_len, timeout_ms);
 }
 
-bool BHPublish(const void *msgpub,
-               const int msgpub_len,
-               const int timeout_ms)
+int BHPublish(const void *msgpub,
+              const int msgpub_len,
+              const int timeout_ms)
 {
 	MsgPublish pub;
 	if (!pub.ParseFromArray(msgpub, msgpub_len)) {
@@ -130,11 +136,11 @@
 	return ProcNode().Publish(pub, timeout_ms);
 }
 
-bool BHReadSub(void **proc_id,
-               int *proc_id_len,
-               void **msgpub,
-               int *msgpub_len,
-               const int timeout_ms)
+int BHReadSub(void **proc_id,
+              int *proc_id_len,
+              void **msgpub,
+              int *msgpub_len,
+              const int timeout_ms)
 {
 	std::string proc;
 	MsgPublish pub;
@@ -151,10 +157,10 @@
 	return false;
 }
 
-bool BHAsyncRequest(const void *request,
-                    const int request_len,
-                    void **msg_id,
-                    int *msg_id_len)
+int BHAsyncRequest(const void *request,
+                   const int request_len,
+                   void **msg_id,
+                   int *msg_id_len)
 {
 	MsgRequestTopic req;
 	if (!req.ParseFromArray(request, request_len)) {
@@ -178,13 +184,13 @@
 	return false;
 }
 
-bool BHRequest(const void *request,
-               const int request_len,
-               void **proc_id,
-               int *proc_id_len,
-               void **reply,
-               int *reply_len,
-               const int timeout_ms)
+int BHRequest(const void *request,
+              const int request_len,
+              void **proc_id,
+              int *proc_id_len,
+              void **reply,
+              int *reply_len,
+              const int timeout_ms)
 {
 	MsgRequestTopic req;
 	if (!req.ParseFromArray(request, request_len)) {
@@ -205,12 +211,12 @@
 	return false;
 }
 
-bool BHReadRequest(void **proc_id,
-                   int *proc_id_len,
-                   void **request,
-                   int *request_len,
-                   void **src,
-                   const int timeout_ms)
+int BHReadRequest(void **proc_id,
+                  int *proc_id_len,
+                  void **request,
+                  int *request_len,
+                  void **src,
+                  const int timeout_ms)
 {
 	void *src_info = 0;
 	std::string proc;
@@ -228,9 +234,9 @@
 	return false;
 }
 
-bool BHSendReply(void *src,
-                 const void *reply,
-                 const int reply_len)
+int BHSendReply(void *src,
+                const void *reply,
+                const int reply_len)
 {
 	MsgRequestTopicReply rep;
 	if (!rep.ParseFromArray(reply, reply_len)) {
@@ -263,7 +269,7 @@
 				r = reply.ParseFromArray(p, len);
 				return r;
 			};
-			server_cb(proc_id.data(), proc_id.size(), sreq.data(), sreq.size(), (BHServerCallbackTag *) (&sender));
+			server_cb(proc_id.data(), proc_id.size(), sreq.data(), sreq.size(), &sender);
 			return r;
 		};
 	}
@@ -284,9 +290,9 @@
 
 	ProcNode().Start(on_req, on_sub, on_reply);
 }
-bool BHServerCallbackReply(const BHServerCallbackTag *tag,
-                           const void *data,
-                           const int data_len)
+int BHServerCallbackReply(const void *tag,
+                          const void *data,
+                          const int data_len)
 {
 	auto &sender = *(const ServerSender *) (tag);
 	return sender(data, data_len);

--
Gitblit v1.8.0