New (Daemon constructor): Difference between revisions

From m204wiki
Jump to navigation Jump to search
Line 8: Line 8:
<tr><th>%daemon</th>
<tr><th>%daemon</th>
<td>A previously defined <var>[[Daemon class|Daemon]]</var> object. </td></tr>
<td>A previously defined <var>[[Daemon class|Daemon]]</var> object. </td></tr>
<tr><th><var>[%(Daemon)]</var></th>
<tr><th><var>[%(Daemon):]</var></th>
<td>The optional class name in parentheses denotes a <var>[[Notation conventions for methods#Constructors|Constructor]]</var>. See [[#Usage notes|"Usage notes"]], below, for more information about invoking a <var>Daemon</var> <var>Constructor</var>.</td></tr>
<td>The optional class name in parentheses denotes a <var>[[Notation conventions for methods#Constructors|Constructor]]</var>. See [[#Usage notes|"Usage notes"]], below, for more information about invoking a <var>Daemon</var> <var>Constructor</var>.</td></tr>
<tr><th><var>CopyGlobals</var></th>
<tr><th><var>CopyGlobals</var></th>

Revision as of 20:24, 30 November 2011

Create a new Daemon (Daemon class)

New creates a new Daemon object instance. It has two, optional, arguments.

Syntax

%daemon = [%(Daemon):]New[( [CopyGlobals= boolean], [Transactional= boolean], - [OpenAll= boolean])] Throws MaxDaemExceeded, NoFreeDaemons, DaemonLost

Syntax terms

%daemon A previously defined Daemon object.
[%(Daemon):] The optional class name in parentheses denotes a Constructor. See "Usage notes", below, for more information about invoking a Daemon Constructor.
CopyGlobals An optional, but NameRequired parameter whose value is a Boolean enumeration.
The default is False: do not copy the existing global variable information from the master thread; use default GTBL-creation settings for the daemon.
If set to True:
  • The GTBL server table is set to the same size on the daemon as it is on the master thread.
  • The GTBLHASH and GTBLPCT parameters on the daemon thread are set to the same values as on the master thread.
  • Only unstructured globals (globals created by $setg or $getg) and Perm Global Images in the master thread GTBL are copied to the daemon (Global Foundsets/Lists, Global Screens, and any Temp Global items are not copied).
Transactional An optional, but NameRequired parameter whose value is a Boolean enumeration.
  • If set to True, the daemon is transactional, with the master and daemon threads share a single updating transaction.
  • If set to False, the default, the daemon is non-transactional.
This parameter is new as of Sirius Mods Version 6.8.

Exceptions

This subroutine can throw the following exceptions:

NoFreeDaemons
If there are no daemon threads available to service the object, a NoFreeDaemons exception is thrown. This exception will only be thrown in Sirius Mods Version 7.2 and later.

Usage notes

  • As described in "Using New or other Constructors", New can be invoked with no object, with an explicit class name, or with an object variable in the class, even if that object is Null:

    %daemon = new %daemon = %(Daemon):new %daemon = %daemon:new

  • New not only creates a Daemon object in the user tables, but it also finds a free sdaemon thread and dedicates it to the issuing user. If no sdaemon threads are available, the request is cancelled.
  • The number of daemons allowed per master thread is limited by the MAXDAEM system parameter, whose default value is 1.
  • If you specify CopyGlobals=True, and if there is insufficient server space (say, if daemons start out with very big tables, except for GTBL, and the master has a very big GTBL), the daemon fails during initialization.

See also