evennia/docs/1.x/api/evennia.server.server.html
2023-12-20 19:01:27 +01:00

280 lines
No EOL
18 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.server &#8212; Evennia 1.0 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.serversession" href="evennia.server.serversession.html" />
<link rel="prev" title="evennia.server.models" href="evennia.server.models.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.serversession.html" title="evennia.server.serversession"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.server.models.html" title="evennia.server.models"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0</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.server</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.models.html"
title="previous chapter">evennia.server.models</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.server.serversession.html"
title="next chapter">evennia.server.serversession</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.server.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com">Home page</a> </li>
<li><a href="https://github.com/evennia/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.server">
<span id="evennia-server-server"></span><h1>evennia.server.server<a class="headerlink" href="#module-evennia.server.server" title="Permalink to this headline"></a></h1>
<p>This module implements the main Evennia server process, the core of the game
engine.</p>
<p>This module should be started with the twistd executable since it sets up all
the networking features. (this is done automatically by
evennia/server/server_runner.py).</p>
<dl class="py class">
<dt id="evennia.server.server.Evennia">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.server.</code><code class="sig-name descname">Evennia</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">application</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The main Evennia server handler. This object sets up the database and
tracks and interlinks all the twisted network services that make up
evennia.</p>
<dl class="py method">
<dt id="evennia.server.server.Evennia.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">application</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Setup the server.</p>
<p>application - an instantiated Twisted application</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.server.Evennia.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/server.html#Evennia.sqlite3_prep"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.update_defaults"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.run_initial_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.create_default_channels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.run_init_hooks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.get_info_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_reload_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_post_portal_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_reload_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_cold_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.server.Evennia.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/server.html#Evennia.at_server_cold_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.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.serversession.html" title="evennia.server.serversession"
>next</a> |</li>
<li class="right" >
<a href="evennia.server.models.html" title="evennia.server.models"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0</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.server</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2022, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>