blob: 9a1bf0bc2daef9a02f081f29ce975f6ad8054db7 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "osp/public/network_service_manager.h"
#include "util/osp_logging.h"
namespace {
openscreen::osp::NetworkServiceManager* g_network_service_manager_instance =
nullptr;
} // namespace
namespace openscreen::osp {
// static
NetworkServiceManager* NetworkServiceManager::Create(
std::unique_ptr<ServiceListener> service_listener,
std::unique_ptr<ServicePublisher> service_publisher,
std::unique_ptr<ProtocolConnectionClient> connection_client,
std::unique_ptr<ProtocolConnectionServer> connection_server) {
OSP_CHECK(!g_network_service_manager_instance);
g_network_service_manager_instance = new NetworkServiceManager(
std::move(service_listener), std::move(service_publisher),
std::move(connection_client), std::move(connection_server));
return g_network_service_manager_instance;
}
// static
NetworkServiceManager* NetworkServiceManager::Get() {
OSP_CHECK(g_network_service_manager_instance);
return g_network_service_manager_instance;
}
// static
void NetworkServiceManager::Dispose() {
OSP_CHECK(g_network_service_manager_instance);
delete g_network_service_manager_instance;
g_network_service_manager_instance = nullptr;
}
ServiceListener* NetworkServiceManager::GetServiceListener() {
OSP_CHECK(service_listener_);
return service_listener_.get();
}
ServicePublisher* NetworkServiceManager::GetServicePublisher() {
OSP_CHECK(service_publisher_);
return service_publisher_.get();
}
ProtocolConnectionClient* NetworkServiceManager::GetProtocolConnectionClient() {
OSP_CHECK(connection_client_);
return connection_client_.get();
}
ProtocolConnectionServer* NetworkServiceManager::GetProtocolConnectionServer() {
OSP_CHECK(connection_server_);
return connection_server_.get();
}
NetworkServiceManager::NetworkServiceManager(
std::unique_ptr<ServiceListener> service_listener,
std::unique_ptr<ServicePublisher> service_publisher,
std::unique_ptr<ProtocolConnectionClient> connection_client,
std::unique_ptr<ProtocolConnectionServer> connection_server)
: service_listener_(std::move(service_listener)),
service_publisher_(std::move(service_publisher)),
connection_client_(std::move(connection_client)),
connection_server_(std::move(connection_server)) {}
NetworkServiceManager::~NetworkServiceManager() = default;
} // namespace openscreen::osp