diff options
author | Teravus Ovares | 2008-03-18 03:09:38 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-03-18 03:09:38 +0000 |
commit | 4e30f862af218de783552ffc2ca68ae8a11509c5 (patch) | |
tree | 7d8d07d08a16f6407646f6c66516e9df99b7ba84 | |
parent | Last position will be stored in the DB on logout, and the avatar can continue... (diff) | |
download | opensim-SC-4e30f862af218de783552ffc2ca68ae8a11509c5.zip opensim-SC-4e30f862af218de783552ffc2ca68ae8a11509c5.tar.gz opensim-SC-4e30f862af218de783552ffc2ca68ae8a11509c5.tar.bz2 opensim-SC-4e30f862af218de783552ffc2ca68ae8a11509c5.tar.xz |
Building on Joha's update...
* Server now listens to the client's start location request for 'home' or 'last' and sends the user to the home location or the last location.
-rw-r--r-- | OpenSim/Framework/Communications/LoginService.cs | 22 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 30 | ||||
-rw-r--r-- | OpenSim/Region/Communications/Local/LocalLoginService.cs | 18 |
3 files changed, 60 insertions, 10 deletions
diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs index fc02ff6..5547c24 100644 --- a/OpenSim/Framework/Communications/LoginService.cs +++ b/OpenSim/Framework/Communications/LoginService.cs | |||
@@ -93,6 +93,14 @@ namespace OpenSim.Framework.UserManagement | |||
93 | (requestData.Contains("passwd") || requestData.Contains("web_login_key"))); | 93 | (requestData.Contains("passwd") || requestData.Contains("web_login_key"))); |
94 | bool GoodLogin = false; | 94 | bool GoodLogin = false; |
95 | 95 | ||
96 | string startLocationRequest = "last"; | ||
97 | |||
98 | if (requestData.Contains("start")) | ||
99 | { | ||
100 | startLocationRequest = (string)requestData["start"]; | ||
101 | m_log.Info("[LOGIN]: Client Requested Start: " + (string)requestData["start"]); | ||
102 | } | ||
103 | |||
96 | UserProfileData userProfile; | 104 | UserProfileData userProfile; |
97 | LoginResponse logResponse = new LoginResponse(); | 105 | LoginResponse logResponse = new LoginResponse(); |
98 | 106 | ||
@@ -213,7 +221,7 @@ namespace OpenSim.Framework.UserManagement | |||
213 | 221 | ||
214 | try | 222 | try |
215 | { | 223 | { |
216 | CustomiseResponse(logResponse, userProfile); | 224 | CustomiseResponse(logResponse, userProfile, startLocationRequest); |
217 | } | 225 | } |
218 | catch (Exception e) | 226 | catch (Exception e) |
219 | { | 227 | { |
@@ -252,6 +260,8 @@ namespace OpenSim.Framework.UserManagement | |||
252 | { | 260 | { |
253 | bool GoodLogin = false; | 261 | bool GoodLogin = false; |
254 | 262 | ||
263 | string startLocationRequest = "last"; | ||
264 | |||
255 | UserProfileData userProfile = null; | 265 | UserProfileData userProfile = null; |
256 | LoginResponse logResponse = new LoginResponse(); | 266 | LoginResponse logResponse = new LoginResponse(); |
257 | 267 | ||
@@ -265,6 +275,12 @@ namespace OpenSim.Framework.UserManagement | |||
265 | string lastname = map["last"].AsString(); | 275 | string lastname = map["last"].AsString(); |
266 | string passwd = map["passwd"].AsString(); | 276 | string passwd = map["passwd"].AsString(); |
267 | 277 | ||
278 | if (map.ContainsKey("start")) | ||
279 | { | ||
280 | m_log.Info("[LOGIN]: StartLocation Requested: " + map["start"].AsString()); | ||
281 | startLocationRequest = map["start"].AsString(); | ||
282 | } | ||
283 | |||
268 | userProfile = GetTheUser(firstname, lastname); | 284 | userProfile = GetTheUser(firstname, lastname); |
269 | if (userProfile == null) | 285 | if (userProfile == null) |
270 | { | 286 | { |
@@ -342,7 +358,7 @@ namespace OpenSim.Framework.UserManagement | |||
342 | 358 | ||
343 | try | 359 | try |
344 | { | 360 | { |
345 | CustomiseResponse(logResponse, userProfile); | 361 | CustomiseResponse(logResponse, userProfile, startLocationRequest); |
346 | } | 362 | } |
347 | catch (Exception ex) | 363 | catch (Exception ex) |
348 | { | 364 | { |
@@ -376,7 +392,7 @@ namespace OpenSim.Framework.UserManagement | |||
376 | /// </summary> | 392 | /// </summary> |
377 | /// <param name="response">The existing response</param> | 393 | /// <param name="response">The existing response</param> |
378 | /// <param name="theUser">The user profile</param> | 394 | /// <param name="theUser">The user profile</param> |
379 | public virtual void CustomiseResponse(LoginResponse response, UserProfileData theUser) | 395 | public virtual void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest) |
380 | { | 396 | { |
381 | } | 397 | } |
382 | 398 | ||
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index e03ac3a..c8d0619 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -71,7 +71,7 @@ namespace OpenSim.Grid.UserServer | |||
71 | /// </summary> | 71 | /// </summary> |
72 | /// <param name="response">The existing response</param> | 72 | /// <param name="response">The existing response</param> |
73 | /// <param name="theUser">The user profile</param> | 73 | /// <param name="theUser">The user profile</param> |
74 | public override void CustomiseResponse(LoginResponse response, UserProfileData theUser) | 74 | public override void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest) |
75 | { | 75 | { |
76 | bool tryDefault = false; | 76 | bool tryDefault = false; |
77 | //CFK: Since the try is always "tried", the "Home Location" message should always appear, so comment this one. | 77 | //CFK: Since the try is always "tried", the "Home Location" message should always appear, so comment this one. |
@@ -79,10 +79,30 @@ namespace OpenSim.Grid.UserServer | |||
79 | 79 | ||
80 | try | 80 | try |
81 | { | 81 | { |
82 | RegionProfileData SimInfo = | 82 | RegionProfileData SimInfo = null; |
83 | RegionProfileData.RequestSimProfileData( | 83 | if (startLocationRequest == "last") |
84 | theUser.currentAgent.currentHandle, m_config.GridServerURL, | 84 | { |
85 | m_config.GridSendKey, m_config.GridRecvKey); | 85 | SimInfo = |
86 | RegionProfileData.RequestSimProfileData( | ||
87 | theUser.currentAgent.currentHandle, m_config.GridServerURL, | ||
88 | m_config.GridSendKey, m_config.GridRecvKey); | ||
89 | } | ||
90 | else if (startLocationRequest == "home") | ||
91 | { | ||
92 | SimInfo = | ||
93 | RegionProfileData.RequestSimProfileData( | ||
94 | theUser.homeRegion, m_config.GridServerURL, | ||
95 | m_config.GridSendKey, m_config.GridRecvKey); | ||
96 | |||
97 | } | ||
98 | else | ||
99 | { | ||
100 | // TODO: Parse out startlocationrequest string in the format; 'uri:RegionName&X&Y&Z' | ||
101 | SimInfo = | ||
102 | RegionProfileData.RequestSimProfileData( | ||
103 | theUser.currentAgent.currentHandle, m_config.GridServerURL, | ||
104 | m_config.GridSendKey, m_config.GridRecvKey); | ||
105 | } | ||
86 | 106 | ||
87 | // Customise the response | 107 | // Customise the response |
88 | //CFK: This is redundant and the next message should always appear. | 108 | //CFK: This is redundant and the next message should always appear. |
diff --git a/OpenSim/Region/Communications/Local/LocalLoginService.cs b/OpenSim/Region/Communications/Local/LocalLoginService.cs index d7b3a58..6088890 100644 --- a/OpenSim/Region/Communications/Local/LocalLoginService.cs +++ b/OpenSim/Region/Communications/Local/LocalLoginService.cs | |||
@@ -123,9 +123,23 @@ namespace OpenSim.Region.Communications.Local | |||
123 | } | 123 | } |
124 | } | 124 | } |
125 | 125 | ||
126 | public override void CustomiseResponse(LoginResponse response, UserProfileData theUser) | 126 | public override void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest) |
127 | { | 127 | { |
128 | ulong currentRegion = theUser.currentAgent.currentHandle; | 128 | ulong currentRegion = 0; |
129 | if (startLocationRequest == "last") | ||
130 | { | ||
131 | currentRegion = theUser.currentAgent.currentHandle; | ||
132 | } | ||
133 | else if (startLocationRequest == "home") | ||
134 | { | ||
135 | currentRegion = theUser.homeRegion; | ||
136 | } | ||
137 | else | ||
138 | { | ||
139 | // TODO: Parse string in the following format: 'uri:RegionName&X&Y&Z' | ||
140 | currentRegion = theUser.currentAgent.currentHandle; | ||
141 | } | ||
142 | |||
129 | RegionInfo reg = m_Parent.GridService.RequestNeighbourInfo(currentRegion); | 143 | RegionInfo reg = m_Parent.GridService.RequestNeighbourInfo(currentRegion); |
130 | 144 | ||
131 | if (reg != null) | 145 | if (reg != null) |