This object was generated by sbt-buildinfo.
XXX TODO -- this transport has not yet been implemented.
A packet codec defines how the translation between Java objects and OSC atoms is accomplished.
A packet codec defines how the translation between Java objects
and OSC atoms is accomplished. For example, by default, when
an OSC message is assembled for transmission, the encoder will
translate ajava.lang.Integer
argument into
a four byte integer with typetag 'i'
. Or when
a received message is being decoded, finding an atom typetagged
'f'
, the decoder will create a java.lang.Float
out of it.
This example sounds trivial, but the codec is also able to handle
type conversions. For instance, in the strict OSC 1.0 specification,
only 32bit numeric atoms are defined ('i'
and 'f'
).
A codec with mode MODE_STRICT_V1
will reject a
java.lang.Double
in the encoding process and not be
able to decode a typetag 'd'
. A codec with mode
MODE_MODEST
automatically breaks down everything the 32bit,
so a java.lang.Double
gets encoded as 32bit 'f'
and a received atom tagged 'd'
becomes a
java.lang.Float
. Other configurations exist.
Another important function of the codec is to specify the charset encoding
of strings, something that was overseen in the OSC 1.0 spec. By default,
UTF-8
is used so all special characters can be safely encoded.
Last but not least, using the putDecoder
and putEncoder
methods, the codec can be extended to support additional Java classes or
OSC typetags, without the need to subclass PacketCodec
.
TCP
as a transport for OSC.
TCP
as a transport for OSC. At the moment, packets
are encoded in the OSC 1.0 format, regardless of
of the configuration's packet codec. That means
the 32-bit Int size followed by the actual plain packet is
encoded. The OSC 1.1 draft suggests SLIP
(cf. http://www.faqs.org/rfcs/rfc1055.html).
This may be configurable in the future.