[Opensim-dev] [Opensim-commits] r8496 - in trunk/OpenSim/Region: CoreModules/Avatar/InstantMessage Framework/Interfaces
Justin Clark-Casey
jjustincc at googlemail.com
Thu Feb 19 14:35:13 UTC 2009
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
>
--
justincc
Justin Clark-Casey
http://justincc.wordpress.com
More information about the Opensim-dev
mailing list