ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/metaserver.ext
Revision: 1.2
Committed: Sun Jan 21 21:28:27 2007 UTC (17 years, 4 months ago) by root
Branch: MAIN
Changes since 1.1: +28 -21 lines
Log Message:
mark watchers as reentrant, some FABS => fabs

File Contents

# Content
1 #! perl
2
3 # metaserver reports
4
5 use IO::Socket::INET;
6
7 $cf::CFG{metaserver_comment}
8 or return;
9
10 our $UPDATE_METASERVER = Event->timer (
11 reentrant => 0,
12 after => 5,
13 interval => 299,
14 data => cf::WF_AUTOCANCEL,
15 cb => sub {
16 my $socket = new IO::Socket::INET
17 Proto => 'udp',
18 PeerAddr => $cf::CFG{metaserver_metaserver},
19 LocalAddr => $cf::CFG{metaserver_serveraddr}
20 or die "metaserver socket creation error: $!";
21
22 my $num_players = grep
23 $_->ob->map
24 && !$_->hidden
25 && !$_->ob->flag (cf::FLAG_WIZ),
26 cf::player::list;
27
28 my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d",
29 $cf::CFG{metaserver_servername},
30 $num_players,
31 cf::VERSION,
32 $cf::CFG{metaserver_comment},
33 0, # ibytes
34 0, # obytes
35 time - $cf::uptime;
36
37 syswrite $socket, $pkt;
38 },
39 );
40