Chromium Code Reviews| Index: device/bluetooth/bluetooth_adapter.cc |
| diff --git a/device/bluetooth/bluetooth_adapter.cc b/device/bluetooth/bluetooth_adapter.cc |
| index 09127f981cb48ec266570c74a803285da6f33141..073dd81c7aca8503e12ecd9bce33a35e3768263f 100644 |
| --- a/device/bluetooth/bluetooth_adapter.cc |
| +++ b/device/bluetooth/bluetooth_adapter.cc |
| @@ -365,6 +365,38 @@ BluetoothAdapter::GetMergedDiscoveryFilterHelper( |
| return result; |
| } |
| +void BluetoothAdapter::RemoveTimedOutDevices() { |
| + std::set<std::string> removed_devices; |
| + for (DevicesMap::const_iterator it = devices_.begin(); it != devices_.end(); |
| + ++it) { |
| + BluetoothDevice* device = it->second; |
| + |
| + if (device->IsPaired() || device->IsConnected() || |
| + device->IsGattConnected()) |
| + continue; |
| + |
| + base::Time last_update_time = device->GetLastUpdateTime(); |
| + |
| + bool device_expired = |
| + (base::Time::NowFromSystemTime() - last_update_time) > timeoutSec; |
| + VLOG(1) << "device: " << device->GetAddress() |
| + << ", last_update: " << last_update_time |
| + << ", exp: " << device_expired; |
| + |
| + if (!device_expired) |
| + continue; |
| + removed_devices.insert(it->first); |
|
ortuno
2016/06/22 17:23:11
nit: I would change removed_devices to be a std::v
perja
2016/06/23 14:31:25
I used a slightly different approach. Please take
|
| + |
| + FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
| + DeviceRemoved(this, device)); |
| + } |
| + |
| + for (const std::string& device_address : removed_devices) { |
| + size_t num_removed = devices_.erase(device_address); |
| + DCHECK_EQ(num_removed, 1U); |
| + } |
| +} |
| + |
| // static |
| void BluetoothAdapter::RecordBluetoothDiscoverySessionStartOutcome( |
| UMABluetoothDiscoverySessionOutcome outcome) { |
| @@ -381,4 +413,8 @@ void BluetoothAdapter::RecordBluetoothDiscoverySessionStopOutcome( |
| static_cast<int>(UMABluetoothDiscoverySessionOutcome::COUNT)); |
| } |
| +// static |
| +const base::TimeDelta BluetoothAdapter::timeoutSec = |
| + base::TimeDelta::FromSeconds(180); |
| + |
| } // namespace device |