| 727 | } |
| 728 | |
| 729 | availability_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]; |