evennia/docs/3.x/api/evennia.server.service.html
2023-12-21 00:12:31 +01:00

323 lines
No EOL
22 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.service &#8212; Evennia 3.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.session" href="evennia.server.session.html" />
<link rel="prev" title="evennia.server.serversession" href="evennia.server.serversession.html" />
</head><body>
<div class="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</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"
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.session.html" title="evennia.server.session"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.server.serversession.html" title="evennia.server.serversession"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.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" accesskey="U">evennia.server</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.service</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.serversession.html"
title="previous chapter">evennia.server.serversession</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.server.session.html"
title="next chapter">evennia.server.session</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.service.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>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.server.service">
<span id="evennia-server-service"></span><h1>evennia.server.service<a class="headerlink" href="#module-evennia.server.service" title="Permalink to this headline"></a></h1>
<p>This module contains the main EvenniaService class, which is the very core of the
Evennia server. It is instantiated by the evennia/server/server.py module.</p>
<dl class="py class">
<dt id="evennia.server.service.EvenniaServerService">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.service.</code><code class="sig-name descname">EvenniaServerService</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/service.html#EvenniaServerService"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.application.service.MultiService</span></code></p>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.__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/service.html#EvenniaServerService.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.server_maintenance">
<code class="sig-name descname">server_maintenance</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.server_maintenance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.server_maintenance" title="Permalink to this definition"></a></dt>
<dd><p>This maintenance function handles repeated checks and updates that
the server needs to do. It is called every minute.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.process_idle_timeouts">
<code class="sig-name descname">process_idle_timeouts</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.process_idle_timeouts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.process_idle_timeouts" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.privilegedStartService">
<code class="sig-name descname">privilegedStartService</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.privilegedStartService"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.privilegedStartService" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.register_plugins">
<code class="sig-name descname">register_plugins</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.register_plugins"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.register_plugins" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.register_amp">
<code class="sig-name descname">register_amp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.register_amp"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.register_amp" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.register_webserver">
<code class="sig-name descname">register_webserver</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.register_webserver"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.register_webserver" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.sqlite3_prep">
<code class="sig-name descname">sqlite3_prep</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.sqlite3_prep"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.sqlite3_prep" title="Permalink to this definition"></a></dt>
<dd><p>Optimize some SQLite stuff at startup since we
cant save it to the database.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.update_defaults">
<code class="sig-name descname">update_defaults</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.update_defaults"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.update_defaults" title="Permalink to this definition"></a></dt>
<dd><p>We make sure to store the most important object defaults here, so
we can catch if they change and update them on-objects automatically.
This allows for changing default cmdset locations and default
typeclasses in the settings file and have them auto-update all
already existing objects.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.run_initial_setup">
<code class="sig-name descname">run_initial_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.run_initial_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.run_initial_setup" title="Permalink to this definition"></a></dt>
<dd><p>This is triggered by the amp protocol when the connection
to the portal has been established.
This attempts to run the initial_setup script of the server.
It returns if this is not the first time the server starts.
Once finished the last_initial_setup_step is set to done</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.create_default_channels">
<code class="sig-name descname">create_default_channels</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.create_default_channels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.create_default_channels" title="Permalink to this definition"></a></dt>
<dd><p>check so default channels exist on every restart, create if not.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.run_init_hooks">
<code class="sig-name descname">run_init_hooks</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">mode</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.run_init_hooks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.run_init_hooks" title="Permalink to this definition"></a></dt>
<dd><p>Called by the amp client once receiving sync back from Portal</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mode</strong> (<em>str</em>) One of shutdown, reload or reset</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.shutdown">
<code class="sig-name descname">shutdown</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">mode</span><span class="o">=</span><span class="default_value">'reload'</span></em>, <em class="sig-param"><span class="n">_reactor_stopping</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/service.html#EvenniaServerService.shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.shutdown" title="Permalink to this definition"></a></dt>
<dd><p>Shuts down the server from inside it.</p>
<dl class="simple">
<dt>mode - sets the server restart mode.</dt><dd><ul class="simple">
<li><p>reload - server restarts, no “persistent” scripts
are stopped, at_reload hooks called.</p></li>
<li><p>reset - server restarts, non-persistent scripts stopped,
at_shutdown hooks called but sessions will not
be disconnected.</p></li>
<li><p>shutdown - like reset, but server will not auto-restart.</p></li>
</ul>
</dd>
<dt>_reactor_stopping - this is set if server is stopped by a kill</dt><dd><p>command OR this method was already called
once - in both cases the reactor is
dead/stopping already.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.get_info_dict">
<code class="sig-name descname">get_info_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.get_info_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.get_info_dict" title="Permalink to this definition"></a></dt>
<dd><p>Return the server info, for display.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_init">
<code class="sig-name descname">at_server_init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_init" title="Permalink to this definition"></a></dt>
<dd><p>This is called first when the server is starting, before any other hooks, regardless of how its starting.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_start">
<code class="sig-name descname">at_server_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_start" title="Permalink to this definition"></a></dt>
<dd><p>This is called every time the server starts up, regardless of
how it was shut down.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_stop">
<code class="sig-name descname">at_server_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_stop" title="Permalink to this definition"></a></dt>
<dd><p>This is called just before a server is shut down, regardless
of it is fore a reload, reset or shutdown.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_reload_start">
<code class="sig-name descname">at_server_reload_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_reload_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_reload_start" title="Permalink to this definition"></a></dt>
<dd><p>This is called only when server starts back up after a reload.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_post_portal_sync">
<code class="sig-name descname">at_post_portal_sync</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">mode</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_post_portal_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_post_portal_sync" title="Permalink to this definition"></a></dt>
<dd><p>This is called just after the portal has finished syncing back data to the server
after reconnecting.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mode</strong> (<em>str</em>) One of reload, reset or shutdown.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_reload_stop">
<code class="sig-name descname">at_server_reload_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_reload_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_reload_stop" title="Permalink to this definition"></a></dt>
<dd><p>This is called only time the server stops before a reload.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_cold_start">
<code class="sig-name descname">at_server_cold_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_cold_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_cold_start" title="Permalink to this definition"></a></dt>
<dd><p>This is called only when the server starts “cold”, i.e. after a
shutdown or a reset.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.service.EvenniaServerService.at_server_cold_stop">
<code class="sig-name descname">at_server_cold_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/service.html#EvenniaServerService.at_server_cold_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.service.EvenniaServerService.at_server_cold_stop" title="Permalink to this definition"></a></dt>
<dd><p>This is called only when the server goes down due to a shutdown or reset.</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.session.html" title="evennia.server.session"
>next</a> |</li>
<li class="right" >
<a href="evennia.server.serversession.html" title="evennia.server.serversession"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.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-this"><a href="">evennia.server.service</a></li>
</ul>
</div>
<div class="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</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>