blob: 6a974de2f24c7aa12c8e9850d6914d53208fd70e [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "mojo/public/cpp/application/lib/service_connector_registry.h"
#include <utility>
#include "mojo/public/cpp/application/application_connection.h"
#include "mojo/public/cpp/application/connection_context.h"
#include "mojo/public/cpp/application/service_connector.h"
namespace mojo {
namespace internal {
ServiceConnectorRegistry::ServiceConnectorRegistry() {}
ServiceConnectorRegistry::~ServiceConnectorRegistry() {}
void ServiceConnectorRegistry::SetServiceConnectorForName(
std::unique_ptr<ServiceConnector> service_connector,
const std::string& interface_name) {
name_to_service_connector_[interface_name] = std::move(service_connector);
}
void ServiceConnectorRegistry::RemoveServiceConnectorForName(
const std::string& interface_name) {
NameToServiceConnectorMap::iterator it =
name_to_service_connector_.find(interface_name);
if (it == name_to_service_connector_.end())
return;
name_to_service_connector_.erase(it);
}
bool ServiceConnectorRegistry::ConnectToService(
const ConnectionContext& connection_context,
const std::string& interface_name,
ScopedMessagePipeHandle* client_handle) {
auto iter = name_to_service_connector_.find(interface_name);
if (iter != name_to_service_connector_.end()) {
iter->second->ConnectToService(connection_context, interface_name,
client_handle->Pass());
return true;
}
return false;
}
} // namespace internal
} // namespace mojo