Files
SOMEIP/source/example/someip_client.cpp
2026-06-09 20:16:47 +08:00

86 lines
2.8 KiB
C++

//#include "someip_client.hpp"
#include "someip_client_cfg.hpp"
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
client *my_client_ptr(nullptr);
void client_handle_signal(int _signal) {
if (my_client_ptr != nullptr &&
(_signal == SIGINT || _signal == SIGTERM
|| _signal == SIGKILL))
my_client_ptr->stop();
}
#endif
void my_someip_client_thread_func(void* arg) {
bool use_tcp = false;
bool be_quiet = false;
uint32_t cycle = 1000; // Default: 1s
std::string tcp_enable("--tcp");
std::string udp_enable("--udp");
std::string quiet_enable("--quiet");
std::string cycle_arg("--cycle");
/*
int i = 1;
while (i < argc) {
if (tcp_enable == argv[i]) {
use_tcp = true;
} else if (udp_enable == argv[i]) {
use_tcp = false;
} else if (quiet_enable == argv[i]) {
be_quiet = true;
} else if (cycle_arg == argv[i] && i+1 < argc) {
i++;
std::stringstream converter;
converter << argv[i];
converter >> cycle;
}
i++;
}*/
client my_client(use_tcp, be_quiet, cycle);
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
my_client_ptr = &my_client;
signal(SIGINT, client_handle_signal);
signal(SIGTERM, client_handle_signal);
signal(SIGKILL, client_handle_signal);
#endif
if (my_client.init()) {
for (auto const &server : request_services){
my_client.start_request_service(server._service, server._instance);
}
for (auto const &method : request_methods){
my_client.start_request_method(method._service, method._instance, method._method,
method._request_method_func, method._message_type, method._massage_handle_func);
}
for (auto const &event : request_events){
my_client.start_request_event(event._service, event._instance, event._eventgroup,
event._event, event._type, event._massage_handle_func);
}
my_client.start(); //block function
/* below to Stop Client */
// for (auto const &method : request_methods){
// my_client.stop_request_method(method._service, method._instance, method._method);
// }
for (auto const &event : request_events){
my_client.stop_request_event(event._service, event._instance, event._event);
}
for (auto const &event : request_events){
my_client.stop_request_event_group(event._service, event._instance, event._eventgroup);
}
for (auto const &server : request_services){
my_client.stop_request_service(server._service, server._instance);
}
my_client.stop();
return;
} else {
return;
}
}