[Opensim-dev] [Opensim-commits] r8496 - in trunk/OpenSim/Region: CoreModules/Avatar/InstantMessage Framework/Interfaces
Melanie
melanie at t-data.com
Thu Feb 19 15:07:25 UTC 2009
As a concept, +1. The config file setup makes it so it will never
happen by default and I'm good with it being a conscious user action.
The implementation should be discussed, that may be possible to
include in/link with the region module interface revamp.
Melanie
Justin Clark-Casey wrote:
> mw at opensimulator.org wrote:
>> Author: mw
>> Date: 2009-02-19 04:38:17 -0800 (Thu, 19 Feb 2009)
>> New Revision: 8496
>>
>> Modified:
>> trunk/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
>> trunk/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs
>> Log:
>> reverted last revision, until we decide how to handle capturing IM's
>
> mw, was this in support of the jabber/xmpp bridge that you've coded?
>
> If so, I encountered a similar problem while doing the parallel selves message bridge. My 'solution' was to entirely
> replace the MessageTransfer (and chat) modules, which is just nasty.
>
> My thoughts for a long term solution were to
>
> a) Make some event calls such as those on EventManager.OnIncomingInstantMessage require a boolean to be returned by each
> call (which I believe is possible in c#). This boolean would signal that the message has already been completely
> handled, and that it shouldn't be passed on to other modules.
>
> b) Define an 'order' in which modules are loaded in some config file.
>
> With these two things, an xmpp bridge module could be loaded before the 'ordinary' im module. If it gets an incoming im
> which it can handle, then it handles it and returns true (to signal that it shouldn't be passed on to any other module).
> If it can't handle it then it simply returns false and the message goes through to the next module on the list (in
> this case, the 'ordinary' module).
>
> I like this solution because I think that it allows composibility - you can load lots of different
> OnIncomingInstantMessage handling modules without any of them having to be aware of any other.
>
> What do you (or others) think? Are there better approaches?
>
>>
>> Modified: trunk/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
>> ===================================================================
>> --- trunk/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs 2009-02-19 11:54:53 UTC (rev 8495)
>> +++ trunk/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs 2009-02-19 12:38:17 UTC (rev 8496)
>> @@ -48,10 +48,6 @@
>> private List<Scene> m_Scenes = new List<Scene>();
>> private Dictionary<UUID, ulong> m_UserRegionMap = new Dictionary<UUID, ulong>();
>>
>> - public event ExternalHandleIM OnExternalIMCapture;
>> -
>> - private ExternalHandleIM handlerExternalIMCapture;
>> -
>> public void Initialise(Scene scene, IConfigSource config)
>> {
>> IConfig cnf = config.Configs["Messaging"];
>> @@ -99,16 +95,6 @@
>>
>> public void SendInstantMessage(GridInstantMessage im, MessageResultNotification result)
>> {
>> - handlerExternalIMCapture = OnExternalIMCapture;
>> - if (handlerExternalIMCapture != null)
>> - {
>> - if (handlerExternalIMCapture(im))
>> - {
>> - result(true);
>> - return;
>> - }
>> - }
>> -
>> UUID toAgentID = new UUID(im.toAgentID);
>>
>> m_log.DebugFormat("[INSTANT MESSAGE]: Attempting delivery of IM from {0} to {1}", im.fromAgentName, toAgentID.ToString());
>>
>> Modified: trunk/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs
>> ===================================================================
>> --- trunk/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs 2009-02-19 11:54:53 UTC (rev 8495)
>> +++ trunk/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs 2009-02-19 12:38:17 UTC (rev 8496)
>> @@ -30,12 +30,9 @@
>> namespace OpenSim.Region.Framework.Interfaces
>> {
>> public delegate void MessageResultNotification(bool success);
>> - public delegate bool ExternalHandleIM(GridInstantMessage im);
>> -
>> +
>> public interface IMessageTransferModule
>> {
>> - event ExternalHandleIM OnExternalIMCapture;
>> -
>> void SendInstantMessage(GridInstantMessage im, MessageResultNotification result);
>> }
>> }
>>
>> _______________________________________________
>> Opensim-commits mailing list
>> Opensim-commits at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-commits
>>
>
>
More information about the Opensim-dev
mailing list