with_context on LightSync
This commit is contained in:
parent
fd44dcda15
commit
3b9ac7648c
@ -674,6 +674,16 @@ impl LightSync {
|
|||||||
subprotocol_name: params.subprotocol_name,
|
subprotocol_name: params.subprotocol_name,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Execute a closure with a protocol context.
|
||||||
|
pub fn with_context<F, T>(&self, f: F) -> Option<T>
|
||||||
|
where F: FnOnce(&::light::net::BasicContext) -> T
|
||||||
|
{
|
||||||
|
self.network.with_context_eval(
|
||||||
|
self.subprotocol_name,
|
||||||
|
move |ctx| self.proto.with_context(ctx, f),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ManageNetwork for LightSync {
|
impl ManageNetwork for LightSync {
|
||||||
|
@ -983,14 +983,14 @@ impl Host {
|
|||||||
self.nodes.write().update(node_changes, &*self.reserved_nodes.read());
|
self.nodes.write().update(node_changes, &*self.reserved_nodes.read());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_context<F>(&self, protocol: ProtocolId, io: &IoContext<NetworkIoMessage>, action: F) where F: Fn(&NetworkContext) {
|
pub fn with_context<F>(&self, protocol: ProtocolId, io: &IoContext<NetworkIoMessage>, action: F) where F: FnOnce(&NetworkContext) {
|
||||||
let reserved = { self.reserved_nodes.read() };
|
let reserved = { self.reserved_nodes.read() };
|
||||||
|
|
||||||
let context = NetworkContext::new(io, protocol, None, self.sessions.clone(), &reserved);
|
let context = NetworkContext::new(io, protocol, None, self.sessions.clone(), &reserved);
|
||||||
action(&context);
|
action(&context);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_context_eval<F, T>(&self, protocol: ProtocolId, io: &IoContext<NetworkIoMessage>, action: F) -> T where F: Fn(&NetworkContext) -> T {
|
pub fn with_context_eval<F, T>(&self, protocol: ProtocolId, io: &IoContext<NetworkIoMessage>, action: F) -> T where F: FnOnce(&NetworkContext) -> T {
|
||||||
let reserved = { self.reserved_nodes.read() };
|
let reserved = { self.reserved_nodes.read() };
|
||||||
|
|
||||||
let context = NetworkContext::new(io, protocol, None, self.sessions.clone(), &reserved);
|
let context = NetworkContext::new(io, protocol, None, self.sessions.clone(), &reserved);
|
||||||
|
@ -177,7 +177,7 @@ impl NetworkService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Executes action in the network context
|
/// Executes action in the network context
|
||||||
pub fn with_context<F>(&self, protocol: ProtocolId, action: F) where F: Fn(&NetworkContext) {
|
pub fn with_context<F>(&self, protocol: ProtocolId, action: F) where F: FnOnce(&NetworkContext) {
|
||||||
let io = IoContext::new(self.io_service.channel(), 0);
|
let io = IoContext::new(self.io_service.channel(), 0);
|
||||||
let host = self.host.read();
|
let host = self.host.read();
|
||||||
if let Some(ref host) = host.as_ref() {
|
if let Some(ref host) = host.as_ref() {
|
||||||
@ -186,7 +186,7 @@ impl NetworkService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Evaluates function in the network context
|
/// Evaluates function in the network context
|
||||||
pub fn with_context_eval<F, T>(&self, protocol: ProtocolId, action: F) -> Option<T> where F: Fn(&NetworkContext) -> T {
|
pub fn with_context_eval<F, T>(&self, protocol: ProtocolId, action: F) -> Option<T> where F: FnOnce(&NetworkContext) -> T {
|
||||||
let io = IoContext::new(self.io_service.channel(), 0);
|
let io = IoContext::new(self.io_service.channel(), 0);
|
||||||
let host = self.host.read();
|
let host = self.host.read();
|
||||||
host.as_ref().map(|ref host| host.with_context_eval(protocol, &io, action))
|
host.as_ref().map(|ref host| host.with_context_eval(protocol, &io, action))
|
||||||
|
Loading…
Reference in New Issue
Block a user