// Copyright 2017 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 DEVICE_BLUETOOTH_DISCOVERY_SESSION_H_ #define DEVICE_BLUETOOTH_DISCOVERY_SESSION_H_ #include "base/memory/ptr_util.h" #include "device/bluetooth/bluetooth_discovery_session.h" #include "device/bluetooth/public/interfaces/adapter.mojom.h" namespace bluetooth { // Implementation of Mojo DiscoverySession in // device/bluetooth/public/interfaces/adapter.mojom. // It handles requests to interact with a DiscoverySession. // Uses the platform abstraction of device/bluetooth. // An instance of this class is constructed by Adapter and strongly bound // to its MessagePipe. When the instance is destroyed, the underlying // BluetoothDiscoverySession is requested to stop. Users are encouraged to call // DiscoverySession::Stop in order to respond to a failed request to stop // device discovery. class DiscoverySession : public mojom::DiscoverySession { public: explicit DiscoverySession( std::unique_ptr session); ~DiscoverySession() override; // mojom::DiscoverySession overrides: void IsActive(const IsActiveCallback& callback) override; void Stop(const StopCallback& callback) override; private: void OnStop(const StopCallback& callback); void OnStopError(const StopCallback& callback); // The underlying discovery session. std::unique_ptr discovery_session_; base::WeakPtrFactory weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(DiscoverySession); }; } // namespace bluetooth #endif