… | |
… | |
18 | use utf8; |
18 | use utf8; |
19 | |
19 | |
20 | use Carp (); |
20 | use Carp (); |
21 | use AnyEvent (); |
21 | use AnyEvent (); |
22 | use Storable (); # finally |
22 | use Storable (); # finally |
|
|
23 | |
|
|
24 | use CFPlus; |
23 | |
25 | |
24 | sub sync { |
26 | sub sync { |
25 | # for debugging |
27 | # for debugging |
26 | #CFPlus::DB::Server::req (sync => sub { }); |
28 | #CFPlus::DB::Server::req (sync => sub { }); |
27 | CFPlus::DB::Server::sync (); |
29 | CFPlus::DB::Server::sync (); |
… | |
… | |
100 | -Flags => DB_CREATE | DB_UPGRADE, |
102 | -Flags => DB_CREATE | DB_UPGRADE, |
101 | or die "unable to create/open database table $_[0]: $BerkeleyDB::Error" |
103 | or die "unable to create/open database table $_[0]: $BerkeleyDB::Error" |
102 | } |
104 | } |
103 | } |
105 | } |
104 | |
106 | |
105 | our $SYNC_INTERVAL = 6; |
107 | our $SYNC_INTERVAL = 60; |
106 | |
108 | |
107 | our %CB; |
109 | our %CB; |
108 | our $FH; |
110 | our $FH; |
109 | our $ID = "aaa0"; |
111 | our $ID = "aaa0"; |
110 | our ($fh_r_watcher, $fh_w_watcher); |
112 | our ($fh_r_watcher, $fh_w_watcher); |
… | |
… | |
278 | |
280 | |
279 | CFPlus::_exit 0; |
281 | CFPlus::_exit 0; |
280 | } |
282 | } |
281 | |
283 | |
282 | close $fh; |
284 | close $fh; |
283 | fcntl $FH, F_SETFL, O_NONBLOCK; |
285 | CFPlus::fh_nonblocking $FH, 1; |
284 | |
286 | |
285 | $CB{die} = sub { |
287 | $CB{die} = sub { die shift }; |
286 | die shift; |
|
|
287 | }; |
|
|
288 | |
288 | |
289 | $fh_r_watcher = AnyEvent->io (fh => $FH, poll => 'r', cb => \&fh_read); |
289 | $fh_r_watcher = AnyEvent->io (fh => $FH, poll => 'r', cb => \&fh_read); |
290 | |
290 | |
291 | sync_tick; |
291 | sync_tick; |
292 | } |
292 | } |