aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bluetoothremotegattserver.rs
diff options
context:
space:
mode:
authorfokinv <fokinv@inf.u-szeged.hu>2016-04-25 13:54:06 +0200
committerAttila Dusnoki <dati91@gmail.com>2016-05-03 11:35:34 +0200
commitc8672ed0afafe36632f9c8ddd44b0b540fdc2a9f (patch)
tree1671ba7467199b97ae6f6f5442bd42d7da954532 /components/script/dom/bluetoothremotegattserver.rs
parentecf4c942da979729748bbf58b471b2d0d6a95ffe (diff)
downloadservo-c8672ed0afafe36632f9c8ddd44b0b540fdc2a9f.tar.gz
servo-c8672ed0afafe36632f9c8ddd44b0b540fdc2a9f.zip
Refactor IPC-message sending
Diffstat (limited to 'components/script/dom/bluetoothremotegattserver.rs')
-rw-r--r--components/script/dom/bluetoothremotegattserver.rs83
1 files changed, 22 insertions, 61 deletions
diff --git a/components/script/dom/bluetoothremotegattserver.rs b/components/script/dom/bluetoothremotegattserver.rs
index f34261eb54b..e4f4b20a9dc 100644
--- a/components/script/dom/bluetoothremotegattserver.rs
+++ b/components/script/dom/bluetoothremotegattserver.rs
@@ -14,7 +14,7 @@ use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothremotegattservice::BluetoothRemoteGATTService;
use dom::bluetoothuuid::{BluetoothServiceUUID, BluetoothUUID};
use ipc_channel::ipc::{self, IpcSender};
-use net_traits::bluetooth_thread::{BluetoothMethodMsg, BluetoothObjectMsg};
+use net_traits::bluetooth_thread::BluetoothMethodMsg;
use std::cell::Cell;
use util::str::DOMString;
@@ -67,18 +67,13 @@ impl BluetoothRemoteGATTServerMethods for BluetoothRemoteGATTServer {
BluetoothMethodMsg::GATTServerConnect(String::from(self.Device().Id()), sender)).unwrap();
let server = receiver.recv().unwrap();
match server {
- BluetoothObjectMsg::BluetoothServer {
- connected
- } => {
+ Ok(connected) => {
self.connected.set(connected);
Ok(Root::from_ref(self))
},
- BluetoothObjectMsg::Error {
- error
- } => {
+ Err(error) => {
Err(Type(error))
},
- _ => unreachable!()
}
}
@@ -89,49 +84,34 @@ impl BluetoothRemoteGATTServerMethods for BluetoothRemoteGATTServer {
BluetoothMethodMsg::GATTServerDisconnect(String::from(self.Device().Id()), sender)).unwrap();
let server = receiver.recv().unwrap();
match server {
- BluetoothObjectMsg::BluetoothServer {
- connected
- } => {
+ Ok(connected) => {
self.connected.set(connected);
Ok(())
},
- BluetoothObjectMsg::Error {
- error
- } => {
+ Err(error) => {
Err(Type(error))
},
- _ => unreachable!()
}
}
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-getprimaryservice
fn GetPrimaryService(&self, service: BluetoothServiceUUID) -> Fallible<Root<BluetoothRemoteGATTService>> {
- let uuid: String = match BluetoothUUID::GetService(self.global().r(), service.clone()) {
- Ok(domstring) => domstring.to_string(),
- Err(error) => return Err(error),
- };
+ let uuid = try!(BluetoothUUID::GetService(self.global().r(), service)).to_string();
let (sender, receiver) = ipc::channel().unwrap();
self.get_bluetooth_thread().send(
BluetoothMethodMsg::GetPrimaryService(String::from(self.Device().Id()), uuid, sender)).unwrap();
let service = receiver.recv().unwrap();
match service {
- BluetoothObjectMsg::BluetoothService {
- uuid,
- is_primary,
- instance_id,
- } => {
+ Ok(service) => {
Ok(BluetoothRemoteGATTService::new(self.global().r(),
&self.device.get(),
- DOMString::from(uuid),
- is_primary,
- instance_id))
+ DOMString::from(service.uuid),
+ service.is_primary,
+ service.instance_id))
},
- BluetoothObjectMsg::Error {
- error
- } => {
+ Err(error) => {
Err(Type(error))
},
- _ => unreachable!(),
}
}
@@ -140,45 +120,26 @@ impl BluetoothRemoteGATTServerMethods for BluetoothRemoteGATTServer {
service: Option<BluetoothServiceUUID>)
-> Fallible<Vec<Root<BluetoothRemoteGATTService>>> {
let mut uuid: Option<String> = None;
- if let Some(s)= service {
- match BluetoothUUID::GetService(self.global().r(), s.clone()) {
- Ok(domstring) => uuid = Some(domstring.to_string()),
- Err(error) => return Err(error),
- }
+ if let Some(s) = service {
+ uuid = Some(try!(BluetoothUUID::GetService(self.global().r(), s)).to_string())
};
- let mut services: Vec<Root<BluetoothRemoteGATTService>> = vec!();
let (sender, receiver) = ipc::channel().unwrap();
self.get_bluetooth_thread().send(
BluetoothMethodMsg::GetPrimaryServices(String::from(self.Device().Id()), uuid, sender)).unwrap();
let services_vec = receiver.recv().unwrap();
match services_vec {
- BluetoothObjectMsg::BluetoothServices {
- services_vec
- } => {
- for s in services_vec {
- match s {
- BluetoothObjectMsg::BluetoothService {
- uuid,
- is_primary,
- instance_id,
- } => {
- services.push(BluetoothRemoteGATTService::new(self.global().r(),
- &self.device.get(),
- DOMString::from(uuid),
- is_primary,
- instance_id));
- },
- _ => unreachable!(),
- }
- }
- Ok(services)
+ Ok(service_vec) => {
+ Ok(service_vec.into_iter()
+ .map(|service| BluetoothRemoteGATTService::new(self.global().r(),
+ &self.device.get(),
+ DOMString::from(service.uuid),
+ service.is_primary,
+ service.instance_id))
+ .collect())
},
- BluetoothObjectMsg::Error {
- error
- } => {
+ Err(error) => {
Err(Type(error))
},
- _ => unreachable!(),
}
}
}