blurmock/
fake_discovery_session.rs

1use fake_adapter::FakeBluetoothAdapter;
2use std::error::Error;
3use std::sync::Arc;
4
5#[derive(Debug)]
6pub struct FakeBluetoothDiscoverySession {
7    adapter: Arc<FakeBluetoothAdapter>,
8}
9
10impl FakeBluetoothDiscoverySession {
11    pub fn create_session(adapter: Arc<FakeBluetoothAdapter>) -> Result<FakeBluetoothDiscoverySession, Box<Error>> {
12        Ok(FakeBluetoothDiscoverySession::new(adapter))
13    }
14
15    fn new(adapter: Arc<FakeBluetoothAdapter>) -> FakeBluetoothDiscoverySession {
16        FakeBluetoothDiscoverySession {
17            adapter: adapter,
18        }
19    }
20
21    pub fn get_adapter(&self) -> Arc<FakeBluetoothAdapter> {
22        self.adapter.clone()
23    }
24
25    pub fn start_discovery(&self) -> Result<(), Box<Error>> {
26        match self.adapter.get_can_start_discovery() {
27            Ok(false) => Err(Box::from("Failed to start discovery session")),
28            Ok(true) => Ok(()),
29            Err(err) => Err(err),
30        }
31    }
32
33    pub fn stop_discovery(&self) -> Result<(), Box<Error>> {
34        match self.adapter.get_can_stop_discovery() {
35            Ok(false) => Err(Box::from("Failed to stop discovery session")),
36            Ok(true) => Ok(()),
37            Err(err) => Err(err),
38        }
39    }
40}