aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs
diff options
context:
space:
mode:
authorDr Scofield2008-10-03 14:53:11 +0000
committerDr Scofield2008-10-03 14:53:11 +0000
commit5c0a0bc2e0951745fd52f5c01f2ee2c0aee49a3a (patch)
tree529c2c8e3ea8f1193f2495f905e542ff1462adb6 /OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs
parent* minor: remove warnings (the code cleaners strike again) (diff)
downloadopensim-SC_OLD-5c0a0bc2e0951745fd52f5c01f2ee2c0aee49a3a.zip
opensim-SC_OLD-5c0a0bc2e0951745fd52f5c01f2ee2c0aee49a3a.tar.gz
opensim-SC_OLD-5c0a0bc2e0951745fd52f5c01f2ee2c0aee49a3a.tar.bz2
opensim-SC_OLD-5c0a0bc2e0951745fd52f5c01f2ee2c0aee49a3a.tar.xz
This changeset changes the way chat from client is routed:
old way: each region module interested in chat from client had to - subscribe to scene.EventManager.OnNewClient - then in its OnNewClient delegate it would subscribe to client.OnChatFromViewer to capture chat messages coming new way: ChatModule is the only region module that uses the "old way" approach but is now forwarding all client chat via scene.EventManager.OnChatFromClient - each region module interested in chat from client now only subscribes to scene.EventManager.OnChatFromClient this not only simplifies code, but also allows us to substitute ChatModule with derived classes (ConciergeModule is going to be one example). Also, this changeset changes ChatFromViewer to ChatFromClient as it doesn't necessarily have to be a viewer that is a chat source. i've taken great care to only comment out those OnNewClient delegates that were only used for getting at the client chat --- hope it's not breaking anything.
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs')
-rw-r--r--OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs26
1 files changed, 12 insertions, 14 deletions
diff --git a/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs
index eba65a9..5840cb2 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs
@@ -93,6 +93,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
93 m_scenes.Add(scene); 93 m_scenes.Add(scene);
94 scene.EventManager.OnNewClient += OnNewClient; 94 scene.EventManager.OnNewClient += OnNewClient;
95 scene.EventManager.OnChatFromWorld += OnSimChat; 95 scene.EventManager.OnChatFromWorld += OnSimChat;
96 scene.EventManager.OnChatFromClient += OnSimChat;
96 scene.EventManager.OnMakeRootAgent += OnMakeRootAgent; 97 scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;
97 scene.EventManager.OnMakeChildAgent += OnMakeChildAgent; 98 scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
98 } 99 }
@@ -236,7 +237,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
236 237
237 if (avatar != null) 238 if (avatar != null)
238 { 239 {
239 fromName = avatar.Firstname + " " + avatar.Lastname; 240 fromName = avatar.Name;
240 } 241 }
241 242
242 // Try to reconnect to server if not connected 243 // Try to reconnect to server if not connected
@@ -277,21 +278,19 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
277 { 278 {
278 try 279 try
279 { 280 {
280 string clientName = String.Format("{0} {1}", client.FirstName, client.LastName); 281 // client.OnChatFromViewer += OnSimChat;
281
282 client.OnChatFromViewer += OnSimChat;
283 client.OnLogout += OnClientLoggedOut; 282 client.OnLogout += OnClientLoggedOut;
284 client.OnConnectionClosed += OnClientLoggedOut; 283 client.OnConnectionClosed += OnClientLoggedOut;
285 284
286 if (clientName != m_last_new_user) 285 if (client.Name != m_last_new_user)
287 { 286 {
288 if ((m_irc.Enabled) && (m_irc.Connected)) 287 if ((m_irc.Enabled) && (m_irc.Connected))
289 { 288 {
290 m_log.DebugFormat("[IRC] {0} logging on", clientName); 289 m_log.DebugFormat("[IRC] {0} logging on", client.Name);
291 m_irc.PrivMsg(m_irc.Nick, "Sim", 290 m_irc.PrivMsg(m_irc.Nick, "Sim",
292 String.Format("notices {0} logging on", clientName)); 291 String.Format("notices {0} logging on", client.Name));
293 } 292 }
294 m_last_new_user = clientName; 293 m_last_new_user = client.Name;
295 } 294 }
296 } 295 }
297 catch (Exception ex) 296 catch (Exception ex)
@@ -343,21 +342,20 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
343 { 342 {
344 if ((m_irc.Enabled) && (m_irc.Connected)) 343 if ((m_irc.Enabled) && (m_irc.Connected))
345 { 344 {
346 string clientName = String.Format("{0} {1}", client.FirstName, client.LastName);
347 // handles simple case. May not work for hundred connecting in per second. 345 // handles simple case. May not work for hundred connecting in per second.
348 // and the NewClients calles getting interleved 346 // and the NewClients calles getting interleved
349 // but filters out multiple reports 347 // but filters out multiple reports
350 if (clientName != m_last_leaving_user) 348 if (client.Name != m_last_leaving_user)
351 { 349 {
352 Console.WriteLine("Avatar was seen logging out."); 350 Console.WriteLine("Avatar was seen logging out.");
353 //Console.ReadLine(); 351 //Console.ReadLine();
354 Console.WriteLine(); 352 Console.WriteLine();
355 m_last_leaving_user = clientName; 353 m_last_leaving_user = client.Name;
356 m_irc.PrivMsg(m_irc.Nick, "Sim", String.Format("notices {0} logging out", clientName)); 354 m_irc.PrivMsg(m_irc.Nick, "Sim", String.Format("notices {0} logging out", client.Name));
357 m_log.InfoFormat("[IRC]: {0} logging out", clientName); 355 m_log.InfoFormat("[IRC]: {0} logging out", client.Name);
358 } 356 }
359 357
360 if (m_last_new_user == clientName) 358 if (m_last_new_user == client.Name)
361 m_last_new_user = null; 359 m_last_new_user = null;
362 } 360 }
363 } 361 }