PageRenderTime 9ms CodeModel.GetById 6ms app.highlight 2ms RepoModel.GetById 0ms app.codeStats 0ms

/Aurora/Framework/Modules/IWorldComm.cs

https://bitbucket.org/VirtualReality/software-testing
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}