From 4fd62552d8277f3d0ed20e66663cd219c36796df Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 21 一月 2021 11:20:22 +0800
Subject: [PATCH] update
---
src/socket/shm_mod_socket.cpp | 44 ++++++++++++++++++--------------------------
1 files changed, 18 insertions(+), 26 deletions(-)
diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 6e622a8..4340bc4 100644
--- a/src/socket/shm_mod_socket.cpp
+++ b/src/socket/shm_mod_socket.cpp
@@ -9,7 +9,6 @@
}
ShmModSocket::ShmModSocket() {
- mod = (socket_mod_t)0;
shm_socket = shm_open_socket(SHM_SOCKET_DGRAM);
bus_set = new std::set<int>;
}
@@ -54,37 +53,30 @@
int ShmModSocket::sendto_nowait( const void *buf, const int size, const int key){
return shm_sendto(shm_socket, buf, size, key, NULL, (int)SHM_MSG_NOWAIT);
}
+
-
-inline int ShmModSocket::_recvfrom_(void **buf, int *size, int *key, struct timespec *timeout, int flags) {
-
- if(mod == BUS) {
- logger->error("Can not use method recvfrom in a Bus");
- exit(1);
- }
-// printf("dgram_mod_recvfrom before\n");
- int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, flags);
-// printf("dgram_mod_recvfrom after\n");
- return rv;
-}
/**
* 鎺ユ敹淇℃伅
* @key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
* @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
*/
int ShmModSocket::recvfrom(void **buf, int *size, int *key) {
-
- return _recvfrom_( buf, size, key, NULL, 0);
+ int rv = shm_recvfrom(shm_socket, buf, size, key, NULL, 0);
+
+ return rv;
}
// 鎺ュ彈淇℃伅瓒呮椂杩斿洖銆� @sec 绉� 锛� @nsec 绾崇
int ShmModSocket::recvfrom_timeout( void **buf, int *size, int *key, struct timespec *timeout) {
- return _recvfrom_(buf, size, key, timeout, 0);
+ int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, 0);
+ return rv;
}
int ShmModSocket::recvfrom_nowait( void **buf, int *size, int *key){
- return _recvfrom_(buf, size, key, NULL, (int)SHM_MSG_NOWAIT);
+ int rv = shm_recvfrom(shm_socket, buf, size, key, NULL, (int)SHM_MSG_NOWAIT);
+ // logger->error(rv, "ShmModSocket::recvfrom_nowait failed!");
+ return rv;
}
/**
@@ -188,14 +180,7 @@
*/
int ShmModSocket::_sub_(char *topic, int topic_size, int key,
struct timespec *timeout, int flags) {
- // char buf[8192];
- // int rv;
- // snprintf(buf, 8192, "%ssub%s%s%s%s", ACTION_LIDENTIFIER, ACTION_RIDENTIFIER, TOPIC_LIDENTIFIER, topic, TOPIC_RIDENTIFIER);
- // rv = shm_sendto(shm_socket, buf, strlen(buf) + 1, key, timeout, flags);
- // if(rv == 0) {
- // bus_set->insert(key);
- // }
- // return rv;
+
int ret;
bus_head_t head = {};
@@ -240,7 +225,14 @@
if(size > 0) {
ret = shm_sendto(shm_socket, buf, size, key, timeout, flags);
free(buf);
- return ret;
+ if(ret == EBUS_TIMEOUT) {
+ logger->error(ret, "ShmModSocket::_desub_ key %d failed, %s", key, bus_strerror(EBUS_TIMEOUT));
+ return EBUS_TIMEOUT;
+ } else {
+ logger->error(ret, "ShmModSocket::_desub_ key %d failed!", key);
+ return ret;
+ }
+
} else {
return -1;
}
--
Gitblit v1.8.0