86 lines
2.8 KiB
C++
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;
|
|
}
|
|
}
|