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

Comparing BDB/BDB.pm (file contents):
Revision 1.35 by root, Sun Mar 30 08:01:58 2008 UTC vs.
Revision 1.37 by root, Mon Jul 7 14:28:53 2008 UTC

27 db_sync $db; 27 db_sync $db;
28 28
29 # when you also use Coro, management is easy: 29 # when you also use Coro, management is easy:
30 use Coro::BDB; 30 use Coro::BDB;
31 31
32 # automatic result processing with AnyEvent: 32 # automatic event loop intergration with AnyEvent:
33 our $FH; open $FH, "<&=" . BDB::poll_fileno; 33 use AnyEvent::BDB;
34 our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb);
35 34
36 # automatic result processing with EV: 35 # automatic result processing with EV:
37 my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb; 36 my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb;
38 37
39 # with Glib: 38 # with Glib:
110use strict 'vars'; 109use strict 'vars';
111 110
112use base 'Exporter'; 111use base 'Exporter';
113 112
114BEGIN { 113BEGIN {
115 our $VERSION = '1.45'; 114 our $VERSION = '1.5';
116 115
117 our @BDB_REQ = qw( 116 our @BDB_REQ = qw(
118 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect 117 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect
119 db_env_memp_sync db_env_memp_trickle 118 db_env_memp_sync db_env_memp_trickle
120 db_open db_close db_compact db_sync db_upgrade 119 db_open db_close db_compact db_sync db_upgrade
612 611
613=item BDB::set_sync_prepare $cb 612=item BDB::set_sync_prepare $cb
614 613
615Sets a callback that is called whenever a request is created without an 614Sets a callback that is called whenever a request is created without an
616explicit callback. It has to return two code references. The first is used 615explicit callback. It has to return two code references. The first is used
617as the request callback, and the second is called to wait until the first 616as the request callback (it should save the return status), and the second
617is called to wait until the first callback has been called (it must set
618C<$!> to the return status).
619
620This mechanism can be used to include BDB into other event mechanisms,
621such as L<AnyEvent::BDB> or L<Coro::BDB>.
622
618callback has been called. The default implementation works like this: 623The default implementation works like this:
619 624
620 sub { 625 sub {
621 my $status; 626 my $status;
622 ( 627 (
623 sub { $status = $! }, 628 sub { $status = $! },
624 sub { BDB::poll while !defined $status; $! = $status }, 629 sub { BDB::poll while !defined $status; $! = $status },
625 ) 630 )
626 } 631 }
632
633It simply blocks the process till the request has finished and then sets
634C<$!> to the return value. This means that if you don't use a callback,
635BDB will simply fall back to synchronous operations.
627 636
628=back 637=back
629 638
630=head3 STATISTICAL INFORMATION 639=head3 STATISTICAL INFORMATION
631 640
722 TXN_DEADLOCK flag will be set on the transaction. See C<db_txn_finish>, 731 TXN_DEADLOCK flag will be set on the transaction. See C<db_txn_finish>,
723 above. 732 above.
724 733
725=head1 SEE ALSO 734=head1 SEE ALSO
726 735
727L<Coro::BDB>, L<IO::AIO>. 736L<AnyEvent::BDB> (event loop integration), L<Coro::BDB> (more natural
737syntax), L<IO::AIO> (nice to have).
728 738
729=head1 AUTHOR 739=head1 AUTHOR
730 740
731 Marc Lehmann <schmorp@schmorp.de> 741 Marc Lehmann <schmorp@schmorp.de>
732 http://home.schmorp.de/ 742 http://home.schmorp.de/

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines