blob: e84c1c9f7dc4372b0a78213fd594526e6fc37667 [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 "peridot/bin/ledger/p2p_sync/impl/user_communicator_factory_impl.h"
#include <fuchsia/modular/auth/cpp/fidl.h>
#include <fuchsia/netconnector/cpp/fidl.h>
#include <lib/fxl/logging.h>
#include "peridot/bin/ledger/p2p_provider/impl/p2p_provider_impl.h"
#include "peridot/bin/ledger/p2p_sync/impl/user_communicator_impl.h"
namespace p2p_sync {
UserCommunicatorFactoryImpl::UserCommunicatorFactoryImpl(
ledger::Environment* environment)
: environment_(environment) {}
UserCommunicatorFactoryImpl::~UserCommunicatorFactoryImpl() {}
std::unique_ptr<UserCommunicator>
UserCommunicatorFactoryImpl::GetUserCommunicator(
std::unique_ptr<p2p_provider::UserIdProvider> user_id_provider) {
char host_name_buffer[HOST_NAME_MAX + 1];
int result = gethostname(host_name_buffer, sizeof(host_name_buffer));
if (result < 0) {
FXL_LOG(ERROR) << "unable to get hostname. errno " << errno;
return nullptr;
}
fuchsia::netconnector::NetConnectorPtr net_connector =
environment_->startup_context()
->ConnectToEnvironmentService<fuchsia::netconnector::NetConnector>();
return std::make_unique<p2p_sync::UserCommunicatorImpl>(
std::make_unique<p2p_provider::P2PProviderImpl>(
host_name_buffer, std::move(net_connector),
std::move(user_id_provider)),
environment_->coroutine_service());
}
} // namespace p2p_sync