From 8a1a19a41596a44bacef0ab26ffaa88675e402e0 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 16 十二月 2021 11:35:04 +0800
Subject: [PATCH] stash
---
src/nng_wrap.cpp | 18 ++++----
src/bn_api.h | 66 ++++++++++++++++----------------
src/exported_symbols | 7 ++-
3 files changed, 46 insertions(+), 45 deletions(-)
diff --git a/src/bn_api.h b/src/bn_api.h
index fbd2a3f..9878cd8 100644
--- a/src/bn_api.h
+++ b/src/bn_api.h
@@ -5,19 +5,6 @@
extern "C" {
#endif
-typedef int (*FBHApiIn1Out1)(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);
-
int BHRegister(const void *proc_info,
const int proc_info_len,
void **reply,
@@ -62,26 +49,6 @@
void **reply,
int *reply_len,
const int timeout_ms);
-
-typedef void (*FSubDataCallback)(const void *proc_id,
- int proc_id_len,
- const void *data,
- int data_len);
-
-typedef void (*FServerCallback)(const void *proc_id,
- int proc_id_len,
- const void *data,
- int data_len,
- void *src);
-
-typedef void (*FClientCallback)(const void *proc_id,
- int proc_id_len,
- const void *msg_id,
- int msg_id_len,
- const void *data,
- int data_len);
-
-void BHStartWorker(FServerCallback server_cb, FSubDataCallback sub_cb, FClientCallback client_cb);
int BHHeartbeatEasy(const int timeout_ms);
int BHHeartbeat(const void *proc_info,
@@ -128,12 +95,45 @@
int BHGetLastError(void **msg, int *msg_len);
+/////////////////////////////////////////////////////
+
int BHAsyncRequest(const void *remote,
const int remote_len,
const void *request,
const int request_len,
void **msg_id,
int *msg_id_len);
+typedef void (*FSubDataCallback)(const void *proc_id,
+ int proc_id_len,
+ const void *data,
+ int data_len);
+
+typedef void (*FServerCallback)(const void *proc_id,
+ int proc_id_len,
+ const void *data,
+ int data_len,
+ void *src);
+
+typedef void (*FClientCallback)(const void *proc_id,
+ int proc_id_len,
+ const void *msg_id,
+ int msg_id_len,
+ const void *data,
+ int data_len);
+
+void BHStartWorker(FServerCallback server_cb, FSubDataCallback sub_cb, FClientCallback client_cb);
+typedef int (*FBHApiIn1Out1)(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);
//////////////////////////////////////////////////////////
void TestRequest(int type, const char* msg, const int len);
diff --git a/src/exported_symbols b/src/exported_symbols
index f372865..8bfc2aa 100644
--- a/src/exported_symbols
+++ b/src/exported_symbols
@@ -1,6 +1,5 @@
VERS_1.0 {
global:
- BHApiIn1Out1Proxy;
BHRegister;
BHUnregister;
BHRegisterTopics;
@@ -8,12 +7,10 @@
BHQueryProcs;
BHSubscribeTopics;
BHSubscribeNetTopics;
- BHStartWorker;
BHHeartbeatEasy;
BHHeartbeat;
BHPublish;
BHReadSub;
- BHAsyncRequest;
BHRequest;
BHReadRequest;
BHSendReply;
@@ -21,6 +18,10 @@
BHGetLastError;
BHFree;
+ BHApiIn1Out1Proxy;
+ BHStartWorker;
+ BHAsyncRequest;
+
TestRequest;
TestReply;
TestPub;
diff --git a/src/nng_wrap.cpp b/src/nng_wrap.cpp
index e400da7..85c555e 100644
--- a/src/nng_wrap.cpp
+++ b/src/nng_wrap.cpp
@@ -613,11 +613,7 @@
return (w);
}
-static constexpr int PARALLEL = 62;
-static struct work* works_local[PARALLEL]{};
-static struct work* works_remote[PARALLEL]{};
-
-static int create_server(nng_socket* sock, const string& url, work** works){
+static int create_server(nng_socket* sock, const string& url, const int count){
TAG;
if (sock->id > 0) return 0;
@@ -627,22 +623,26 @@
PRNTVITAG(url);
return rv;
}
- for (int i = 0; i < PARALLEL; i++) {
+
+ work** works = (work**)malloc(sizeof(work*) * count);
+ for (int i = 0; i < count; i++) {
works[i] = alloc_work(*sock);
}
remove_exist(url);
rv = nng_listen(*sock, url.c_str(), NULL, 0);
if (rv < 0){
+ free(works);
PRNTVITAG("create_server nng_listen failed");
PRNTVITAG(url);
return rv;
}
- for (int i = 0; i < PARALLEL; i++) {
+ for (int i = 0; i < count; i++) {
server_cb(works[i]); // this starts them going (INIT state)
}
+ free(works);
return 0;
}
@@ -660,12 +660,12 @@
ipc = url;
}
reply_.url_ = ipc;
- if(create_server(&reply_.sock_local_, ipc, works_local) != 0) return -1;
+ if(create_server(&reply_.sock_local_, ipc, 62) != 0) return -1;
if (port > 0){
reply_.port_ = port;
ipc = "tcp://0.0.0.0:" + to_string(port);
- if(create_server(&reply_.sock_remote_, ipc, works_remote) != 0) return -1;
+ if(create_server(&reply_.sock_remote_, ipc, 62) != 0) return -1;
}else {
reply_.sock_remote_.id = numeric_limits<int32_t>::max();
}
--
Gitblit v1.8.0