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

Comparing BDB/BDB.pm (file contents):
Revision 1.18 by root, Tue Dec 4 11:07:39 2007 UTC vs.
Revision 1.24 by root, Mon Dec 10 04:57:14 2007 UTC

3BDB - Asynchronous Berkeley DB access 3BDB - Asynchronous Berkeley DB access
4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use BDB; 7 use BDB;
8
9 my $env = db_env_create;
10
11 mkdir "bdtest", 0700;
12 db_env_open
13 $env,
14 "bdtest",
15 BDB::INIT_LOCK | BDB::INIT_LOG | BDB::INIT_MPOOL
16 | BDB::INIT_TXN | BDB::RECOVER | BDB::USE_ENVIRON | BDB::CREATE,
17 0600;
18
19 $env->set_flags (BDB::AUTO_COMMIT | BDB::TXN_NOSYNC, 1);
20
21 my $db = db_create $env;
22 db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE
23 | BDB::READ_UNCOMMITTED, 0600;
24 db_put $db, undef, "key", "data", 0, sub {
25 db_del $db, undef, "key";
26 };
27 db_sync $db;
28
29 # automatic result processing with AnyEvent:
30 our $FH; open $FH, "<&=" . BDB::poll_fileno;
31 our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb);
32
33 # automatic result processing with EV:
34 my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb;
35
36 # with Glib:
37 add_watch Glib::IO BDB::poll_fileno,
38 in => sub { BDB::poll_cb; 1 };
39
40 # or simply flush manually
41 BDB::flush;
42
8 43
9=head1 DESCRIPTION 44=head1 DESCRIPTION
10 45
11See the BerkeleyDB documentation (L<http://www.oracle.com/technology/documentation/berkeley-db/db/index.html>). 46See the BerkeleyDB documentation (L<http://www.oracle.com/technology/documentation/berkeley-db/db/index.html>).
12The BDB API is very similar to the C API (the translation has been very faithful). 47The BDB API is very similar to the C API (the translation has been very faithful).
72use strict 'vars'; 107use strict 'vars';
73 108
74use base 'Exporter'; 109use base 'Exporter';
75 110
76BEGIN { 111BEGIN {
77 our $VERSION = '1.2'; 112 our $VERSION = '1.3';
78 113
79 our @BDB_REQ = qw( 114 our @BDB_REQ = qw(
80 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect 115 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect
81 db_env_memp_sync db_env_memp_trickle 116 db_env_memp_sync db_env_memp_trickle
82 db_open db_close db_compact db_sync db_put db_get db_pget db_del db_key_range 117 db_open db_close db_compact db_sync db_put db_get db_pget db_del db_key_range
99 134
100=head2 BERKELEYDB FUNCTIONS 135=head2 BERKELEYDB FUNCTIONS
101 136
102All of these are functions. The create functions simply return a new 137All of these are functions. The create functions simply return a new
103object and never block. All the remaining functions all take an optional 138object and never block. All the remaining functions all take an optional
104callback as last argument. If it is missing, then the fucntion will be 139callback as last argument. If it is missing, then the function will be
105executed synchronously. 140executed synchronously. In both cases, C<$!> will reflect the return value
141of the function.
106 142
107BDB functions that cannot block (mostly functions that manipulate 143BDB functions that cannot block (mostly functions that manipulate
108settings) are method calls on the relevant objects, so the rule of thumb 144settings) are method calls on the relevant objects, so the rule of thumb
109is: if its a method, its not blocking, if its a function, it takes a 145is: if its a method, its not blocking, if its a function, it takes a
110callback as last argument. 146callback as last argument.
242 $int = $env->set_lk_max_lockers (U32 max) 278 $int = $env->set_lk_max_lockers (U32 max)
243 $int = $env->set_lk_max_locks (U32 max) 279 $int = $env->set_lk_max_locks (U32 max)
244 $int = $env->set_lk_max_objects (U32 max) 280 $int = $env->set_lk_max_objects (U32 max)
245 $int = $env->set_lg_bsize (U32 max) 281 $int = $env->set_lg_bsize (U32 max)
246 $int = $env->set_lg_max (U32 max) 282 $int = $env->set_lg_max (U32 max)
283 $int = $env->mutex_set_increment (U32 increment)
284 $int = $env->mutex_set_tas_spins (U32 tas_spins)
285 $int = $env->mutex_set_max (U32 max)
286 $int = $env->mutex_set_align (U32 align)
247 287
248 $txn = $env->txn_begin (DB_TXN_ornull *parent = 0, U32 flags = 0) 288 $txn = $env->txn_begin (DB_TXN_ornull *parent = 0, U32 flags = 0)
249 flags: READ_COMMITTED READ_UNCOMMITTED TXN_NOSYNC TXN_NOWAIT TXN_SNAPSHOT TXN_SYNC TXN_WAIT TXN_WRITE_NOSYNC 289 flags: READ_COMMITTED READ_UNCOMMITTED TXN_NOSYNC TXN_NOWAIT TXN_SNAPSHOT TXN_SYNC TXN_WAIT TXN_WRITE_NOSYNC
250 290
251=head4 Example: 291=head4 Example:
387=head2 SUPPORT FUNCTIONS 427=head2 SUPPORT FUNCTIONS
388 428
389=head3 EVENT PROCESSING AND EVENT LOOP INTEGRATION 429=head3 EVENT PROCESSING AND EVENT LOOP INTEGRATION
390 430
391=over 4 431=over 4
432
433=item $msg = BDB::strerror [$errno]
434
435Returns the string corresponding to the given errno value. If no argument
436is given, use C<$!>.
392 437
393=item $fileno = BDB::poll_fileno 438=item $fileno = BDB::poll_fileno
394 439
395Return the I<request result pipe file descriptor>. This filehandle must be 440Return the I<request result pipe file descriptor>. This filehandle must be
396polled for reading by some mechanism outside this module (e.g. Event or 441polled for reading by some mechanism outside this module (e.g. Event or

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines