From 91ea20d03ebb5a8d20150d3ecc28a13c51ce93f1 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期五, 22 一月 2021 19:17:06 +0800
Subject: [PATCH] update
---
test_socket/bus_test.cpp | 24 ++++++++++++++++++++----
src/svsem.cpp | 2 +-
src/socket/shm_mod_socket.cpp | 4 ++--
CMakeLists.txt | 4 +---
4 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3b1e4b4..f23dbf8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,15 +13,13 @@
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
-if (CMAKE_BUILD_TYPE EQUAL "Release")
#option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
-endif()
option(BUILD_DOC "Build doc" OFF)
list(APPEND EXTRA_INCLUDES "${PROJECT_SOURCE_DIR}/include/usgcommon")
-list(APPEND EXTRA_LIBS ${PROJECT_SOURCE_DIR}/lib/libusgcommon.a pthread rt)
+list(APPEND EXTRA_LIBS ${PROJECT_SOURCE_DIR}/lib/libusgcommon.a rt pthread )
# build api doc
diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 54effbe..6501f1e 100644
--- a/src/socket/shm_mod_socket.cpp
+++ b/src/socket/shm_mod_socket.cpp
@@ -69,12 +69,12 @@
// 鎺ュ彈淇℃伅瓒呮椂杩斿洖銆� @sec 绉� 锛� @nsec 绾崇
int ShmModSocket::recvfrom_timeout( void **buf, int *size, int *key, struct timespec *timeout) {
- int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, 0);
+ int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, BUS_TIMEOUT_FLAG);
return rv;
}
int ShmModSocket::recvfrom_nowait( void **buf, int *size, int *key){
- int rv = shm_recvfrom(shm_socket, buf, size, key, NULL, (int)BUS_NOWAIT_FLAG);
+ int rv = shm_recvfrom(shm_socket, buf, size, key, NULL, BUS_NOWAIT_FLAG);
// logger->error(rv, "ShmModSocket::recvfrom_nowait failed!");
return rv;
}
diff --git a/src/svsem.cpp b/src/svsem.cpp
index 82390b6..b874fdb 100644
--- a/src/svsem.cpp
+++ b/src/svsem.cpp
@@ -96,7 +96,7 @@
sops.sem_op = -1;
sops.sem_flg = IPC_NOWAIT | 0;
- while (semop(semid, &sops, 1) == -1)
+ if (semop(semid, &sops, 1) == -1)
if (errno != EINTR) {
// err_msg(errno, "svsem_dec_nowait");
return errno;
diff --git a/test_socket/bus_test.cpp b/test_socket/bus_test.cpp
index b815476..a6d741e 100644
--- a/test_socket/bus_test.cpp
+++ b/test_socket/bus_test.cpp
@@ -24,15 +24,31 @@
void *recvbuf;
int size;
int key;
+ int rv;
ShmModSocket *sk = (ShmModSocket *)skptr;
- while ( true) {
- sk->recvfrom( &recvbuf, &size, &key);
- printf("鏀跺埌璁㈤槄娑堟伅:%s\n", recvbuf);
- free(recvbuf);
+printf("run_recv\n");
+ struct timespec timeout = {2, 0};
+ while (true) {
+ printf("run_recv before\n");
+
+ rv = sk->recvfrom_timeout( &recvbuf, &size, &key, &timeout);
+ if(rv == 0) {
+ printf("鏀跺埌璁㈤槄娑堟伅:%s\n", recvbuf);
+ free(recvbuf);
+ } else {
+ printf("recvfrom error %d\n", rv);
+ }
+
}
+ return NULL;
}
+void client2(int key) {
+ ShmModSocket *sk = new ShmModSocket();
+ run_recv((void *)sk);
+}
+
void client(int key) {
ShmModSocket *sk = new ShmModSocket();
--
Gitblit v1.8.0