blob: e7978b6aa05ef8229a22ac29e468aac3a0712880 [file] [log] [blame]
// Copyright 2014 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/service_provider_impl.h"
#include "mojo/public/cpp/application/service_connector.h"
#include "mojo/public/cpp/environment/logging.h"
namespace mojo {
ServiceProviderImpl::ServiceProviderImpl()
: binding_(this), fallback_service_provider_(nullptr) {
}
ServiceProviderImpl::ServiceProviderImpl(
InterfaceRequest<ServiceProvider> service_provider_request)
: binding_(this, service_provider_request.Pass()),
fallback_service_provider_(nullptr) {}
ServiceProviderImpl::~ServiceProviderImpl() {}
void ServiceProviderImpl::Bind(
InterfaceRequest<ServiceProvider> service_provider_request) {
binding_.Bind(service_provider_request.Pass());
}
void ServiceProviderImpl::Close() {
if (binding_.is_bound())
binding_.Close();
}
void ServiceProviderImpl::ConnectToService(
const String& service_name,
ScopedMessagePipeHandle client_handle) {
// TODO(beng): perhaps take app connection thru ctor so that we can pass
// ApplicationConnection through?
bool service_found = service_connector_registry_.ConnectToService(
nullptr, service_name, &client_handle);
if (!service_found && fallback_service_provider_) {
fallback_service_provider_->ConnectToService(service_name,
client_handle.Pass());
}
}
} // namespace mojo