Files
@ 7e5f19869dd2
Branch filter:
Location: CSY/reowolf/src/runtime2/tests/internet.rs - annotation
7e5f19869dd2
2.1 KiB
application/rls-services+xml
Remove distinction between primitive/composite
1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 7e5f19869dd2 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 1cc3bd69b119 | use super::*;
// silly test to make sure that the PDL will never be an issue when doing TCP
// stuff with the actual components
#[test]
fn test_stdlib_file() {
compile_and_create_component("
import std.internet as inet;
comp fake_listener_once(out<inet::TcpConnection> tx) {
channel cmd_tx -> cmd_rx;
channel data_tx -> data_rx;
new fake_socket(cmd_rx, data_tx);
sync put(tx, inet::TcpConnection{
tx: cmd_tx,
rx: data_rx,
});
}
comp fake_socket(in<inet::Cmd> cmds, out<u8[]> tx) {
auto to_send = {};
auto shutdown = false;
while (!shutdown) {
auto keep_going = true;
sync {
while (keep_going) {
auto cmd = get(cmds);
if (let inet::Cmd::Send(data) = cmd) {
to_send = data;
} else if (let inet::Cmd::Receive = cmd) {
put(tx, to_send);
} else if (let inet::Cmd::Finish = cmd) {
keep_going = false;
} else if (let inet::Cmd::Shutdown = cmd) {
keep_going = false;
shutdown = true;
}
}
}
}
}
comp fake_client(inet::TcpConnection conn) {
sync put(conn.tx, inet::Cmd::Send({1, 3, 3, 7}));
sync {
put(conn.tx, inet::Cmd::Receive);
auto val = get(conn.rx);
while (val[0] != 1 || val[1] != 3 || val[2] != 3 || val[3] != 7) {}
put(conn.tx, inet::Cmd::Finish);
}
sync put(conn.tx, inet::Cmd::Shutdown);
}
comp constructor() {
channel conn_tx -> conn_rx;
new fake_listener_once(conn_tx);
// Same crap as before:
channel cmd_tx -> unused_cmd_rx;
channel unused_data_tx -> data_rx;
auto connection = inet::TcpConnection{ tx: cmd_tx, rx: data_rx };
sync {
connection = get(conn_rx);
}
new fake_client(connection);
}
", "constructor", no_args());
}
|