NAME
BeePack - Primitive MsgPack based key value storage
VERSION
version 0.103
SYNOPSIS
use BeePack;
# read only opening, error if fail
my $beepack_ro = BeePack->open('my.bee');
# read/write opening (with temp file), create if missing
my $beepack_rw = BeePack->open('my.bee', 'my.bee.'.$$);
# read only opening with nil_exists set
my $beepack_ro = BeePack->open('my.bee', undef, nil_exists => 1 );
$beepack_rw->set( key => $value ); # overwrite value
$beepack_rw->set_integer( key => $value ); # force integer
$beepack_rw->set_type( key => i => $value ); # alternative way
$beepack_rw->set_bool( key => $value ); # force bool
$beepack_rw->set_type( key => b => $value ); # alternative way
$beepack_rw->set_string( key => $value ); # force stringification
$beepack_rw->set_type( key => s => $value ); # alternative way
$beepack_rw->set_nil( 'key' ); # set nil value
$beepack_rw->set_type( key => 'n' ); # alternative way
# array of 2 true bool
$beepack_rw->set( key => [
BeePack->true, BeePack->true,
]);
# hash with true and false bool
$beepack_rw->set( key => {
false => BeePack->false,
true => BeePack->true,
});
$beepack_rw->save; # save changes and reopen
my $value = $beepack_ro->get('key');
# getting the raw msgpack bytes
my $msgpack = $beepack_ro->get_raw('key');
DESCRIPTION
BeePack is made out of the requirement to encapsule small key values and giant binary blobs into a compact file format for exchange and easy update even with the low amount of microcontroller memory.
Technical BeePack is CDB with additionally using MsgPack for storing the values inside the CDB. We picked MsgPack for the inner storage, to not reinvent the wheel of storing interoperational values (like BeePack generated on a Linux machine with x86 while being read by a microcontroller with ARM).
For simplification we do NOT store several values for a key inside the CDB, which is a capability of CDB. By default BeePack is saying a key that has a nil value doesn't exist. You can deactivate this behaviour by setting the nil_exists attribute to 1 on open.
We also simplify the implementation of MsgPack inside the BeePack with not allowing specific types in there. Because of the usage of Data::MessagePack this implementation will still flawless read them, while all types we are excluding are also those you can't get out of Data::MessagePack, so the Perl implementation is anyway not capable of adding them to the BeePack. The C implementation will be getting strict on this.
This distribution includes bee, which is a little tool to read, generate and manipulate BeePack from the comandline.
SEE ALSO
bee
CDB::TinyCDB
Data::MessagePack
SUPPORT
IRC
Join #hardware on irc.perl.org. Highlight Getty for fast reaction :).
Repository
http://github.com/cindustries/perl-beepack
Pull request and additional contributors are welcome
Issue Tracker
http://github.com/cindustries/perl-beepack/issues
AUTHOR
Torsten Raudssus <torsten@raudss.us>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020 by Torsten Raudssus.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.