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

Comparing deliantra/Deliantra-Client/DC/DB.pm (file contents):
Revision 1.10 by root, Fri Jul 13 05:31:31 2007 UTC vs.
Revision 1.13 by root, Sun Jul 29 04:14:45 2007 UTC

24 24
25use CFPlus; 25use CFPlus;
26 26
27our $DB_HOME = "$Crossfire::VARDIR/cfplus-$BerkeleyDB::db_version-$Config{archname}"; 27our $DB_HOME = "$Crossfire::VARDIR/cfplus-$BerkeleyDB::db_version-$Config{archname}";
28 28
29sub path_of($) { 29sub path_of_res($) {
30 utf8::downgrade $_[0]; # bug in unpack "H*"
30 "$DB_HOME/res-data-$_[0]" 31 "$DB_HOME/res-data-" . unpack "H*", $_[0]
31} 32}
32 33
33sub sync { 34sub sync {
34 # for debugging 35 # for debugging
35 #CFPlus::DB::Server::req (sync => sub { }); 36 #CFPlus::DB::Server::req (sync => sub { });
52 CFPlus::DB::Server::req (unlink => @_); 53 CFPlus::DB::Server::req (unlink => @_);
53} 54}
54 55
55sub write_file($$$) { 56sub write_file($$$) {
56 CFPlus::DB::Server::req (write_file => @_); 57 CFPlus::DB::Server::req (write_file => @_);
58}
59
60sub prefetch_file($$$) {
61 CFPlus::DB::Server::req (prefetch_file => @_);
57} 62}
58 63
59our $tilemap; 64our $tilemap;
60 65
61sub get_tile_id_sync($) { 66sub get_tile_id_sync($) {
271sub do_write_file { 276sub do_write_file {
272 my ($file, $data) = @_; 277 my ($file, $data) = @_;
273 278
274 utf8::downgrade $file; 279 utf8::downgrade $file;
275 utf8::downgrade $data; 280 utf8::downgrade $data;
276 open my $fh, ">:raw", CFPlus::DB::path_of $file 281 open my $fh, ">:raw", $file
277 or return; 282 or return;
278 print $fh $data; 283 print $fh $data;
279 close $fh; 284 close $fh;
285
286 1
287}
288
289sub do_prefetch_file {
290 my ($file, $size) = @_;
291
292 utf8::downgrade $file;
293 open my $fh, "<:raw", $file
294 or return;
295 sysread $fh, my $buf, $size;
280 296
281 1 297 1
282} 298}
283 299
284sub run { 300sub run {
332 close $fh; 348 close $fh;
333 CFPlus::fh_nonblocking $FH, 1; 349 CFPlus::fh_nonblocking $FH, 1;
334 350
335 $CB{die} = sub { die shift }; 351 $CB{die} = sub { die shift };
336 352
337 $fh_r_watcher = AnyEvent->io (fh => $FH, poll => 'r', cb => \&fh_read); 353 $fh_r_watcher = AnyEvent->io (fh => $FH, poll => 'r', nice => 1, cb => \&fh_read);
338 354
339 sync_tick; 355 sync_tick;
340} 356}
341 357
342sub stop { 358sub stop {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines