From acc5f1b0d8754053e4ab80d86c8caab7d1af8502 Mon Sep 17 00:00:00 2001 From: Francis Tsui Date: Mon, 12 May 2025 09:34:47 -0700 Subject: [PATCH] Remove BlePeripheral reference from BleSocket. PiperOrigin-RevId: 757797557 --- internal/platform/ble_v2.h | 7 +------ internal/platform/implementation/apple/ble_medium.mm | 4 ++-- internal/platform/implementation/apple/ble_socket.h | 6 +++--- internal/platform/implementation/apple/ble_socket.mm | 7 ++++--- internal/platform/implementation/ble_v2.h | 5 ++--- internal/platform/implementation/g3/ble_v2.cc | 8 ++++---- internal/platform/implementation/g3/ble_v2.h | 4 +--- internal/platform/implementation/windows/ble_v2_socket.h | 4 ++-- 8 files changed, 19 insertions(+), 26 deletions(-) diff --git a/internal/platform/ble_v2.h b/internal/platform/ble_v2.h index c2b54038..adc3ee4d 100644 --- a/internal/platform/ble_v2.h +++ b/internal/platform/ble_v2.h @@ -195,12 +195,7 @@ class BleV2ServerSocket final { if (socket == nullptr) { LOG(INFO) << "BleServerSocket Accept() failed on server socket: " << this; } else { - api::ble_v2::BlePeripheral* platform_peripheral = - socket->GetRemotePeripheral(); - if (platform_peripheral != nullptr) { - peripheral = - BleV2Peripheral(*medium_, platform_peripheral->GetUniqueId()); - } + peripheral = BleV2Peripheral(*medium_, socket->GetRemotePeripheralId()); } return BleV2Socket(peripheral, std::move(socket)); } diff --git a/internal/platform/implementation/apple/ble_medium.mm b/internal/platform/implementation/apple/ble_medium.mm index 8fa2a112..dd576a5d 100644 --- a/internal/platform/implementation/apple/ble_medium.mm +++ b/internal/platform/implementation/apple/ble_medium.mm @@ -471,8 +471,8 @@ std::unique_ptr BleMedium::Connect( serviceID:@(service_id.c_str()) expectedIntroPacket:NO callbackQueue:dispatch_get_main_queue()]; - socket = - std::make_unique(connection, peripheral); + socket = std::make_unique(connection, + peripheral->GetUniqueId()); connection.connectionHandlers = socket->GetInputStream().GetConnectionHandlers(); dispatch_semaphore_signal(semaphore); diff --git a/internal/platform/implementation/apple/ble_socket.h b/internal/platform/implementation/apple/ble_socket.h index 6c64f7b5..ec801093 100644 --- a/internal/platform/implementation/apple/ble_socket.h +++ b/internal/platform/implementation/apple/ble_socket.h @@ -94,7 +94,7 @@ class BleSocket : public api::ble_v2::BleSocket { // The peripheral used to create the socket must outlive the socket or undefined behavior will // occur. - BleSocket(id connection, api::ble_v2::BlePeripheral *peripheral); + BleSocket(id connection, api::ble_v2::BlePeripheral::UniqueId peripheral_id); ~BleSocket() override; // Returns the InputStream of the BleSocket. @@ -116,7 +116,7 @@ class BleSocket : public api::ble_v2::BleSocket { // Returns valid BlePeripheral pointer if there is a connection, and // nullptr otherwise. - api::ble_v2::BlePeripheral *GetRemotePeripheral() override { return peripheral_; } + api::ble_v2::BlePeripheral::UniqueId GetRemotePeripheralId() override { return peripheral_id_; } bool IsClosed() const ABSL_LOCKS_EXCLUDED(mutex_); @@ -127,7 +127,7 @@ class BleSocket : public api::ble_v2::BleSocket { bool closed_ ABSL_GUARDED_BY(mutex_) = false; std::unique_ptr input_stream_; std::unique_ptr output_stream_; - api::ble_v2::BlePeripheral *peripheral_; + api::ble_v2::BlePeripheral::UniqueId peripheral_id_; }; } // namespace apple diff --git a/internal/platform/implementation/apple/ble_socket.mm b/internal/platform/implementation/apple/ble_socket.mm index 7864cbee..88161374 100644 --- a/internal/platform/implementation/apple/ble_socket.mm +++ b/internal/platform/implementation/apple/ble_socket.mm @@ -180,12 +180,13 @@ Exception BleOutputStream::Close() { BleSocket::BleSocket(id connection) : input_stream_(new BleInputStream()), output_stream_(new BleOutputStream(connection)), - peripheral_(&(BlePeripheral::DefaultBlePeripheral())) {} + peripheral_id_(BlePeripheral::DefaultBlePeripheral().GetUniqueId()) {} -BleSocket::BleSocket(id connection, api::ble_v2::BlePeripheral *peripheral) +BleSocket::BleSocket(id connection, + api::ble_v2::BlePeripheral::UniqueId peripheral_id) : input_stream_(new BleInputStream()), output_stream_(new BleOutputStream(connection)), - peripheral_(peripheral) {} + peripheral_id_(peripheral_id) {} BleSocket::~BleSocket() { absl::MutexLock lock(&mutex_); diff --git a/internal/platform/implementation/ble_v2.h b/internal/platform/implementation/ble_v2.h index f18bda4d..ae83ab23 100644 --- a/internal/platform/implementation/ble_v2.h +++ b/internal/platform/implementation/ble_v2.h @@ -375,9 +375,8 @@ class BleSocket { // Returns Exception::kIo on error, Exception::kSuccess otherwise. virtual Exception Close() = 0; - // Returns valid BlePeripheral pointer if there is a connection, and - // nullptr otherwise. - virtual BlePeripheral* GetRemotePeripheral() = 0; + // Returns BlePeripheral::UniqueId that is connected to this socket. + virtual BlePeripheral::UniqueId GetRemotePeripheralId() = 0; }; // A BLE GATT server socket for listening incoming GATT socket. diff --git a/internal/platform/implementation/g3/ble_v2.cc b/internal/platform/implementation/g3/ble_v2.cc index 0343a8e3..3219e339 100644 --- a/internal/platform/implementation/g3/ble_v2.cc +++ b/internal/platform/implementation/g3/ble_v2.cc @@ -68,14 +68,14 @@ std::string TxPowerLevelToName(TxPowerLevel power_mode) { } // namespace -api::ble_v2::BlePeripheral* BleV2Socket::GetRemotePeripheral() { +api::ble_v2::BlePeripheral::UniqueId BleV2Socket::GetRemotePeripheralId() { BleV2Socket* remote_socket = GetRemoteSocket(); if (remote_socket == nullptr || remote_socket->adapter_ == nullptr || remote_socket->adapter_->GetBleV2Medium() == nullptr) { - return nullptr; + return 0LL; } - return &(dynamic_cast(remote_socket->adapter_->GetBleV2Medium()) - ->GetPeripheral()); + return dynamic_cast(remote_socket->adapter_->GetBleV2Medium()) + ->GetPeripheral().GetUniqueId(); } std::unique_ptr BleV2ServerSocket::Accept() { diff --git a/internal/platform/implementation/g3/ble_v2.h b/internal/platform/implementation/g3/ble_v2.h index bec5037d..63352285 100644 --- a/internal/platform/implementation/g3/ble_v2.h +++ b/internal/platform/implementation/g3/ble_v2.h @@ -69,9 +69,7 @@ class BleV2Socket : public api::ble_v2::BleSocket, public SocketBase { // Returns Exception::kIo on error, Exception::kSuccess otherwise. Exception Close() override { return SocketBase::Close(); } - // Returns valid BlePeripheral pointer if there is a connection, and - // nullptr otherwise. - api::ble_v2::BlePeripheral* GetRemotePeripheral() override + api::ble_v2::BlePeripheral::UniqueId GetRemotePeripheralId() override ABSL_LOCKS_EXCLUDED(mutex_); private: diff --git a/internal/platform/implementation/windows/ble_v2_socket.h b/internal/platform/implementation/windows/ble_v2_socket.h index 2d1a52cc..0a19af88 100644 --- a/internal/platform/implementation/windows/ble_v2_socket.h +++ b/internal/platform/implementation/windows/ble_v2_socket.h @@ -37,8 +37,8 @@ class BleV2Socket : public api::ble_v2::BleSocket { Exception Close() override; - api::ble_v2::BlePeripheral* GetRemotePeripheral() override { - return nullptr; + api::ble_v2::BlePeripheral::UniqueId GetRemotePeripheralId() override { + return 0LL; }; bool Connect();