feat(soa_server):initial version of soa_server
This commit is contained in:
122
source/soa_server/someip_server.cpp
Normal file
122
source/soa_server/someip_server.cpp
Normal file
@@ -0,0 +1,122 @@
|
||||
/*============================================================================*/
|
||||
/* Copyright (C) huaxu (2026).
|
||||
*
|
||||
* All rights reserved. This software is huaxu property. Duplication
|
||||
* or disclosure without huaxu written authorization is prohibited.
|
||||
*
|
||||
* @file someip_server.cpp
|
||||
* @brief main entry of someip_server
|
||||
* @author LiuZhimin
|
||||
* @date 2026-02-24 15:20:00
|
||||
*/
|
||||
/*============================================================================*/
|
||||
/*=======[R E V I S I O N H I S T O R Y]====================================*/
|
||||
/* <VERSION> <DATE> <AUTHOR> <REVISION LOG>
|
||||
* V0.0.1 20260606 Liuzhimin Initial version
|
||||
*/
|
||||
/*============================================================================*/
|
||||
|
||||
/*=======[I N C L U D E S]====================================================*/
|
||||
|
||||
#include "someip_server_cfg.hpp"
|
||||
//#include "someip_server.hpp"
|
||||
#include <list>
|
||||
//#include "location_mgt_api.h"
|
||||
|
||||
using namespace vsomeip;
|
||||
/*=======[G L O B A L D A T A]==============================================*/
|
||||
|
||||
/*=======[M A C R O S]========================================================*/
|
||||
|
||||
/*=======[I N T E R N A L D A T A]==========================================*/
|
||||
|
||||
/*=======[L O C A L F U N C T I O N D E C L A R A T I O N S]==============*/
|
||||
|
||||
/*=======[L O C A L F U N C T I O N I M P L E M E N T A T I O N S]========*/
|
||||
|
||||
/*=======[G L O B A L F U N C T I O N I M P L E M E N T A T I O N S]======*/
|
||||
|
||||
|
||||
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
|
||||
service *server_ptr(nullptr);
|
||||
void server_handle_signal(int _signal)
|
||||
{
|
||||
if (server_ptr != nullptr &&
|
||||
(_signal == SIGINT || _signal == SIGTERM
|
||||
|| _signal == SIGKILL))
|
||||
server_ptr->stop();
|
||||
}
|
||||
#endif
|
||||
|
||||
void my_someip_server_thread_func(void* arg)
|
||||
{
|
||||
service server;
|
||||
someip_log_i("start someip server");
|
||||
|
||||
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
|
||||
server_ptr = &server;
|
||||
signal(SIGINT, server_handle_signal);
|
||||
signal(SIGTERM, server_handle_signal);
|
||||
signal(SIGKILL, server_handle_signal);
|
||||
#endif
|
||||
someip_log_i("start initial.");
|
||||
if (server.init())
|
||||
{
|
||||
someip_log_i("start offer method/events.");
|
||||
/* register/offer server */
|
||||
for (auto const&service: my_servers){
|
||||
server.start_offer_service(service._service, service._instance,
|
||||
service._major, service._minor);
|
||||
}
|
||||
#if 0
|
||||
/* register R/R methods */
|
||||
for (auto const&method: offer_rr_methods){
|
||||
server.register_method(method._service,method._instance,method._method,method._method_type,method._get_response_data_func);
|
||||
}
|
||||
|
||||
/* register F/F methods */
|
||||
for (auto const&method: offer_ff_methods){
|
||||
server.register_method(method._service,method._instance,method._method,method._method_type,method._get_response_data_func);
|
||||
}
|
||||
|
||||
/* register setters */
|
||||
for (auto const&method: offer_setters){
|
||||
server.register_method(method._service,method._instance,method._method,method._method_type,method._get_response_data_func);
|
||||
}
|
||||
|
||||
/* register getters */
|
||||
for (auto const&method: offer_getters){
|
||||
server.register_method(method._service,method._instance,method._method,method._method_type,method._get_response_data_func);
|
||||
}
|
||||
|
||||
/* register Events */
|
||||
for (auto const&event: offer_events){
|
||||
server.register_event(event._service, event._instance, event._eventgroup,
|
||||
event._event, event._type, event._cycle, event._change_resets_cycle,
|
||||
event._update_on_change, event._epsilon_change_func,
|
||||
event._reliability, event._notify_data_func);
|
||||
}
|
||||
|
||||
#endif
|
||||
/* register Notifiers */
|
||||
for (auto const&event: offer_notifiers){
|
||||
server.register_event(event._service, event._instance, event._eventgroup,
|
||||
event._event, event._type, event._cycle, event._change_resets_cycle,
|
||||
event._update_on_change, event._epsilon_change_func,
|
||||
event._reliability, event._notify_data_func);
|
||||
}
|
||||
/* To start server, after method/event is registered */
|
||||
server.start(); //block function
|
||||
|
||||
/* stop server */
|
||||
for (auto const&service: my_servers){
|
||||
server.stop_offer_service(service._service, service._instance,
|
||||
service._major, service._minor);
|
||||
}
|
||||
server.stop();
|
||||
return;
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user