From 04ca103d9c561e62bbb557c5db30771c17a7bdbf Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 30 六月 2020 17:03:47 +0800 Subject: [PATCH] update --- service/netdisk_service.c | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 45 insertions(+), 3 deletions(-) diff --git a/service/netdisk_service.c b/service/netdisk_service.c index 1f55786..8daa2b8 100644 --- a/service/netdisk_service.c +++ b/service/netdisk_service.c @@ -9,6 +9,8 @@ #include <nng/nng.h> #include <nng/protocol/reqrep0/rep.h> #include <nng/protocol/reqrep0/req.h> +#include <nng/protocol/survey0/survey.h> +#include <nng/protocol/survey0/respond.h> using namespace std; @@ -162,7 +164,7 @@ if ((rv = nng_recv(sock, &buf, &sz, NNG_FLAG_ALLOC)) != 0) { fatal("nng_recv", rv); } - +printf("RECEIVED RPC REQUEST:\n %s", buf); jsonreader.parse(buf, request); nng_free(buf, sz); std::string method = request["method"].asString(); @@ -196,6 +198,47 @@ pthread_create(&tid, NULL, worker, NULL); } + +void heartBeat(const char *url, const char *name) +{ + nng_socket sock; + int rv; + + if ((rv = nng_respondent0_open(&sock)) != 0) { + fatal("nng_respondent0_open", rv); + } + if ((rv = nng_dial(sock, url, NULL, NNG_FLAG_NONBLOCK)) != 0) { + fatal("nng_dial", rv); + } + for (;;) { + char *buf = NULL; + size_t sz; + if ((rv = nng_recv(sock, &buf, &sz, NNG_FLAG_ALLOC)) == 0) { +printf("CLIENT (%s): RECEIVED \"%s\" SURVEY REQUEST\n", name, buf); + nng_free(buf, sz); + char response[1024]; + sprintf(response, "%s-%d", name, getpid()); +printf("CLIENT (%s): SENDING SURVEY RESPONSE:%s\n", name, response); + if ((rv = nng_send(sock, response, strlen(response) + 1, 0)) != 0) { + fatal("nng_send", rv); + } + } + } +} + +void *heart(void *vargp) +{ + pthread_detach(pthread_self()); + heartBeat(config.get("heart_server").c_str(), "netdisk"); + return NULL; +} + +// 蹇冭烦鍙戦�佽繘绋� +void initHeart() { + pthread_t tid; + pthread_create(&tid, NULL, heart, NULL); +} + int main() { //鐜鍙橀噺鍒濆鍖� @@ -207,11 +250,10 @@ hcEnvConfig.libpath = "../lib/hc"; HCNetdisk::netdisk_init(&hcEnvConfig); - - registRequestHandleFun(); initThreadPool(); + initHeart(); startServer(config.get("server_url").c_str()); -- Gitblit v1.8.0