Data-FastPack
view release on metacpan or search on metacpan
"time" is the absolute time of the sample or the difference in time from
the current message to the previous message in the same stream. The
exact meaning of the time is as per the definition messages. It is a
double float to allow web browsers to utilise high resolution time, as
they do not support 64bit integers.
"id" is is the channel id within the file/stream. It relates to a
definition file. 0 indicates a meta data point which is JSON or other
structured data, which alters the processing of the file.
Optionally a namespace can be used to provide dynamic ID generation. The
ids are mapped from a name/label/topic/ to an integer. Additional
mapping messages are inserted into the stream to facilitate this mapping
at both ends.
"len" is the length of the payload. If the length is larger than 2^32
then it must be fragmented at the 'application level'.
"payload" is the data.
"padding" Every record is padded to an 8 byte bounadary, with nulls, if
nessicary
API Usage
Encoding and Decoding
encode_fastpack
encode_fastpack $buf, $inputs, $limit, $namespace
Encodes and array ref of an array refs "[time, ID, payload]" in to the
buffer $buf. $buf is aliased internally, and not copied. All need
encoded messages are appended to the buffer.
If "limit" is supplied, and less then the length of the $input array,
only this number of inputs will be consumed. Inputs consumed are spliced
out of the input array to allow the same array to be appended to
externally
If $namespace is provided, all messages are encoded assuming the id is
name and dynamically allocates an ID to the name space. Note $limit must
be provided (even if undefended) to use this argument.
Namespace if prevented from using 0, "0", or "undef" as names. Messages
with these names issue a warning.
If a $namespace is utilised, the ID/name of the message can be any
string. It is mapped to an integer code. If the message is the first one
to use the ID, an extra message mapping the integer to the name (id
becomes the integer value, payload becomes the name), in inserted into
the output.
If the message has and ID of "0", and a payload with no length, this
resets the mappings in the namespace and is output as normal
decode_fastpack
decode_fastpack $buf,$output, $limit, $namespace
Decodes FastPack messages from $buf, consuming it as it progresses. $buf
is aliases so new messages can be added to it externally.
$output is a reference to an array to store the decoded messages. The
messages are decoded into "[time, id, payload]".
If $limit is provided, this is the maximum number of messages to decode
during a single call. If not provided or undef, 4096 is the default.
$namespace if provided, int enables named ids. Decoded messages have the
id mapped to a name stored in the names space. If its the id has not
been encountered before, it uses the payload as the name to update the
internal mapping. This message is not sent to the output, as it is
intended to update the mapping only.
If the message has and ID of "0", and a payload with no length, this
resets the mappings in the namespace and is not forward past the decoder
Namspaces
create_namespace
create_namespace
Returns a name space structure for named ids. Separate name spaces
structure are needed for encoding and decoding ends, even withing the
same program.
id_for_name
id_for_name $namespace, $name
Returns the integer id in $namespace for $name. Useful for testing and
optimisation when multiple of the same messages are being encoded.
name_for_id
name_for_id $namespace, $id
Returns the name id in $namespace for $id. Useful for testing and
optimisation when multiple of the same messages are being encoded.
AUTHOR
Ruben Westerberg, <drclaw@mac.com>
REPOSITORTY and BUGS
Please report any bugs via git hub:
<https://github.com/drclaw1394/perl-data-fastpack>
COPYRIGHT AND LICENSE
Copyright (C) 2025 by Ruben Westerberg
Licensed under MIT
DISCLAIMER OF WARRANTIES
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
( run in 0.681 second using v1.01-cache-2.11-cpan-39bf76dae61 )