blob: d05192c0377a7649841e8cb503a9169f28650010 [file] [log] [blame]
// Copyright 2018 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 "osp/public/network_service_manager.h"
namespace {
openscreen::osp::NetworkServiceManager* g_network_service_manager_instance =
nullptr;
} // namespace
namespace openscreen {
namespace osp {
// static
NetworkServiceManager* NetworkServiceManager::Create(
std::unique_ptr<ServiceListener> mdns_listener,
std::unique_ptr<ServicePublisher> mdns_publisher,
std::unique_ptr<ProtocolConnectionClient> connection_client,
std::unique_ptr<ProtocolConnectionServer> connection_server) {
// TODO(mfoltz): Convert to assertion failure
if (g_network_service_manager_instance)
return nullptr;
g_network_service_manager_instance = new NetworkServiceManager(
std::move(mdns_listener), std::move(mdns_publisher),
std::move(connection_client), std::move(connection_server));
return g_network_service_manager_instance;
}
// static
NetworkServiceManager* NetworkServiceManager::Get() {
// TODO(mfoltz): Convert to assertion failure
if (!g_network_service_manager_instance)
return nullptr;
return g_network_service_manager_instance;
}
// static
void NetworkServiceManager::Dispose() {
// TODO(mfoltz): Convert to assertion failure
if (!g_network_service_manager_instance)
return;
delete g_network_service_manager_instance;
g_network_service_manager_instance = nullptr;
}
ServiceListener* NetworkServiceManager::GetMdnsServiceListener() {
return mdns_listener_.get();
}
ServicePublisher* NetworkServiceManager::GetMdnsServicePublisher() {
return mdns_publisher_.get();
}
ProtocolConnectionClient* NetworkServiceManager::GetProtocolConnectionClient() {
return connection_client_.get();
}
ProtocolConnectionServer* NetworkServiceManager::GetProtocolConnectionServer() {
return connection_server_.get();
}
NetworkServiceManager::NetworkServiceManager(
std::unique_ptr<ServiceListener> mdns_listener,
std::unique_ptr<ServicePublisher> mdns_publisher,
std::unique_ptr<ProtocolConnectionClient> connection_client,
std::unique_ptr<ProtocolConnectionServer> connection_server)
: mdns_listener_(std::move(mdns_listener)),
mdns_publisher_(std::move(mdns_publisher)),
connection_client_(std::move(connection_client)),
connection_server_(std::move(connection_server)) {}
NetworkServiceManager::~NetworkServiceManager() = default;
} // namespace osp
} // namespace openscreen