/Aurora/Framework/Modules/IWorldComm.cs
C# | 113 lines | 38 code | 11 blank | 64 comment | 0 complexity | 6851f1a32870bf8c236be28ecdbae4e7 MD5 | raw file
1/* 2 * Copyright (c) Contributors, http://aurora-sim.org/, 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 Aurora-Sim 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 28using Aurora.Framework.ClientInterfaces; 29using OpenMetaverse; 30using OpenMetaverse.StructuredData; 31 32namespace Aurora.Framework.Modules 33{ 34 public interface IWorldCommListenerInfo 35 { 36 OSD GetSerializationData(); 37 UUID GetItemID(); 38 UUID GetHostID(); 39 int GetChannel(); 40 int GetHandle(); 41 string GetMessage(); 42 string GetName(); 43 bool IsActive(); 44 void Deactivate(); 45 void Activate(); 46 UUID GetID(); 47 } 48 49 public interface IWorldComm 50 { 51 /// <summary> 52 /// Create a listen event callback with the specified filters. 53 /// The parameters localID,itemID are needed to uniquely identify 54 /// the script during 'peek' time. Parameter hostID is needed to 55 /// determine the position of the script. 56 /// </summary> 57 /// <param name="itemID">UUID of the script engine</param> 58 /// <param name="hostID">UUID of the SceneObjectPart</param> 59 /// <param name="channel">channel to listen on</param> 60 /// <param name="name">name to filter on</param> 61 /// <param name="id">key to filter on (user given, could be totally faked)</param> 62 /// <param name="msg">msg to filter on</param> 63 /// <returns>number of the scripts handle</returns> 64 int Listen(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg); 65 66 /// <summary> 67 /// This method scans over the objects which registered an interest in listen callbacks. 68 /// For everyone it finds, it checks if it fits the given filter. If it does, then 69 /// enqueue the message for delivery to the objects listen event handler. 70 /// The enqueued ListenerInfo no longer has filter values, but the actually trigged values. 71 /// Objects that do an llSay have their messages delivered here and for nearby avatars, 72 /// the OnChatFromClient event is used. 73 /// </summary> 74 /// <param name="type">type of delvery (whisper,say,shout or regionwide)</param> 75 /// <param name="channel">channel to sent on</param> 76 /// <param name="name">name of sender (object or avatar)</param> 77 /// <param name="id">key of sender (object or avatar)</param> 78 /// <param name="msg">msg to sent</param> 79 void DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, string msg); 80 81 void DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, UUID to, string msg); 82 void DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, string msg, float Range); 83 84 /// <summary> 85 /// Are there any listen events ready to be dispatched? 86 /// </summary> 87 /// <returns>boolean indication</returns> 88 bool HasMessages(); 89 90 /// <summary> 91 /// Are there any listeners currently? 92 /// </summary> 93 /// <returns></returns> 94 bool HasListeners(); 95 96 /// <summary> 97 /// Pop the first availlable listen event from the queue 98 /// </summary> 99 /// <returns>ListenerInfo with filter filled in</returns> 100 IWorldCommListenerInfo GetNextMessage(); 101 102 void ListenControl(UUID itemID, int handle, int active); 103 void ListenRemove(UUID itemID, int handle); 104 void DeleteListener(UUID itemID); 105 OSD GetSerializationData(UUID itemID, UUID primID); 106 107 void CreateFromData(UUID itemID, UUID hostID, 108 OSD data); 109 110 void AddBlockedChannel(int channel); 111 void RemoveBlockedChannel(int channel); 112 } 113}