This directory contains a number of examples that highlight certain parts of the system.
Conforming to the tradition that is "Hello World", a simple program that prints "Hello World".
The code can be found in 1_hello_world.rs
and run with cargo run --example 1_hello_world
, and it should print "Hello World".
The second example is a simple TCP server that writes the ip of the connection to the connection.
The code can be found in 2_my_ip.rs
and run with cargo run --example 2_my_ip
, running something like nc localhost 7890
should then print your ip
address, e.g. "127.0.0.1".
Example three shows how Heph makes Remote Procedure Calls (RPC) easy.
The fourth example how to use synchronous actors. These are actors that have the thread all to themselves, which means that can do heavy computation and blocking I/O without stalling other actors.
TODO: reimplement this.
Heph has build-in support for handling process signals. This example shows this can be used to cleanly shutdown your application.
The code can be found in 6_process_signals.rs
and run with cargo run --example 6_process_signals
, pressing ctrl-c (sending it an interrupt signal
SIGINT
) should shutdown the example cleanly.
Example seven shows how the restart_supervisor!
macro can be used to easily
create a new Supervisor
implementation that attempts to restart the actor with
cloned arguments.
Heph supports generating trace files in its own custom format, described in the Trace Format design document. This format can be converted into Chrome's Trace Event Format so it can be opened by Catapult trace view.
$ cargo run --example 8_tracing # Run the example, to generate the trace.
$ cd tools # Got into the tools directory.
# Convert the trace to Chrome's format.
$ cargo run --bin convert_trace ../heph_tracing_example.bin.log
# Make the trace viewable in HTML.
$ $(CATAPULT_REPO)/tracing/bin/trace2html ../heph_tracing_example.json
$ open ../heph_tracing_example.html # Finally open the trace in your browser.