Add portal uptime to @time command.

This commit is contained in:
Tehom 2018-10-18 04:24:03 -04:00
parent 1f3d8d1b96
commit 040cc2aa9f
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.