Commit a0208ad0 authored by Kyle Horimoto's avatar Kyle Horimoto Committed by Commit Bot

[CrOS PhoneHub] Add NearbyInitiatorConnectionAttempt

This class implements ConnectionAttempt for the Nearby medium in the
initiator role. A follow-up CL will create instances of this class
within PendingConnectionManagerImpl.

Bug: 1106937
Change-Id: I796fb982ad935c36d7cd3e569a0ba7aad407553c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2415688
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarJames Vecore <vecore@google.com>
Cr-Commit-Position: refs/heads/master@{#808109}
parent 17343deb
......@@ -108,6 +108,8 @@ static_library("secure_channel") {
"nearby_connection_manager.h",
"nearby_connection_manager_impl.cc",
"nearby_connection_manager_impl.h",
"nearby_initiator_connection_attempt.cc",
"nearby_initiator_connection_attempt.h",
"nearby_initiator_failure_type.cc",
"nearby_initiator_failure_type.h",
"nearby_initiator_operation.cc",
......
// Copyright 2020 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/nearby_initiator_connection_attempt.h"
#include "base/memory/ptr_util.h"
#include "chromeos/services/secure_channel/nearby_initiator_operation.h"
namespace chromeos {
namespace secure_channel {
// static
NearbyInitiatorConnectionAttempt::Factory*
NearbyInitiatorConnectionAttempt::Factory::test_factory_ = nullptr;
// static
std::unique_ptr<ConnectionAttempt<NearbyInitiatorFailureType>>
NearbyInitiatorConnectionAttempt::Factory::Create(
NearbyConnectionManager* nearby_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details) {
if (test_factory_) {
return test_factory_->CreateInstance(nearby_connection_manager, delegate,
connection_attempt_details);
}
return base::WrapUnique(new NearbyInitiatorConnectionAttempt(
nearby_connection_manager, delegate, connection_attempt_details));
}
// static
void NearbyInitiatorConnectionAttempt::Factory::SetFactoryForTesting(
Factory* test_factory) {
test_factory_ = test_factory;
}
NearbyInitiatorConnectionAttempt::Factory::~Factory() = default;
NearbyInitiatorConnectionAttempt::NearbyInitiatorConnectionAttempt(
NearbyConnectionManager* nearby_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details)
: ConnectionAttemptBase<NearbyInitiatorFailureType>(
delegate,
connection_attempt_details),
nearby_connection_manager_(nearby_connection_manager) {}
NearbyInitiatorConnectionAttempt::~NearbyInitiatorConnectionAttempt() = default;
std::unique_ptr<ConnectToDeviceOperation<NearbyInitiatorFailureType>>
NearbyInitiatorConnectionAttempt::CreateConnectToDeviceOperation(
const DeviceIdPair& device_id_pair,
ConnectionPriority connection_priority,
ConnectToDeviceOperation<
NearbyInitiatorFailureType>::ConnectionSuccessCallback success_callback,
const ConnectToDeviceOperation<NearbyInitiatorFailureType>::
ConnectionFailedCallback& failure_callback) {
return NearbyInitiatorOperation::Factory::Create(
nearby_connection_manager_, std::move(success_callback), failure_callback,
device_id_pair, connection_priority);
}
} // namespace secure_channel
} // namespace chromeos
// Copyright 2020 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.
#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_NEARBY_INITIATOR_CONNECTION_ATTEMPT_H_
#define CHROMEOS_SERVICES_SECURE_CHANNEL_NEARBY_INITIATOR_CONNECTION_ATTEMPT_H_
#include <memory>
#include "chromeos/services/secure_channel/connection_attempt_base.h"
#include "chromeos/services/secure_channel/nearby_initiator_failure_type.h"
namespace chromeos {
namespace secure_channel {
class NearbyConnectionManager;
// Attempts to connect to a remote device over Nearby Connections via the
// initiator role.
class NearbyInitiatorConnectionAttempt
: public ConnectionAttemptBase<NearbyInitiatorFailureType> {
public:
class Factory {
public:
static std::unique_ptr<ConnectionAttempt<NearbyInitiatorFailureType>>
Create(NearbyConnectionManager* nearby_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details);
static void SetFactoryForTesting(Factory* test_factory);
protected:
virtual ~Factory();
virtual std::unique_ptr<ConnectionAttempt<NearbyInitiatorFailureType>>
CreateInstance(
NearbyConnectionManager* nearby_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details) = 0;
private:
static Factory* test_factory_;
};
NearbyInitiatorConnectionAttempt(const NearbyInitiatorConnectionAttempt&) =
delete;
NearbyInitiatorConnectionAttempt& operator=(
const NearbyInitiatorConnectionAttempt&) = delete;
~NearbyInitiatorConnectionAttempt() override;
private:
NearbyInitiatorConnectionAttempt(
NearbyConnectionManager* nearby_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details);
std::unique_ptr<ConnectToDeviceOperation<NearbyInitiatorFailureType>>
CreateConnectToDeviceOperation(
const DeviceIdPair& device_id_pair,
ConnectionPriority connection_priority,
ConnectToDeviceOperation<NearbyInitiatorFailureType>::
ConnectionSuccessCallback success_callback,
const ConnectToDeviceOperation<NearbyInitiatorFailureType>::
ConnectionFailedCallback& failure_callback) override;
NearbyConnectionManager* nearby_connection_manager_;
};
} // namespace secure_channel
} // namespace chromeos
#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_NEARBY_INITIATOR_CONNECTION_ATTEMPT_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment