ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.590 by root, Sun Nov 4 02:20:11 2012 UTC vs.
Revision 1.591 by root, Tue Nov 6 23:33:15 2012 UTC

224=item $cf::RUNTIME 224=item $cf::RUNTIME
225 225
226The time this server has run, starts at 0 and is increased by $cf::TICK on 226The time this server has run, starts at 0 and is increased by $cf::TICK on
227every server tick. 227every server tick.
228 228
229=item $cf::CONFDIR $cf::DATADIR $cf::LIBDIR $cf::PODDIR 229=item $cf::CONFDIR $cf::DATADIR $cf::LIBDIR $cf::PODDIR
230$cf::MAPDIR $cf::LOCALDIR $cf::TMPDIR $cf::UNIQUEDIR 230$cf::MAPDIR $cf::LOCALDIR $cf::TMPDIR $cf::UNIQUEDIR
231$cf::PLAYERDIR $cf::RANDOMDIR $cf::BDBDIR 231$cf::PLAYERDIR $cf::RANDOMDIR $cf::BDBDIR
232 232
233Various directories - "/etc", read-only install directory, perl-library 233Various directories - "/etc", read-only install directory, perl-library
234directory, pod-directory, read-only maps directory, "/var", "/var/tmp", 234directory, pod-directory, read-only maps directory, "/var", "/var/tmp",
235unique-items directory, player file directory, random maps directory and 235unique-items directory, player file directory, random maps directory and
236database environment. 236database environment.
3701 my $face = cf::face::find "sound/$v"; 3701 my $face = cf::face::find "sound/$v";
3702 cf::sound::set $k => $face; 3702 cf::sound::set $k => $face;
3703 } 3703 }
3704} 3704}
3705 3705
3706sub reload_pod {
3707 trace "loading pods $PODDIR\n";
3708
3709 my @command_help;
3710
3711 for (
3712 [0, "command_help"],
3713 [1, "emote_help"],
3714 [2, "dmcommand_help"],
3715 ) {
3716 my ($type, $path) = @$_;
3717
3718 my $paragraphs = &cf::pod::load_pod ("$PODDIR/$path.pod")
3719 or die "unable to load $path";
3720
3721 my $level = 1e9;
3722
3723 for my $par (@$paragraphs) {
3724 if ($par->{type} eq "head2") {
3725 # this code taken almost verbatim from DC/Protocol.pm
3726
3727 if ($par->{markup} =~ /^(\S+) (?:\s+ \( ([^\)]*) \) )?/x) {
3728 my $cmd = $1;
3729 my @args = split /\|/, $2;
3730 @args = (".*") unless @args;
3731
3732 $_ = $_ eq ".*" ? "" : " $_"
3733 for @args;
3734
3735 my @variants = map "$cmd$_", sort { (length $a) <=> (length $b) } @args;
3736
3737 push @command_help, [$type, \@variants, &cf::pod::as_cfpod ([$par])];
3738 $level = $par->{level};
3739 } else {
3740 error "$par->{markup}: unparsable command heading";
3741 }
3742 } elsif ($par->{level} > $level) {
3743 $command_help[-1][2] .= &cf::pod::as_cfpod ([$par]);
3744 }
3745
3746 cf::cede_to_tick;
3747 }
3748 }
3749
3750 @command_help = sort {
3751 $a->[0] <=> $b->[0]
3752 or $a->[1] cmp $b->[1]
3753 } @command_help;
3754
3755 cf::cede_to_tick;
3756
3757 add_face "res/command_help" => FT_RSRC,
3758 JSON::XS->new->utf8->encode (\@command_help);
3759}
3760
3706sub reload_resources { 3761sub reload_resources {
3707 trace "reloading resource files...\n"; 3762 trace "reloading resource files...\n";
3708 3763
3709 reload_materials; 3764 reload_materials;
3710 reload_facedata; 3765 reload_facedata;
3711 reload_exp_table; 3766 reload_exp_table;
3712 reload_sound; 3767 reload_sound;
3713 reload_archetypes; 3768 reload_archetypes;
3714 reload_regions; 3769 reload_regions;
3715 reload_treasures; 3770 reload_treasures;
3771 reload_pod;
3716 3772
3717 trace "finished reloading resource files\n"; 3773 trace "finished reloading resource files\n";
3718} 3774}
3719 3775
3720sub reload_config { 3776sub reload_config {
3788 evthread_start IO::AIO::poll_fileno; 3844 evthread_start IO::AIO::poll_fileno;
3789 3845
3790 cf::sync_job { 3846 cf::sync_job {
3791 cf::incloader::init (); 3847 cf::incloader::init ();
3792 3848
3849 db_init;
3850
3793 cf::init_anim; 3851 cf::init_anim;
3794 cf::init_attackmess; 3852 cf::init_attackmess;
3795 cf::init_dynamic; 3853 cf::init_dynamic;
3796 3854
3797 cf::load_settings; 3855 cf::load_settings;
3798 3856
3799 reload_resources; 3857 reload_resources;
3800 reload_config; 3858 reload_config;
3801 db_init;
3802 3859
3803 cf::init_uuid; 3860 cf::init_uuid;
3804 cf::init_signals; 3861 cf::init_signals;
3805 cf::init_skills; 3862 cf::init_skills;
3806 3863
4231 } 4288 }
4232} 4289}
4233 4290
4234{ 4291{
4235 # configure BDB 4292 # configure BDB
4293 info "initialising database";
4236 4294
4237 BDB::min_parallel 16; 4295 BDB::min_parallel 16;
4238 BDB::max_poll_reqs $TICK * 0.1; 4296 BDB::max_poll_reqs $TICK * 0.1;
4239 #$AnyEvent::BDB::WATCHER->priority (1); 4297 #$AnyEvent::BDB::WATCHER->priority (1);
4240 4298
4269 BDB::db_env_txn_checkpoint $DB_ENV, 0, 0, 0, sub { }; 4327 BDB::db_env_txn_checkpoint $DB_ENV, 0, 0, 0, sub { };
4270 }; 4328 };
4271 $BDB_TRICKLE_WATCHER = EV::periodic 0, 10, 0, sub { 4329 $BDB_TRICKLE_WATCHER = EV::periodic 0, 10, 0, sub {
4272 BDB::db_env_memp_trickle $DB_ENV, 20, 0, sub { }; 4330 BDB::db_env_memp_trickle $DB_ENV, 20, 0, sub { };
4273 }; 4331 };
4332
4333 info "database initialised";
4274} 4334}
4275 4335
4276{ 4336{
4277 # configure IO::AIO 4337 # configure IO::AIO
4278 4338
4339 info "initialising aio";
4279 IO::AIO::min_parallel 8; 4340 IO::AIO::min_parallel 8;
4280 IO::AIO::max_poll_time $TICK * 0.1; 4341 IO::AIO::max_poll_time $TICK * 0.1;
4281 undef $AnyEvent::AIO::WATCHER; 4342 undef $AnyEvent::AIO::WATCHER;
4343 info "aio initialised";
4282} 4344}
4283 4345
4284our $_log_backtrace; 4346our $_log_backtrace;
4285our $_log_backtrace_last; 4347our $_log_backtrace_last;
4286 4348

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines