OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
Listener.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) Contributors, http://opensimulator.org/
3  * See CONTRIBUTORS.TXT for a full list of copyright holders.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the OpenSimulator Project nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 using System;
29 using log4net;
30 using OpenMetaverse;
31 using OpenSim.Region.Framework.Interfaces;
32 using OpenSim.Region.CoreModules.Scripting.WorldComm;
33 using OpenSim.Region.ScriptEngine.Interfaces;
34 using OpenSim.Region.ScriptEngine.Shared;
35 using OpenSim.Region.ScriptEngine.Shared.Api;
36 
37 namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
38 {
39  public class Listener
40  {
41  // private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
42 
44 
45  private IWorldComm m_commsPlugin;
46 
47  public int ListenerCount
48  {
49  get { return m_commsPlugin.ListenerCount; }
50  }
51 
52  public Listener(AsyncCommandManager CmdManager)
53  {
54  m_CmdManager = CmdManager;
55  m_commsPlugin = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
56  }
57 
58  public void CheckListeners()
59  {
60  if (m_CmdManager.m_ScriptEngine.World == null)
61  return;
62 
63  if (m_commsPlugin != null)
64  {
65  while (m_commsPlugin.HasMessages())
66  {
67  ListenerInfo lInfo = (ListenerInfo)m_commsPlugin.GetNextMessage();
68 
69  //Deliver data to prim's listen handler
70  object[] resobj = new object[]
71  {
72  new LSL_Types.LSLInteger(lInfo.GetChannel()),
73  new LSL_Types.LSLString(lInfo.GetName()),
74  new LSL_Types.LSLString(lInfo.GetID().ToString()),
75  new LSL_Types.LSLString(lInfo.GetMessage())
76  };
77 
78  foreach (IScriptEngine e in m_CmdManager.ScriptEngines)
79  {
80  e.PostScriptEvent(
81  lInfo.GetItemID(), new EventParams(
82  "listen", resobj,
83  new DetectParams[0]));
84  }
85  }
86  }
87  }
88 
89  public Object[] GetSerializationData(UUID itemID)
90  {
91  if (m_commsPlugin != null)
92  return m_commsPlugin.GetSerializationData(itemID);
93  else
94  return new Object[]{};
95  }
96 
97  public void CreateFromData(uint localID, UUID itemID, UUID hostID,
98  Object[] data)
99  {
100  if (m_commsPlugin != null)
101  m_commsPlugin.CreateFromData(localID, itemID, hostID, data);
102  }
103  }
104 }
Handles LSL commands that takes long time and returns an event, for example timers, HTTP requests, etc.
An interface for a script API module to communicate with the engine it's running under ...
Listener(AsyncCommandManager CmdManager)
Definition: Listener.cs:52
Holds all the data required to execute a scripting event.
Definition: Helpers.cs:281
void CreateFromData(uint localID, UUID itemID, UUID hostID, Object[] data)
Definition: Listener.cs:97