http://opensimulator.org/index.php?title=Event_queue&feed=atom&action=historyEvent queue - Revision history2024-03-28T10:15:58ZRevision history for this page on the wikiMediaWiki 1.19.9http://opensimulator.org/index.php?title=Event_queue&diff=40529&oldid=prevAcryline at 10:04, 3 March 20152015-03-03T10:04:17Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 10:04, 3 March 2015</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{Languages|Event queue}}</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer.  In this way, a simulator can directly send data back to a viewer.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer.  In this way, a simulator can directly send data back to a viewer.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
</table>Acrylinehttp://opensimulator.org/index.php?title=Event_queue&diff=39465&oldid=prevJustincc: /* Polling */2014-08-11T23:15:28Z<p><span dir="auto"><span class="autocomment">Polling</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 23:15, 11 August 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 23:</td>
<td colspan="2" class="diff-lineno">Line 23:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>==Polling==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>==Polling==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The PollServiceRequestManager in OpenSim.Framework.Servers.HttpServer sets up 3 PollServiceWorkerThreads and 1 LongPollServiceWatcherThread to handle poll requests such as the EventQueue.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The PollServiceRequestManager in OpenSim.Framework.Servers.HttpServer sets up 3 PollServiceWorkerThreads and 1 LongPollServiceWatcherThread to handle poll requests such as the EventQueue.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">===LongPollServiceWatcherThread===</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Every 500ms checks poll requests to see if there are events waiting to be sent back or if the timeout has expired.</ins></div></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39464&oldid=prevJustincc at 22:57, 11 August 20142014-08-11T22:57:12Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 22:57, 11 August 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 20:</td>
<td colspan="2" class="diff-lineno">Line 20:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue a second after the previous response.  In addition, if the server returns an error then there is a 15 second wait until the queue is polled again.  However, this needs to be confirmed by checking the behaviour of a current viewer.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue a second after the previous response.  In addition, if the server returns an error then there is a 15 second wait until the queue is polled again.  However, this needs to be confirmed by checking the behaviour of a current viewer.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">==Polling==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">The PollServiceRequestManager in OpenSim.Framework.Servers.HttpServer sets up 3 PollServiceWorkerThreads and 1 LongPollServiceWatcherThread to handle poll requests such as the EventQueue.</ins></div></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39225&oldid=prevJustincc at 17:30, 27 June 20142014-06-27T17:30:35Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 17:30, 27 June 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 19:</td>
<td colspan="2" class="diff-lineno">Line 19:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>One would want to pick message names that are unlikely to clash with any future Linden Lab additions or other OpenSimulator extensions.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>One would want to pick message names that are unlikely to clash with any future Linden Lab additions or other OpenSimulator extensions.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue a second after the previous response.  In addition, if the server returns an error then there is a 15 second wait until the queue is polled again.  However, this needs to be confirmed by checking the behaviour of a current viewer<del class="diffchange diffchange-inline">.specific testing</del>.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue a second after the previous response.  In addition, if the server returns an error then there is a 15 second wait until the queue is polled again.  However, this needs to be confirmed by checking the behaviour of a current viewer.</div></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39224&oldid=prevJustincc at 17:29, 27 June 20142014-06-27T17:29:54Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 17:29, 27 June 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 19:</td>
<td colspan="2" class="diff-lineno">Line 19:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>One would want to pick message names that are unlikely to clash with any future Linden Lab additions or other OpenSimulator extensions.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>One would want to pick message names that are unlikely to clash with any future Linden Lab additions or other OpenSimulator extensions.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue <del class="diffchange diffchange-inline">every </del>second, <del class="diffchange diffchange-inline">though that </del>needs to be <del class="diffchange diffchange-inline">re-</del>confirmed <del class="diffchange diffchange-inline">via </del>specific testing.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue <ins class="diffchange diffchange-inline">a </ins>second <ins class="diffchange diffchange-inline">after the previous response.  In addition</ins>, <ins class="diffchange diffchange-inline">if the server returns an error then there is a 15 second wait until the queue is polled again.  However, this </ins>needs to be confirmed <ins class="diffchange diffchange-inline">by checking the behaviour of a current viewer.</ins>specific testing.</div></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39220&oldid=prevJustincc at 19:26, 26 June 20142014-06-26T19:26:05Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 19:26, 26 June 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">=Introduction=</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer.  In this way, a simulator can directly send data back to a viewer.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer.  In this way, a simulator can directly send data back to a viewer.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39212&oldid=prevJustincc: /* Introduction */2014-06-26T18:37:00Z<p><span dir="auto"><span class="autocomment">Introduction</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 18:37, 26 June 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 6:</td>
<td colspan="2" class="diff-lineno">Line 6:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>In OpenSimulator, the event queue is implemented by the EventQueueGetModule in the OpenSim.Region.ClientStack.LindenCaps package.  This fulfils the interface IEventQueue.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>In OpenSimulator, the event queue is implemented by the EventQueueGetModule in the OpenSim.Region.ClientStack.LindenCaps package.  This fulfils the interface IEventQueue.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">You can see examples of existing messages (e.g. PlacesReplyMessage, EnableSimulator) in the EventQueueGetModule and EventQueueHelper message constrruction class.  These appear to be pretty much undocumented on the Linden Lab side.  They eventually need documentation here.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>As events are distinguished by a message parameter, one could construct an arbitary for a modified client/viewer that can recognize it with the EventQueueHelper.BuildEvent() static method and then inject that data by obtaining a reference to EventQueueGetModule, for example with</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>As events are distinguished by a message parameter, one could construct an arbitary for a modified client/viewer that can recognize it with the EventQueueHelper.BuildEvent() static method and then inject that data by obtaining a reference to EventQueueGetModule, for example with</div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 16:</td>
<td colspan="2" class="diff-lineno">Line 18:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[[OpenStructuredData]] (OSD) is the name of a data format that is a superset of [http://wiki.secondlife.com/wiki/LLSD Linden Lab Structured Data (LLSD)].  It's XML which contains some information about embedded types.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[[OpenStructuredData]] (OSD) is the name of a data format that is a superset of [http://wiki.secondlife.com/wiki/LLSD Linden Lab Structured Data (LLSD)].  It's XML which contains some information about embedded types.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">One would want to pick message names that are unlikely to clash with any future Linden Lab additions or other OpenSimulator extensions.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue every second, though that needs to be re-confirmed via specific testing.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue every second, though that needs to be re-confirmed via specific testing.</div></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39211&oldid=prevJustincc: /* Introduction */2014-06-26T18:32:35Z<p><span dir="auto"><span class="autocomment">Introduction</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 18:32, 26 June 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 14:</td>
<td colspan="2" class="diff-lineno">Line 14:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>     eq.Enqueue(EventQueueHelper.BuildEvent("myevent", eventBodyOsd));</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>     eq.Enqueue(EventQueueHelper.BuildEvent("myevent", eventBodyOsd));</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div></source></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div></source></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">[[OpenStructuredData]] (OSD) is the name of a data format that is a superset of [http://wiki.secondlife.com/wiki/LLSD Linden Lab Structured Data (LLSD)].  It's XML which contains some information about embedded types.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue every second, though that needs to be re-confirmed via specific testing.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>I believe (justincc) that the viewer polls the event queue every second, though that needs to be re-confirmed via specific testing.</div></td></tr>
</table>Justincchttp://opensimulator.org/index.php?title=Event_queue&diff=39210&oldid=prevJustincc: Created page with "=Introduction= The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer...."2014-06-26T18:29:54Z<p>Created page with "=Introduction= The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer...."</p>
<p><b>New page</b></p><div>=Introduction=<br />
<br />
The event queue is a Linden Lab viewer protocol mechanism whereby the simulator can place messages on a queue which is regularly TCP polled by a client/viewer. In this way, a simulator can directly send data back to a viewer.<br />
<br />
The Linden Lab wiki [http://wiki.secondlife.com/wiki/Second_Life_Grid_Protocols/Foundation#Event_Queue has a very short description of the event queue] but no further detail.<br />
<br />
In OpenSimulator, the event queue is implemented by the EventQueueGetModule in the OpenSim.Region.ClientStack.LindenCaps package. This fulfils the interface IEventQueue.<br />
<br />
As events are distinguished by a message parameter, one could construct an arbitary for a modified client/viewer that can recognize it with the EventQueueHelper.BuildEvent() static method and then inject that data by obtaining a reference to EventQueueGetModule, for example with<br />
<br />
<source lang="csharp"><br />
IEventQueue eq = scene.RequestModuleInterface<IEventQueue>();<br />
if (eq != null)<br />
eq.Enqueue(EventQueueHelper.BuildEvent("myevent", eventBodyOsd));<br />
</source><br />
<br />
I believe (justincc) that the viewer polls the event queue every second, though that needs to be re-confirmed via specific testing.</div>Justincc