ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/BDB/BDB.pm
(Generate patch)

Comparing BDB/BDB.pm (file contents):
Revision 1.25 by root, Mon Dec 10 21:19:06 2007 UTC vs.
Revision 1.34 by root, Sun Mar 30 06:17:31 2008 UTC

24 db_put $db, undef, "key", "data", 0, sub { 24 db_put $db, undef, "key", "data", 0, sub {
25 db_del $db, undef, "key"; 25 db_del $db, undef, "key";
26 }; 26 };
27 db_sync $db; 27 db_sync $db;
28 28
29 # when you also use Coro, management is easy:
30 use Coro::BDB;
31
29 # automatic result processing with AnyEvent: 32 # automatic result processing with AnyEvent:
30 our $FH; open $FH, "<&=" . BDB::poll_fileno; 33 our $FH; open $FH, "<&=" . BDB::poll_fileno;
31 our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb); 34 our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb);
32 35
33 # automatic result processing with EV: 36 # automatic result processing with EV:
107use strict 'vars'; 110use strict 'vars';
108 111
109use base 'Exporter'; 112use base 'Exporter';
110 113
111BEGIN { 114BEGIN {
112 our $VERSION = '1.3'; 115 our $VERSION = '1.44';
113 116
114 our @BDB_REQ = qw( 117 our @BDB_REQ = qw(
115 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect 118 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect
116 db_env_memp_sync db_env_memp_trickle 119 db_env_memp_sync db_env_memp_trickle
117 db_open db_close db_compact db_sync db_upgrade 120 db_open db_close db_compact db_sync db_upgrade
131 134
132 require XSLoader; 135 require XSLoader;
133 XSLoader::load ("BDB", $VERSION); 136 XSLoader::load ("BDB", $VERSION);
134} 137}
135 138
139=head2 FILENAMES/DATABASE NAMES
140
141The BDB expects "binary" filenames (octet strings) for pathnames on POSIX
142systems, and "unicode" filenames (strings with characters potentially
143>255) on Win32 (expecting a Unicode win32 build - win32 is a total mess).
144
136=head2 BERKELEYDB FUNCTIONS 145=head2 BERKELEYDB FUNCTIONS
137 146
138All of these are functions. The create functions simply return a new 147All of these are functions. The create functions simply return a new
139object and never block. All the remaining functions all take an optional 148object and never block. All the remaining functions take an optional
140callback as last argument. If it is missing, then the function will be 149callback as last argument. If it is missing, then the function will be
141executed synchronously. In both cases, C<$!> will reflect the return value 150executed synchronously. In both cases, C<$!> will reflect the return value
142of the function. 151of the function.
143 152
144BDB functions that cannot block (mostly functions that manipulate 153BDB functions that cannot block (mostly functions that manipulate
145settings) are method calls on the relevant objects, so the rule of thumb 154settings) are method calls on the relevant objects, so the rule of thumb
146is: if its a method, its not blocking, if its a function, it takes a 155is: if it's a method, it's not blocking, if it's a function, it takes a
147callback as last argument. 156callback as last argument.
148 157
149In the following, C<$int> signifies an integer return value, 158In the following, C<$int> signifies an integer return value,
150C<octetstring> is a "binary string" (i.e. a perl string with no character 159C<octetstring> is a "binary string" (i.e. a perl string with no character
151indices >255), C<U32> is an unsigned 32 bit integer, C<int> is some 160indices >255), C<U32> is an unsigned 32 bit integer, C<int> is some
388 DESTROY (DBC_ornull *dbc) 397 DESTROY (DBC_ornull *dbc)
389 CODE: 398 CODE:
390 if (dbc) 399 if (dbc)
391 dbc->c_close (dbc); 400 dbc->c_close (dbc);
392 401
402 $int = $cursor->set_priority ($priority = PRIORITY_*)
403
393=head4 Example: 404=head4 Example:
394 405
395 my $c = $db->cursor; 406 my $c = $db->cursor;
396 407
397 for (;;) { 408 for (;;) {
434 445
435=item $msg = BDB::strerror [$errno] 446=item $msg = BDB::strerror [$errno]
436 447
437Returns the string corresponding to the given errno value. If no argument 448Returns the string corresponding to the given errno value. If no argument
438is given, use C<$!>. 449is given, use C<$!>.
450
451Note that the BDB module also patches the C<$!> variable directly, so you
452should be able to get a bdb error string by simply stringifying C<$!>.
439 453
440=item $fileno = BDB::poll_fileno 454=item $fileno = BDB::poll_fileno
441 455
442Return the I<request result pipe file descriptor>. This filehandle must be 456Return the I<request result pipe file descriptor>. This filehandle must be
443polled for reading by some mechanism outside this module (e.g. Event or 457polled for reading by some mechanism outside this module (e.g. Event or
671 685
672In short: the parent will, after a short pause, continue as if fork had 686In short: the parent will, after a short pause, continue as if fork had
673not been called, while the child will act as if BDB has not been used 687not been called, while the child will act as if BDB has not been used
674yet. 688yet.
675 689
690Win32 note: there is no fork on win32, and perls emulation of it is too
691broken to be supported, so do not use BDB in a windows pseudo-fork, better
692yet, switch to a more capable platform.
693
676=head2 MEMORY USAGE 694=head2 MEMORY USAGE
677 695
678Per-request usage: 696Per-request usage:
679 697
680Each aio request uses - depending on your architecture - around 100-200 698Each aio request uses - depending on your architecture - around 100-200

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines