Skip to content

Commit 38af7e4

Browse files
committed
rustfmt
1 parent f4daa97 commit 38af7e4

File tree

2 files changed

+43
-31
lines changed

2 files changed

+43
-31
lines changed

src/ipc/mod.rs

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,11 @@ pub struct Blocking;
4343
/// Marker type specifying that the IPC socket should make nonblocking calls to the underlying socket
4444
pub struct Nonblocking;
4545

46-
pub trait BackendBuilder<T> where T: Ipc + std::marker::Sync {
47-
type Back : Backend<T>;
46+
pub trait BackendBuilder<T>
47+
where
48+
T: Ipc + std::marker::Sync,
49+
{
50+
type Back: Backend<T>;
4851
fn build(self, atomic_bool: Arc<atomic::AtomicBool>) -> Self::Back;
4952
}
5053
/// Backend builder contains the objects
@@ -53,12 +56,12 @@ pub struct SingleBackendBuilder<T: Ipc> {
5356
pub sock: T,
5457
}
5558

56-
impl<T> BackendBuilder<T> for SingleBackendBuilder<T> where T: Ipc + std::marker::Sync {
59+
impl<T> BackendBuilder<T> for SingleBackendBuilder<T>
60+
where
61+
T: Ipc + std::marker::Sync,
62+
{
5763
type Back = SingleBackend<T>;
58-
fn build(
59-
self,
60-
atomic_bool: Arc<atomic::AtomicBool>,
61-
) -> Self::Back {
64+
fn build(self, atomic_bool: Arc<atomic::AtomicBool>) -> Self::Back {
6265
SingleBackend::new(self.sock, atomic_bool)
6366
}
6467
}
@@ -81,21 +84,31 @@ impl<T: Ipc> Clone for BackendSender<T> {
8184
}
8285
}
8386

84-
pub struct MultiBackendBuilder<T: Ipc> {
87+
pub struct BackendBroadcaster<T: Ipc>(Vec<BackendSender<T>>);
88+
89+
impl<T: Ipc> BackendBroadcaster<T> {
90+
pub fn broadcast_msg(&self, msg: &[u8]) -> Result<()> {
91+
for s in &self.0 {
92+
s.send_msg(msg)?;
93+
}
94+
Ok(())
95+
}
96+
}
8597

98+
pub struct MultiBackendBuilder<T: Ipc> {
8699
pub socks: Vec<T>,
87100
}
88-
impl<T> BackendBuilder<T> for MultiBackendBuilder<T> where T: Ipc + std::marker::Sync {
101+
impl<T> BackendBuilder<T> for MultiBackendBuilder<T>
102+
where
103+
T: Ipc + std::marker::Sync,
104+
{
89105
type Back = MultiBackend<T>;
90-
fn build(
91-
self,
92-
atomic_bool: Arc<atomic::AtomicBool>,
93-
) -> Self::Back {
106+
fn build(self, atomic_bool: Arc<atomic::AtomicBool>) -> Self::Back {
94107
MultiBackend::new(self.socks, atomic_bool)
95108
}
96109
}
97110

98-
use crossbeam::channel::{Receiver, Select, unbounded};
111+
use crossbeam::channel::{unbounded, Receiver, Select};
99112
pub struct MultiBackend<T: Ipc> {
100113
last_recvd: Option<usize>,
101114
continue_listening: Arc<atomic::AtomicBool>,
@@ -105,20 +118,19 @@ pub struct MultiBackend<T: Ipc> {
105118
receivers_ptr: *mut [Receiver<Option<Msg>>],
106119
}
107120

108-
impl<T> MultiBackend<T> where T: Ipc + std::marker::Sync {
109-
pub fn new(
110-
socks: Vec<T>,
111-
continue_listening: Arc<atomic::AtomicBool>,
112-
) -> Self {
113-
121+
impl<T> MultiBackend<T>
122+
where
123+
T: Ipc + std::marker::Sync,
124+
{
125+
pub fn new(socks: Vec<T>, continue_listening: Arc<atomic::AtomicBool>) -> Self {
114126
let mut backends = Vec::new();
115127
let mut receivers = Vec::new();
116128

117129
for sock in socks {
118130
let mut backend = SingleBackend::new(sock, Arc::clone(&continue_listening));
119131
backends.push(backend.sender());
120132

121-
let (s,r) = unbounded();
133+
let (s, r) = unbounded();
122134
receivers.push(r);
123135

124136
std::thread::spawn(move || loop {
@@ -135,8 +147,8 @@ impl<T> MultiBackend<T> where T: Ipc + std::marker::Sync {
135147

136148
let mut sel = Select::new();
137149
let recv_ptr = Box::into_raw(Vec::into_boxed_slice(receivers));
138-
let recv_slice : &'static [Receiver<Option<Msg>>] = unsafe { &*recv_ptr } ;
139-
for r in recv_slice {
150+
let recv_slice: &'static [Receiver<Option<Msg>>] = unsafe { &*recv_ptr };
151+
for r in recv_slice {
140152
sel.recv(r);
141153
}
142154

@@ -145,7 +157,7 @@ impl<T> MultiBackend<T> where T: Ipc + std::marker::Sync {
145157
continue_listening,
146158
sel,
147159
backends,
148-
receivers : recv_slice,
160+
receivers: recv_slice,
149161
receivers_ptr: recv_ptr,
150162
}
151163
}
@@ -184,7 +196,6 @@ impl<T: Ipc> Backend<T> for MultiBackend<T> {
184196
}
185197
}
186198

187-
188199
/// Backend will yield incoming IPC messages forever via `next()`.
189200
/// It owns the socket; `BackendSender` holds weak references.
190201
/// The atomic bool is a way to stop iterating.
@@ -227,14 +238,10 @@ impl<T: Ipc> Backend<T> for SingleBackend<T> {
227238
Some(msg)
228239
}
229240
}
230-
231241
}
232242

233243
impl<T: Ipc> SingleBackend<T> {
234-
pub fn new(
235-
sock: T,
236-
continue_listening: Arc<atomic::AtomicBool>,
237-
) -> Self {
244+
pub fn new(sock: T, continue_listening: Arc<atomic::AtomicBool>) -> Self {
238245
SingleBackend {
239246
sock: Arc::new(sock),
240247
continue_listening,

src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,12 @@ impl<T: Ipc> DatapathTrait for Datapath<T> {
222222
}
223223
}
224224

225-
fn send_and_install<I>(sock_id: u32, sender: &BackendSender<I>, bin: Bin, sc: &Scope) -> Result<()>
225+
fn send_and_install<I>(
226+
sock_id: u32,
227+
sender: &BackendBroadcaster<I>,
228+
bin: Bin,
229+
sc: &Scope,
230+
) -> Result<()>
226231
where
227232
I: Ipc,
228233
{

0 commit comments

Comments
 (0)