Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
teeworlds_srvbrowse
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
minus
teeworlds_srvbrowse
Commits
219ea049
Commit
219ea049
authored
Sep 19, 2014
by
minus
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
made statscollector more reliable
parent
a4c95fe9
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
20 deletions
+21
-20
statscollector.py
statscollector.py
+20
-19
teeworlds/__init__.py
teeworlds/__init__.py
+1
-1
No files found.
statscollector.py
View file @
219ea049
#!/usr/bin/env python3
import
redis
from
teeworlds
import
query_masters_serverlist
,
create_masters
,
EventSocket
,
MasterServer
,
Player
from
teeworlds.base
import
Address
from
teeworlds.server
import
Server
from
teeworlds
import
query_masters_serverlist
,
create_masters
,
EventSocket
,
MasterServer
,
Player
,
Server
,
Address
import
json
from
teeworlds.teeworlds
import
query_masters_serverlist
from
json
import
JSONEncoder
MASTER_REFRESH_INTERVAL
=
60
SERVER_REFRESH_INTERVAL
=
120
SERVER_TIMEOUT
=
300
MASTER_REFRESH_INTERVAL
=
120
SERVER_TIMEOUT
=
180
PLAYER_TIMEOUT
=
SERVER_TIMEOUT
# Featues
# - server list → redis set
# - server details → redis key (server:ip:port)
# - online players → server mapping → redis hash
class
TeeworldsJSONEncoder
(
JSONEncoder
):
def
default
(
self
,
o
):
...
...
@@ -31,6 +24,13 @@ class TeeworldsJSONEncoder(JSONEncoder):
rconn
=
redis
.
StrictRedis
()
class
RefreshingServer
(
Server
):
"""Stores server and player info into redis
Server info is stored in a key "server:<server address>"
Player info is stored in a key "player:<name>:<server address>"
Keys time out as configured through SERVER_TIMEOUT and PLAYER_TIMEOUT respectively
"""
def
on_info_received
(
self
):
server_info
=
json
.
dumps
({
k
:
v
for
k
,
v
in
filter
(
lambda
it
:
not
it
[
0
].
startswith
(
"_"
),
self
.
__dict__
.
items
())},
cls
=
TeeworldsJSONEncoder
)
detail_key_name
=
"server:{}"
.
format
(
str
(
self
.
address
))
...
...
@@ -39,7 +39,6 @@ class RefreshingServer(Server):
player_key_name
=
"player:{}:{}"
.
format
(
player
.
name
,
str
(
self
.
address
))
player_info
=
json
.
dumps
({
k
:
v
for
k
,
v
in
filter
(
lambda
it
:
not
it
[
0
].
startswith
(
"_"
),
player
.
__dict__
.
items
())},
cls
=
TeeworldsJSONEncoder
)
rconn
.
setex
(
player_key_name
,
PLAYER_TIMEOUT
,
player_info
)
self
.
_socket
.
call_later
(
SERVER_REFRESH_INTERVAL
,
self
.
request_info
)
#self._socket.call_later(SERVER_TIMEOUT, self.on_timeout)
# def on_timeout(self):
...
...
@@ -56,10 +55,12 @@ class RefreshingMaster(MasterServer):
server
.
request_info
()
e
=
EventSocket
(
max_packet_rate
=
50
)
m
=
create_masters
(
e
,
master_factory
=
RefreshingMaster
)
query_masters_serverlist
(
m
)
#for m in t.masterlist:
# m.on_server_add = lambda s: s.request_info()
#t.query_masters()
e
=
EventSocket
(
max_packet_rate
=
100
)
def
loop
():
m
=
create_masters
(
e
,
master_factory
=
RefreshingMaster
)
query_masters_serverlist
(
m
)
e
.
call_later
(
MASTER_REFRESH_INTERVAL
,
loop
)
loop
()
e
.
run
()
\ No newline at end of file
teeworlds/__init__.py
View file @
219ea049
from
.teeworlds
import
create_masters
,
query_masters_serverlist
,
query_masters_servercount
from
.base
import
EventSocket
from
.base
import
EventSocket
,
Address
from
.master
import
MasterServer
from
.server
import
Server
from
.player
import
Player
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment