From 68590dd2f3e7f1a0a1278daee7719eb6614bb771 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sun, 19 Sep 2021 16:14:48 +0800 Subject: [PATCH] commit new demo --- demo/send_recv/CMakeLists.txt | 11 +++++++++ demo/send_recv/main.cpp | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 demo/send_recv/CMakeLists.txt create mode 100644 demo/send_recv/main.cpp diff --git a/demo/send_recv/CMakeLists.txt b/demo/send_recv/CMakeLists.txt new file mode 100644 index 0000000..9d3f0fb --- /dev/null +++ b/demo/send_recv/CMakeLists.txt @@ -0,0 +1,11 @@ +project(send_recv) + +include_directories( + ${LIBIPC_PROJECT_DIR}/3rdparty) + +file(GLOB SRC_FILES ./*.cpp) +file(GLOB HEAD_FILES ./*.h) + +add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEAD_FILES}) + +target_link_libraries(${PROJECT_NAME} ipc) diff --git a/demo/send_recv/main.cpp b/demo/send_recv/main.cpp new file mode 100644 index 0000000..3acc52a --- /dev/null +++ b/demo/send_recv/main.cpp @@ -0,0 +1,46 @@ + +#include +#include +#include +#include + +#include "libipc/ipc.h" + +namespace { + +void do_send(int size, int interval) { + ipc::channel ipc {"ipc", ipc::sender}; + std::string buffer(size, 'A'); + while (true) { + std::cout << "send size: " << buffer.size() + 1 << "\n"; + ipc.send(buffer, 0/*tm*/); + std::this_thread::sleep_for(std::chrono::milliseconds(interval)); + } +} + +void do_recv(int interval) { + ipc::channel ipc {"ipc", ipc::receiver}; + while (true) { + ipc::buff_t recv; + for (int k = 1; recv.empty(); ++k) { + std::cout << "recv waiting... " << k << "\n"; + recv = ipc.recv(interval); + } + std::cout << "recv size: " << recv.size() << "\n"; + } +} + +} // namespace + +int main(int argc, char ** argv) { + if (argc < 3) return -1; + std::string mode {argv[1]}; + if (mode == "send") { + if (argc < 4) return -1; + do_send(std::stoi(argv[2]) /*size*/, + std::stoi(argv[3]) /*interval*/); + } else if (mode == "recv") { + do_recv(std::stoi(argv[2]) /*interval*/); + } + return 0; +}