| Index: device/bluetooth/bluetooth_gatt_connection.h
|
| diff --git a/device/bluetooth/bluetooth_gatt_connection.h b/device/bluetooth/bluetooth_gatt_connection.h
|
| index 1f90636ccc342ac1c33625ceb8c62f02d98482a2..ede1f3d0d1a63362ef8d1c68a0dd30d6c8faebc1 100644
|
| --- a/device/bluetooth/bluetooth_gatt_connection.h
|
| +++ b/device/bluetooth/bluetooth_gatt_connection.h
|
| @@ -12,6 +12,9 @@
|
|
|
| namespace device {
|
|
|
| +class BluetoothAdapter;
|
| +class BluetoothDevice;
|
| +
|
| // BluetoothGattConnection represents a GATT connection to a Bluetooth device
|
| // that has GATT services. Instances are obtained from a BluetoothDevice,
|
| // and the connection is kept alive as long as there is at least one
|
| @@ -20,6 +23,9 @@ namespace device {
|
| // operating system (e.g. due to user action).
|
| class DEVICE_BLUETOOTH_EXPORT BluetoothGattConnection {
|
| public:
|
| + BluetoothGattConnection(scoped_refptr<device::BluetoothAdapter> adapter,
|
| + const std::string& device_address);
|
| +
|
| // Destructor automatically closes this GATT connection. If this is the last
|
| // remaining GATT connection and this results in a call to the OS, that call
|
| // may not always succeed. Users can make an explicit call to
|
| @@ -29,19 +35,36 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattConnection {
|
|
|
| // Returns the Bluetooth address of the device that this connection is open
|
| // to.
|
| - virtual std::string GetDeviceAddress() const = 0;
|
| + const std::string& GetDeviceAddress() const;
|
|
|
| - // Returns true if this connection is open.
|
| - virtual bool IsConnected() = 0;
|
| + // Returns true if this GATT connection is open.
|
| + virtual bool IsConnected();
|
|
|
| // Disconnects this GATT connection. The device may still remain connected due
|
| - // to other GATT connections.
|
| - virtual void Disconnect() = 0;
|
| + // to other GATT connections. When all BluetoothGattConnection objects are
|
| + // disconnected the BluetoothDevice object will disconnect GATT.
|
| + virtual void Disconnect();
|
|
|
| protected:
|
| - BluetoothGattConnection();
|
| + friend BluetoothDevice; // For InvalidateConnectionReference.
|
| +
|
| + // Sets this object to no longer have a reference maintaining the connection.
|
| + // Only to be called by BluetoothDevice to avoid reentrant code to
|
| + // RemoveGattConnection in that destructor after BluetoothDevice subclasses
|
| + // have already been destroyed.
|
| + void InvalidateConnectionReference();
|
| +
|
| + // The Bluetooth adapter that this connection is associated with. A reference
|
| + // is held because BluetoothGattConnection keeps the connection alive.
|
| + scoped_refptr<BluetoothAdapter> adapter_;
|
| +
|
| + // Bluetooth address of the underlying device.
|
| + std::string device_address_;
|
| + BluetoothDevice* device_ = nullptr;
|
|
|
| private:
|
| + bool owns_reference_for_connection_ = false;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(BluetoothGattConnection);
|
| };
|
|
|
|
|