Index: device/bluetooth/bluetooth_socket_mac.h |
diff --git a/device/bluetooth/bluetooth_socket_mac.h b/device/bluetooth/bluetooth_socket_mac.h |
index 803cd535d5becdef0e89de08b83bc9d518fe8799..a74d02083683801a24efa031bf8d5d98b647bf29 100644 |
--- a/device/bluetooth/bluetooth_socket_mac.h |
+++ b/device/bluetooth/bluetooth_socket_mac.h |
@@ -19,7 +19,6 @@ |
#include "device/bluetooth/bluetooth_socket.h" |
#include "device/bluetooth/bluetooth_uuid.h" |
-@class BluetoothRfcommChannelDelegate; |
@class BluetoothRfcommConnectionListener; |
namespace net { |
@@ -30,6 +29,7 @@ class IOBufferWithSize; |
namespace device { |
class BluetoothAdapter; |
+class BluetoothChannelMac; |
// Implements the BluetoothSocket class for the Mac OS X platform. |
class BluetoothSocketMac : public BluetoothSocket { |
@@ -93,18 +93,15 @@ class BluetoothSocketMac : public BluetoothSocket { |
const ErrorCompletionCallback& error_callback); |
// Called by BluetoothRfcommConnectionListener. |
- void OnRfcommChannelOpened(IOBluetoothRFCOMMChannel* rfcomm_channel); |
- |
- // Called by BluetoothRfcommChannelDelegate. |
- void OnRfcommChannelOpenComplete(IOBluetoothRFCOMMChannel* rfcomm_channel, |
- IOReturn status); |
- void OnRfcommChannelClosed(IOBluetoothRFCOMMChannel* rfcomm_channel); |
- void OnRfcommChannelDataReceived(IOBluetoothRFCOMMChannel* rfcomm_channel, |
- void* data, |
- size_t length); |
- void OnRfcommChannelWriteComplete(IOBluetoothRFCOMMChannel* rfcomm_channel, |
- void* refcon, |
- IOReturn status); |
+ void OnChannelOpened(scoped_ptr<BluetoothChannelMac> channel); |
+ |
+ // Called by |channel_|. |
+ // Note: OnChannelOpenComplete might be called before the |channel_| is set. |
+ void OnChannelOpenComplete(const std::string& device_address, |
+ IOReturn status); |
+ void OnChannelClosed(); |
+ void OnChannelDataReceived(void* data, size_t length); |
+ void OnChannelWriteComplete(void* refcon, IOReturn status); |
private: |
struct AcceptRequest { |
@@ -166,16 +163,12 @@ class BluetoothSocketMac : public BluetoothSocket { |
base::scoped_nsobject<BluetoothRfcommConnectionListener> |
rfcomm_connection_listener_; |
- // A simple delegate that forwards RFCOMM channel methods to |this| socket. |
- base::scoped_nsobject<BluetoothRfcommChannelDelegate> |
- rfcomm_channel_delegate_; |
- |
// A handle to the service record registered in the system SDP server. |
// Used to eventually unregister the service. |
BluetoothSDPServiceRecordHandle service_record_handle_; |
- // The IOBluetooth RFCOMM channel used to issue commands. |
- base::scoped_nsobject<IOBluetoothRFCOMMChannel> rfcomm_channel_; |
+ // The channel used to issue commands. |
+ scoped_ptr<BluetoothChannelMac> channel_; |
// Connection callbacks -- when a pending async connection is active. |
scoped_ptr<ConnectCallbacks> connect_callbacks_; |
@@ -193,8 +186,8 @@ class BluetoothSocketMac : public BluetoothSocket { |
// request. |
scoped_ptr<AcceptRequest> accept_request_; |
- // Queue of incoming RFCOMM connections. |
- std::queue<base::scoped_nsobject<IOBluetoothRFCOMMChannel>> accept_queue_; |
+ // Queue of incoming connections. |
+ std::queue<linked_ptr<BluetoothChannelMac>> accept_queue_; |
DISALLOW_COPY_AND_ASSIGN(BluetoothSocketMac); |
}; |