evennia/docs/2.x/api/evennia.server.portal.amp.html
Evennia docbuilder action e535f5782a Updated HTML docs.
2023-10-19 20:22:27 +00:00

654 lines
No EOL
51 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.server.portal.amp &#8212; Evennia 2.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.server.portal.amp_server" href="evennia.server.portal.amp_server.html" />
<link rel="prev" title="evennia.server.portal" href="evennia.server.portal.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.server.portal.amp_server.html" title="evennia.server.portal.amp_server"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.server.portal.html" title="evennia.server.portal"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.server.html" >evennia.server</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.server.portal.html" accesskey="U">evennia.server.portal</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.portal.amp</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.server.portal.html"
title="previous chapter">evennia.server.portal</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.server.portal.amp_server.html"
title="next chapter">evennia.server.portal.amp_server</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.server.portal.amp.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li><a href="evennia.server.portal.amp.html">2.x (main branch)</a></li>
<ul>
<li><a href="../1.3.0/index.html">1.3.0 (v1.3.0 branch)</a></li>
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.server.portal.amp">
<span id="evennia-server-portal-amp"></span><h1>evennia.server.portal.amp<a class="headerlink" href="#module-evennia.server.portal.amp" title="Permalink to this headline"></a></h1>
<p>The AMP (Asynchronous Message Protocol)-communication commands and constants used by Evennia.</p>
<p>This module acts as a central place for AMP-servers and -clients to get commands to use.</p>
<dl class="py function">
<dt id="evennia.server.portal.amp.dumps">
<code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">dumps</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#dumps"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.dumps" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="evennia.server.portal.amp.loads">
<code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">loads</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#loads"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.loads" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.Compressed">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">Compressed</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">optional</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#Compressed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.Compressed" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.String</span></code></p>
<p>This is a custom AMP command Argument that both handles too-long
sends as well as uses zlib for compression across the wire. The
batch-grouping of too-long sends is borrowed from the “mediumbox”
recipy at twisted-hackss ~glyph/+junk/amphacks/mediumbox.</p>
<dl class="py method">
<dt id="evennia.server.portal.amp.Compressed.fromBox">
<code class="sig-name descname">fromBox</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">strings</span></em>, <em class="sig-param"><span class="n">objects</span></em>, <em class="sig-param"><span class="n">proto</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#Compressed.fromBox"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.Compressed.fromBox" title="Permalink to this definition"></a></dt>
<dd><p>Converts from box string representation to python. We read back too-long batched data and
put it back together here.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.Compressed.toBox">
<code class="sig-name descname">toBox</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">strings</span></em>, <em class="sig-param"><span class="n">objects</span></em>, <em class="sig-param"><span class="n">proto</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#Compressed.toBox"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.Compressed.toBox" title="Permalink to this definition"></a></dt>
<dd><p>Convert from python object to string box representation.
we break up too-long data snippets into multiple batches here.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.Compressed.toString">
<code class="sig-name descname">toString</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inObject</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#Compressed.toString"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.Compressed.toString" title="Permalink to this definition"></a></dt>
<dd><p>Convert to send as a bytestring on the wire, with compression.</p>
<p>Note: In Py3 this is really a byte stream.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.Compressed.fromString">
<code class="sig-name descname">fromString</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inString</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#Compressed.fromString"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.Compressed.fromString" title="Permalink to this definition"></a></dt>
<dd><p>Convert (decompress) from the string-representation on the wire to Python.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">MsgLauncher2Portal</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#MsgLauncher2Portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Message Launcher -&gt; Portal</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.key">
<code class="sig-name descname">key</code><em class="property"> = 'MsgLauncher2Portal'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'operation', &lt;twisted.protocols.amp.String object&gt;), (b'arguments', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = []</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'MsgLauncher2Portal'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgLauncher2Portal.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgLauncher2Portal.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.MsgPortal2Server">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">MsgPortal2Server</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#MsgPortal2Server"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Message Portal -&gt; Server</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.key">
<code class="sig-name descname">key</code><em class="property"> = b'MsgPortal2Server'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'packed_data', &lt;evennia.server.portal.amp.Compressed object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = []</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'MsgPortal2Server'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgPortal2Server.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgPortal2Server.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.MsgServer2Portal">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">MsgServer2Portal</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#MsgServer2Portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Message Server -&gt; Portal</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.key">
<code class="sig-name descname">key</code><em class="property"> = 'MsgServer2Portal'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'packed_data', &lt;evennia.server.portal.amp.Compressed object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = []</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'MsgServer2Portal'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgServer2Portal.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgServer2Portal.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.AdminPortal2Server">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">AdminPortal2Server</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AdminPortal2Server"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Administration Portal -&gt; Server</p>
<p>Sent when the portal needs to perform admin operations on the
server, such as when a new session connects or resyncs</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.key">
<code class="sig-name descname">key</code><em class="property"> = 'AdminPortal2Server'</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'packed_data', &lt;evennia.server.portal.amp.Compressed object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = []</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'AdminPortal2Server'</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminPortal2Server.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.AdminPortal2Server.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.AdminServer2Portal">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">AdminServer2Portal</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AdminServer2Portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Administration Server -&gt; Portal</p>
<p>Sent when the server needs to perform admin operations on the
portal.</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.key">
<code class="sig-name descname">key</code><em class="property"> = 'AdminServer2Portal'</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'packed_data', &lt;evennia.server.portal.amp.Compressed object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = []</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'AdminServer2Portal'</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.AdminServer2Portal.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.AdminServer2Portal.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.MsgStatus">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">MsgStatus</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#MsgStatus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Check Status between AMP services</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.key">
<code class="sig-name descname">key</code><em class="property"> = 'MsgStatus'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'status', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'status', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'MsgStatus'</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.MsgStatus.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.MsgStatus.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.FunctionCall">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">FunctionCall</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#FunctionCall"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Bidirectional Server &lt;-&gt; Portal</p>
<p>Sent when either process needs to call an arbitrary function in
the other. This does not use the batch-send functionality.</p>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.key">
<code class="sig-name descname">key</code><em class="property"> = 'FunctionCall'</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.arguments">
<code class="sig-name descname">arguments</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'module', &lt;twisted.protocols.amp.String object&gt;), (b'function', &lt;twisted.protocols.amp.String object&gt;), (b'args', &lt;twisted.protocols.amp.String object&gt;), (b'kwargs', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.errors">
<code class="sig-name descname">errors</code><em class="property">: Dict<span class="p">[</span>Type<span class="p">[</span>Exception<span class="p">]</span><span class="p">, </span>bytes<span class="p">]</span></em><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.response">
<code class="sig-name descname">response</code><em class="property">: List<span class="p">[</span>Tuple<span class="p">[</span>bytes<span class="p">, </span>twisted.protocols.amp.Argument<span class="p">]</span><span class="p">]</span></em><em class="property"> = [(b'result', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'FunctionCall'</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.amp.FunctionCall.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.portal.amp.FunctionCall.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.amp.</code><code class="sig-name descname">AMPMultiConnectionProtocol</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.AMP</span></code></p>
<p>AMP protocol that safely handle multiple connections to the same
server without dropping old ones - new clients will receive
all server returns (broadcast). Will also correctly handle
erroneous HTTP requests on the port and return a HTTP error response.</p>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize protocol with some things that need to be in place
already before connecting both on portal and server.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.stringReceived">
<code class="sig-name descname">stringReceived</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.stringReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.stringReceived" title="Permalink to this definition"></a></dt>
<dd><p>Overrides the base stringReceived of twisted in order to handle
the strange error reported in <a class="reference external" href="https://github.com/evennia/evennia/issues/2053">https://github.com/evennia/evennia/issues/2053</a>,
which can lead to the amp connection locking up.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>string</strong> (<em>str</em>) the data coming in.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>To test, add the following code to the beginning of
<strong>evennia.server.amp_client.AMPServerClientProtocol.data_to_portal</strong>, then
run multiple commands until the error trigger:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">random</span>
<span class="kn">from</span> <span class="nn">twisted.protocols.amp</span> <span class="kn">import</span> <span class="n">AmpBox</span>
<span class="n">always_fail</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">if</span> <span class="n">always_fail</span> <span class="ow">or</span> <span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mf">0.05</span><span class="p">:</span>
<span class="n">breaker</span> <span class="o">=</span> <span class="n">AmpBox</span><span class="p">()</span>
<span class="n">breaker</span><span class="p">[</span><span class="s1">&#39;_answer&#39;</span><span class="o">.</span><span class="n">encode</span><span class="p">()]</span><span class="o">=</span><span class="s1">&#39;13541&#39;</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">transport</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">breaker</span><span class="o">.</span><span class="n">serialize</span><span class="p">())</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.dataReceived">
<code class="sig-name descname">dataReceived</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.dataReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.dataReceived" title="Permalink to this definition"></a></dt>
<dd><p>Handle non-AMP messages, such as HTTP communication.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.makeConnection">
<code class="sig-name descname">makeConnection</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">transport</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.makeConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.makeConnection" title="Permalink to this definition"></a></dt>
<dd><p>Swallow connection log message here. Copied from original
in the amp protocol.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.connectionMade">
<code class="sig-name descname">connectionMade</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.connectionMade"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.connectionMade" title="Permalink to this definition"></a></dt>
<dd><p>This is called when an AMP connection is (re-)established. AMP calls it on both sides.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.connectionLost">
<code class="sig-name descname">connectionLost</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">reason</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.connectionLost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.connectionLost" title="Permalink to this definition"></a></dt>
<dd><p>We swallow connection errors here. The reason is that during a
normal reload/shutdown there will almost always be cases where
either the portal or server shuts down before a message has
returned its (empty) return, triggering a connectionLost error
that is irrelevant. If a true connection error happens, the
portal will continuously try to reconnect, showing the problem
that way.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.errback">
<code class="sig-name descname">errback</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">err</span></em>, <em class="sig-param"><span class="n">info</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.errback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.errback" title="Permalink to this definition"></a></dt>
<dd><p>Error callback.
Handles errors to avoid dropping connections on server tracebacks.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>err</strong> (<em>Failure</em>) Deferred error instance.</p></li>
<li><p><strong>info</strong> (<em>str</em>) Error string.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.data_in">
<code class="sig-name descname">data_in</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">packed_data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.data_in" title="Permalink to this definition"></a></dt>
<dd><p>Process incoming packed data.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>packed_data</strong> (<em>bytes</em>) Pickled data.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>unpaced_data (any)</em> Unpickled package</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.broadcast">
<code class="sig-name descname">broadcast</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">command</span></em>, <em class="sig-param"><span class="n">sessid</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.broadcast"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.broadcast" title="Permalink to this definition"></a></dt>
<dd><p>Send data across the wire to all connections.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>command</strong> (<em>AMP Command</em>) A protocol send command.</p></li>
<li><p><strong>sessid</strong> (<em>int</em>) A unique Session id.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>deferred (deferred or None)</em> A deferred with an errback.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Data will be sent across the wire pickled as a tuple
(sessid, kwargs).</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.send_FunctionCall">
<code class="sig-name descname">send_FunctionCall</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">modulepath</span></em>, <em class="sig-param"><span class="n">functionname</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.send_FunctionCall"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.send_FunctionCall" title="Permalink to this definition"></a></dt>
<dd><p>Access method called by either process. This will call an arbitrary
function on the other process (On Portal if calling from Server and
vice versa).</p>
<dl>
<dt>Inputs:</dt><dd><p>modulepath (str) - python path to module holding function to call
functionname (str) - name of function in given module
<a href="#id1"><span class="problematic" id="id2">*</span></a>args, <a href="#id3"><span class="problematic" id="id4">**</span></a>kwargs will be used as arguments/keyword args for the</p>
<blockquote>
<div><p>remote function call</p>
</div></blockquote>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>A deferred that fires with the return value of the remote
function call</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.amp.AMPMultiConnectionProtocol.receive_functioncall">
<code class="sig-name descname">receive_functioncall</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/amp.html#AMPMultiConnectionProtocol.receive_functioncall"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.amp.AMPMultiConnectionProtocol.receive_functioncall" title="Permalink to this definition"></a></dt>
<dd><p>Helper decorator</p>
</dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.server.portal.amp_server.html" title="evennia.server.portal.amp_server"
>next</a> |</li>
<li class="right" >
<a href="evennia.server.portal.html" title="evennia.server.portal"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.server.html" >evennia.server</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.server.portal.html" >evennia.server.portal</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.portal.amp</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>