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

Method unsubscribe

implementation/routing/src/routing_manager_client.cpp:676–717  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

674}
675
676void routing_manager_client::unsubscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup,
677 event_t _event) {
678
679 (void)_client;
680
681 {
682 {
683 std::scoped_lock its_service_guard(consumer_mutex_);
684 remove_pending_subscription(_service, _instance, _eventgroup, _event, its_service_guard);
685 }
686
687 if (state_machine_->state() == routing_client_state_e::ST_REGISTERED) {
688
689 protocol::unsubscribe_command its_command;
690 its_command.set_client(_client);
691 its_command.set_service(_service);
692 its_command.set_instance(_instance);
693 its_command.set_eventgroup(_eventgroup);
694 its_command.set_major(ANY_MAJOR);
695 its_command.set_event(_event);
696 its_command.set_pending_id(PENDING_SUBSCRIPTION_ID);
697
698 std::vector<byte_t> its_buffer;
699 its_command.serialize(its_buffer);
700
701 auto its_target = ep_mgr_->find_local_client(find_local_client(_service, _instance));
702 if (its_target) {
703 its_target->send(&its_buffer[0], uint32_t(its_buffer.size()));
704 } else {
705 if (_client != VSOMEIP_ROUTING_CLIENT) {
706 VSOMEIP_WARNING_P << "Could not find endpoint for client 0x" << hex4(_client) << ", sending to the router";
707 }
708 std::scoped_lock its_sender_lock{sender_mutex_};
709 if (sender_) {
710 sender_->send(&its_buffer[0], uint32_t(its_buffer.size()));
711 } else {
712 VSOMEIP_ERROR_P << "Failed due to a missing sender";
713 }
714 }
715 }
716 }
717}
718
719bool routing_manager_client::send(client_t _client, const byte_t* _data, length_t _size, instance_t _instance, bool _reliable,
720 client_t _bound_client, const vsomeip_sec_client_t* _sec_client, uint8_t _status_check,

Callers

nothing calls this directly

Calls 13

hex4Function · 0.85
stateMethod · 0.80
set_clientMethod · 0.45
set_serviceMethod · 0.45
set_instanceMethod · 0.45
set_eventgroupMethod · 0.45
set_majorMethod · 0.45
set_eventMethod · 0.45
set_pending_idMethod · 0.45
serializeMethod · 0.45
find_local_clientMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected