diff options
Diffstat (limited to 'OpenSim/Services/UserAccountService/GridUserService.cs')
-rw-r--r-- | OpenSim/Services/UserAccountService/GridUserService.cs | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/OpenSim/Services/UserAccountService/GridUserService.cs b/OpenSim/Services/UserAccountService/GridUserService.cs index 43fa04b..944411f 100644 --- a/OpenSim/Services/UserAccountService/GridUserService.cs +++ b/OpenSim/Services/UserAccountService/GridUserService.cs | |||
@@ -46,12 +46,66 @@ namespace OpenSim.Services.UserAccountService | |||
46 | 46 | ||
47 | public GridUserService(IConfigSource config) : base(config) | 47 | public GridUserService(IConfigSource config) : base(config) |
48 | { | 48 | { |
49 | m_log.Debug("[USER GRID SERVICE]: Starting user grid service"); | 49 | m_log.Debug("[GRID USER SERVICE]: Starting user grid service"); |
50 | |||
51 | MainConsole.Instance.Commands.AddCommand( | ||
52 | "Users", false, | ||
53 | "show grid users online", | ||
54 | "show grid users online", | ||
55 | "Show number of grid users registered as online.", | ||
56 | "This number may not be accurate as a region may crash or not be cleanly shutdown and leave grid users shown as online\n." | ||
57 | + "For this reason, users online for more than 5 days are not currently counted", | ||
58 | HandleShowGridUsersOnline); | ||
59 | } | ||
60 | |||
61 | protected void HandleShowGridUsersOnline(string module, string[] cmdparams) | ||
62 | { | ||
63 | // if (cmdparams.Length != 4) | ||
64 | // { | ||
65 | // MainConsole.Instance.Output("Usage: show grid users online"); | ||
66 | // return; | ||
67 | // } | ||
68 | |||
69 | // int onlineCount; | ||
70 | int onlineRecentlyCount = 0; | ||
71 | |||
72 | DateTime now = DateTime.UtcNow; | ||
73 | |||
74 | foreach (GridUserData gu in m_Database.GetAll("")) | ||
75 | { | ||
76 | if (bool.Parse(gu.Data["Online"])) | ||
77 | { | ||
78 | // onlineCount++; | ||
79 | |||
80 | int unixLoginTime = int.Parse(gu.Data["Login"]); | ||
81 | |||
82 | if ((now - Util.ToDateTime(unixLoginTime)).Days < 5) | ||
83 | onlineRecentlyCount++; | ||
84 | } | ||
85 | } | ||
86 | |||
87 | MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount); | ||
50 | } | 88 | } |
51 | 89 | ||
52 | public virtual GridUserInfo GetGridUserInfo(string userID) | 90 | public virtual GridUserInfo GetGridUserInfo(string userID) |
53 | { | 91 | { |
54 | GridUserData d = m_Database.Get(userID); | 92 | GridUserData d = null; |
93 | if (userID.Length > 36) // it's a UUI | ||
94 | d = m_Database.Get(userID); | ||
95 | else // it's a UUID | ||
96 | { | ||
97 | GridUserData[] ds = m_Database.GetAll(userID); | ||
98 | if (ds == null) | ||
99 | return null; | ||
100 | |||
101 | if (ds.Length > 0) | ||
102 | { | ||
103 | d = ds[0]; | ||
104 | foreach (GridUserData dd in ds) | ||
105 | if (dd.UserID.Length > d.UserID.Length) // find the longest | ||
106 | d = dd; | ||
107 | } | ||
108 | } | ||
55 | 109 | ||
56 | if (d == null) | 110 | if (d == null) |
57 | return null; | 111 | return null; |
@@ -73,7 +127,7 @@ namespace OpenSim.Services.UserAccountService | |||
73 | return info; | 127 | return info; |
74 | } | 128 | } |
75 | 129 | ||
76 | public GridUserInfo[] GetGridUserInfo(string[] userIDs) | 130 | public virtual GridUserInfo[] GetGridUserInfo(string[] userIDs) |
77 | { | 131 | { |
78 | List<GridUserInfo> ret = new List<GridUserInfo>(); | 132 | List<GridUserInfo> ret = new List<GridUserInfo>(); |
79 | 133 | ||
@@ -140,7 +194,7 @@ namespace OpenSim.Services.UserAccountService | |||
140 | 194 | ||
141 | public bool SetLastPosition(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) | 195 | public bool SetLastPosition(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) |
142 | { | 196 | { |
143 | //m_log.DebugFormat("[Grid User Service]: SetLastPosition for {0}", userID); | 197 | m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID); |
144 | GridUserData d = m_Database.Get(userID); | 198 | GridUserData d = m_Database.Get(userID); |
145 | if (d == null) | 199 | if (d == null) |
146 | { | 200 | { |