Files
@ 7a1495b1b756
Branch filter:
Location: CSY/reowolf/testdata/examples/03_transmitting_ports_01.pdl - annotation
7a1495b1b756
1.4 KiB
text/plain
Update documentation to reflect changes in error-detecting routine upon receiving ClosePort
8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 8fa5df1e1626 | // Since this release transmitting ports is possible. This means that we can
// send ports through ports. In fact, we can send ports that may send ports that
// may send ports. But don't be fooled by the apparent complexity. The inner
// type `T` of a port like `in<T>` simply states that that is the message type.
// Should the type `T` contain one or more ports, then we kick off a bit of code
// that takes care of the transfer of the port. Should the port inside of `T`
// itself, after being received, send a port, then we simply kick off that same
// procedure again.
//
// In the simplest case, we have someone transmitting the receiving end of a
// channel to another component, which then uses that receiving end to receive a
// value.
comp port_sender(out<in<u32>> tx, in<u32> to_transmit) {
sync put(tx, to_transmit);
}
comp port_receiver_and_value_getter(in<in<u32>> rx, u32 expected_value) {
u32 got_value = 0;
sync {
auto port = get(rx);
got_value = get(port);
}
if (expected_value == got_value) {
print("got the expected value :)");
} else {
print("got a different value :(");
}
}
comp value_sender(out<u32> tx, u32 to_send) {
sync put(tx, to_send);
}
comp main() {
u32 value = 1337_2392;
channel port_tx -> port_rx;
channel value_tx -> value_rx;
new port_sender(port_tx, value_rx);
new port_receiver_and_value_getter(port_rx, value);
new value_sender(value_tx, value);
}
|