… | |
… | |
17 | use strict; |
17 | use strict; |
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 (); |
23 | |
23 | |
24 | use CFPlus; |
24 | use CFPlus; |
25 | |
25 | |
26 | sub sync { |
26 | sub sync { |
27 | # for debugging |
27 | # for debugging |
… | |
… | |
102 | -Flags => DB_CREATE | DB_UPGRADE, |
102 | -Flags => DB_CREATE | DB_UPGRADE, |
103 | or die "unable to create/open database table $_[0]: $BerkeleyDB::Error" |
103 | or die "unable to create/open database table $_[0]: $BerkeleyDB::Error" |
104 | } |
104 | } |
105 | } |
105 | } |
106 | |
106 | |
107 | our $SYNC_INTERVAL = 6; |
107 | our $SYNC_INTERVAL = 60; |
108 | |
108 | |
109 | our %CB; |
109 | our %CB; |
110 | our $FH; |
110 | our $FH; |
111 | our $ID = "aaa0"; |
111 | our $ID = "aaa0"; |
112 | our ($fh_r_watcher, $fh_w_watcher); |
112 | our ($fh_r_watcher, $fh_w_watcher); |
… | |
… | |
179 | } |
179 | } |
180 | |
180 | |
181 | sub do_get { |
181 | sub do_get { |
182 | my ($db, $key) = @_; |
182 | my ($db, $key) = @_; |
183 | |
183 | |
|
|
184 | utf8::downgrade $key; |
184 | my $data; |
185 | my $data; |
185 | (table $db)->db_get ($key, $data) == 0 |
186 | (table $db)->db_get ($key, $data) == 0 |
186 | ? $data |
187 | ? $data |
187 | : () |
188 | : () |
188 | } |
189 | } |
189 | |
190 | |
190 | sub do_put { |
191 | sub do_put { |
191 | my ($db, $key, $data) = @_; |
192 | my ($db, $key, $data) = @_; |
192 | |
193 | |
|
|
194 | utf8::downgrade $key; |
|
|
195 | utf8::downgrade $data; |
193 | (table $db)->db_put ($key => $data) |
196 | (table $db)->db_put ($key => $data) |
194 | } |
197 | } |
195 | |
198 | |
196 | sub do_table { |
199 | sub do_table { |
197 | my ($db) = @_; |
200 | my ($db) = @_; |