blob: a1bb1bc1479619186b42798374f8256af67dfa22 [file] [log] [blame]
// Copyright 2017 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 "chromeos/services/secure_channel/ble_synchronizer_base.h"
#include <memory>
namespace chromeos {
namespace secure_channel {
BleSynchronizerBase::RegisterArgs::RegisterArgs(
std::unique_ptr<device::BluetoothAdvertisement::Data> advertisement_data,
const device::BluetoothAdapter::CreateAdvertisementCallback& callback,
const device::BluetoothAdapter::AdvertisementErrorCallback& error_callback)
: advertisement_data(std::move(advertisement_data)),
callback(callback),
error_callback(error_callback) {}
BleSynchronizerBase::RegisterArgs::~RegisterArgs() = default;
BleSynchronizerBase::UnregisterArgs::UnregisterArgs(
scoped_refptr<device::BluetoothAdvertisement> advertisement,
const device::BluetoothAdvertisement::SuccessCallback& callback,
const device::BluetoothAdvertisement::ErrorCallback& error_callback)
: advertisement(std::move(advertisement)),
callback(callback),
error_callback(error_callback) {}
BleSynchronizerBase::UnregisterArgs::~UnregisterArgs() = default;
BleSynchronizerBase::StartDiscoveryArgs::StartDiscoveryArgs(
device::BluetoothAdapter::DiscoverySessionCallback callback,
device::BluetoothAdapter::ErrorCallback error_callback)
: callback(std::move(callback)),
error_callback(std::move(error_callback)) {}
BleSynchronizerBase::StartDiscoveryArgs::~StartDiscoveryArgs() = default;
BleSynchronizerBase::StopDiscoveryArgs::StopDiscoveryArgs(
base::WeakPtr<device::BluetoothDiscoverySession> discovery_session,
const base::Closure& callback,
const device::BluetoothDiscoverySession::ErrorCallback& error_callback)
: discovery_session(discovery_session),
callback(callback),
error_callback(error_callback) {}
BleSynchronizerBase::StopDiscoveryArgs::~StopDiscoveryArgs() = default;
BleSynchronizerBase::Command::Command(
std::unique_ptr<RegisterArgs> register_args)
: command_type(CommandType::REGISTER_ADVERTISEMENT),
register_args(std::move(register_args)) {}
BleSynchronizerBase::Command::Command(
std::unique_ptr<UnregisterArgs> unregister_args)
: command_type(CommandType::UNREGISTER_ADVERTISEMENT),
unregister_args(std::move(unregister_args)) {}
BleSynchronizerBase::Command::Command(
std::unique_ptr<StartDiscoveryArgs> start_discovery_args)
: command_type(CommandType::START_DISCOVERY),
start_discovery_args(std::move(start_discovery_args)) {}
BleSynchronizerBase::Command::Command(
std::unique_ptr<StopDiscoveryArgs> stop_discovery_args)
: command_type(CommandType::STOP_DISCOVERY),
stop_discovery_args(std::move(stop_discovery_args)) {}
BleSynchronizerBase::Command::~Command() = default;
BleSynchronizerBase::BleSynchronizerBase() = default;
BleSynchronizerBase::~BleSynchronizerBase() = default;
void BleSynchronizerBase::RegisterAdvertisement(
std::unique_ptr<device::BluetoothAdvertisement::Data> advertisement_data,
const device::BluetoothAdapter::CreateAdvertisementCallback& callback,
const device::BluetoothAdapter::AdvertisementErrorCallback&
error_callback) {
command_queue_.emplace_back(
std::make_unique<Command>(std::make_unique<RegisterArgs>(
std::move(advertisement_data), callback, error_callback)));
ProcessQueue();
}
void BleSynchronizerBase::UnregisterAdvertisement(
scoped_refptr<device::BluetoothAdvertisement> advertisement,
const device::BluetoothAdvertisement::SuccessCallback& callback,
const device::BluetoothAdvertisement::ErrorCallback& error_callback) {
command_queue_.emplace_back(
std::make_unique<Command>(std::make_unique<UnregisterArgs>(
std::move(advertisement), callback, error_callback)));
ProcessQueue();
}
void BleSynchronizerBase::StartDiscoverySession(
device::BluetoothAdapter::DiscoverySessionCallback callback,
device::BluetoothAdapter::ErrorCallback error_callback) {
command_queue_.emplace_back(
std::make_unique<Command>(std::make_unique<StartDiscoveryArgs>(
std::move(callback), std::move(error_callback))));
ProcessQueue();
}
void BleSynchronizerBase::StopDiscoverySession(
base::WeakPtr<device::BluetoothDiscoverySession> discovery_session,
const base::Closure& callback,
const device::BluetoothDiscoverySession::ErrorCallback& error_callback) {
command_queue_.emplace_back(
std::make_unique<Command>(std::make_unique<StopDiscoveryArgs>(
discovery_session, callback, error_callback)));
ProcessQueue();
}
} // namespace secure_channel
} // namespace chromeos