Skip to content

Commit

Permalink
Fixed handling of initial delay. The uniform_distribution-template of
Browse files Browse the repository at this point in the history
boost.random requires the values to be signed.

Introduced default values for minimum and maximum initial delay. These
are configurable at (library) compile time in "defines.hpp".

Adapted configuration files to enable service discovery.
  • Loading branch information
lutzbichler committed Jul 22, 2014
1 parent e9daa9e commit 0e0b33b
Show file tree
Hide file tree
Showing 11 changed files with 47 additions and 23 deletions.
2 changes: 1 addition & 1 deletion config/vsomeip-tcp-client.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<host>client-sample</host>
</routing>
<service-discovery>
<enabled>false</enabled>
<enabled>true</enabled>
<protocol>udp</protocol>
<address>224.244.224.245</address>
<port>30490</port>
Expand Down
3 changes: 1 addition & 2 deletions config/vsomeip-tcp-service.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@
<host>service-sample</host>
</routing>
<service-discovery>
<enabled>false</enabled>
<host>client-sample</host>
<enabled>true</enabled>
<protocol>udp</protocol>
<address>224.244.224.245</address>
<port>30490</port>
Expand Down
2 changes: 1 addition & 1 deletion config/vsomeip-udp-client.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<host>client-sample</host>
</routing>
<service-discovery>
<enabled>false</enabled>
<enabled>true</enabled>
<protocol>udp</protocol>
<address>224.244.224.245</address>
<port>30490</port>
Expand Down
3 changes: 1 addition & 2 deletions config/vsomeip-udp-service.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@
<host>service-sample</host>
</routing>
<service-discovery>
<enabled>false</enabled>
<host>client-sample</host>
<enabled>true</enabled>
<protocol>udp</protocol>
<address>224.244.224.245</address>
<port>30490</port>
Expand Down
4 changes: 2 additions & 2 deletions implementation/configuration/include/configuration_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class configuration_impl : public configuration {
std::set< std::string > get_servicegroups() const;

bool is_local_servicegroup(const std::string &_name) const;
uint32_t get_min_initial_delay(const std::string &_name) const;
uint32_t get_max_initial_delay(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;
uint32_t get_repetition_base_delay(const std::string &_name) const;
uint8_t get_repetition_max(const std::string &_name) const;
uint32_t get_cyclic_offer_delay(const std::string &_name) const;
Expand Down
8 changes: 4 additions & 4 deletions implementation/configuration/src/configuration_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,17 +461,17 @@ bool configuration_impl::is_local_servicegroup(const std::string &_name) const {
return is_local;
}

uint32_t configuration_impl::get_min_initial_delay(const std::string &_name) const {
uint32_t its_delay = 0;
int32_t configuration_impl::get_min_initial_delay(const std::string &_name) const {
int32_t its_delay = VSOMEIP_DEFAULT_MIN_INITIAL_DELAY;

servicegroup *its_servicegroup = find_servicegroup(_name);
if (its_servicegroup) its_delay = its_servicegroup->min_initial_delay_;

return its_delay;
}

uint32_t configuration_impl::get_max_initial_delay(const std::string &_name) const {
uint32_t its_delay = 0xFFFFFFFF;
int32_t configuration_impl::get_max_initial_delay(const std::string &_name) const {
int32_t its_delay = VSOMEIP_DEFAULT_MAX_INITIAL_DELAY;

servicegroup *its_servicegroup = find_servicegroup(_name);
if (its_servicegroup) its_delay = its_servicegroup->max_initial_delay_;
Expand Down
22 changes: 16 additions & 6 deletions implementation/routing/src/routing_manager_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ void routing_manager_impl::send(client_t _client,
} else {
its_target = its_info->get_unreliable_endpoint();
}

if (its_target) {
its_target->send(_data, _size, _flush);
} else {
Expand Down Expand Up @@ -394,16 +395,25 @@ std::shared_ptr< configuration > routing_manager_impl::get_configuration() const

void routing_manager_impl::create_service_discovery_endpoint(
const std::string &_address, uint16_t _port, const std::string &_protocol) {
/*
endpoint *its_endpoint = find_service_endpoint(sd::VSOMEIP_SD_SERVICE, sd::VSOMEIP_SD_INSTANCE);
if (nullptr != its_endpoint) {
bool is_reliable = (_protocol != "udp");
bool is_reliable = (_protocol != "udp");
std::shared_ptr< endpoint > its_endpoint = find_server_endpoint(_port, is_reliable);
if (!its_endpoint) {
its_endpoint = create_server_endpoint(_port, is_reliable);

std::shared_ptr< serviceinfo > its_info(std::make_shared< serviceinfo >(
VSOMEIP_ANY_MAJOR, VSOMEIP_ANY_MINOR, VSOMEIP_ANY_TTL));
if (is_reliable) {
its_info->set_reliable_endpoint(its_endpoint);
} else {
its_info->set_unreliable_endpoint(its_endpoint);
}

// routing info
services_[vsomeip::sd::VSOMEIP_SD_SERVICE][vsomeip::sd::VSOMEIP_SD_INSTANCE] = its_info;

its_endpoint = create_service_endpoint(_port, is_reliable);
its_endpoint->join(_address);
its_endpoint->start();
}
*/
}

service_map_t routing_manager_impl::get_offered_services(const std::string &_name) const {
Expand Down
8 changes: 8 additions & 0 deletions implementation/service_discovery/src/message_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "../include/protection_option_impl.hpp"
#include "../include/message_impl.hpp"
#include "../../message/include/deserializer.hpp"
#include "../../message/include/payload_impl.hpp"
#include "../../message/include/serializer.hpp"

namespace vsomeip {
Expand Down Expand Up @@ -153,6 +154,13 @@ int16_t message_impl::get_option_index(const std::shared_ptr< option_impl > &_op
return -1;
}

std::shared_ptr< payload > message_impl::get_payload() const {
return std::make_shared< payload_impl >();
}

void message_impl::set_payload(std::shared_ptr< payload > _payload) {
}

bool message_impl::serialize(vsomeip::serializer *_to) const {
bool is_successful = header_.serialize(_to);

Expand Down
10 changes: 8 additions & 2 deletions implementation/service_discovery/src/service_discovery_fsm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,16 @@ service_discovery_fsm::service_discovery_fsm(
std::shared_ptr< configuration > its_configuration
= discovery_->get_configuration();

int32_t its_min_initial_delay = its_configuration->get_min_initial_delay(name_);
int32_t its_max_initial_delay = its_configuration->get_max_initial_delay(name_);

VSOMEIP_DEBUG << "Inital delay ["
<< its_min_initial_delay << ", " << its_max_initial_delay << "]";

boost::random::mt19937 its_generator;
boost::random::uniform_int_distribution<> its_distribution(
its_configuration->get_min_initial_delay(name_),
its_configuration->get_max_initial_delay(name_)
its_min_initial_delay,
its_max_initial_delay
);
fsm_->initial_delay_ = its_distribution(its_generator);

Expand Down
4 changes: 2 additions & 2 deletions interface/vsomeip/configuration.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ class configuration {
virtual std::set< std::string > get_servicegroups() const = 0;

virtual bool is_local_servicegroup(const std::string &_name) const = 0;
virtual uint32_t get_min_initial_delay(const std::string &_name) const = 0;
virtual uint32_t get_max_initial_delay(const std::string &_name) const = 0;
virtual int32_t get_min_initial_delay(const std::string &_name) const = 0;
virtual int32_t get_max_initial_delay(const std::string &_name) const = 0;
virtual uint32_t get_repetition_base_delay(const std::string &_name) const = 0;
virtual uint8_t get_repetition_max(const std::string &_name) const = 0;
virtual uint32_t get_cyclic_offer_delay(const std::string &_name) const = 0;
Expand Down
4 changes: 3 additions & 1 deletion interface/vsomeip/defines.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

#define VSOMEIP_PROTOCOL_VERSION 0x1


#define VSOMEIP_MAX_LOCAL_MESSAGE_SIZE 32768
#define VSOMEIP_MAX_TCP_MESSAGE_SIZE 4095
#define VSOMEIP_MAX_UDP_MESSAGE_SIZE 1446
Expand All @@ -40,4 +39,7 @@
#define VSOMEIP_MESSAGE_TYPE_POS 14
#define VSOMEIP_RETURN_CODE_POS 15

#define VSOMEIP_DEFAULT_MIN_INITIAL_DELAY 0
#define VSOMEIP_DEFAULT_MAX_INITIAL_DELAY 3000

#endif // VSOMEIP_DEFINES_HPP

0 comments on commit 0e0b33b

Please sign in to comment.