Merge pull request #149 from vorner/loop_id

Provide a publicly-accessible Core ID
This commit is contained in:
Alex Crichton
2017-01-18 15:33:55 -08:00
committed by GitHub
+24
View File
@@ -76,6 +76,15 @@ struct Inner {
timeouts: Slab<(Option<Slot>, TimeoutState)>,
}
/// An unique ID for a Core
///
/// An ID by which different cores may be distinguished. Can be compared and used as an index in
/// a `HashMap`.
///
/// The ID is globally unique and never reused.
#[derive(Clone,Copy,Eq,PartialEq,Hash,Debug)]
pub struct CoreId(usize);
/// Handle to an event loop, used to construct I/O objects, send messages, and
/// otherwise interact indirectly with the event loop itself.
///
@@ -420,6 +429,11 @@ impl Core {
Message::Run(r) => r.call_box(self),
}
}
/// Get the ID of this loop
pub fn id(&self) -> CoreId {
CoreId(self.inner.borrow().id)
}
}
impl Inner {
@@ -589,6 +603,11 @@ impl Remote {
lp.inner.borrow_mut().spawn(Box::new(f.into_future()));
})));
}
/// Return the ID of the represented Core
pub fn id(&self) -> CoreId {
CoreId(self.id)
}
}
impl Handle {
@@ -620,6 +639,11 @@ impl Handle {
{
self.spawn(futures::lazy(f))
}
/// Return the ID of the represented Core
pub fn id(&self) -> CoreId {
self.remote.id()
}
}
impl TimeoutState {