Merge pull request #1695 from TehomCD/record_portal_uptime

Add portal uptime to @time command.
This commit is contained in:
Griatch 2018-10-20 23:48:39 +02:00 committed by GitHub
commit 30a6bdd392
6 changed files with 20 additions and 1 deletions

View file

@ -710,6 +710,7 @@ class CmdTime(COMMAND_DEFAULT_CLASS):
"""Show server time data in a table.""" """Show server time data in a table."""
table1 = EvTable("|wServer time", "", align="l", width=78) table1 = EvTable("|wServer time", "", align="l", width=78)
table1.add_row("Current uptime", utils.time_format(gametime.uptime(), 3)) table1.add_row("Current uptime", utils.time_format(gametime.uptime(), 3))
table1.add_row("Portal uptime", utils.time_format(gametime.portal_uptime(), 3))
table1.add_row("Total runtime", utils.time_format(gametime.runtime(), 2)) table1.add_row("Total runtime", utils.time_format(gametime.runtime(), 2))
table1.add_row("First start", datetime.datetime.fromtimestamp(gametime.server_epoch())) table1.add_row("First start", datetime.datetime.fromtimestamp(gametime.server_epoch()))
table1.add_row("Current time", datetime.datetime.now()) table1.add_row("Current time", datetime.datetime.now())

View file

@ -221,6 +221,7 @@ class AMPServerClientProtocol(amp.AMPMultiConnectionProtocol):
server_restart_mode = kwargs.get("server_restart_mode", "shutdown") server_restart_mode = kwargs.get("server_restart_mode", "shutdown")
self.factory.server.run_init_hooks(server_restart_mode) self.factory.server.run_init_hooks(server_restart_mode)
server_sessionhandler.portal_sessions_sync(kwargs.get("sessiondata")) server_sessionhandler.portal_sessions_sync(kwargs.get("sessiondata"))
server_sessionhandler.portal_start_time = kwargs.get("portal_start_time")
elif operation == amp.SRELOAD: # server reload elif operation == amp.SRELOAD: # server reload
# shut down in reload mode # shut down in reload mode

View file

@ -428,7 +428,8 @@ class AMPServerProtocol(amp.AMPMultiConnectionProtocol):
self.send_AdminPortal2Server(amp.DUMMYSESSION, self.send_AdminPortal2Server(amp.DUMMYSESSION,
amp.PSYNC, amp.PSYNC,
server_restart_mode=server_restart_mode, server_restart_mode=server_restart_mode,
sessiondata=sessdata) sessiondata=sessdata,
portal_start_time=self.factory.portal.start_time)
self.factory.portal.sessions.at_server_connection() self.factory.portal.sessions.at_server_connection()
if self.factory.server_connection: if self.factory.server_connection:

View file

@ -11,6 +11,7 @@ from builtins import object
import sys import sys
import os import os
import time
from os.path import dirname, abspath from os.path import dirname, abspath
from twisted.application import internet, service from twisted.application import internet, service
@ -114,6 +115,8 @@ class Portal(object):
self.server_restart_mode = "shutdown" self.server_restart_mode = "shutdown"
self.server_info_dict = {} self.server_info_dict = {}
self.start_time = time.time()
# in non-interactive portal mode, this gets overwritten by # in non-interactive portal mode, this gets overwritten by
# cmdline sent by the evennia launcher # cmdline sent by the evennia launcher
self.server_twistd_cmd = self._get_backup_server_twistd_cmd() self.server_twistd_cmd = self._get_backup_server_twistd_cmd()

View file

@ -280,6 +280,8 @@ class ServerSessionHandler(SessionHandler):
super(ServerSessionHandler, self).__init__(*args, **kwargs) super(ServerSessionHandler, self).__init__(*args, **kwargs)
self.server = None # set at server initialization self.server = None # set at server initialization
self.server_data = {"servername": _SERVERNAME} self.server_data = {"servername": _SERVERNAME}
# will be set on psync
self.portal_start_time = 0.0
def _run_cmd_login(self, session): def _run_cmd_login(self, session):
""" """

View file

@ -107,6 +107,17 @@ def uptime():
return time.time() - SERVER_START_TIME return time.time() - SERVER_START_TIME
def portal_uptime():
"""
Get the current uptime of the portal.
Returns:
time (float): The uptime of the portal.
"""
from evennia.server.sessionhandler import SESSIONS
return time.time() - SESSIONS.portal_start_time
def game_epoch(): def game_epoch():
""" """
Get the game epoch. Get the game epoch.