From fb1289e6d069e1a0f14dd45ba07720f09e90ab56 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 14 七月 2020 18:34:11 +0800
Subject: [PATCH] update
---
queue/libshm_queue.a | 0
test2/pub | 0
test2/test_queue_wrapper | 0
test2/client.c | 3
test2/server | 0
test2/Makefile | 6 +-
test2/pub.c | 62 ++++++++++++++++++++
test2/sub.c | 48 ++++++++++++++++
queue/Makefile | 5 +
queue/libshm_queue.so | 0
test2/client | 0
test2/server.c | 2
test2/sub | 0
13 files changed, 118 insertions(+), 8 deletions(-)
diff --git a/queue/Makefile b/queue/Makefile
index c9a9e38..e26b381 100644
--- a/queue/Makefile
+++ b/queue/Makefile
@@ -29,13 +29,14 @@
#static lib
$(LIBSQUEUE): $(OBJS)
- $(AR) rv $@ $? $(ROOT)/lib/libusgcommon.a
+ $(AR) rv $@ $?
$(RANLIB) $@
#dynamic lib
$(DLIBSQUEUE): $(SOURCES)
rm -f *.o
- $(CC) -fPIC -shared $(CFLAGS) $^ -o $@ $(LDFLAGS) $(ROOT)/lib/libusgcommon.so
+ $(CC) -fPIC -shared $(CFLAGS) $^ -o $@ $(LDFLAGS)
+ #$(CC) -fPIC -shared $(CFLAGS) $(LDFLAGS) -o $@ $^ -Wl,--whole-archive $(ROOT)/lib/libusgcommon.a -Wl,--no-whole-archive
#PREFIX is environment variable, but if it is not set, then set default value
diff --git a/queue/libshm_queue.a b/queue/libshm_queue.a
new file mode 100644
index 0000000..873f630
--- /dev/null
+++ b/queue/libshm_queue.a
Binary files differ
diff --git a/queue/libshm_queue.so b/queue/libshm_queue.so
index d050417..b0908e5 100755
--- a/queue/libshm_queue.so
+++ b/queue/libshm_queue.so
Binary files differ
diff --git a/test2/Makefile b/test2/Makefile
index 54c80cb..872f05d 100644
--- a/test2/Makefile
+++ b/test2/Makefile
@@ -2,11 +2,11 @@
# Makefile for common library.
#
ROOT=..
-LDLIBS+=-Wl,-rpath=$(ROOT)/queue
+LDLIBS+=-Wl,-rpath=$(ROOT)/queue:$(ROOT)/lib
# 寮�婧愬伐鍏峰寘璺緞
LDDIR += -L$(ROOT)/queue
# 寮�婧愬伐鍏峰寘
-LDLIBS += -lshm_queue -lpthread
+LDLIBS += -lshm_queue -lusgcommon -lpthread
INCLUDE += -I$(ROOT)/queue/ -I$(ROOT)/queue/include
@@ -14,7 +14,7 @@
include $(ROOT)/Make.defines.$(PLATFORM)
-PROGS = test_queue_wrapper server client
+PROGS = test_queue_wrapper server client pub sub
build: $(PROGS)
diff --git a/test2/client b/test2/client
index 2e70d5e..9dab546 100755
--- a/test2/client
+++ b/test2/client
Binary files differ
diff --git a/test2/client.c b/test2/client.c
index 2d4746d..501c0fd 100644
--- a/test2/client.c
+++ b/test2/client.c
@@ -1,6 +1,5 @@
#include "shm_queue_wrapper.h"
-#include "mm.h"
-
+
typedef struct msg_t
{
int key;
diff --git a/test2/pub b/test2/pub
new file mode 100755
index 0000000..7ded9a2
--- /dev/null
+++ b/test2/pub
Binary files differ
diff --git a/test2/pub.c b/test2/pub.c
new file mode 100644
index 0000000..35f1c16
--- /dev/null
+++ b/test2/pub.c
@@ -0,0 +1,62 @@
+#include "shm_queue_wrapper.h"
+
+
+typedef struct msg_t
+{
+ int key;
+ char buf[100];
+
+} msg_t;
+
+
+static void * remote_queues[100];
+static int remote_queues_len = 0;
+
+void *pub(void *) {
+ msg_t send_msg;
+ send_msg.key = 1;
+ while(true) {
+ for(int i = 0; i < remote_queues_len; i++ ) {
+ sprintf(send_msg.buf, "浠婃棩澶存潯脳脳脳脳");
+ shmqueue_push(remote_queues[i], (void *)&send_msg, sizeof(send_msg));
+ }
+ sleep(2);
+ }
+}
+
+void server() {
+ void * msg;
+ int msg_size;
+
+ int key = 1;
+ size_t qsize = 16;
+ void * local_queue = shmqueue_create( &key, qsize);
+
+
+ pthread_t tid;
+ pthread_create(&tid, NULL, pub, NULL);
+
+ while(shmqueue_pop(local_queue, &msg, &msg_size) ) {
+ void * remote_queue = shmqueue_attach(((msg_t *)msg)->key);
+ remote_queues[remote_queues_len++] = remote_queue;
+ printf("鏀跺埌璁㈤槄璇锋眰", ((msg_t *)msg)->buf);
+
+
+ // shmqueue_drop(remote_queue);
+ // cout << item.pic << endl;
+ // i++;
+ }
+
+ //閿�姣侀槦鍒�
+ shmqueue_drop(local_queue);
+}
+
+
+int main () {
+ shm_init(512);
+ server();
+
+ //鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸��
+ shm_destroy();
+ return 0;
+}
\ No newline at end of file
diff --git a/test2/server b/test2/server
index de8a68d..d1b9095 100755
--- a/test2/server
+++ b/test2/server
Binary files differ
diff --git a/test2/server.c b/test2/server.c
index f3fa3b5..d969c83 100644
--- a/test2/server.c
+++ b/test2/server.c
@@ -1,5 +1,5 @@
#include "shm_queue_wrapper.h"
-#include "mm.h"
+
typedef struct msg_t
{
diff --git a/test2/sub b/test2/sub
new file mode 100755
index 0000000..ba91707
--- /dev/null
+++ b/test2/sub
Binary files differ
diff --git a/test2/sub.c b/test2/sub.c
new file mode 100644
index 0000000..d90928f
--- /dev/null
+++ b/test2/sub.c
@@ -0,0 +1,48 @@
+#include "shm_queue_wrapper.h"
+
+typedef struct msg_t
+{
+ int key;
+ char buf[100];
+
+} msg_t;
+
+void client() {
+ int key = -1;
+ size_t qsize = 16;
+ void * remote_queue = shmqueue_attach( 1);
+ void * local_queue = shmqueue_create( &key, qsize);
+ // message_t item;
+ msg_t msg;
+ msg.key = key;
+
+ void * rec_msg;
+ int rec_msg_size;
+
+ sprintf(msg.buf, "鎴戣璁㈤槄浠婃棩澶存潯");
+ shmqueue_push(remote_queue, (void *)&msg, sizeof(msg));
+ //鍏ラ槦
+ while(true) {
+
+ //printf("send: %s\n", msg.buf);
+ shmqueue_pop(local_queue, &rec_msg, &rec_msg_size);
+ printf("鏀跺埌璁㈤槄娑堟伅: %s\n", ((msg_t*)rec_msg)->buf);
+ free(rec_msg);
+
+
+ }
+
+ //閿�姣侀槦鍒�
+ shmqueue_drop(local_queue);
+ shmqueue_drop(remote_queue);
+}
+
+
+int main () {
+ shm_init(512);
+ client();
+
+ //鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸��
+ shm_destroy();
+ return 0;
+}
\ No newline at end of file
diff --git a/test2/test_queue_wrapper b/test2/test_queue_wrapper
index 1840703..c37f037 100755
--- a/test2/test_queue_wrapper
+++ b/test2/test_queue_wrapper
Binary files differ
--
Gitblit v1.8.0