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.35 by root, Sun Mar 30 08:01:58 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.45';
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 WIN32 FILENAMES/DATABASE NAME MESS
140
141Perl on Win32 supports only ASCII filenames (the reason is that it abuses
142an internal flag to store wether a filename is Unicode or ANSI, but that
143flag is used for somethign else in the perl core, so there is no way to
144detect wether a filename is ANSI or Unicode-encoded). The BDB module
145tries to work around this issue by assuming that the filename is an ANSI
146filename and BDB was built for unicode support.
147
136=head2 BERKELEYDB FUNCTIONS 148=head2 BERKELEYDB FUNCTIONS
137 149
138All of these are functions. The create functions simply return a new 150All of these are functions. The create functions simply return a new
139object and never block. All the remaining functions all take an optional 151object and never block. All the remaining functions take an optional
140callback as last argument. If it is missing, then the function will be 152callback as last argument. If it is missing, then the function will be
141executed synchronously. In both cases, C<$!> will reflect the return value 153executed synchronously. In both cases, C<$!> will reflect the return value
142of the function. 154of the function.
143 155
144BDB functions that cannot block (mostly functions that manipulate 156BDB functions that cannot block (mostly functions that manipulate
145settings) are method calls on the relevant objects, so the rule of thumb 157settings) 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 158is: if it's a method, it's not blocking, if it's a function, it takes a
147callback as last argument. 159callback as last argument.
148 160
149In the following, C<$int> signifies an integer return value, 161In the following, C<$int> signifies an integer return value,
150C<octetstring> is a "binary string" (i.e. a perl string with no character 162C<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 163indices >255), C<U32> is an unsigned 32 bit integer, C<int> is some
388 DESTROY (DBC_ornull *dbc) 400 DESTROY (DBC_ornull *dbc)
389 CODE: 401 CODE:
390 if (dbc) 402 if (dbc)
391 dbc->c_close (dbc); 403 dbc->c_close (dbc);
392 404
405 $int = $cursor->set_priority ($priority = PRIORITY_*)
406
393=head4 Example: 407=head4 Example:
394 408
395 my $c = $db->cursor; 409 my $c = $db->cursor;
396 410
397 for (;;) { 411 for (;;) {
434 448
435=item $msg = BDB::strerror [$errno] 449=item $msg = BDB::strerror [$errno]
436 450
437Returns the string corresponding to the given errno value. If no argument 451Returns the string corresponding to the given errno value. If no argument
438is given, use C<$!>. 452is given, use C<$!>.
453
454Note that the BDB module also patches the C<$!> variable directly, so you
455should be able to get a bdb error string by simply stringifying C<$!>.
439 456
440=item $fileno = BDB::poll_fileno 457=item $fileno = BDB::poll_fileno
441 458
442Return the I<request result pipe file descriptor>. This filehandle must be 459Return the I<request result pipe file descriptor>. This filehandle must be
443polled for reading by some mechanism outside this module (e.g. Event or 460polled for reading by some mechanism outside this module (e.g. Event or
671 688
672In short: the parent will, after a short pause, continue as if fork had 689In 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 690not been called, while the child will act as if BDB has not been used
674yet. 691yet.
675 692
693Win32 note: there is no fork on win32, and perls emulation of it is too
694broken to be supported, so do not use BDB in a windows pseudo-fork, better
695yet, switch to a more capable platform.
696
676=head2 MEMORY USAGE 697=head2 MEMORY USAGE
677 698
678Per-request usage: 699Per-request usage:
679 700
680Each aio request uses - depending on your architecture - around 100-200 701Each aio request uses - depending on your architecture - around 100-200

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines