Networking¶
TODO Explain the NUClear network mesh
Serialisation¶
Serialisation is used to convert data to a type that can be written to files or sent over a network connection and be usable by the receiving device. See Wikipedia for further information.
NUClear provides helper functions for dealing with serialisation, from the namespace NUClear::util::serialise
there
are Searialise<T>::serialise
, Searialise<T>::deserialise
and Searialise<T>::hash
for serialisation,
deserialisation and hashing the type’s name respectively. The functions are used internally by NUClear to try to
serialise/deserialise data sent/received via Network
or UDP
. These functions are only defined for specific
types.
Trivial Data Types¶
NUClear defines serialisation for Trivial Types with some caveats. The serialisation of trivial data is dependant on both the endianness and the alignment of the data on the computer running the code.
NUClear also defines serialisation of iterators of trivial data types.
Google Protobuf Types¶
NUClear wraps the serialisation and deserialisation of google protobuf types. Use protobuf over trivial data types when communicating between machines or programs.
Custom Types¶
To add another type to be able to be serialised add another partial specialisation to Serialise<T, Check>
declaring
the type of Check
. The easiest Check
is is_same as this
checks explicitly for an explicit type. Be careful about multiple declarations.
For this partial specialisation three static methods need to be defined.