123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // Copyright 2020 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_SERVER_SOCKET_H_
- #define DEVICE_BLUETOOTH_SERVER_SOCKET_H_
- #include "base/memory/ref_counted.h"
- #include "base/memory/weak_ptr.h"
- #include "device/bluetooth/public/mojom/adapter.mojom.h"
- namespace device {
- class BluetoothDevice;
- class BluetoothSocket;
- } // namespace device
- namespace bluetooth {
- // Implementation of Mojo ServerSocket in
- // device/bluetooth/public/mojom/adapter.mojom.
- // It handles requests to accept incoming connections from remote devices,
- // returning a Socket.
- // Uses the platform abstraction of //device/bluetooth.
- // An instance of this class is constructed by Adapter. When the instance is
- // destroyed, the underlying BluetoothSocket is destroyed.
- class ServerSocket : public mojom::ServerSocket {
- public:
- explicit ServerSocket(
- scoped_refptr<device::BluetoothSocket> bluetooth_socket);
- ~ServerSocket() override;
- ServerSocket(const ServerSocket&) = delete;
- ServerSocket& operator=(const ServerSocket&) = delete;
- // mojom::ServerSocket:
- void Accept(AcceptCallback callback) override;
- void Disconnect(DisconnectCallback callback) override;
- private:
- void OnAccept(AcceptCallback callback,
- const device::BluetoothDevice* device,
- scoped_refptr<device::BluetoothSocket> socket);
- void OnAcceptError(AcceptCallback callback, const std::string& error_message);
- scoped_refptr<device::BluetoothSocket> server_socket_;
- base::WeakPtrFactory<ServerSocket> weak_ptr_factory_{this};
- };
- } // namespace bluetooth
- #endif // DEVICE_BLUETOOTH_SERVER_SOCKET_H_
|