-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSimpleConnection.lf
49 lines (45 loc) · 1.09 KB
/
SimpleConnection.lf
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
42
43
44
45
46
47
48
49
target C {
scheduler: STATIC,
timeout: 10 sec,
build-type: Debug,
single-threaded: true,
// logging: DEBUG,
}
preamble {=
#define EXPECTED -9
=}
reactor Source {
output out:int
timer t(0, 1 sec)
state s:int = 0
reaction(t) -> out {=
lf_set(out, self->s);
self->s++;
// lf_print("Sent %d @ %lld", self->s, lf_time_logical_elapsed());
=}
reaction(t) -> out {=
int v = -1 * self->s;
lf_set(out, v);
=}
}
reactor Sink {
input in:int
state last_received:int = 0
reaction(in) {=
self->last_received = in->value;
// lf_print("Received %d @ %lld", in->value, lf_time_logical_elapsed());
=}
reaction(shutdown) {=
if (self->last_received != EXPECTED) {
// fprintf(stderr, "FAILURE: Expected %d, Received %d\n", EXPECTED, self->last_received);
exit(1);
} else {
// lf_print("Successfully received %d", self->last_received);
}
=}
}
main reactor {
source = new Source()
sink = new Sink()
source.out -> sink.in after 2 sec
}