From baa6fb17d950c4f5684f5d798f90595456723418 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 28 七月 2020 16:16:46 +0800
Subject: [PATCH] conflict

---
 README.md |  267 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 170 insertions(+), 97 deletions(-)

diff --git a/README.md b/README.md
index a174f32..ba8d825 100644
--- a/README.md
+++ b/README.md
@@ -1,132 +1,205 @@
-## 瀹炰緥
-
-```
-#include "shm_queue_wrapper.h"
-#include "mm.h"
-
-typedef struct message_t
-{
-	char method[20];
-	int code;
-	
-} message_t;
-
-void test1() {
-	unsigned int i = 0;
-	int key = 2;
  
-	size_t qsize = 16;
-  	shmqueue_t queue;
-	shmqueue_init(&queue, key, qsize, sizeof(message_t));
-	message_t item;
-	// LockFreeQueue<struct Item> queue(16);
-	for(i = 0; i < qsize; i++) {
-		sprintf(item.method, "hello"); 
-		item.code = i ; 
-		if(shmqueue_push(&queue, (void *)&item)) {
-			  printf("push:%d %s\n", item.code, item.method );
-		}
-	}
-	 
-	struct timespec timeout = {1, 0};
+# 1. 瀹炰緥
+浠ヤ笅瀹炰緥浠g爜鍦╜demo`鏂囦欢澶逛笅
+## 1.1 Bus妯″紡
+**Source**  
 
-	i = 0;
-	while((shmqueue_pop_timeout(&queue, (void *)&item, &timeout)) ) {
-	    printf("pop:%d %s\n", item.code, item.method );
-	   // cout <<  item.pic << endl;
-	    i++;
-	}
+`dgram_mod_bus.c`
 
-	shmqueue_destroy(&queue);
-}
+**缂栬瘧**  
 
+瀹夎濂絪o鍖呭悗锛岀敤濡備笅鐨勬柟寮忕紪璇戯紝shm_queue鏄�氫俊闃熷垪鍖咃紝usgcommon鏄叕鍏卞寘锛宲thread鏄郴缁熺殑绾跨▼鍖�
+`g++ dgram_mod_bus.c -mcx16 -std=c++11 -lshm_queue -lusgcommon -lpthread`
+
+**婕旂ず** 
+
+鍚姩bus `./dgram_mod_bus server 8`銆傜劧鍚庢墦寮�涓や釜瀹㈡埛绔繛鎺us锛� 绗竴涓鎴风璁㈤槄 "news", 绗簩涓鎴风鍙戝竷 "news". 绗竴涓鎴风浼氭敹鍒扮浜屼釜瀹㈡埛绔帹閫佺殑淇℃伅銆�
+
+鍚姩bus
+```
+$  ./dgram_mod_bus server 8
+```
+
+绗竴涓鎴风璁㈤槄 "news"
+```
+
+$ ./dgram_mod_bus client 8
+Can I help you? sub, pub or quit
+sub
+Please input topic!
+news
+Sub success!
+Can I help you? sub, pub or quit
+鏀跺埌璁㈤槄娑堟伅:111111111111111111111
+
+ ```
+绗簩涓鎴风鍙戝竷 "news"
+ ```
+$  ./dgram_mod_bus client 8
+Can I help you? sub, pub or quit
+pub
+Please input topic and content
+news 111111111111111111111
+Pub success!
+Can I help you? sub, pub or quit
+
+ ```
+杩欓噷鍙互鎵撳紑璁稿涓鎴风鍙戝竷鍜岃闃呮秷鎭��
  
-int main () {
-	test1();
 
-	//鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄩ攢姣佹暣鍧楀唴瀛樸��
-	mm_destroy();
-	return 0;
-}
+## 1.2 req_rep妯″紡, 閫傚簲浜庢敞鍐�
+ 
+**Source** `dgram_mod_req_rep.c`
+
+**缂栬瘧** 鍚屼笂
+
+**婕旂ず**
+
+```
+## 鍚姩娉ㄥ唽涓績
+./dgram_mod_req_rep server 2 & node0=$! && sleep 1
+## 鍚戞敞鍐屼腑蹇冨彂閫佹秷鎭�
+./dgram_mod_req_rep client 2 node1
+kill $node0
 ```
 
-## 鎺ュ彛璇存槑
+## survey妯″紡锛� 閫傚簲浜庡績璺�
+**Source** `dgram_mod_survey.c`
+
+**缂栬瘧** 鍚屼笂
+
+**婕旂ず**
+鍚姩蹇冭烦涓績
+```
+$ ./dgram_mod_survey server 3
+
+RECEIVED HREARTBEAT FROM 1000: 0
+RECEIVED HREARTBEAT FROM 1000: 1
+RECEIVED HREARTBEAT FROM 1000: 2
+RECEIVED HREARTBEAT FROM 1000: 3
+RECEIVED HREARTBEAT FROM 1000: 4
+RECEIVED HREARTBEAT FROM 1000: 5
+RECEIVED HREARTBEAT FROM 1000: 6
+RECEIVED HREARTBEAT FROM 1000: 7
+RECEIVED HREARTBEAT FROM 1000: 8
+RECEIVED HREARTBEAT FROM 1000: 9
 
 ```
 
