Melanie wrote: > 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.
+1. Yes, let's properly discuss and design this when it becomes necessary. I was actually waiting for Homer to do the region module interface changes he was talking about first. Possibly this could be combined though I also didn't want to oblige Homer to have to think about too many things at once and risk making a doable task into one which became too daunting to bite off. > > Melanie > > Justin Clark-Casey wrote: >> [email protected] 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 >>> [email protected] >>> https://lists.berlios.de/mailman/listinfo/opensim-commits >>> >> > _______________________________________________ > Opensim-dev mailing list > [email protected] > https://lists.berlios.de/mailman/listinfo/opensim-dev > -- justincc Justin Clark-Casey http://justincc.wordpress.com _______________________________________________ Opensim-dev mailing list [email protected] https://lists.berlios.de/mailman/listinfo/opensim-dev
