Skip to content

Commit a777802

Browse files
author
Jonathan Woollett-Light
committed
feat: Return values
Allowing a return value for the event closures. This allows for proper error propagation. Signed-off-by: Jonathan Woollett-Light <[email protected]>
1 parent dd8b5e6 commit a777802

File tree

3 files changed

+109
-50
lines changed

3 files changed

+109
-50
lines changed

benches/main.rs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fn run_basic_subscriber(c: &mut Criterion) {
2929
OwnedFd::from_raw_fd(raw_fd)
3030
};
3131

32-
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager, event_set: EventSet| {
32+
event_manager.add(event_fd.as_fd(), EventSet::IN | EventSet::ERROR | EventSet::HANG_UP, Box::new(move |_:&mut EventManager<()>, event_set: EventSet| {
3333
match event_set {
3434
EventSet::IN => (),
3535
EventSet::ERROR => {
@@ -47,9 +47,10 @@ fn run_basic_subscriber(c: &mut Criterion) {
4747
event_fd
4848
}).collect::<Vec<_>>();
4949

50+
let expected = vec![(); usize::try_from(no_of_subscribers).unwrap()];
5051
c.bench_function("process_basic", |b| {
5152
b.iter(|| {
52-
assert_eq!(event_manager.wait(Some(0)), Ok(no_of_subscribers));
53+
assert_eq!(event_manager.wait(Some(0)), Ok(expected.as_slice()));
5354
})
5455
});
5556

@@ -75,7 +76,7 @@ fn run_arc_mutex_subscriber(c: &mut Criterion) {
7576
let counter = Arc::new(Mutex::new(0u64));
7677
let counter_clone = counter.clone();
7778

78-
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager, event_set: EventSet| {
79+
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager<()>, event_set: EventSet| {
7980
match event_set {
8081
EventSet::IN => {
8182
*counter_clone.lock().unwrap() += 1;
@@ -95,9 +96,10 @@ fn run_arc_mutex_subscriber(c: &mut Criterion) {
9596
(event_fd,counter)
9697
}).collect::<Vec<_>>();
9798

99+
let expected = vec![(); usize::try_from(no_of_subscribers).unwrap()];
98100
c.bench_function("process_with_arc_mutex", |b| {
99101
b.iter(|| {
100-
assert_eq!(event_manager.wait(Some(0)), Ok(no_of_subscribers));
102+
assert_eq!(event_manager.wait(Some(0)), Ok(expected.as_slice()));
101103
})
102104
});
103105

@@ -124,7 +126,7 @@ fn run_subscriber_with_inner_mut(c: &mut Criterion) {
124126
let counter = Arc::new(AtomicU64::new(0));
125127
let counter_clone = counter.clone();
126128

127-
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager, event_set: EventSet| {
129+
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager<()>, event_set: EventSet| {
128130
match event_set {
129131
EventSet::IN => {
130132
counter_clone.fetch_add(1, Ordering::SeqCst);
@@ -144,9 +146,10 @@ fn run_subscriber_with_inner_mut(c: &mut Criterion) {
144146
(event_fd,counter)
145147
}).collect::<Vec<_>>();
146148

149+
let expected = vec![(); usize::try_from(no_of_subscribers).unwrap()];
147150
c.bench_function("process_with_inner_mut", |b| {
148151
b.iter(|| {
149-
assert_eq!(event_manager.wait(Some(0)), Ok(no_of_subscribers));
152+
assert_eq!(event_manager.wait(Some(0)), Ok(expected.as_slice()));
150153
})
151154
});
152155

@@ -177,7 +180,7 @@ fn run_multiple_subscriber_types(c: &mut Criterion) {
177180
let counter = Arc::new(AtomicU64::new(0));
178181
let counter_clone = counter.clone();
179182

180-
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager, event_set: EventSet| {
183+
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager<()>, event_set: EventSet| {
181184
match event_set {
182185
EventSet::IN => {
183186
counter_clone.fetch_add(1, Ordering::SeqCst);
@@ -222,8 +225,8 @@ fn run_multiple_subscriber_types(c: &mut Criterion) {
222225
.add(
223226
inner_subscribers[i].as_fd(),
224227
EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,
225-
Box::new(
226-
move |_: &mut EventManager, event_set: EventSet| match event_set {
228+
Box::new(move |_: &mut EventManager<()>, event_set: EventSet| {
229+
match event_set {
227230
EventSet::IN => {
228231
data_clone[i].fetch_add(1, Ordering::SeqCst);
229232
}
@@ -234,8 +237,8 @@ fn run_multiple_subscriber_types(c: &mut Criterion) {
234237
panic!("Cannot continue execution. Associated fd was closed.");
235238
}
236239
_ => {}
237-
},
238-
),
240+
}
241+
}),
239242
)
240243
.unwrap();
241244
}
@@ -244,9 +247,10 @@ fn run_multiple_subscriber_types(c: &mut Criterion) {
244247
})
245248
.collect::<Vec<_>>();
246249

250+
let expected = vec![(); usize::try_from(total).unwrap()];
247251
c.bench_function("process_dynamic_dispatch", |b| {
248252
b.iter(|| {
249-
assert_eq!(event_manager.wait(Some(0)), Ok(total));
253+
assert_eq!(event_manager.wait(Some(0)), Ok(expected.as_slice()));
250254
})
251255
});
252256

@@ -272,7 +276,7 @@ fn run_with_few_active_events(c: &mut Criterion) {
272276
OwnedFd::from_raw_fd(raw_fd)
273277
};
274278

275-
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager, event_set: EventSet| {
279+
event_manager.add(event_fd.as_fd(),EventSet::IN | EventSet::ERROR | EventSet::HANG_UP,Box::new(move |_:&mut EventManager<()>, event_set: EventSet| {
276280
match event_set {
277281
EventSet::IN => (),
278282
EventSet::ERROR => {
@@ -290,9 +294,10 @@ fn run_with_few_active_events(c: &mut Criterion) {
290294
event_fd
291295
}).collect::<Vec<_>>();
292296

297+
let expected = vec![(); usize::try_from(active).unwrap()];
293298
c.bench_function("process_dispatch_few_events", |b| {
294299
b.iter(|| {
295-
assert_eq!(event_manager.wait(Some(0)), Ok(active));
300+
assert_eq!(event_manager.wait(Some(0)), Ok(expected.as_slice()));
296301
})
297302
});
298303

coverage_config_x86_64.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"coverage_score": 81.4,
2+
"coverage_score": 86.9,
33
"exclude_path": "",
44
"crate_features": ""
55
}

0 commit comments

Comments
 (0)