| 674 | } |
| 675 | |
| 676 | void 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 | |
| 719 | bool 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, |
nothing calls this directly
no test coverage detected