aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorDiva Canto2012-03-21 10:35:06 -0700
committerDiva Canto2012-03-21 10:35:06 -0700
commit4a9ca3ca8ff18f4fcf05c3983db5e6b1d49c97ee (patch)
tree6db550ead95b0a8f044f504f33fc2bfc202b1f80 /OpenSim/Region
parentHG Friends: pulled sim-bound notification code to HGStatusNotifier, so that w... (diff)
downloadopensim-SC_OLD-4a9ca3ca8ff18f4fcf05c3983db5e6b1d49c97ee.zip
opensim-SC_OLD-4a9ca3ca8ff18f4fcf05c3983db5e6b1d49c97ee.tar.gz
opensim-SC_OLD-4a9ca3ca8ff18f4fcf05c3983db5e6b1d49c97ee.tar.bz2
opensim-SC_OLD-4a9ca3ca8ff18f4fcf05c3983db5e6b1d49c97ee.tar.xz
HG Friends: reroute the status notifications to the HGFriends service, so that they can scale better. They were previously being handled by the UAS; that is still there, but it's now obsolete and will be removed in a future release.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/HGStatusNotifier.cs31
2 files changed, 26 insertions, 7 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
index f50e52b..e50a84a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
52 52
53 IUserManagement m_uMan; 53 IUserManagement m_uMan;
54 IUserManagement UserManagementModule 54 public IUserManagement UserManagementModule
55 { 55 {
56 get 56 get
57 { 57 {
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/HGStatusNotifier.cs b/OpenSim/Region/CoreModules/Avatar/Friends/HGStatusNotifier.cs
index 62d54e4..61c6a30 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/HGStatusNotifier.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/HGStatusNotifier.cs
@@ -1,6 +1,7 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Linq; 3using System.Linq;
4using System.Reflection;
4using System.Text; 5using System.Text;
5using OpenSim.Framework; 6using OpenSim.Framework;
6using OpenSim.Region.Framework.Interfaces; 7using OpenSim.Region.Framework.Interfaces;
@@ -10,10 +11,14 @@ using FriendInfo = OpenSim.Services.Interfaces.FriendInfo;
10 11
11using OpenMetaverse; 12using OpenMetaverse;
12 13
14using log4net;
15
13namespace OpenSim.Region.CoreModules.Avatar.Friends 16namespace OpenSim.Region.CoreModules.Avatar.Friends
14{ 17{
15 public class HGStatusNotifier 18 public class HGStatusNotifier
16 { 19 {
20 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
21
17 private HGFriendsModule m_FriendsModule; 22 private HGFriendsModule m_FriendsModule;
18 23
19 public HGStatusNotifier(HGFriendsModule friendsModule) 24 public HGStatusNotifier(HGFriendsModule friendsModule)
@@ -31,14 +36,28 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
31 List<string> ids = new List<string>(); 36 List<string> ids = new List<string>();
32 foreach (FriendInfo f in kvp.Value) 37 foreach (FriendInfo f in kvp.Value)
33 ids.Add(f.Friend); 38 ids.Add(f.Friend);
34 UserAgentServiceConnector uConn = new UserAgentServiceConnector(kvp.Key);
35 List<UUID> friendsOnline = uConn.StatusNotification(ids, userID, online);
36 39
37 if (online && friendsOnline.Count > 0) 40 if (ids.Count == 0)
41 continue; // no one to notify. caller don't do this
42
43 m_log.DebugFormat("[HG STATUS NOTIFIER]: Notifying {0} friends in {1}", ids.Count, kvp.Key);
44 // ASSUMPTION: we assume that all users for one home domain
45 // have exactly the same set of service URLs.
46 // If this is ever not true, we need to change this.
47 UUID friendID = UUID.Zero; String tmp = String.Empty;
48 if (Util.ParseUniversalUserIdentifier(ids[0], out friendID, out tmp, out tmp, out tmp, out tmp))
38 { 49 {
39 IClientAPI client = m_FriendsModule.LocateClientObject(userID); 50 string friendsServerURI = m_FriendsModule.UserManagementModule.GetUserServerURL(friendID, "FriendsServerURI");
40 if (client != null) 51 HGFriendsServicesConnector fConn = new HGFriendsServicesConnector(friendsServerURI);
41 client.SendAgentOnline(friendsOnline.ToArray()); 52
53 List<UUID> friendsOnline = fConn.StatusNotification(ids, userID, online);
54
55 if (online && friendsOnline.Count > 0)
56 {
57 IClientAPI client = m_FriendsModule.LocateClientObject(userID);
58 if (client != null)
59 client.SendAgentOnline(friendsOnline.ToArray());
60 }
42 } 61 }
43 } 62 }
44 } 63 }