aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules/InstantMessageModule.cs')
-rw-r--r--OpenSim/Region/Environment/Modules/InstantMessageModule.cs43
1 files changed, 40 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
index 2598e54..412d8c3 100644
--- a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
+++ b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
@@ -26,18 +26,55 @@
26* 26*
27*/ 27*/
28 28
29using System.Collections.Generic;
29using OpenSim.Region.Environment.Interfaces; 30using OpenSim.Region.Environment.Interfaces;
30using OpenSim.Region.Environment.Scenes; 31using OpenSim.Region.Environment.Scenes;
32using OpenSim.Framework.Console;
31 33
32namespace OpenSim.Region.Environment.Modules 34namespace OpenSim.Region.Environment.Modules
33{ 35{
34 public class InstantMessageModule : IRegionModule 36 public class InstantMessageModule : IRegionModule
35 { 37 {
36 private Scene m_scene; 38 private List<Scene> m_scenes;
39 private LogBase m_log;
37 40
38 public void Initialise(Scene scene) 41 public void Initialise(Scene scene)
39 { 42 {
40 m_scene = scene; 43 if (!m_scenes.Contains(scene))
44 m_scenes.Add(scene);
45
46 scene.EventManager.OnNewClient += OnNewClient;
47 m_log = OpenSim.Framework.Console.MainLog.Instance;
48 }
49
50 void OnNewClient(OpenSim.Framework.Interfaces.IClientAPI client)
51 {
52 client.OnInstantMessage += OnInstantMessage;
53 }
54
55 void OnInstantMessage(libsecondlife.LLUUID fromAgentID,
56 libsecondlife.LLUUID fromAgentSession, libsecondlife.LLUUID toAgentID,
57 libsecondlife.LLUUID imSessionID, uint timestamp, string fromAgentName,
58 string message, byte dialog)
59 {
60 // TODO: Remove after debugging. Privacy implications.
61 m_log.Verbose("IM",fromAgentName + ": " + message);
62
63 foreach (Scene m_scene in m_scenes)
64 {
65 if (m_scene.Entities.ContainsKey(toAgentID) && m_scene.Entities[toAgentID] is ScenePresence)
66 {
67 // Local Message
68 ScenePresence user = (ScenePresence)m_scene.Entities[toAgentID];
69 user.ControllingClient.SendInstantMessage(fromAgentID, fromAgentSession, message,
70 toAgentID, imSessionID, user.Firstname + " " + user.Lastname, dialog, timestamp);
71
72 // Message sent
73 return;
74 }
75 }
76
77 // Still here, try send via Grid
41 } 78 }
42 79
43 public void PostInitialise() 80 public void PostInitialise()
@@ -55,7 +92,7 @@ namespace OpenSim.Region.Environment.Modules
55 92
56 public bool IsSharedModule 93 public bool IsSharedModule
57 { 94 {
58 get { return false; } 95 get { return true; }
59 } 96 }
60 } 97 }
61} 98}