From 695953440565103964e816e7326c66f3d171c3e0 Mon Sep 17 00:00:00 2001 From: jimi-wzq <wangzhengquan85@gmail.com> Date: 星期六, 01 八月 2020 10:48:18 +0800 Subject: [PATCH] fix conflict --- README.md | 310 ++++++++++++++++++++++++++++++++------------------ 1 files changed, 197 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index 4193faf..ba8d825 100644 --- a/README.md +++ b/README.md @@ -1,121 +1,205 @@ -<<<<<<< HEAD -## 瀹炰緥 + +# 1. 瀹炰緥 +浠ヤ笅瀹炰緥浠g爜鍦╜demo`鏂囦欢澶逛笅 +## 1.1 Bus妯″紡 +**Source** + +`dgram_mod_bus.c` + +**缂栬瘧** + +瀹夎濂絪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 + + ``` +杩欓噷鍙互鎵撳紑璁稿涓鎴风鍙戝竷鍜岃闃呮秷鎭�� + + +## 1.2 req_rep妯″紡, 閫傚簲浜庢敞鍐� + +**Source** `dgram_mod_req_rep.c` + +**缂栬瘧** 鍚屼笂 + +**婕旂ず** ``` -#include "shm_queue_wrapper.h" -#include "mm.h" +## 鍚姩娉ㄥ唽涓績 +./dgram_mod_req_rep server 2 & node0=$! && sleep 1 +## 鍚戞敞鍐屼腑蹇冨彂閫佹秷鎭� +./dgram_mod_req_rep client 2 node1 +kill $node0 +``` -typedef struct message_t -{ - char method[20]; - int code; - -} message_t; +## survey妯″紡锛� 閫傚簲浜庡績璺� +**Source** `dgram_mod_survey.c` -void test1() { - unsigned int i = 0; - int key = 2; - // - size_t qsize = 16; - void * queue = shmqueue_init( 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}; +**缂栬瘧** 鍚屼笂 - 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_survey server 3 - //閿�姣侀槦鍒� - shmqueue_destroy(queue); -} +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 +``` +/** + * 鍒濆鍖栧叡浜唴瀛� + * @size 鍏变韩鍐呭瓨澶у皬, 鍗曚綅M + * + */ +void shm_init(int size); + +/** + * 閿�姣佸叡浜唴瀛� + * 鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸�� + */ +void shm_destroy(); +``` + +dgram_mod_socket.h +``` + +/** + * 鍒涘缓socket + * @return socket鍦板潃 +*/ +void *dgram_mod_open_socket(); + +/** + * 鍏抽棴socket + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 +*/ +int dgram_mod_close_socket(void * _socket); + +/** + * 缁戝畾绔彛鍒皊ocket, 濡傛灉涓嶇粦瀹氬垯绯荤粺鑷姩鍒嗛厤涓�涓� + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 +*/ +int dgram_mod_bind(void * _socket, int port); + +/** + * 鍙戦�佷俊鎭� + * @port 鍙戦�佺粰璋� + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 + */ +int dgram_mod_sendto(void *_socket, const void *buf, const int size, const int port); + + +/** + * 鎺ユ敹淇℃伅 + * @port 浠庤皝鍝噷鏀跺埌鐨勪俊鎭� + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 +*/ +int dgram_mod_recvfrom(void *_socket, void **buf, int *size, int *port); + +/** + * 鍙戦�佽姹備俊鎭苟绛夊緟鎺ユ敹搴旂瓟 + * @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) ; + + +/** + * 鍚姩bus + * + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 +*/ +int dgram_mod_start_bus(void * _socket); + +/** + * 璁㈤槄鎸囧畾涓婚 + * @topic 涓婚 + * @size 涓婚闀垮害 + * @port 鎬荤嚎绔彛 + */ +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) ; +``` -int main () { - test1(); - - //鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸�� - mm_destroy(); - return 0; -} -``` - -## 鎺ュ彛璇存槑 - -``` - - -/** - * 鍒濆鍖� - * @ shmqueue - * @ key 鏍囪瘑鍏变韩闃熷垪鐨勫敮涓�key - * @ queue_size 闃熷垪澶у皬 , 杩欎釜鍊煎繀椤绘槸2鐨勬寚鏁板嵆 1, 2, 4, 8, 16 绛� - * @ ele_size 闃熷垪涓厓绱犲ぇ灏�, 杩欎釜鍊间笉鑳借秴杩�512锛屽綋鐒跺鏋滈渶瑕佸彲浠ヨ皟鏁磋繖涓渶澶ч檺鍒� - */ -void* shmqueue_init(int key, int queue_size, int ele_size); -/** - * 閿�姣� -*/ -void shmqueue_destroy(void *shmqueue); -/** - * 闃熷垪鍏冪礌鐨勪釜鏁� - */ -uint32_t shmqueue_size(void *shmqueue); -/** - * 鏄惁宸叉弧 - */ -int shmqueue_full(void *shmqueue); - -/** - * 鏄惁涓虹┖ - */ -int shmqueue_empty(void *shmqueue); - -/** - * 鍏ラ槦, 闃熷垪婊℃椂绛夊緟 - */ -int shmqueue_push(void *shmqueue, void *src_ele); - -/** - * 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖 - */ -int shmqueue_push_nowait(void *shmqueue, void *src_ele); - -/** - * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆闃熶笉鎴愬姛灏辫繑鍥� - */ -int shmqueue_push_timeout(void *shmqueue, void *src_ele, struct timespec * timeout); - -/** - * 鍑洪槦, 闃熷垪绌烘椂绛夊緟 - */ -int shmqueue_pop(void *shmqueue, void *dest_ele); - -/** - * 鍑洪槦, 闃熷垪绌烘椂绔嬪嵆杩斿洖 - */ -int shmqueue_pop_nowait(void *shmqueue, void *dest_ele); - -/** - * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭闃熶笉鎴愬姛灏辫繑鍥� - */ -int shmqueue_pop_timeout(void *shmqueue, void *dest_ele, struct timespec * timeout); - -``` -======= -## softbus - -shm鐨勯�氳搴� ->>>>>>> dd08a8134dea74ac30213c1b8580bff34ee7095b - -- Gitblit v1.8.0