-
Notifications
You must be signed in to change notification settings - Fork 8
/
example_event.zig
41 lines (27 loc) · 940 Bytes
/
example_event.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const std = @import("std");
const pike = @import("pike.zig");
const log = std.log;
pub fn main() !void {
try pike.init();
defer pike.deinit();
const notifier = try pike.Notifier.init();
defer notifier.deinit();
var event = try pike.Event.init();
defer nosuspend event.deinit();
try event.registerTo(¬ifier);
var frame: @Frame(pike.Event.post) = undefined;
frame = async event.post();
try notifier.poll(10_000);
try nosuspend await frame;
log.info("Drove the poller once.", .{});
frame = async event.post();
try notifier.poll(10_000);
try nosuspend await frame;
log.info("Drove the poller twice!", .{});
frame = async event.post();
try notifier.poll(10_000);
try nosuspend await frame;
log.info("Drove the poller thrice!", .{});
try notifier.poll(100);
log.info("This time the poller wasn't driven - it timed out after 100ms.", .{});
}