aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-03-28 02:51:34 +0100
committerJustin Clark-Casey (justincc)2012-03-28 02:51:34 +0100
commit12d3ea3029854b48b302459226fc88415e78630c (patch)
treed8db7d3b74cf23d8fc6ce999ebeeda6cd4355ce0 /OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
parentminor: Add some documentation to OnNewClient and OnClientClosed events (diff)
downloadopensim-SC_OLD-12d3ea3029854b48b302459226fc88415e78630c.zip
opensim-SC_OLD-12d3ea3029854b48b302459226fc88415e78630c.tar.gz
opensim-SC_OLD-12d3ea3029854b48b302459226fc88415e78630c.tar.bz2
opensim-SC_OLD-12d3ea3029854b48b302459226fc88415e78630c.tar.xz
Add "friends show cache <first-name> <last-name>" command for debugging purposes.
This adds a reverse lookup (name -> ID) to IUserManagement instead of hitting the UserAccountService directly.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs78
1 files changed, 76 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index be767c4..d1a1af0 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -214,6 +214,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
214 214
215 public virtual void RegionLoaded(Scene scene) 215 public virtual void RegionLoaded(Scene scene)
216 { 216 {
217 scene.AddCommand(
218 "Friends", this, "friends show cache",
219 "friends show cache [<first-name> <last-name>]",
220 "Show the friends cache for the given user",
221 HandleFriendsShowCacheCommand);
217 } 222 }
218 223
219 public void RemoveRegion(Scene scene) 224 public void RemoveRegion(Scene scene)
@@ -890,7 +895,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
890 /// Get friends from local cache only 895 /// Get friends from local cache only
891 /// </summary> 896 /// </summary>
892 /// <param name="agentID"></param> 897 /// <param name="agentID"></param>
893 /// <returns></returns> 898 /// <returns>
899 /// An empty array if the user has no friends or friends have not been cached.
900 /// </returns>
894 protected FriendInfo[] GetFriends(UUID agentID) 901 protected FriendInfo[] GetFriends(UUID agentID)
895 { 902 {
896 UserFriendData friendsData; 903 UserFriendData friendsData;
@@ -939,6 +946,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
939 } 946 }
940 } 947 }
941 948
949 /// <summary>
950 /// Are friends cached on this simulator for a particular user?
951 /// </summary>
952 /// <param name="userID"></param>
953 /// <returns></returns>
954 protected bool AreFriendsCached(UUID userID)
955 {
956 lock (m_Friends)
957 return m_Friends.ContainsKey(userID);
958 }
959
942 protected virtual bool StoreRights(UUID agentID, UUID friendID, int rights) 960 protected virtual bool StoreRights(UUID agentID, UUID friendID, int rights)
943 { 961 {
944 FriendsService.StoreFriend(agentID.ToString(), friendID.ToString(), rights); 962 FriendsService.StoreFriend(agentID.ToString(), friendID.ToString(), rights);
@@ -964,5 +982,61 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
964 } 982 }
965 983
966 #endregion 984 #endregion
985
986 protected void HandleFriendsShowCacheCommand(string module, string[] cmd)
987 {
988 if (cmd.Length != 5)
989 {
990 MainConsole.Instance.OutputFormat("Usage: friends show cache [<first-name> <last-name>]");
991 return;
992 }
993
994 string firstName = cmd[3];
995 string lastName = cmd[4];
996
997 IUserManagement umModule = m_Scenes[0].RequestModuleInterface<IUserManagement>();
998 UUID userId = umModule.GetUserIdByName(firstName, lastName);
999
1000// UserAccount ua
1001// = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, firstName, lastName);
1002
1003 if (userId == UUID.Zero)
1004 {
1005 MainConsole.Instance.OutputFormat("No such user as {0} {1}", firstName, lastName);
1006 return;
1007 }
1008
1009 if (!AreFriendsCached(userId))
1010 {
1011 MainConsole.Instance.OutputFormat("No friends cached on this simulator for {0} {1}", firstName, lastName);
1012 return;
1013 }
1014
1015 MainConsole.Instance.OutputFormat("Cached friends for {0} {1}:", firstName, lastName);
1016
1017 MainConsole.Instance.OutputFormat("UUID\n");
1018
1019 FriendInfo[] friends = GetFriends(userId);
1020
1021 foreach (FriendInfo friend in friends)
1022 {
1023// MainConsole.Instance.OutputFormat(friend.PrincipalID.ToString());
1024
1025// string friendFirstName, friendLastName;
1026//
1027// UserAccount friendUa
1028// = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, friend.PrincipalID);
1029
1030 UUID friendId;
1031 string friendName;
1032
1033 if (UUID.TryParse(friend.Friend, out friendId))
1034 friendName = umModule.GetUserName(friendId);
1035 else
1036 friendName = friend.Friend;
1037
1038 MainConsole.Instance.OutputFormat("{0} {1} {2}", friendName, friend.MyFlags, friend.TheirFlags);
1039 }
1040 }
967 } 1041 }
968} 1042} \ No newline at end of file