… | |
… | |
7 | $cf::CFG{metaserver_comment} |
7 | $cf::CFG{metaserver_comment} |
8 | or return; |
8 | or return; |
9 | |
9 | |
10 | our $VERSION = cf::VERSION; |
10 | our $VERSION = cf::VERSION; |
11 | our $PREFIX = ""; |
11 | our $PREFIX = ""; |
12 | our $SUFFIX = "ng"; |
12 | our $SUFFIX = "trt"; |
13 | |
13 | |
14 | our $UPDATE_METASERVER = Event->timer ( |
14 | our $UPDATE_METASERVER = cf::periodic 299, Coro::unblock_sub { |
15 | reentrant => 0, |
|
|
16 | after => 5, |
|
|
17 | interval => 299, |
|
|
18 | hard => 1, |
|
|
19 | data => cf::WF_AUTOCANCEL, |
|
|
20 | cb => Coro::unblock_sub { |
|
|
21 | my $socket = new Coro::Socket |
15 | my $socket = new Coro::Socket |
22 | Proto => 'udp', |
16 | Proto => 'udp', |
23 | PeerAddr => $cf::CFG{metaserver_metaserver}, |
17 | PeerAddr => $cf::CFG{metaserver_metaserver}, |
24 | LocalAddr => $cf::CFG{metaserver_serveraddr} |
18 | LocalAddr => $cf::CFG{metaserver_serveraddr} |
25 | or die "metaserver socket creation error: $!"; |
19 | or die "metaserver socket creation error: $!"; |
26 | |
20 | |
27 | my $num_players = grep |
21 | my $num_players = cf::player::num_playing; |
28 | $_->ob->map |
|
|
29 | && !$_->hidden |
|
|
30 | && !$_->ob->flag (cf::FLAG_WIZ), |
|
|
31 | cf::player::list; |
|
|
32 | |
22 | |
33 | my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d", |
23 | my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d", |
34 | $cf::CFG{metaserver_servername}, |
24 | $cf::CFG{metaserver_servername}, |
35 | $num_players, |
25 | $num_players, |
36 | "$PREFIX$VERSION$SUFFIX", |
26 | "$PREFIX$VERSION$SUFFIX", |
37 | $cf::CFG{metaserver_comment}, |
27 | $cf::CFG{metaserver_comment}, |
38 | 0, # ibytes |
28 | 0, # ibytes |
39 | 0, # obytes |
29 | 0, # obytes |
40 | time - $cf::uptime; |
30 | time - $cf::UPTIME; |
41 | |
31 | |
42 | syswrite $socket, $pkt; |
32 | syswrite $socket, $pkt; |
43 | }, |
33 | }; |
44 | ); |
|
|
45 | |
34 | |