| Index: chromeos/components/tether/message_transfer_operation.h
|
| diff --git a/chromeos/components/tether/message_transfer_operation.h b/chromeos/components/tether/message_transfer_operation.h
|
| index 3265214002750504c3e40f3c9e71205d82c4d08f..947076ab4c13da06b4340068407cb55e70ef351c 100644
|
| --- a/chromeos/components/tether/message_transfer_operation.h
|
| +++ b/chromeos/components/tether/message_transfer_operation.h
|
| @@ -9,6 +9,7 @@
|
| #include <vector>
|
|
|
| #include "base/macros.h"
|
| +#include "base/timer/timer.h"
|
| #include "chromeos/components/tether/ble_connection_manager.h"
|
|
|
| namespace chromeos {
|
| @@ -16,6 +17,7 @@ namespace chromeos {
|
| namespace tether {
|
|
|
| class MessageWrapper;
|
| +class TimerFactory;
|
|
|
| // Abstract base class used for operations which send and/or receive messages
|
| // from remote devices.
|
| @@ -70,6 +72,16 @@ class MessageTransferOperation : public BleConnectionManager::Observer {
|
| // Returns the type of message that this operation intends to send.
|
| virtual MessageType GetMessageTypeForConnection() = 0;
|
|
|
| + // Returns true if we should wait for a response from host devices. Note
|
| + // that if ShouldWaitForResponse() returns true and a response is not received
|
| + // within the amount of time returned by GetResponseTimeoutSeconds() after a
|
| + // host device authenticates, that host device will be unregistered.
|
| + virtual bool ShouldWaitForResponse();
|
| +
|
| + // The number of seconds that we should wait for a response from the host. If
|
| + // ShouldWaitForResponse() returns false, this method is never used.
|
| + virtual uint32_t GetResponseTimeoutSeconds();
|
| +
|
| std::vector<cryptauth::RemoteDevice>& remote_devices() {
|
| return remote_devices_;
|
| }
|
| @@ -82,12 +94,31 @@ class MessageTransferOperation : public BleConnectionManager::Observer {
|
|
|
| static uint32_t kMaxConnectionAttemptsPerDevice;
|
|
|
| + // The default number of seconds the client should generally wait for a
|
| + // response from the host once an authenticated connection is established.
|
| + // Once this amount of time passes, the connection will be closed. Subclasses
|
| + // of MessageTransferOperation should override GetResponseTimeoutSeconds()
|
| + // if they desire a different duration.
|
| + static uint32_t kDefaultResponseTimeoutSeconds;
|
| +
|
| + void SetTimerFactoryForTest(
|
| + std::unique_ptr<TimerFactory> timer_factory_for_test);
|
| + void StartResponseTimerForDevice(
|
| + const cryptauth::RemoteDevice& remote_device);
|
| + void StopResponseTimerForDeviceIfRunning(
|
| + const cryptauth::RemoteDevice& remote_device);
|
| + void OnResponseTimeout(const cryptauth::RemoteDevice& remote_device);
|
| +
|
| std::vector<cryptauth::RemoteDevice> remote_devices_;
|
| BleConnectionManager* connection_manager_;
|
| + std::unique_ptr<TimerFactory> timer_factory_;
|
|
|
| bool initialized_;
|
| std::map<cryptauth::RemoteDevice, uint32_t>
|
| remote_device_to_num_attempts_map_;
|
| + std::map<cryptauth::RemoteDevice, std::unique_ptr<base::Timer>>
|
| + remote_device_to_timer_map_;
|
| + base::WeakPtrFactory<MessageTransferOperation> weak_ptr_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MessageTransferOperation);
|
| };
|
|
|