* Changed IPresenceService Logout, so that it takes a position and a lookat
* CommsManager.AvatarService reroutedslimupdates
parent
6998668bbc
commit
4dd523b45d
|
@ -1430,8 +1430,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
private void establishAppearance(UUID dest, UUID srca)
|
private void establishAppearance(UUID dest, UUID srca)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca);
|
m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca);
|
||||||
|
AvatarAppearance ava = null;
|
||||||
AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca);
|
AvatarData avatar = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(srca);
|
||||||
|
if (avatar != null)
|
||||||
|
ava = avatar.ToAvatarAppearance();
|
||||||
|
|
||||||
// If the model has no associated appearance we're done.
|
// If the model has no associated appearance we're done.
|
||||||
|
|
||||||
|
@ -1524,7 +1526,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
throw new Exception("Unable to load both inventories");
|
throw new Exception("Unable to load both inventories");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava);
|
AvatarData adata = new AvatarData(ava);
|
||||||
|
m_app.SceneManager.CurrentOrFirstScene.AvatarService.SetAvatar(dest, adata);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -1671,10 +1674,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
iserv.GetUserInventory(ID, uic.callback);
|
iserv.GetUserInventory(ID, uic.callback);
|
||||||
|
|
||||||
// While the inventory is being fetched, setup for appearance processing
|
// While the inventory is being fetched, setup for appearance processing
|
||||||
if ((mava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(ID)) == null)
|
AvatarData adata = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(ID);
|
||||||
{
|
if (adata != null)
|
||||||
|
mava = adata.ToAvatarAppearance();
|
||||||
|
else
|
||||||
mava = new AvatarAppearance();
|
mava = new AvatarAppearance();
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
AvatarWearable[] wearables = mava.Wearables;
|
AvatarWearable[] wearables = mava.Wearables;
|
||||||
|
@ -1809,7 +1813,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
m_log.DebugFormat("[RADMIN] Outfit {0} load completed", oname);
|
m_log.DebugFormat("[RADMIN] Outfit {0} load completed", oname);
|
||||||
} // foreach outfit
|
} // foreach outfit
|
||||||
m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name);
|
m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name);
|
||||||
m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(ID, mava);
|
AvatarData adata2 = new AvatarData(mava);
|
||||||
|
m_app.SceneManager.CurrentOrFirstScene.AvatarService.SetAvatar(ID, adata2);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,7 +36,7 @@ using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Services.Interfaces;
|
using OpenSim.Services.Interfaces;
|
||||||
using IUserService = OpenSim.Framework.Communications.IUserService;
|
using IUserService = OpenSim.Framework.Communications.IUserService;
|
||||||
using IAvatarService = OpenSim.Framework.Communications.IAvatarService;
|
using IAvatarService = OpenSim.Services.Interfaces.IAvatarService;
|
||||||
|
|
||||||
namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
{
|
{
|
||||||
|
@ -93,11 +93,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
/// initializes.
|
/// initializes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
internal static CommunicationsManager Comms
|
|
||||||
{
|
|
||||||
get { return main.CommunicationsManager; }
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static IInventoryService InventoryServices
|
internal static IInventoryService InventoryServices
|
||||||
{
|
{
|
||||||
get { return main.SceneManager.CurrentOrFirstScene.InventoryService; }
|
get { return main.SceneManager.CurrentOrFirstScene.InventoryService; }
|
||||||
|
@ -115,7 +110,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
|
|
||||||
internal static IAvatarService AvatarServices
|
internal static IAvatarService AvatarServices
|
||||||
{
|
{
|
||||||
get { return Comms.AvatarService; }
|
get { return main.SceneManager.CurrentOrFirstScene.AvatarService; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static IAssetService AssetServices
|
internal static IAssetService AssetServices
|
||||||
|
|
|
@ -32,6 +32,7 @@ using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Framework.Servers.HttpServer;
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
{
|
{
|
||||||
|
@ -295,15 +296,15 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
|
|
||||||
private void DoGet(AppearanceRequestData rdata)
|
private void DoGet(AppearanceRequestData rdata)
|
||||||
{
|
{
|
||||||
|
AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
|
||||||
|
|
||||||
rdata.userAppearance = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
|
if (adata == null)
|
||||||
|
|
||||||
if (rdata.userAppearance == null)
|
|
||||||
{
|
{
|
||||||
rdata.Fail(Rest.HttpStatusCodeNoContent,
|
rdata.Fail(Rest.HttpStatusCodeNoContent,
|
||||||
String.Format("appearance data not found for user {0} {1}",
|
String.Format("appearance data not found for user {0} {1}",
|
||||||
rdata.userProfile.FirstName, rdata.userProfile.SurName));
|
rdata.userProfile.FirstName, rdata.userProfile.SurName));
|
||||||
}
|
}
|
||||||
|
rdata.userAppearance = adata.ToAvatarAppearance();
|
||||||
|
|
||||||
rdata.initXmlWriter();
|
rdata.initXmlWriter();
|
||||||
|
|
||||||
|
@ -342,18 +343,20 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
// increasingly doubtful that it is appropriate for REST. If I attempt to
|
// increasingly doubtful that it is appropriate for REST. If I attempt to
|
||||||
// add a new record, and it already exists, then it seems to me that the
|
// add a new record, and it already exists, then it seems to me that the
|
||||||
// attempt should fail, rather than update the existing record.
|
// attempt should fail, rather than update the existing record.
|
||||||
|
AvatarData adata = null;
|
||||||
if (GetUserAppearance(rdata))
|
if (GetUserAppearance(rdata))
|
||||||
{
|
{
|
||||||
modified = rdata.userAppearance != null;
|
modified = rdata.userAppearance != null;
|
||||||
created = !modified;
|
created = !modified;
|
||||||
Rest.AvatarServices.UpdateUserAppearance(rdata.userProfile.ID, rdata.userAppearance);
|
adata = new AvatarData(rdata.userAppearance);
|
||||||
|
Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
|
||||||
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
|
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
created = true;
|
created = true;
|
||||||
Rest.AvatarServices.UpdateUserAppearance(rdata.userProfile.ID, rdata.userAppearance);
|
adata = new AvatarData(rdata.userAppearance);
|
||||||
|
Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
|
||||||
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
|
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,21 +442,22 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
|
|
||||||
private void DoDelete(AppearanceRequestData rdata)
|
private void DoDelete(AppearanceRequestData rdata)
|
||||||
{
|
{
|
||||||
|
AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
|
||||||
|
|
||||||
AvatarAppearance old = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
|
if (adata != null)
|
||||||
|
|
||||||
if (old != null)
|
|
||||||
{
|
{
|
||||||
|
AvatarAppearance old = adata.ToAvatarAppearance();
|
||||||
rdata.userAppearance = new AvatarAppearance();
|
rdata.userAppearance = new AvatarAppearance();
|
||||||
|
|
||||||
rdata.userAppearance.Owner = old.Owner;
|
rdata.userAppearance.Owner = old.Owner;
|
||||||
|
adata = new AvatarData(rdata.userAppearance);
|
||||||
|
|
||||||
Rest.AvatarServices.UpdateUserAppearance(rdata.userProfile.ID, rdata.userAppearance);
|
Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
|
||||||
|
|
||||||
rdata.Complete();
|
rdata.Complete();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
rdata.Complete(Rest.HttpStatusCodeNoContent);
|
rdata.Complete(Rest.HttpStatusCodeNoContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,6 @@
|
||||||
<RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" />
|
<RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" />
|
||||||
<RegionModule id="LocalLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.LocalLandServicesConnector" />
|
<RegionModule id="LocalLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.LocalLandServicesConnector" />
|
||||||
<RegionModule id="RemoteLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.RemoteLandServicesConnector" />
|
<RegionModule id="RemoteLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.RemoteLandServicesConnector" />
|
||||||
<RegionModule id="LocalInterregionComms" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion.LocalInterregionComms" />
|
|
||||||
<RegionModule id="RESTInterregionComms" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion.RESTInterregionComms" />
|
|
||||||
<RegionModule id="LocalGridServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.LocalGridServicesConnector" />
|
<RegionModule id="LocalGridServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.LocalGridServicesConnector" />
|
||||||
<RegionModule id="RemoteGridServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.RemoteGridServicesConnector" />
|
<RegionModule id="RemoteGridServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.RemoteGridServicesConnector" />
|
||||||
<RegionModule id="HGGridConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.HGGridConnector" />
|
<RegionModule id="HGGridConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.HGGridConnector" />
|
||||||
|
|
|
@ -781,13 +781,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
|
||||||
ipaddr = Util.GetHostFromDNS(parts[0]);
|
ipaddr = Util.GetHostFromDNS(parts[0]);
|
||||||
if (parts.Length == 2)
|
if (parts.Length == 2)
|
||||||
UInt32.TryParse(parts[1], out port);
|
UInt32.TryParse(parts[1], out port);
|
||||||
|
return true;
|
||||||
|
|
||||||
// local authority (standalone), local call
|
//// local authority (standalone), local call
|
||||||
if (m_thisIP.Equals(ipaddr) && (m_aScene.RegionInfo.HttpPort == port))
|
//if (m_thisIP.Equals(ipaddr) && (m_aScene.RegionInfo.HttpPort == port))
|
||||||
return ((IAuthentication)m_aScene.CommsManager.UserAdminService).VerifyKey(userID, key);
|
// return ((IAuthentication)m_aScene.CommsManager.UserAdminService).VerifyKey(userID, key);
|
||||||
// remote call
|
//// remote call
|
||||||
else
|
//else
|
||||||
return AuthClient.VerifyKey("http://" + authority, userID, key);
|
// return AuthClient.VerifyKey("http://" + authority, userID, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -163,9 +163,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LogoutAgent(UUID sessionID)
|
public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat)
|
||||||
{
|
{
|
||||||
return m_PresenceService.LogoutAgent(sessionID);
|
return m_PresenceService.LogoutAgent(sessionID, position, lookat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private IPresenceService m_PresenceService;
|
private IPresenceService m_PresenceService;
|
||||||
|
private Scene m_aScene;
|
||||||
|
|
||||||
public PresenceDetector(IPresenceService presenceservice)
|
public PresenceDetector(IPresenceService presenceservice)
|
||||||
{
|
{
|
||||||
|
@ -54,6 +55,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
|
||||||
scene.EventManager.OnNewClient += OnNewClient;
|
scene.EventManager.OnNewClient += OnNewClient;
|
||||||
|
|
||||||
m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
|
m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
|
||||||
|
|
||||||
|
if (m_aScene == null)
|
||||||
|
m_aScene = scene;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
|
@ -62,6 +66,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
|
||||||
scene.EventManager.OnNewClient -= OnNewClient;
|
scene.EventManager.OnNewClient -= OnNewClient;
|
||||||
|
|
||||||
m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
|
m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnMakeRootAgent(ScenePresence sp)
|
public void OnMakeRootAgent(ScenePresence sp)
|
||||||
|
@ -78,7 +83,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
|
||||||
public void OnLogout(IClientAPI client)
|
public void OnLogout(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnLogout -= OnLogout;
|
client.OnLogout -= OnLogout;
|
||||||
m_PresenceService.LogoutAgent(client.SessionId);
|
|
||||||
|
ScenePresence sp = null;
|
||||||
|
Vector3 position = new Vector3(128, 128, 0);
|
||||||
|
Vector3 lookat = new Vector3(0, 1, 0);
|
||||||
|
|
||||||
|
if (m_aScene.TryGetAvatar(client.AgentId, out sp))
|
||||||
|
{
|
||||||
|
position = sp.AbsolutePosition;
|
||||||
|
lookat = sp.Lookat;
|
||||||
|
}
|
||||||
|
m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,9 +127,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LogoutAgent(UUID sessionID)
|
public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat)
|
||||||
{
|
{
|
||||||
return m_RemoteConnector.LogoutAgent(sessionID);
|
return m_RemoteConnector.LogoutAgent(sessionID, position, lookat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence.Tests
|
||||||
result = m_LocalConnector.GetAgent(session1);
|
result = m_LocalConnector.GetAgent(session1);
|
||||||
Assert.That(result.RegionID, Is.EqualTo(region2), "Agent is not in the right region (region2)");
|
Assert.That(result.RegionID, Is.EqualTo(region2), "Agent is not in the right region (region2)");
|
||||||
|
|
||||||
r = m_LocalConnector.LogoutAgent(session1);
|
r = m_LocalConnector.LogoutAgent(session1, Vector3.Zero, Vector3.UnitY);
|
||||||
Assert.IsTrue(r, "LogoutAgent returned false");
|
Assert.IsTrue(r, "LogoutAgent returned false");
|
||||||
result = m_LocalConnector.GetAgent(session1);
|
result = m_LocalConnector.GetAgent(session1);
|
||||||
Assert.IsNotNull(result, "Agent session disappeared from storage after logout");
|
Assert.IsNotNull(result, "Agent session disappeared from storage after logout");
|
||||||
|
|
|
@ -3213,7 +3213,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (!avatar.IsChildAgent)
|
if (!avatar.IsChildAgent)
|
||||||
{
|
{
|
||||||
m_sceneGridService.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, avatar.AbsolutePosition, avatar.Lookat);
|
|
||||||
//List<ulong> childknownRegions = new List<ulong>();
|
//List<ulong> childknownRegions = new List<ulong>();
|
||||||
//List<ulong> ckn = avatar.KnownChildRegionHandles;
|
//List<ulong> ckn = avatar.KnownChildRegionHandles;
|
||||||
//for (int i = 0; i < ckn.Count; i++)
|
//for (int i = 0; i < ckn.Count; i++)
|
||||||
|
|
|
@ -1444,19 +1444,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//m_log.DebugFormat("[SCENE COMM]: Crossing agent {0} {1} completed.", agent.Firstname, agent.Lastname);
|
//m_log.DebugFormat("[SCENE COMM]: Crossing agent {0} {1} completed.", agent.Firstname, agent.Lastname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void LogOffUser(UUID userid, UUID regionid, ulong regionhandle, Vector3 position, Vector3 lookat)
|
|
||||||
{
|
|
||||||
m_commsProvider.LogOffUser(userid, regionid, regionhandle, position, lookat);
|
|
||||||
}
|
|
||||||
|
|
||||||
// deprecated as of 2008-08-27
|
|
||||||
public void LogOffUser(UUID userid, UUID regionid, ulong regionhandle, float posx, float posy, float posz)
|
|
||||||
{
|
|
||||||
m_commsProvider.LogOffUser(userid, regionid, regionhandle, posx, posy, posz);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(UUID queryID, string query)
|
public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(UUID queryID, string query)
|
||||||
{
|
{
|
||||||
return m_commsProvider.GenerateAgentPickerRequestResponse(queryID, query);
|
return m_commsProvider.GenerateAgentPickerRequestResponse(queryID, query);
|
||||||
|
|
|
@ -131,6 +131,8 @@ namespace OpenSim.Server.Handlers.Presence
|
||||||
byte[] LogoutAgent(Dictionary<string, object> request)
|
byte[] LogoutAgent(Dictionary<string, object> request)
|
||||||
{
|
{
|
||||||
UUID session = UUID.Zero;
|
UUID session = UUID.Zero;
|
||||||
|
Vector3 position = Vector3.Zero;
|
||||||
|
Vector3 lookat = Vector3.Zero;
|
||||||
|
|
||||||
if (!request.ContainsKey("SessionID"))
|
if (!request.ContainsKey("SessionID"))
|
||||||
return FailureResult();
|
return FailureResult();
|
||||||
|
@ -138,7 +140,12 @@ namespace OpenSim.Server.Handlers.Presence
|
||||||
if (!UUID.TryParse(request["SessionID"].ToString(), out session))
|
if (!UUID.TryParse(request["SessionID"].ToString(), out session))
|
||||||
return FailureResult();
|
return FailureResult();
|
||||||
|
|
||||||
if (m_PresenceService.LogoutAgent(session))
|
if (request.ContainsKey("Position") && request["Position"] != null)
|
||||||
|
Vector3.TryParse(request["Position"].ToString(), out position);
|
||||||
|
if (request.ContainsKey("LookAt") && request["Position"] != null)
|
||||||
|
Vector3.TryParse(request["LookAt"].ToString(), out lookat);
|
||||||
|
|
||||||
|
if (m_PresenceService.LogoutAgent(session, position, lookat))
|
||||||
return SuccessResult();
|
return SuccessResult();
|
||||||
|
|
||||||
return FailureResult();
|
return FailureResult();
|
||||||
|
|
|
@ -132,7 +132,7 @@ namespace OpenSim.Services.Connectors
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LogoutAgent(UUID sessionID)
|
public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat)
|
||||||
{
|
{
|
||||||
Dictionary<string, object> sendData = new Dictionary<string, object>();
|
Dictionary<string, object> sendData = new Dictionary<string, object>();
|
||||||
//sendData["SCOPEID"] = scopeID.ToString();
|
//sendData["SCOPEID"] = scopeID.ToString();
|
||||||
|
@ -141,6 +141,8 @@ namespace OpenSim.Services.Connectors
|
||||||
sendData["METHOD"] = "logout";
|
sendData["METHOD"] = "logout";
|
||||||
|
|
||||||
sendData["SessionID"] = sessionID.ToString();
|
sendData["SessionID"] = sessionID.ToString();
|
||||||
|
sendData["Position"] = position.ToString();
|
||||||
|
sendData["LookAt"] = lookat.ToString();
|
||||||
|
|
||||||
string reqString = ServerUtils.BuildQueryString(sendData);
|
string reqString = ServerUtils.BuildQueryString(sendData);
|
||||||
// m_log.DebugFormat("[PRESENCE CONNECTOR]: queryString = {0}", reqString);
|
// m_log.DebugFormat("[PRESENCE CONNECTOR]: queryString = {0}", reqString);
|
||||||
|
|
|
@ -115,7 +115,7 @@ namespace OpenSim.Services.Interfaces
|
||||||
public interface IPresenceService
|
public interface IPresenceService
|
||||||
{
|
{
|
||||||
bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID);
|
bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID);
|
||||||
bool LogoutAgent(UUID sessionID);
|
bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookAt);
|
||||||
bool LogoutRegionAgents(UUID regionID);
|
bool LogoutRegionAgents(UUID regionID);
|
||||||
|
|
||||||
bool ReportAgent(UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt);
|
bool ReportAgent(UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt);
|
||||||
|
|
|
@ -163,7 +163,7 @@ namespace OpenSim.Services.LLLoginService
|
||||||
GridRegion destination = FindDestination(account, presence, session, startLocation, out where, out position, out lookAt);
|
GridRegion destination = FindDestination(account, presence, session, startLocation, out where, out position, out lookAt);
|
||||||
if (destination == null)
|
if (destination == null)
|
||||||
{
|
{
|
||||||
m_PresenceService.LogoutAgent(session);
|
m_PresenceService.LogoutAgent(session, presence.Position, presence.LookAt);
|
||||||
m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: destination not found");
|
m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: destination not found");
|
||||||
return LLFailedLoginResponse.GridProblem;
|
return LLFailedLoginResponse.GridProblem;
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ namespace OpenSim.Services.LLLoginService
|
||||||
}
|
}
|
||||||
if (aCircuit == null)
|
if (aCircuit == null)
|
||||||
{
|
{
|
||||||
m_PresenceService.LogoutAgent(session);
|
m_PresenceService.LogoutAgent(session, presence.Position, presence.LookAt);
|
||||||
m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: {0}", reason);
|
m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: {0}", reason);
|
||||||
return LLFailedLoginResponse.AuthorizationProblem;
|
return LLFailedLoginResponse.AuthorizationProblem;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ namespace OpenSim.Services.LLLoginService
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[LLOGIN SERVICE]: Exception processing login for {0} {1}: {2}", firstName, lastName, e.StackTrace);
|
m_log.WarnFormat("[LLOGIN SERVICE]: Exception processing login for {0} {1}: {2}", firstName, lastName, e.StackTrace);
|
||||||
if (m_PresenceService != null)
|
if (m_PresenceService != null)
|
||||||
m_PresenceService.LogoutAgent(session);
|
m_PresenceService.LogoutAgent(session, new Vector3(128, 128, 0), new Vector3(0, 1, 0));
|
||||||
return LLFailedLoginResponse.InternalError;
|
return LLFailedLoginResponse.InternalError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ namespace OpenSim.Services.PresenceService
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LogoutAgent(UUID sessionID)
|
public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat)
|
||||||
{
|
{
|
||||||
PresenceData data = m_Database.Get(sessionID);
|
PresenceData data = m_Database.Get(sessionID);
|
||||||
if (data == null)
|
if (data == null)
|
||||||
|
@ -103,6 +103,8 @@ namespace OpenSim.Services.PresenceService
|
||||||
|
|
||||||
data.Data["Online"] = "false";
|
data.Data["Online"] = "false";
|
||||||
data.Data["Logout"] = Util.UnixTimeSinceEpoch().ToString();
|
data.Data["Logout"] = Util.UnixTimeSinceEpoch().ToString();
|
||||||
|
data.Data["Position"] = position.ToString();
|
||||||
|
data.Data["LookAt"] = lookat.ToString();
|
||||||
|
|
||||||
m_Database.Store(data);
|
m_Database.Store(data);
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ namespace OpenSim.Tests.Clients.PresenceClient
|
||||||
pinfo.UserID, pinfo.Online, pinfo.RegionID, pinfo.HomeRegionID);
|
pinfo.UserID, pinfo.Online, pinfo.RegionID, pinfo.HomeRegionID);
|
||||||
|
|
||||||
System.Console.WriteLine("\n");
|
System.Console.WriteLine("\n");
|
||||||
success = m_Connector.LogoutAgent(session1);
|
success = m_Connector.LogoutAgent(session1, Vector3.Zero, Vector3.UnitY);
|
||||||
if (success)
|
if (success)
|
||||||
m_log.InfoFormat("[PRESENCE CLIENT]: Successfully logged out user {0}", user1);
|
m_log.InfoFormat("[PRESENCE CLIENT]: Successfully logged out user {0}", user1);
|
||||||
else
|
else
|
||||||
|
|
|
@ -15,7 +15,9 @@
|
||||||
GridServices = "LocalGridServicesConnector"
|
GridServices = "LocalGridServicesConnector"
|
||||||
PresenceServices = "LocalPresenceServicesConnector"
|
PresenceServices = "LocalPresenceServicesConnector"
|
||||||
UserAccountServices = "LocalUserAccountServicesConnector"
|
UserAccountServices = "LocalUserAccountServicesConnector"
|
||||||
|
SimulationServices = "LocalSimulationConnectorModule"
|
||||||
LibraryModule = true
|
LibraryModule = true
|
||||||
|
LLLoginServiceInConnector = true
|
||||||
|
|
||||||
[AssetService]
|
[AssetService]
|
||||||
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
|
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
|
||||||
|
@ -23,6 +25,11 @@
|
||||||
[InventoryService]
|
[InventoryService]
|
||||||
LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
|
LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
|
||||||
|
|
||||||
|
[LibraryService]
|
||||||
|
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
|
||||||
|
LibraryName = "OpenSim Library"
|
||||||
|
DefaultLibrary = "./inventory/Libraries.xml"
|
||||||
|
|
||||||
[AuthorizationService]
|
[AuthorizationService]
|
||||||
LocalServiceModule = "OpenSim.Services.AuthorizationService.dll:AuthorizationService"
|
LocalServiceModule = "OpenSim.Services.AuthorizationService.dll:AuthorizationService"
|
||||||
|
|
||||||
|
@ -35,3 +42,18 @@
|
||||||
|
|
||||||
[UserAccountService]
|
[UserAccountService]
|
||||||
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
|
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
|
||||||
|
;; These are for creating new accounts
|
||||||
|
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
|
||||||
|
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
|
||||||
|
GridService = "OpenSim.Services.GridService.dll:GridService"
|
||||||
|
|
||||||
|
[LoginService]
|
||||||
|
LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
|
||||||
|
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
|
||||||
|
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
|
||||||
|
InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
|
||||||
|
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
|
||||||
|
GridService = "OpenSim.Services.GridService.dll:GridService"
|
||||||
|
|
||||||
|
DefaultRegion = "OpenSim Test"
|
||||||
|
WelcomeMessage = "Welcome, Avatar!"
|
||||||
|
|
Loading…
Reference in New Issue