Make the IM and friends modules optional. Clean up some code that dealt
with the old Grid Instant Message over OGS1. Refactor the EventManager to be independent of the rigid module structure design imposed by the current implementation. Message routing is now done in the destination module rather than in the event manager. This way, more or less granular solutions are possible without core changes.0.6.0-stable
parent
9299be0080
commit
388c053dcb
|
@ -67,7 +67,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
|
||||||
m_scene.Add(scene);
|
m_scene.Add(scene);
|
||||||
}
|
}
|
||||||
scene.EventManager.OnNewClient += OnNewClient;
|
scene.EventManager.OnNewClient += OnNewClient;
|
||||||
scene.EventManager.OnGridInstantMessageToFriendsModule += OnGridInstantMessage;
|
scene.EventManager.OnGridInstantMessage += OnGridInstantMessage;
|
||||||
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
|
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
|
||||||
scene.EventManager.OnMakeChildAgent += MakeChildAgent;
|
scene.EventManager.OnMakeChildAgent += MakeChildAgent;
|
||||||
scene.EventManager.OnClientClosed += ClientLoggedOut;
|
scene.EventManager.OnClientClosed += ClientLoggedOut;
|
||||||
|
@ -620,8 +620,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
|
||||||
// TODO: Inform the client that the ExFriend is offline
|
// TODO: Inform the client that the ExFriend is offline
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGridInstantMessage(GridInstantMessage msg)
|
private void OnGridInstantMessage(GridInstantMessage msg, InstantMessageReceiver whichModule)
|
||||||
{
|
{
|
||||||
|
if ((whichModule & InstantMessageReceiver.FriendsModule) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
// Trigger the above event handler
|
// Trigger the above event handler
|
||||||
OnInstantMessage(null, new UUID(msg.fromAgentID), new UUID(msg.fromAgentSession),
|
OnInstantMessage(null, new UUID(msg.fromAgentID), new UUID(msg.fromAgentSession),
|
||||||
new UUID(msg.toAgentID), new UUID(msg.imSessionID), msg.timestamp, msg.fromAgentName,
|
new UUID(msg.toAgentID), new UUID(msg.imSessionID), msg.timestamp, msg.fromAgentName,
|
||||||
|
|
|
@ -99,7 +99,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
|
||||||
|
|
||||||
scene.EventManager.OnNewClient += OnNewClient;
|
scene.EventManager.OnNewClient += OnNewClient;
|
||||||
scene.EventManager.OnClientClosed += OnClientClosed;
|
scene.EventManager.OnClientClosed += OnClientClosed;
|
||||||
scene.EventManager.OnGridInstantMessageToGroupsModule +=
|
scene.EventManager.OnGridInstantMessage +=
|
||||||
OnGridInstantMessage;
|
OnGridInstantMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,8 +187,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGridInstantMessage(GridInstantMessage msg)
|
private void OnGridInstantMessage(GridInstantMessage msg, InstantMessageReceiver whichModule)
|
||||||
{
|
{
|
||||||
|
if ((whichModule & InstantMessageReceiver.GroupsModule) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
// Trigger the above event handler
|
// Trigger the above event handler
|
||||||
OnInstantMessage(null, new UUID(msg.fromAgentID),
|
OnInstantMessage(null, new UUID(msg.fromAgentID),
|
||||||
new UUID(msg.fromAgentSession),
|
new UUID(msg.fromAgentSession),
|
||||||
|
|
|
@ -54,6 +54,14 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
|
||||||
|
|
||||||
public void Initialise(Scene scene, IConfigSource config)
|
public void Initialise(Scene scene, IConfigSource config)
|
||||||
{
|
{
|
||||||
|
if (config.Configs["Messaging"] != null)
|
||||||
|
{
|
||||||
|
if (config.Configs["Messaging"].GetString(
|
||||||
|
"InstantMessageModule", "InstantMessageModule") !=
|
||||||
|
"InstantMessageModule")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
lock (m_scenes)
|
lock (m_scenes)
|
||||||
{
|
{
|
||||||
if (m_scenes.Count == 0)
|
if (m_scenes.Count == 0)
|
||||||
|
@ -67,7 +75,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
|
||||||
{
|
{
|
||||||
m_scenes.Add(scene);
|
m_scenes.Add(scene);
|
||||||
scene.EventManager.OnNewClient += OnNewClient;
|
scene.EventManager.OnNewClient += OnNewClient;
|
||||||
scene.EventManager.OnGridInstantMessageToIMModule += OnGridInstantMessage;
|
scene.EventManager.OnGridInstantMessage += OnGridInstantMessage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +122,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
|
||||||
byte[] binaryBucket)
|
byte[] binaryBucket)
|
||||||
{
|
{
|
||||||
bool dialogHandledElsewhere
|
bool dialogHandledElsewhere
|
||||||
= ((dialog == 38) || (dialog == 39) || (dialog == 40)
|
= ( dialog == (byte) InstantMessageDialog.FriendshipOffered
|
||||||
|
|| dialog == (byte) InstantMessageDialog.FriendshipAccepted
|
||||||
|
|| dialog == (byte) InstantMessageDialog.FriendshipDeclined
|
||||||
|| dialog == (byte) InstantMessageDialog.InventoryOffered
|
|| dialog == (byte) InstantMessageDialog.InventoryOffered
|
||||||
|| dialog == (byte) InstantMessageDialog.InventoryAccepted
|
|| dialog == (byte) InstantMessageDialog.InventoryAccepted
|
||||||
|| dialog == (byte) InstantMessageDialog.InventoryDeclined
|
|| dialog == (byte) InstantMessageDialog.InventoryDeclined
|
||||||
|
@ -197,8 +207,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="msg"></param>
|
/// <param name="msg"></param>
|
||||||
private void OnGridInstantMessage(GridInstantMessage msg)
|
private void OnGridInstantMessage(GridInstantMessage msg, InstantMessageReceiver which)
|
||||||
{
|
{
|
||||||
|
if ((which & InstantMessageReceiver.IMModule) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
// Trigger the above event handler
|
// Trigger the above event handler
|
||||||
OnInstantMessage(null, new UUID(msg.fromAgentID), new UUID(msg.fromAgentSession),
|
OnInstantMessage(null, new UUID(msg.fromAgentID), new UUID(msg.fromAgentSession),
|
||||||
new UUID(msg.toAgentID), new UUID(msg.imSessionID), msg.timestamp, msg.fromAgentName,
|
new UUID(msg.toAgentID), new UUID(msg.imSessionID), msg.timestamp, msg.fromAgentName,
|
||||||
|
|
|
@ -195,12 +195,6 @@ namespace OpenSim.Region.Environment.Modules.InterGrid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Of interest to this module potentially
|
|
||||||
//scene.EventManager.OnNewClient += OnNewClient;
|
|
||||||
//scene.EventManager.OnGridInstantMessageToFriendsModule += OnGridInstantMessage;
|
|
||||||
// scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
|
|
||||||
//scene.EventManager.OnMakeChildAgent += MakeChildAgent;
|
|
||||||
//scene.EventManager.OnClientClosed += ClientLoggedOut;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
|
|
|
@ -135,13 +135,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public event SignificantClientMovement OnSignificantClientMovement;
|
public event SignificantClientMovement OnSignificantClientMovement;
|
||||||
|
|
||||||
public delegate void NewGridInstantMessage(GridInstantMessage message);
|
public delegate void NewGridInstantMessage(GridInstantMessage message, InstantMessageReceiver whichModule);
|
||||||
|
|
||||||
public event NewGridInstantMessage OnGridInstantMessageToIMModule;
|
public event NewGridInstantMessage OnGridInstantMessage;
|
||||||
|
|
||||||
public event NewGridInstantMessage OnGridInstantMessageToFriendsModule;
|
|
||||||
|
|
||||||
public event NewGridInstantMessage OnGridInstantMessageToGroupsModule;
|
|
||||||
|
|
||||||
public delegate void ClientClosed(UUID clientID);
|
public delegate void ClientClosed(UUID clientID);
|
||||||
|
|
||||||
|
@ -346,8 +342,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
private LandObjectAdded handlerLandObjectAdded = null; //OnLandObjectAdded;
|
private LandObjectAdded handlerLandObjectAdded = null; //OnLandObjectAdded;
|
||||||
private LandObjectRemoved handlerLandObjectRemoved = null; //OnLandObjectRemoved;
|
private LandObjectRemoved handlerLandObjectRemoved = null; //OnLandObjectRemoved;
|
||||||
private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = null; //OnAvatarEnteringNewParcel;
|
private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = null; //OnAvatarEnteringNewParcel;
|
||||||
private NewGridInstantMessage handlerGridInstantMessageToIM = null; //OnGridInstantMessageToIMModule;
|
private NewGridInstantMessage handlerGridInstantMessage = null; //OnGridInstantMessage;
|
||||||
private NewGridInstantMessage handlerGridInstantMessageToFriends = null; //OnGridInstantMessageToFriendsModule;
|
|
||||||
private ClientClosed handlerClientClosed = null; //OnClientClosed;
|
private ClientClosed handlerClientClosed = null; //OnClientClosed;
|
||||||
private OnMakeChildAgentDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
|
private OnMakeChildAgentDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
|
||||||
private OnMakeRootAgentDelegate handlerMakeRootAgent = null; //OnMakeRootAgent;
|
private OnMakeRootAgentDelegate handlerMakeRootAgent = null; //OnMakeRootAgent;
|
||||||
|
@ -635,21 +630,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
///<param name="whichModule">A bit vector containing the modules to send the message to</param>
|
///<param name="whichModule">A bit vector containing the modules to send the message to</param>
|
||||||
public void TriggerGridInstantMessage(GridInstantMessage message, InstantMessageReceiver whichModule)
|
public void TriggerGridInstantMessage(GridInstantMessage message, InstantMessageReceiver whichModule)
|
||||||
{
|
{
|
||||||
if ((whichModule & InstantMessageReceiver.IMModule) != 0)
|
handlerGridInstantMessage = OnGridInstantMessage;
|
||||||
|
if (handlerGridInstantMessage != null)
|
||||||
{
|
{
|
||||||
handlerGridInstantMessageToIM = OnGridInstantMessageToIMModule;
|
handlerGridInstantMessage(message, whichModule);
|
||||||
if (handlerGridInstantMessageToIM != null)
|
|
||||||
{
|
|
||||||
handlerGridInstantMessageToIM(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((whichModule & InstantMessageReceiver.FriendsModule) != 0)
|
|
||||||
{
|
|
||||||
handlerGridInstantMessageToFriends = OnGridInstantMessageToFriendsModule;
|
|
||||||
if (handlerGridInstantMessageToFriends != null)
|
|
||||||
{
|
|
||||||
handlerGridInstantMessageToFriends(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue