| Index: device/bluetooth/bluetooth_gatt_notify_session.cc
|
| diff --git a/device/bluetooth/bluetooth_gatt_notify_session.cc b/device/bluetooth/bluetooth_gatt_notify_session.cc
|
| index 3c9a242388024c5321d4bf4bc1529bd1aaa98b23..5e22e71d08695cd06157dff8922e6c78126144d4 100644
|
| --- a/device/bluetooth/bluetooth_gatt_notify_session.cc
|
| +++ b/device/bluetooth/bluetooth_gatt_notify_session.cc
|
| @@ -4,12 +4,48 @@
|
|
|
| #include "device/bluetooth/bluetooth_gatt_notify_session.h"
|
|
|
| +#include "base/bind.h"
|
| +#include "base/bind_helpers.h"
|
| +#include "base/logging.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| +#include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
|
| +
|
| namespace device {
|
|
|
| -BluetoothGattNotifySession::BluetoothGattNotifySession() {
|
| -}
|
| +BluetoothGattNotifySession::BluetoothGattNotifySession(
|
| + base::WeakPtr<BluetoothRemoteGattCharacteristic> characteristic)
|
| + : characteristic_(characteristic),
|
| + characteristic_id_(characteristic.get() ? characteristic->GetIdentifier()
|
| + : std::string()),
|
| + active_(true) {}
|
|
|
| BluetoothGattNotifySession::~BluetoothGattNotifySession() {
|
| + if (active_) {
|
| + Stop(base::Bind(&base::DoNothing));
|
| + }
|
| +}
|
| +
|
| +std::string BluetoothGattNotifySession::GetCharacteristicIdentifier() const {
|
| + return characteristic_id_;
|
| +}
|
| +
|
| +BluetoothRemoteGattCharacteristic*
|
| +BluetoothGattNotifySession::GetCharacteristic() const {
|
| + return characteristic_.get();
|
| +}
|
| +
|
| +bool BluetoothGattNotifySession::IsActive() {
|
| + return active_ && characteristic_ != nullptr &&
|
| + characteristic_->IsNotifying();
|
| +}
|
| +
|
| +void BluetoothGattNotifySession::Stop(const base::Closure& callback) {
|
| + active_ = false;
|
| + if (characteristic_ != nullptr) {
|
| + characteristic_->StopNotifySession(this, callback);
|
| + } else {
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback);
|
| + }
|
| }
|
|
|
| } // namespace device
|
|
|