ReturnToMaster (Daemon subroutine): Difference between revisions
m (Automatically generated page update) |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{Template:Daemon:ReturnToMaster subtitle}} | {{Template:Daemon:ReturnToMaster subtitle}} | ||
This | 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