--- BDB/BDB.pm 2007/12/04 11:07:39 1.18 +++ BDB/BDB.pm 2007/12/05 13:01:46 1.19 @@ -6,6 +6,41 @@ use BDB; + my $env = db_env_create; + + mkdir "bdtest", 0700; + db_env_open + $env, + "bdtest", + BDB::INIT_LOCK | BDB::INIT_LOG | BDB::INIT_MPOOL + | BDB::INIT_TXN | BDB::RECOVER | BDB::USE_ENVIRON | BDB::CREATE, + 0600; + + $env->set_flags (BDB::AUTO_COMMIT | BDB::TXN_NOSYNC, 1); + + my $db = db_create $env; + db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE + | BDB::READ_UNCOMMITTED, 0600; + db_put $db, undef, "key", "data", 0, sub { + db_del $db, undef, "key"; + }; + db_sync $db; + + # automatic result processing with AnyEvent: + our $FH; open $FH, "<&=" . BDB::poll_fileno; + our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb); + + # automatic result processing with EV: + my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb; + + # with Glib: + add_watch Glib::IO BDB::poll_fileno, + in => sub { BDB::poll_cb; 1 }; + + # or simply flush manually + BDB::flush; + + =head1 DESCRIPTION See the BerkeleyDB documentation (L).