ReturnToMaster (Daemon subroutine): Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (Automatically generated page update)
 
mNo edit summary
Line 1: Line 1:
{{Template:Daemon:ReturnToMaster subtitle}}
{{Template:Daemon:ReturnToMaster subtitle}}


This page is [[under construction]].
This method returns control from a daemon thread to its master thread inside a User Language request.
==Syntax==
==Syntax==
{{Template:Daemon:ReturnToMaster syntax}}
{{Template:Daemon:ReturnToMaster syntax}}
Line 10: Line 10:
</table>
</table>
==Usage notes==
==Usage notes==
<ul>
<li>If not issued on a daemon thread, <var>ReturnToMaster</var> results in a request cancellation.</li>
<li>A daemon can return objects to the master thread before invoking <var>ReturnToMaster</var> with the [[ReturnObject (Daemon subroutine)|ReturnObject]] and [[ReturnInfoObject (Daemon subroutine)|ReturnInfoObject]] methods.</li>
<li>The master thread would return control with the [[Continue (Daemon function)|Continue]], [[ContinueAsynchronously (Daemon subroutine)|ContinueAsynchronously]], or [[ContinueIndependently (Daemon subroutine)|ContinueIndependently]] method. These methods can be used to pass an object to the daemon thread.</li>
<li>As with the <var>Run</var> methods, a daemon thread can retrieve the object passed to it by a <var>Continue</var> method with the [[GetInputObject (Daemon subroutine)|GetInputObject]] method.
==Examples==
==Examples==
In the following silly example, a daemon thread adds numbers passed to it in an XmlDoc by the master thread and returns the result in another XmlDoc:
<p class="code">b
%doc    is object xmlDoc
%i      is float
%nodes  is object xmlNodelist
%result  is float
repeat forever
  %doc = new
  %doc:addElement('result', %result)
  %(daemon):returnToMaster
  %(daemon):getInputObject(%doc)
  %nodes = %doc:selectNodes('/sum/number')
  if %nodes:count eq 0 then loop end; end if
  %result = 0
  for %i from 1 to %nodes:count
      %result = %nodes(%i):value
  end for
end repeat
end
</p>
==See also==
==See also==
{{Template:Daemon:ReturnToMaster footer}}
{{Template:Daemon:ReturnToMaster footer}}

Revision as of 19:17, 13 May 2012

Return control to the master thread (Daemon class)

[Introduced in Sirius Mods 8.1]


This method returns control from a daemon thread to its master thread inside a User Language request.

Syntax

%(Daemon):ReturnToMaster

Syntax terms

%(Daemon) The class name in parentheses denotes a shared method. ReturnToMaster can also be invoked via a Daemon object variable, which may be Null.

Usage notes

  • If not issued on a daemon thread, ReturnToMaster results in a request cancellation.
  • A daemon can return objects to the master thread before invoking ReturnToMaster with the ReturnObject and ReturnInfoObject methods.
  • The master thread would return control with the Continue, ContinueAsynchronously, or ContinueIndependently method. These methods can be used to pass an object to the daemon thread.
  • As with the Run methods, a daemon thread can retrieve the object passed to it by a Continue method with the GetInputObject method.

    Examples

    In the following silly example, a daemon thread adds numbers passed to it in an XmlDoc by the master thread and returns the result in another XmlDoc:

    b %doc is object xmlDoc %i is float %nodes is object xmlNodelist %result is float repeat forever %doc = new %doc:addElement('result', %result)  %(daemon):returnToMaster  %(daemon):getInputObject(%doc) %nodes = %doc:selectNodes('/sum/number') if %nodes:count eq 0 then loop end; end if %result = 0 for %i from 1 to %nodes:count %result = %nodes(%i):value end for end repeat end

    See also