ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC.pm (file contents):
Revision 1.136 by root, Sat Dec 9 02:21:24 2006 UTC vs.
Revision 1.139 by root, Sun Apr 1 15:08:14 2007 UTC

26use utf8; 26use utf8;
27 27
28use AnyEvent (); 28use AnyEvent ();
29use BerkeleyDB; 29use BerkeleyDB;
30use Pod::POM (); 30use Pod::POM ();
31use Scalar::Util ();
32use File::Path (); 31use File::Path ();
33use Storable (); # finally 32use Storable (); # finally
34 33
35BEGIN { 34BEGIN {
36 use Crossfire::Protocol::Base (); 35 use Crossfire::Protocol::Base ();
125 while ($buffer =~ s/^(.*)\n//) { 124 while ($buffer =~ s/^(.*)\n//) {
126 my $line = $1; 125 my $line = $1;
127 $line =~ s/\s+$//; 126 $line =~ s/\s+$//;
128 utf8::decode $line; 127 utf8::decode $line;
129 if ($line =~ /^\x{e877}json_msg (.*)$/s) { 128 if ($line =~ /^\x{e877}json_msg (.*)$/s) {
130 $cb->(from_json $1); 129 $cb->(JSON::XS->new->allow_nonref->decode ($1));
131 } else { 130 } else {
132 ::message ({ 131 ::message ({
133 markup => "background($pid): " . CFPlus::asxml $line, 132 markup => "background($pid): " . CFPlus::asxml $line,
134 }); 133 });
135 } 134 }
138} 137}
139 138
140sub background_msg { 139sub background_msg {
141 my ($msg) = @_; 140 my ($msg) = @_;
142 141
143 $msg = "\x{e877}json_msg " . to_json $msg; 142 $msg = "\x{e877}json_msg " . JSON::XS->new->allow_nonref->encode ($msg);
144 $msg =~ s/\n//g; 143 $msg =~ s/\n//g;
145 utf8::encode $msg; 144 utf8::encode $msg;
146 print $msg, "\n"; 145 print $msg, "\n";
147} 146}
148 147
162 161
163sub put($$$) { 162sub 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,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines