--- deliantra/server/ext/metaserver.ext 2006/12/15 19:29:18 1.1 +++ deliantra/server/ext/metaserver.ext 2007/11/14 08:09:46 1.7 @@ -2,32 +2,33 @@ # metaserver reports -use IO::Socket::INET; +use Coro::Socket; $cf::CFG{metaserver_comment} or return; -our $UPDATE_METASERVER = Event->timer (after => 5, interval => 299, data => cf::WF_AUTOCANCEL, cb => sub { - my $socket = new IO::Socket::INET +our $VERSION = cf::VERSION; +our $PREFIX = ""; +our $SUFFIX = "trt"; + +our $UPDATE_METASERVER = cf::periodic 299, Coro::unblock_sub { + my $socket = new Coro::Socket Proto => 'udp', PeerAddr => $cf::CFG{metaserver_metaserver}, LocalAddr => $cf::CFG{metaserver_serveraddr} or die "metaserver socket creation error: $!"; - my $num_players = grep - $_->ob->map - && !$_->hidden - && !$_->ob->flag (cf::FLAG_WIZ), - cf::player::list; + my $num_players = cf::player::num_playing; my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d", $cf::CFG{metaserver_servername}, $num_players, - cf::VERSION, + "$PREFIX$VERSION$SUFFIX", $cf::CFG{metaserver_comment}, 0, # ibytes 0, # obytes - time - $cf::uptime; + time - $cf::UPTIME; syswrite $socket, $pkt; -}); +}; +