summaryrefslogtreecommitdiff
path: root/implementation/configuration/include/configuration_impl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'implementation/configuration/include/configuration_impl.hpp')
-rw-r--r--implementation/configuration/include/configuration_impl.hpp117
1 files changed, 65 insertions, 52 deletions
diff --git a/implementation/configuration/include/configuration_impl.hpp b/implementation/configuration/include/configuration_impl.hpp
index 8a57633..04f4a22 100644
--- a/implementation/configuration/include/configuration_impl.hpp
+++ b/implementation/configuration/include/configuration_impl.hpp
@@ -9,10 +9,11 @@
#include <map>
#include <memory>
#include <mutex>
+#include <vector>
#include <boost/property_tree/ptree.hpp>
-#include <vsomeip/configuration.hpp>
+#include "configuration.hpp"
namespace vsomeip {
namespace cfg {
@@ -20,16 +21,20 @@ namespace cfg {
struct service;
struct servicegroup;
-class configuration_impl: public configuration {
+class VSOMEIP_EXPORT configuration_impl: public configuration {
public:
- static configuration * get(const std::string &_path);
+ static std::shared_ptr<configuration> get(
+ const std::set<std::string> &_input);
+ static void reset();
configuration_impl();
+ configuration_impl(const configuration_impl &_cfg);
virtual ~configuration_impl();
- bool load(const std::string &_path);
+ void load(const boost::property_tree::ptree &_tree);
+ void load_log(const std::vector<boost::property_tree::ptree> &_trees);
- const boost::asio::ip::address & get_unicast() const;
+ const boost::asio::ip::address & get_unicast_address() const;
bool is_v4() const;
bool is_v6() const;
@@ -39,18 +44,7 @@ public:
const std::string & get_logfile() const;
boost::log::trivial::severity_level get_loglevel() const;
- std::string get_group(service_t _service, instance_t _instance) const;
- std::set<std::string> get_servicegroups() const;
-
- bool is_local_servicegroup(const std::string &_name) const;
- int32_t get_min_initial_delay(const std::string &_name) const;
- int32_t get_max_initial_delay(const std::string &_name) const;
- int32_t get_repetition_base_delay(const std::string &_name) const;
- uint8_t get_repetition_max(const std::string &_name) const;
- int32_t get_cyclic_offer_delay(const std::string &_name) const;
- int32_t get_cyclic_request_delay(const std::string &_name) const;
-
- std::string get_unicast(service_t _service, instance_t _instance) const;
+ std::string get_unicast_address(service_t _service, instance_t _instance) const;
std::string get_multicast_address(service_t _service,
instance_t _instance) const;
uint16_t get_multicast_port(service_t _service,
@@ -63,56 +57,65 @@ public:
uint16_t get_unreliable_port(service_t _service,
instance_t _instance) const;
- const std::string & get_routing_host() const;
+ bool is_someip(service_t _service, instance_t _instance) const;
- bool is_service_discovery_enabled() const;
- const std::string & get_service_discovery_multicast() const;
- uint16_t get_service_discovery_port() const;
- const std::string & get_service_discovery_protocol() const;
+ const std::string & get_routing_host() const;
client_t get_id(const std::string &_name) const;
std::size_t get_num_dispatchers(const std::string &_name) const;
std::set<std::pair<service_t, instance_t> > get_remote_services() const;
- std::map<service_t,
- std::map<instance_t,
- std::map<eventgroup_t,
- std::set<event_t> > > > get_eventgroups() const;
- std::map<service_t,
- std::map<instance_t,
- std::set<event_t> > > get_events() const;
- void set_event(std::shared_ptr<event> &_event) const;
+ std::uint32_t get_max_message_size_local() const;
+ std::uint32_t get_message_size_reliable(const std::string& _address,
+ std::uint16_t _port) const;
+
+ // Service Discovery configuration
+ bool is_sd_enabled() const;
+
+ const std::string & get_sd_multicast() const;
+ uint16_t get_sd_port() const;
+ const std::string & get_sd_protocol() const;
+
+ int32_t get_sd_initial_delay_min() const;
+ int32_t get_sd_initial_delay_max() const;
+ int32_t get_sd_repetitions_base_delay() const;
+ uint8_t get_sd_repetitions_max() const;
+ ttl_t get_sd_ttl() const;
+ int32_t get_sd_cyclic_offer_delay() const;
+ int32_t get_sd_request_response_delay() const;
private:
- bool get_someip_configuration(boost::property_tree::ptree &_tree);
- bool get_logging_configuration(boost::property_tree::ptree &_tree);
- bool get_services_configuration(boost::property_tree::ptree &_tree);
- bool get_routing_configuration(boost::property_tree::ptree &_tree);
- bool get_service_discovery_configuration(
- boost::property_tree::ptree &_tree);
- bool get_applications_configuration(boost::property_tree::ptree &_tree);
-
- bool get_servicegroup_configuration(
- const boost::property_tree::ptree &_tree);
- bool get_delays_configuration(std::shared_ptr<servicegroup> &_group,
+ void get_logging_configuration(const boost::property_tree::ptree &_tree);
+
+ void get_someip_configuration(const boost::property_tree::ptree &_tree);
+ void get_services_configuration(const boost::property_tree::ptree &_tree);
+ void get_payload_sizes_configuration(const boost::property_tree::ptree &_tree);
+ void get_routing_configuration(const boost::property_tree::ptree &_tree);
+ void get_service_discovery_configuration(
const boost::property_tree::ptree &_tree);
- bool get_service_configuration(std::shared_ptr<servicegroup> &_group,
+ void get_applications_configuration(const boost::property_tree::ptree &_tree);
+
+ void get_servicegroup_configuration(
const boost::property_tree::ptree &_tree);
- bool get_event_configuration(std::shared_ptr<service> &_service,
+ void get_delays_configuration(const boost::property_tree::ptree &_tree);
+ void get_service_configuration(const boost::property_tree::ptree &_tree,
+ const std::string &_unicast_address);
+ void get_event_configuration(std::shared_ptr<service> &_service,
const boost::property_tree::ptree &_tree);
- bool get_eventgroup_configuration(std::shared_ptr<service> &_service,
+ void get_eventgroup_configuration(std::shared_ptr<service> &_service,
const boost::property_tree::ptree &_tree);
- bool get_application_configuration(
+ void get_application_configuration(
const boost::property_tree::ptree &_tree);
servicegroup * find_servicegroup(const std::string &_name) const;
service * find_service(service_t _service, instance_t _instance) const;
private:
- static std::map<std::string, configuration *> the_configurations;
+ static std::shared_ptr<configuration_impl> the_configuration;
static std::mutex mutex_;
+protected:
// Configuration data
boost::asio::ip::address unicast_;
@@ -122,21 +125,31 @@ private:
std::string logfile_;
boost::log::trivial::severity_level loglevel_;
- std::map<std::string, std::shared_ptr<servicegroup> > servicegroups_;
+ std::map<std::string, std::pair<client_t, std::size_t>> applications_;
+
std::map<service_t,
std::map<instance_t,
std::shared_ptr<service> > > services_;
std::string routing_host_;
- bool is_service_discovery_enabled_;
- std::string service_discovery_multicast_;
- uint16_t service_discovery_port_;
- std::string service_discovery_protocol_;
+ bool is_sd_enabled_;
+ std::string sd_protocol_;
+ std::string sd_multicast_;
+ uint16_t sd_port_;
- std::map<std::string, std::pair<client_t, std::size_t>> applications_;
+ int32_t sd_initial_delay_min_;
+ int32_t sd_initial_delay_max_;
+ int32_t sd_repetitions_base_delay_;
+ uint8_t sd_repetitions_max_;
+ ttl_t sd_ttl_;
+ int32_t sd_cyclic_offer_delay_;
+ int32_t sd_request_response_delay_;
std::map<std::string, std::set<uint16_t> > magic_cookies_;
+
+ std::map<std::string, std::map<std::uint16_t, std::uint32_t>> message_sizes_;
+ std::uint32_t max_configured_message_size_;
};
} // namespace cfg