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

Method are_available_unlocked

implementation/runtime/src/application_impl.cpp:729–838  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

727}
728
729availability_state_e application_impl::are_available_unlocked(available_t& _available, service_t _service, instance_t _instance,
730 major_version_t _major, minor_version_t _minor) const {
731
732 // find available services
733 if (_service == ANY_SERVICE) {
734 // add all available services
735 for (auto its_available_services_it = available_.begin(); its_available_services_it != available_.end();
736 ++its_available_services_it) {
737 _available[its_available_services_it->first];
738 }
739 } else {
740 // check if specific service is available
741 if (available_.contains(_service)) {
742 _available[_service];
743 }
744 }
745
746 // find available instances
747 // iterate through found available services
748 for (auto its_available_services_it = _available.begin(); its_available_services_it != _available.end(); ++its_available_services_it) {
749 // get available service
750 auto found_available_service = available_.find(its_available_services_it->first);
751 if (found_available_service != available_.end()) {
752 if (_instance == ANY_INSTANCE) {
753 // add all available instances
754 for (auto its_available_instances_it = found_available_service->second.begin();
755 its_available_instances_it != found_available_service->second.end(); ++its_available_instances_it) {
756 _available[its_available_services_it->first][its_available_instances_it->first];
757 }
758 } else {
759 if (found_available_service->second.contains(_instance)) {
760 _available[its_available_services_it->first][_instance];
761 }
762 }
763 }
764 }
765
766 // find major versions
767 // iterate through found available services
768 for (auto its_available_services_it = _available.begin(); its_available_services_it != _available.end(); ++its_available_services_it) {
769 // get available service
770 auto found_available_service = available_.find(its_available_services_it->first);
771 if (found_available_service != available_.end()) {
772 // iterate through found available instances
773 for (auto its_available_instances_it = found_available_service->second.begin();
774 its_available_instances_it != found_available_service->second.end(); ++its_available_instances_it) {
775 // get available instance
776 auto found_available_instance = found_available_service->second.find(its_available_instances_it->first);
777 if (found_available_instance != found_available_service->second.end()) {
778 if (_major == ANY_MAJOR || _major == DEFAULT_MAJOR) {
779 // add all major versions
780 for (auto its_available_major_it = found_available_instance->second.begin();
781 its_available_major_it != found_available_instance->second.end(); ++its_available_major_it) {
782 _available[its_available_services_it->first][its_available_instances_it->first][its_available_major_it->first];
783 }
784 } else {
785 if (found_available_instance->second.contains(_major)) {
786 _available[its_available_services_it->first][its_available_instances_it->first][_major];

Callers

nothing calls this directly

Calls 3

beginMethod · 0.80
endMethod · 0.80
containsMethod · 0.45

Tested by

no test coverage detected