1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_H_
6#define DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_H_
7
8#include <string>
9
10#include "base/callback.h"
11
12namespace device {
13
14// A BluetoothGattNotifySession represents an active session for listening
15// to value updates from GATT characteristics that support notifications and/or
16// indications. Instances are obtained by calling
17// BluetoothGattCharacteristic::StartNotifySession.
18class BluetoothGattNotifySession {
19 public:
20  // Destructor autmatically stops this session.
21  virtual ~BluetoothGattNotifySession();
22
23  // Returns the identifier of the associated characteristic.
24  virtual std::string GetCharacteristicIdentifier() const = 0;
25
26  // Returns true if this session is active.
27  virtual bool IsActive() = 0;
28
29  // Stops this session and calls |callback| upon completion. This won't
30  // necessarily stop value updates from the characteristic -- since updates
31  // are shared among BluetoothGattNotifySession instances -- but it will
32  // terminate this session.
33  virtual void Stop(const base::Closure& callback) = 0;
34
35 protected:
36  BluetoothGattNotifySession();
37
38 private:
39  DISALLOW_COPY_AND_ASSIGN(BluetoothGattNotifySession);
40};
41
42}  // namespace device
43
44#endif  // DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_H_
45