… | |
… | |
26 | use utf8; |
26 | use utf8; |
27 | |
27 | |
28 | use AnyEvent (); |
28 | use AnyEvent (); |
29 | use BerkeleyDB; |
29 | use BerkeleyDB; |
30 | use Pod::POM (); |
30 | use Pod::POM (); |
31 | use Scalar::Util (); |
|
|
32 | use File::Path (); |
31 | use File::Path (); |
33 | use Storable (); # finally |
32 | use Storable (); # finally |
34 | |
33 | |
35 | BEGIN { |
34 | BEGIN { |
36 | use Crossfire::Protocol::Base (); |
35 | use Crossfire::Protocol::Base (); |
… | |
… | |
162 | |
161 | |
163 | sub put($$$) { |
162 | sub put($$$) { |
164 | my ($db, $key, $data) = @_; |
163 | my ($db, $key, $data) = @_; |
165 | |
164 | |
166 | my $hkey = $db + 0; |
165 | my $hkey = $db + 0; |
167 | Scalar::Util::weaken $db; |
166 | CFPlus::weaken $db; |
168 | $DB_SYNC{$hkey} ||= AnyEvent->timer (after => 5, cb => sub { |
167 | $DB_SYNC{$hkey} ||= AnyEvent->timer (after => 30, cb => sub { |
169 | delete $DB_SYNC{$hkey}; |
168 | delete $DB_SYNC{$hkey}; |
170 | $db->db_sync if $db; |
169 | $db->db_sync if $db; |
171 | }); |
170 | }); |
172 | |
171 | |
173 | $db->db_put ($key => $data) |
172 | $db->db_put ($key => $data) |
… | |
… | |
285 | ? eval "DB_REGISTER | DB_RECOVER" |
284 | ? eval "DB_REGISTER | DB_RECOVER" |
286 | : 0; |
285 | : 0; |
287 | |
286 | |
288 | $DB_ENV = new BerkeleyDB::Env |
287 | $DB_ENV = new BerkeleyDB::Env |
289 | -Home => $DB_HOME, |
288 | -Home => $DB_HOME, |
290 | -Cachesize => 1_000_000, |
289 | -Cachesize => 8_000_000, |
291 | -ErrFile => "$DB_HOME/errorlog.txt", |
290 | -ErrFile => "$DB_HOME/errorlog.txt", |
292 | # -ErrPrefix => "DATABASE", |
291 | # -ErrPrefix => "DATABASE", |
293 | -Verbose => 1, |
292 | -Verbose => 1, |
294 | -Flags => DB_CREATE | DB_RECOVER | DB_INIT_MPOOL | DB_INIT_LOCK | DB_INIT_TXN | $recover, |
293 | -Flags => DB_CREATE | DB_RECOVER | DB_INIT_MPOOL | DB_INIT_LOCK | DB_INIT_TXN | $recover, |
295 | -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE, |
294 | -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE, |