+鎵撳紑涓�涓鎴风锛岃繛鎺ュ績璺充腑蹇�
+```
+$ ./dgram_mod_survey client 3
+
+SEND HEART:0
+SEND HEART:1
+SEND HEART:2
+SEND HEART:3
+SEND HEART:4
+SEND HEART:5
+SEND HEART:6
+SEND HEART:7
+SEND HEART:8
+SEND HEART:9
+
+```
+ 
+
+# 2. 鎺ュ彛璇存槑
+
+shm_mm.h
+```
 /**
- * 鍒濆鍖�
- * @ shmqueue 
- * @ key 鏍囪瘑鍏变韩闃熷垪鐨勫敮涓�key
- * @ queue_size 闃熷垪澶у皬
- * @ ele_size 闃熷垪涓厓绱犲ぇ灏�
+ * 鍒濆鍖栧叡浜唴瀛�
+ * @size 鍏变韩鍐呭瓨澶у皬, 鍗曚綅M
+ * 
  */
-inline void shmqueue_init(shmqueue_t *shmqueue, int key, int queue_size, int ele_size) {
-	if(ele_size > MAX_ELE_SIZE) {
-		err_exit(0, "shmqueue_init 鍏冪礌澶у皬瓒呰繃璁捐鐨勬渶澶уぇ灏�");
-	}
-	SHMQueue<ele_t> *queue = new SHMQueue<ele_t>(key, queue_size);
-	shmqueue->mqueue = (void *)queue;
-	shmqueue->ele_size = ele_size;
-}
-
-
+void shm_init(int size);
 
 /**
- * 閿�姣�
+ * 閿�姣佸叡浜唴瀛�
+ * 鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸��
+ */
+void shm_destroy();
+```
+
+dgram_mod_socket.h
+```
+
+/**
+ * 鍒涘缓socket
+ * @return socket鍦板潃
 */
-inline void shmqueue_destroy(shmqueue_t *shmqueue) {
-	delete (SHMQueue<ele_t> *)shmqueue->mqueue;
-}
+void *dgram_mod_open_socket();
 
 /**
- * 闃熷垪鍏冪礌鐨勪釜鏁�
- */
-inline uint32_t shmqueue_size(shmqueue_t *shmqueue) {
-	return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->size();
-}
+ * 鍏抽棴socket
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
+int dgram_mod_close_socket(void * _socket);
 
 /**
- * 鏄惁宸叉弧
- */
-inline int shmqueue_full(shmqueue_t *shmqueue) {
-	return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->full();
-}
+ * 缁戝畾绔彛鍒皊ocket, 濡傛灉涓嶇粦瀹氬垯绯荤粺鑷姩鍒嗛厤涓�涓�
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
+int dgram_mod_bind(void * _socket, int port);
 
 /**
- * 鏄惁涓虹┖
+ * 鍙戦�佷俊鎭�
+ * @port 鍙戦�佺粰璋�
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
  */
-inline int shmqueue_empty(shmqueue_t *shmqueue) {
-	return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->empty();
-}
+int dgram_mod_sendto(void *_socket, const void *buf, const int size, const int port);
+
 
 /**
- * 鍏ラ槦, 闃熷垪婊℃椂绛夊緟
- */
-inline int shmqueue_push(shmqueue_t *shmqueue, void *src_ele) 
+ * 鎺ユ敹淇℃伅
+ * @port 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
+int dgram_mod_recvfrom(void *_socket, void **buf, int *size, int *port);
 
 /**
- * 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖
- */
-inline int shmqueue_push_nowait(shmqueue_t *shmqueue, void *src_ele) 
+ * 鍙戦�佽姹備俊鎭苟绛夊緟鎺ユ敹搴旂瓟
+ * @port 鍙戦�佺粰璋�
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
+int dgram_mod_sendandrecv(void * _socket, const void *send_buf, const int send_size, const int port, void **recv_buf, int *recv_size) ;
+
 
 /**
- * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆闃熶笉鎴愬姛灏辫繑鍥�
- */
-inline int shmqueue_push_timeout(shmqueue_t *shmqueue, void *src_ele, struct timespec * timeout) 
-/**
- * 鍑洪槦, 闃熷垪绌烘椂绛夊緟
- */
-inline int shmqueue_pop(shmqueue_t *shmqueue, void *dest_ele)  
+ * 鍚姩bus
+ * 
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
+int  dgram_mod_start_bus(void * _socket);
 
 /**
- * 鍑洪槦, 闃熷垪绌烘椂绔嬪嵆杩斿洖
+ * 璁㈤槄鎸囧畾涓婚
+ * @topic 涓婚
+ * @size 涓婚闀垮害
+ * @port 鎬荤嚎绔彛
  */
-inline int shmqueue_pop_nowait(shmqueue_t *shmqueue, void *dest_ele) 
-/**
- * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭闃熶笉鎴愬姛灏辫繑鍥�
- */
-inline int shmqueue_pop_timeout(shmqueue_t *shmqueue, void *dest_ele, struct timespec * timeout)
+int  dgram_mod_sub(void * _socket, void *topic, int size, int port);
 
+/**
+ * 鍙戝竷涓婚
+ * @topic 涓婚
+ * @content 涓婚鍐呭
+ * @port 鎬荤嚎绔彛
+ */
+int  dgram_mod_pub(void * _socket, void *topic, int topic_size, void *content, int content_size, int port);
+
+
+/**
+ * 鑾峰彇soket绔彛鍙�
+ */
+int dgram_mod_get_port(void * _socket) ;
+
+
+/**
+ * 閲婃斁瀛樺偍鎺ユ敹淇℃伅鐨刡uf
+ */
+void dgram_mod_free(void *buf) ;
 ```
 
+ 

--
Gitblit v1.8.0