MCPcopy Create free account
hub / github.com/COVESA/vsomeip / offer_service_base

Method offer_service_base

implementation/routing/src/routing_manager_impl.cpp:3869–3901  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3867 return services_;
3868}
3869bool routing_manager_impl::offer_service_base(client_t _client, service_t _service, instance_t _instance, major_version_t _major,
3870 minor_version_t _minor) {
3871 (void)_client;
3872
3873 // Remote route (incoming only)
3874 auto its_info = find_service(_service, _instance);
3875 if (its_info) {
3876 if (!its_info->is_local()) {
3877 return false;
3878 } else if (its_info->get_major() == _major && its_info->get_minor() == _minor) {
3879 its_info->set_ttl(DEFAULT_TTL);
3880 } else {
3881 VSOMEIP_ERROR_P << "Service property mismatch (" << hex4(_client) << "): [" << hex4(_service) << "." << hex4(_instance) << ":"
3882 << static_cast<std::uint32_t>(its_info->get_major()) << "." << its_info->get_minor()
3883 << "] passed: " << static_cast<std::uint32_t>(_major) << ":" << _minor;
3884 return false;
3885 }
3886 } else {
3887 its_info = create_service_info(_service, _instance, _major, _minor, DEFAULT_TTL, true);
3888 }
3889 {
3890 std::scoped_lock its_lock(events_mutex_);
3891 // Set major version for all registered events of this service and instance
3892 const auto search = events_.find(service_instance_t{_service, _instance});
3893
3894 if (search != events_.end()) {
3895 for (const auto& [event_id, event_ptr] : search->second) {
3896 event_ptr->set_version(_major);
3897 }
3898 }
3899 }
3900 return true;
3901}
3902
3903std::shared_ptr<serviceinfo> routing_manager_impl::create_service_info(service_t _service, instance_t _instance, major_version_t _major,
3904 minor_version_t _minor, ttl_t _ttl, bool _is_local_service) {

Callers

nothing calls this directly

Calls 7

hex4Function · 0.85
endMethod · 0.80
set_versionMethod · 0.80
is_localMethod · 0.45
get_majorMethod · 0.45
get_minorMethod · 0.45
set_ttlMethod · 0.45

Tested by

no test coverage detected