mirror of
https://github.com/evennia/evennia.git
synced 2026-04-06 16:44:08 +02:00
Cleaned up worst instability. Test suite does validate yet.
This commit is contained in:
parent
fa93c70e7f
commit
e36c7d5cc1
24 changed files with 134 additions and 300 deletions
|
|
@ -151,24 +151,6 @@ class MsgServer2Portal(amp.Command):
|
|||
errors = [(Exception, 'EXCEPTION')]
|
||||
response = []
|
||||
|
||||
class OOBPortal2Server(amp.Command):
|
||||
"""
|
||||
OOB data portal -> server
|
||||
"""
|
||||
arguments = [('sessid', amp.Integer()),
|
||||
('data', amp.String())]
|
||||
errors = [(Exception, "EXCEPTION")]
|
||||
response = []
|
||||
|
||||
class OOBServer2Portal(amp.Command):
|
||||
"""
|
||||
OOB data server -> portal
|
||||
"""
|
||||
arguments = [('sessid', amp.Integer()),
|
||||
('data', amp.String())]
|
||||
errors = [(Exception, "EXCEPTION")]
|
||||
response = []
|
||||
|
||||
class ServerAdmin(amp.Command):
|
||||
"""
|
||||
Portal -> Server
|
||||
|
|
@ -289,7 +271,7 @@ class AMPProtocol(amp.AMP):
|
|||
msg=to_str(msg),
|
||||
ipart=icall,
|
||||
nparts=nmsglist,
|
||||
data=dumps(data)).addErrback(self.errback, "OOBServer2Portal")
|
||||
data=dumps(data)).addErrback(self.errback, "MsgServer2Portal")
|
||||
for icall, (msg, data) in enumerate(zip(msglist, datalist))]
|
||||
|
||||
# Message definition + helper methods to call/create each message type
|
||||
|
|
@ -317,11 +299,11 @@ class AMPProtocol(amp.AMP):
|
|||
data = "".join(t[2] for t in sorted(MSGBUFFER[sessid], key=lambda o:o[0]))
|
||||
del MSGBUFFER[sessid]
|
||||
# call session hook with the data
|
||||
self.factory.server.sessions.data_in(sessid, msg, loads(data))
|
||||
self.factory.server.sessions.data_in(sessid, text=msg, **loads(data))
|
||||
return {}
|
||||
MsgPortal2Server.responder(amp_msg_portal2server)
|
||||
|
||||
def call_remote_MsgPortal2Server(self, sessid, msg, data=""):
|
||||
def call_remote_MsgPortal2Server(self, sessid, msg, **kwargs):
|
||||
"""
|
||||
Access method called by the Portal and executed on the Portal.
|
||||
"""
|
||||
|
|
@ -332,10 +314,10 @@ class AMPProtocol(amp.AMP):
|
|||
msg=msg,
|
||||
ipart=0,
|
||||
nparts=1,
|
||||
data=dumps(data)).addErrback(self.errback, "MsgPortal2Server")
|
||||
data=dumps(kwargs)).addErrback(self.errback, "MsgPortal2Server")
|
||||
except amp.TooLong:
|
||||
# the msg (or data) was too long for AMP to send. We need to send in blocks.
|
||||
return self.send_split_msg(sessid, msg, data, MsgPortal2Server)
|
||||
return self.send_split_msg(sessid, msg, kwargs, MsgPortal2Server)
|
||||
|
||||
# Server -> Portal message
|
||||
|
||||
|
|
@ -357,11 +339,11 @@ class AMPProtocol(amp.AMP):
|
|||
data = "".join(t[2] for t in sorted(MSGBUFFER[sessid], key=lambda o:o[0]))
|
||||
del MSGBUFFER[sessid]
|
||||
# call session hook with the data
|
||||
self.factory.portal.sessions.data_out(sessid, msg, loads(data))
|
||||
self.factory.portal.sessions.data_out(sessid, text=msg, **loads(data))
|
||||
return {}
|
||||
MsgServer2Portal.responder(amp_msg_server2portal)
|
||||
|
||||
def call_remote_MsgServer2Portal(self, sessid, msg, data=""):
|
||||
def call_remote_MsgServer2Portal(self, sessid, msg, **kwargs):
|
||||
"""
|
||||
Access method called by the Server and executed on the Server.
|
||||
"""
|
||||
|
|
@ -372,52 +354,10 @@ class AMPProtocol(amp.AMP):
|
|||
msg=to_str(msg),
|
||||
ipart=0,
|
||||
nparts=1,
|
||||
data=dumps(data)).addErrback(self.errback, "OOBServer2Portal")
|
||||
data=dumps(kwargs)).addErrback(self.errback, "MsgServer2Portal")
|
||||
except amp.TooLong:
|
||||
# the msg (or data) was too long for AMP to send. We need to send in blocks.
|
||||
return self.send_split_msg(sessid, msg, data, MsgServer2Portal)
|
||||
|
||||
# OOB Portal -> Server
|
||||
|
||||
# Portal -> Server Msg
|
||||
|
||||
def amp_oob_portal2server(self, sessid, data):
|
||||
"""
|
||||
Relays out-of-band data to server. This method is executed on the Server.
|
||||
"""
|
||||
#print "oob portal -> server (server side):", sessid, loads(data)
|
||||
self.factory.server.sessions.oob_data_in(sessid, loads(data))
|
||||
return {}
|
||||
OOBPortal2Server.responder(amp_oob_portal2server)
|
||||
|
||||
def call_remote_OOBPortal2Server(self, sessid, data=""):
|
||||
"""
|
||||
Access method called by the Portal and executed on the Portal.
|
||||
"""
|
||||
#print "oob portal->server (portal side):", sessid, data
|
||||
self.callRemote(OOBPortal2Server,
|
||||
sessid=sessid,
|
||||
data=dumps(data)).addErrback(self.errback, "OOBPortal2Server")
|
||||
|
||||
# OOB Server -> Portal message
|
||||
|
||||
def amp_oob_server2portal(self, sessid, data):
|
||||
"""
|
||||
Relays out-of-band data to Portal. This method is executed on the Portal.
|
||||
"""
|
||||
#print "oob server->portal (portal side):", sessid, data
|
||||
self.factory.portal.sessions.oob_data_out(sessid, loads(data))
|
||||
return {}
|
||||
OOBServer2Portal.responder(amp_oob_server2portal)
|
||||
|
||||
def call_remote_OOBServer2Portal(self, sessid, data=""):
|
||||
"""
|
||||
Access method called by the Server and executed on the Portal.
|
||||
"""
|
||||
#print "oob server->portal (server side):", sessid, data
|
||||
return self.callRemote(OOBServer2Portal,
|
||||
sessid=sessid,
|
||||
data=dumps(data)).addErrback(self.errback, "OOBServer2Portal")
|
||||
return self.send_split_msg(sessid, msg, kwargs, MsgServer2Portal)
|
||||
|
||||
|
||||
# Server administration from the Portal side
|
||||
|
|
@ -501,21 +441,19 @@ class AMPProtocol(amp.AMP):
|
|||
return {}
|
||||
PortalAdmin.responder(amp_portal_admin)
|
||||
|
||||
def call_remote_PortalAdmin(self, sessid, operation="", data=""):
|
||||
def call_remote_PortalAdmin(self, sessid, operation="", **kwargs):
|
||||
"""
|
||||
Access method called by the server side.
|
||||
"""
|
||||
#print "portaladmin (server side):", sessid, ord(operation), data
|
||||
data = dumps(data)
|
||||
|
||||
return self.callRemote(PortalAdmin,
|
||||
sessid=sessid,
|
||||
operation=operation,
|
||||
data=data).addErrback(self.errback, "PortalAdmin")
|
||||
data=dumps(kwargs)).addErrback(self.errback, "PortalAdmin")
|
||||
|
||||
# Extra functions
|
||||
|
||||
def amp_function_call(self, module, function, args, kwargs):
|
||||
def amp_function_call(self, module, function, args, **kwargs):
|
||||
"""
|
||||
This allows Portal- and Server-process to call an arbitrary function
|
||||
in the other process. It is intended for use by plugin modules.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue