From 80e6c7cfdbab45985cb7b8686766af52c896e80f Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期六, 13 六月 2020 15:32:56 +0800
Subject: [PATCH] update

---
 test/nng/pubsub.c  |   92 ++++++++++++++++++++++++++++++
 service/Makefile   |    7 +-
 test/Makefile      |   26 +++++---
 Make.defines.linux |    2 
 4 files changed, 114 insertions(+), 13 deletions(-)

diff --git a/Make.defines.linux b/Make.defines.linux
index 5aa3acf..a8a9bc6 100755
--- a/Make.defines.linux
+++ b/Make.defines.linux
@@ -18,7 +18,7 @@
 
 
 # Common temp files to delete from each directory.
-TEMPFILES=core core.* *.o temp.* *.out *.a *.so
+TEMPFILES=core core.* *.o temp.* *.out *.a *.so $(PROGS)
 
 %:	%.c $(LIBCOMMON)
 	$(CC) $(CFLAGS) $(filter-out $(LIBCOMMON), $^) -o $@ $(LDFLAGS) $(LDLIBS)
diff --git a/service/Makefile b/service/Makefile
index 81cb258..67e9f73 100644
--- a/service/Makefile
+++ b/service/Makefile
@@ -14,15 +14,16 @@
 LDLIBS += -ljsoncpp  -lnng  -lpthread
 
 INCLUDE += -I$(ROOT)/device/include
-LIB_NETDISK = $(ROOT)/libnetdisk.a
-DLIB_NETDISK = $(ROOT)/libnetdisk.so
+#LIB_NETDISK = $(ROOT)/libnetdisk.a
+#DLIB_NETDISK = $(ROOT)/libnetdisk.so
 PLATFORM=$(shell $(ROOT)/systype.sh)
 include $(ROOT)/Make.defines.$(PLATFORM)
 
  
 PROGS = netdisk_service test_client test test_queue test_properties
 
-all: $(PROGS)
+
+build: $(PROGS)
 
 
 netdisk_service: $(ROOT)/device/hcnetdisk.c $(ROOT)/device/netdisk_factory.c login_store.c request_handler.c properties_config.c
diff --git a/test/Makefile b/test/Makefile
index c8fa824..a002692 100755
--- a/test/Makefile
+++ b/test/Makefile
@@ -2,22 +2,30 @@
 # Makefile for common library.
 #
 ROOT=..
-LDLIBS+=-Wl,-rpath=../hclib:../hclib/HCNetSDKCom:../common
-LDDIR += -L$(ROOT)/hcnetdisk_wrapper -L../hclib -L../hclib/HCNetSDKCom
-LDLIBS +=  -lhcnetsdk -lhpr -lHCCore 
-LDLIBS +=   -ljsoncpp  -lnng  -lpthread
-LIB_NETDISK = libnetdisk.a
-DLIB_NETDISK = libnetdisk.so
+LDLIBS+=-Wl,-rpath=$(ROOT)/lib/hc:$(ROOT)/lib/hc/HCNetSDKCom:$(ROOT)/common:$(ROOT)/lib/jsoncpp
+# 娴峰悍鍖呰矾寰�
+LDDIR += -L$(ROOT)/lib/hc -L$(ROOT)/lib/hc/HCNetSDKCom
+# 寮�婧愬伐鍏峰寘璺緞
+LDDIR += -L$(ROOT)/lib/jsoncpp -L$(ROOT)/lib/nng
+
+# 娴峰悍鍖�
+LDLIBS +=  -lhcnetsdk -lhpr -lHCCore
+# 寮�婧愬伐鍏峰寘
+LDLIBS += -ljsoncpp  -lnng  -lpthread
+
+INCLUDE += -I$(ROOT)/device/include
+
 PLATFORM=$(shell $(ROOT)/systype.sh)
 include $(ROOT)/Make.defines.$(PLATFORM)
 
- 
 
-all: nng/reqrep test
+PROGS = nng/pubsub
+
+build: $(PROGS)
 
 
 clean:
-	rm -f test *.o a.out core temp.* *.a *.so
+	rm $(TEMPFILES)
 
 
 include $(ROOT)/Make.common.inc
diff --git a/test/nng/pubsub.c b/test/nng/pubsub.c
new file mode 100644
index 0000000..794cd6c
--- /dev/null
+++ b/test/nng/pubsub.c
@@ -0,0 +1,92 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <nng/nng.h>
+#include <nng/protocol/pubsub0/pub.h>
+#include <nng/protocol/pubsub0/sub.h>
+
+#define SERVER "server"
+#define CLIENT "client"
+
+void
+fatal(const char *func, int rv)
+{
+        fprintf(stderr, "%s: %s\n", func, nng_strerror(rv));
+}
+
+char *
+date(void)
+{
+        time_t now = time(&now);
+        struct tm *info = localtime(&now);
+        char *text = asctime(info);
+        text[strlen(text)-1] = '\0'; // remove '\n'
+        return (text);
+}
+
+int
+server(const char *url)
+{
+        nng_socket sock;
+        int rv;
+
+        if ((rv = nng_pub0_open(&sock)) != 0) {
+                fatal("nng_pub0_open", rv);
+        }
+        if ((rv = nng_listen(sock, url, NULL, 0)) < 0) {
+                fatal("nng_listen", rv);
+        }
+        for (;;) {
+                char *d = date();
+                printf("SERVER: PUBLISHING DATE %s\n", d);
+                if ((rv = nng_send(sock, d, strlen(d) + 1, 0)) != 0) {
+                        fatal("nng_send", rv);
+                }
+                sleep(1);
+        }
+}
+
+int
+client(const char *url, const char *name)
+{
+        nng_socket sock;
+        int rv;
+
+        if ((rv = nng_sub0_open(&sock)) != 0) {
+                fatal("nng_sub0_open", rv);
+        }
+
+        // subscribe to everything (empty means all topics)
+        if ((rv = nng_setopt(sock, NNG_OPT_SUB_SUBSCRIBE, "", 0)) != 0) {
+                fatal("nng_setopt", rv);
+        }
+        if ((rv = nng_dial(sock, url, NULL, 0)) != 0) {
+                fatal("nng_dial", rv);
+        }
+        for (;;) {
+                char *buf = NULL;
+                size_t sz;
+                if ((rv = nng_recv(sock, &buf, &sz, NNG_FLAG_ALLOC)) != 0) {
+                        fatal("nng_recv", rv);
+                }
+                printf("CLIENT (%s): RECEIVED %s\n", name, buf); 
+                nng_free(buf, sz);
+        }
+}
+
+int
+main(const int argc, const char **argv)
+{
+        if ((argc >= 2) && (strcmp(SERVER, argv[1]) == 0))
+                return (server(argv[2]));
+
+          if ((argc >= 3) && (strcmp(CLIENT, argv[1]) == 0))
+                return (client (argv[2], argv[3]));
+
+        fprintf(stderr, "Usage: pubsub %s|%s <URL> <ARG> ...\n",
+            SERVER, CLIENT);
+        return 1;
+}
\ No newline at end of file

--
Gitblit v1.8.0