… | |
… | |
124 | while ($buffer =~ s/^(.*)\n//) { |
124 | while ($buffer =~ s/^(.*)\n//) { |
125 | my $line = $1; |
125 | my $line = $1; |
126 | $line =~ s/\s+$//; |
126 | $line =~ s/\s+$//; |
127 | utf8::decode $line; |
127 | utf8::decode $line; |
128 | if ($line =~ /^\x{e877}json_msg (.*)$/s) { |
128 | if ($line =~ /^\x{e877}json_msg (.*)$/s) { |
129 | $cb->(from_json $1); |
129 | $cb->(JSON::XS->new->allow_nonref->decode ($1)); |
130 | } else { |
130 | } else { |
131 | ::message ({ |
131 | ::message ({ |
132 | markup => "background($pid): " . CFPlus::asxml $line, |
132 | markup => "background($pid): " . CFPlus::asxml $line, |
133 | }); |
133 | }); |
134 | } |
134 | } |
… | |
… | |
137 | } |
137 | } |
138 | |
138 | |
139 | sub background_msg { |
139 | sub background_msg { |
140 | my ($msg) = @_; |
140 | my ($msg) = @_; |
141 | |
141 | |
142 | $msg = "\x{e877}json_msg " . to_json $msg; |
142 | $msg = "\x{e877}json_msg " . JSON::XS->new->allow_nonref->encode ($msg); |
143 | $msg =~ s/\n//g; |
143 | $msg =~ s/\n//g; |
144 | utf8::encode $msg; |
144 | utf8::encode $msg; |
145 | print $msg, "\n"; |
145 | print $msg, "\n"; |
146 | } |
146 | } |
147 | |
147 | |
… | |
… | |
162 | sub put($$$) { |
162 | sub put($$$) { |
163 | my ($db, $key, $data) = @_; |
163 | my ($db, $key, $data) = @_; |
164 | |
164 | |
165 | my $hkey = $db + 0; |
165 | my $hkey = $db + 0; |
166 | CFPlus::weaken $db; |
166 | CFPlus::weaken $db; |
167 | $DB_SYNC{$hkey} ||= AnyEvent->timer (after => 5, cb => sub { |
167 | $DB_SYNC{$hkey} ||= AnyEvent->timer (after => 30, cb => sub { |
168 | delete $DB_SYNC{$hkey}; |
168 | delete $DB_SYNC{$hkey}; |
169 | $db->db_sync if $db; |
169 | $db->db_sync if $db; |
170 | }); |
170 | }); |
171 | |
171 | |
172 | $db->db_put ($key => $data) |
172 | $db->db_put ($key => $data) |
… | |
… | |
284 | ? eval "DB_REGISTER | DB_RECOVER" |
284 | ? eval "DB_REGISTER | DB_RECOVER" |
285 | : 0; |
285 | : 0; |
286 | |
286 | |
287 | $DB_ENV = new BerkeleyDB::Env |
287 | $DB_ENV = new BerkeleyDB::Env |
288 | -Home => $DB_HOME, |
288 | -Home => $DB_HOME, |
289 | -Cachesize => 1_000_000, |
289 | -Cachesize => 8_000_000, |
290 | -ErrFile => "$DB_HOME/errorlog.txt", |
290 | -ErrFile => "$DB_HOME/errorlog.txt", |
291 | # -ErrPrefix => "DATABASE", |
291 | # -ErrPrefix => "DATABASE", |
292 | -Verbose => 1, |
292 | -Verbose => 1, |
293 | -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, |
294 | -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE, |
294 | -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE, |