blob: 8818c1bb5fce5b2a072b2612e6d146b0a140f6df [file] [log] [blame]
// Copyright (C) 2014 BMW Group
// Author: Lutz Bichler (lutz.bichler@bmw.de)
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include "../include/servicegroup.hpp"
#include "../include/serviceinfo.hpp"
namespace vsomeip {
servicegroup::servicegroup(const std::string &_name)
: name_(_name) {
}
servicegroup::~servicegroup() {
}
std::string servicegroup::get_name() const {
return name_;
}
bool servicegroup::add_service(
service_t _service, instance_t _instance,
std::shared_ptr< serviceinfo > _info) {
bool its_result(true);
auto find_service = services_.find(_service);
if (find_service != services_.end()) {
auto find_instance = find_service->second.find(_instance);
if (find_instance != find_service->second.end()) {
its_result = false;
} else {
find_service->second[_instance] = _info;
}
} else {
services_[_service][_instance] = _info;
}
_info->set_group(this);
return its_result;
}
bool servicegroup::remove_service(service_t _service, instance_t _instance) {
bool its_result(false);
auto find_service = services_.find(_service);
if (find_service != services_.end()) {
auto find_instance = find_service->second.find(_instance);
if (find_instance != find_service->second.end()) {
find_service->second.erase(_instance);
if (0 == find_service->second.size()) {
services_.erase(_service);
}
its_result = true;
}
}
return its_result;
}
services_t servicegroup::get_services() const {
return services_;
}
} // namespace vsomeip