Thanks for the response Gato.
What I would like to do is use Wildfire as a casual game server. Game flavors (e.g. chess) would be implemented as Wildfire plugins. Each instance of a game would be implemented as a MUC. And ideally, the client game implementation would be implemented as a Spark plugin. Since a game instance is basically a conference with a few enhancements, game plugins could focus on the game implementation and leverage Wildfire for all of the communications.
I thought of a number of ways to enhance the muc implementation to provide support for the game plugin, but most of them would require changes to the core implementation of Wildfire. I thought as a first pass, I would like to stay within the boundaries of a plugin. The one way I can currently do that is to duplicate the entire muc implementation in the plugin itself, then register it in place of the standard implementation. I tried this last night and it seems to work. However, in duplicating the muc implementation, I ran into those three interface gotchas.
Thanks for mentioning that the muc interface may collapse in to the implementation. One of the other implementation ideas I had would be to create a muc listener interface. A plugin could then register as a muc listener and receive muc events such as: muc created, muc destroyed, user joined, and user quit. Standard muc functionality would be managed by the core, but could be enhanced by a plugin.
I am new to this system, so I am sure there are some other, better ways. I would be appreciate suggestions from anyone.
Finally, I’'ll diff out my files and post the three modifications in my next post to this thread.