First version of changed sessid->session change that starts properly. Not fully tested yet.

This commit is contained in:
Griatch 2015-11-14 21:43:58 +01:00
parent d496606a3c
commit efefe3e5ff
11 changed files with 28 additions and 25 deletions

View file

@ -33,6 +33,10 @@ from twisted.internet.defer import Deferred
from evennia.utils import logger
from evennia.utils.utils import to_str, variable_from_module
class DummySession(object):
sessid = 0
DUMMYSESSION = DummySession()
# communication bits
PCONN = chr(1) # portal session connect
@ -358,7 +362,7 @@ class AMPProtocol(amp.AMP):
# only the portal has the 'portal' property, so we know we are
# on the portal side and can initialize the connection.
sessdata = self.factory.portal.sessions.get_all_sync_data()
self.send_AdminPortal2Server(0,
self.send_AdminPortal2Server(DUMMYSESSION,
PSYNC,
sessiondata=sessdata)
self.factory.portal.sessions.at_server_connection()
@ -478,7 +482,6 @@ class AMPProtocol(amp.AMP):
sessid, kwargs = loads(packed_data)
operation = kwargs.pop("operation", "")
server_sessionhandler = self.factory.server.sessions
session = server_sessionhandler[sessid]
if operation == PCONN: # portal_session_connect
# create a new session and sync it
@ -489,6 +492,7 @@ class AMPProtocol(amp.AMP):
elif operation == PDISCONN: # portal_session_disconnect
# session closed from portal side
session = server_sessionhandler[sessid]
self.factory.server.sessions.portal_disconnect(session)
elif operation == PSYNC: # portal_session_sync
@ -534,14 +538,15 @@ class AMPProtocol(amp.AMP):
operation = kwargs.pop("operation")
portal_sessionhandler = self.factory.portal.sessions
session = portal_sessionhandler[sessid]
if operation == SLOGIN: # server_session_login
# a session has authenticated; sync it.
session = portal_sessionhandler[sessid]
portal_sessionhandler.server_logged_in(session, kwargs.get("sessiondata"))
elif operation == SDISCONN: # server_session_disconnect
# the server is ordering to disconnect the session
session = portal_sessionhandler[sessid]
portal_sessionhandler.server_disconnect(session, reason=kwargs.get("reason"))
elif operation == SDISCONNALL: # server_session_disconnect_all

View file

@ -37,7 +37,7 @@ class PortalSessionHandler(SessionHandler):
"""
def __init__(self, args, **kwargs):
def __init__(self, *args, **kwargs):
"""
Init the handler
@ -111,7 +111,7 @@ class PortalSessionHandler(SessionHandler):
self[session.sessid] = session
session.server_connected = True
self.portal.amp_protocol.send_AdminPortal2Server(session.sessid,
self.portal.amp_protocol.send_AdminPortal2Server(session,
operation=PCONN,
sessiondata=sessdata)
@ -140,7 +140,7 @@ class PortalSessionHandler(SessionHandler):
"conn_time",
"protocol_flags",
"server_data",))
self.portal.amp_protocol.send_AdminPortal2Server(session.sessid,
self.portal.amp_protocol.send_AdminPortal2Server(session,
operation=PCONNSYNC,
sessiondata=sessdata)
@ -159,8 +159,7 @@ class PortalSessionHandler(SessionHandler):
# to forward this to the Server, so now we just remove it.
_CONNECTION_QUEUE.remove(session)
return
sessid = session.sessid
self.portal.amp_protocol.send_AdminPortal2Server(sessid,
self.portal.amp_protocol.send_AdminPortal2Server(session,
operation=PDISCONN)
def server_connect(self, protocol_path="", config=dict()):
@ -397,7 +396,7 @@ class PortalSessionHandler(SessionHandler):
return
# relay data to Server
self.command_counter += 1
self.portal.amp_protocol.send_MsgPortal2Server(session.sessid,
self.portal.amp_protocol.send_MsgPortal2Server(session,
text=text,
**kwargs)
else:

View file

@ -326,7 +326,7 @@ class ServerSessionHandler(SessionHandler):
self.server.amp_protocol.send_AdminServer2Portal(session,
operation=SLOGIN,
sessiondata={"logged_in": True})
player.at_post_login(sessid=session.sessid)
player.at_post_login(session=session)
def disconnect(self, session, reason=""):
"""