More EntityTransferContext plumbing
parent
69585a4824
commit
5f18f2ce6a
|
@ -184,7 +184,7 @@ namespace OpenSim.Framework
|
||||||
/// Pack AgentCircuitData into an OSDMap for transmission over LLSD XML or LLSD json
|
/// Pack AgentCircuitData into an OSDMap for transmission over LLSD XML or LLSD json
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>map of the agent circuit data</returns>
|
/// <returns>map of the agent circuit data</returns>
|
||||||
public OSDMap PackAgentCircuitData(int wearablesCount)
|
public OSDMap PackAgentCircuitData(EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
OSDMap args = new OSDMap();
|
OSDMap args = new OSDMap();
|
||||||
args["agent_id"] = OSD.FromUUID(AgentID);
|
args["agent_id"] = OSD.FromUUID(AgentID);
|
||||||
|
@ -224,7 +224,7 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
args["appearance_serial"] = OSD.FromInteger(Appearance.Serial);
|
args["appearance_serial"] = OSD.FromInteger(Appearance.Serial);
|
||||||
|
|
||||||
OSDMap appmap = Appearance.Pack(wearablesCount);
|
OSDMap appmap = Appearance.Pack(ctx);
|
||||||
args["packed_appearance"] = appmap;
|
args["packed_appearance"] = appmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -717,7 +717,7 @@ namespace OpenSim.Framework
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create an OSDMap from the appearance data
|
/// Create an OSDMap from the appearance data
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public OSDMap Pack(int wearablesCount)
|
public OSDMap Pack(EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
OSDMap data = new OSDMap();
|
OSDMap data = new OSDMap();
|
||||||
|
|
||||||
|
@ -728,8 +728,8 @@ namespace OpenSim.Framework
|
||||||
//
|
//
|
||||||
// This will send as many or as few wearables as we have, unless a count
|
// This will send as many or as few wearables as we have, unless a count
|
||||||
// is given. Used for legacy (pre 0.4) versions.
|
// is given. Used for legacy (pre 0.4) versions.
|
||||||
int count = wearablesCount;
|
int count = ctx.WearablesCount;
|
||||||
if (wearablesCount == -1)
|
if (ctx.WearablesCount == -1)
|
||||||
count = m_wearables.Length;
|
count = m_wearables.Length;
|
||||||
OSDArray wears = new OSDArray(count);
|
OSDArray wears = new OSDArray(count);
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
|
|
|
@ -61,8 +61,8 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
UUID AgentID { get; set; }
|
UUID AgentID { get; set; }
|
||||||
|
|
||||||
OSDMap Pack(Object parms = null);
|
OSDMap Pack(EntityTransferContext ctx);
|
||||||
void Unpack(OSDMap map, IScene scene);
|
void Unpack(OSDMap map, IScene scene, EntityTransferContext ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -96,7 +96,7 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public Dictionary<ulong, string> ChildrenCapSeeds = null;
|
public Dictionary<ulong, string> ChildrenCapSeeds = null;
|
||||||
|
|
||||||
public OSDMap Pack(Object parms = null)
|
public OSDMap Pack(EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
OSDMap args = new OSDMap();
|
OSDMap args = new OSDMap();
|
||||||
args["message_type"] = OSD.FromString("AgentPosition");
|
args["message_type"] = OSD.FromString("AgentPosition");
|
||||||
|
@ -136,7 +136,7 @@ namespace OpenSim.Framework
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Unpack(OSDMap args, IScene scene)
|
public void Unpack(OSDMap args, IScene scene, EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
if (args.ContainsKey("region_handle"))
|
if (args.ContainsKey("region_handle"))
|
||||||
UInt64.TryParse(args["region_handle"].AsString(), out RegionHandle);
|
UInt64.TryParse(args["region_handle"].AsString(), out RegionHandle);
|
||||||
|
@ -391,18 +391,10 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public Dictionary<string, UUID> MovementAnimationOverRides = new Dictionary<string, UUID>();
|
public Dictionary<string, UUID> MovementAnimationOverRides = new Dictionary<string, UUID>();
|
||||||
|
|
||||||
public virtual OSDMap Pack(Object parms = null)
|
public virtual OSDMap Pack(EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
int wearablesCount = -1;
|
int wearablesCount = -1;
|
||||||
|
|
||||||
if (parms != null)
|
|
||||||
{
|
|
||||||
Hashtable p = (Hashtable)parms;
|
|
||||||
|
|
||||||
if (p.ContainsKey("wearablesCount"))
|
|
||||||
wearablesCount = (int)p["wearablesCount"];
|
|
||||||
}
|
|
||||||
|
|
||||||
// m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data");
|
// m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data");
|
||||||
|
|
||||||
OSDMap args = new OSDMap();
|
OSDMap args = new OSDMap();
|
||||||
|
@ -503,7 +495,7 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Appearance != null)
|
if (Appearance != null)
|
||||||
args["packed_appearance"] = Appearance.Pack(wearablesCount);
|
args["packed_appearance"] = Appearance.Pack(ctx);
|
||||||
|
|
||||||
//if ((AgentTextures != null) && (AgentTextures.Length > 0))
|
//if ((AgentTextures != null) && (AgentTextures.Length > 0))
|
||||||
//{
|
//{
|
||||||
|
@ -594,7 +586,7 @@ namespace OpenSim.Framework
|
||||||
/// Avoiding reflection makes it painful to write, but that's the price!
|
/// Avoiding reflection makes it painful to write, but that's the price!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="hash"></param>
|
/// <param name="hash"></param>
|
||||||
public virtual void Unpack(OSDMap args, IScene scene)
|
public virtual void Unpack(OSDMap args, IScene scene, EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
//m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Unpack data");
|
//m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Unpack data");
|
||||||
|
|
||||||
|
@ -903,14 +895,14 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public class CompleteAgentData : AgentData
|
public class CompleteAgentData : AgentData
|
||||||
{
|
{
|
||||||
public override OSDMap Pack(object parms = null)
|
public override OSDMap Pack(EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
return base.Pack(parms);
|
return base.Pack(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Unpack(OSDMap map, IScene scene)
|
public override void Unpack(OSDMap map, IScene scene, EntityTransferContext ctx)
|
||||||
{
|
{
|
||||||
base.Unpack(map, scene);
|
base.Unpack(map, scene, ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,8 +311,9 @@ namespace OpenSim.Framework.Tests
|
||||||
Agent1Data.SessionID = SessionId;
|
Agent1Data.SessionID = SessionId;
|
||||||
Agent1Data.startpos = StartPos;
|
Agent1Data.startpos = StartPos;
|
||||||
|
|
||||||
|
EntityTransferContext ctx = new EntityTransferContext();
|
||||||
OSDMap map2;
|
OSDMap map2;
|
||||||
OSDMap map = Agent1Data.PackAgentCircuitData(-1);
|
OSDMap map = Agent1Data.PackAgentCircuitData(ctx);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string str = OSDParser.SerializeJsonString(map);
|
string str = OSDParser.SerializeJsonString(map);
|
||||||
|
|
|
@ -116,7 +116,8 @@ namespace OpenSim.Framework.Tests
|
||||||
position2 = new AgentPosition();
|
position2 = new AgentPosition();
|
||||||
|
|
||||||
Assert.IsFalse(position2.AgentID == position1.AgentID, "Test Error, position2 should be a blank uninitialized AgentPosition");
|
Assert.IsFalse(position2.AgentID == position1.AgentID, "Test Error, position2 should be a blank uninitialized AgentPosition");
|
||||||
position2.Unpack(position1.Pack(), null);
|
EntityTransferContext ctx = new EntityTransferContext();
|
||||||
|
position2.Unpack(position1.Pack(ctx), null, ctx);
|
||||||
|
|
||||||
Assert.IsTrue(position2.AgentID == position1.AgentID, "Agent ID didn't unpack the same way it packed");
|
Assert.IsTrue(position2.AgentID == position1.AgentID, "Agent ID didn't unpack the same way it packed");
|
||||||
Assert.IsTrue(position2.Position == position1.Position, "Position didn't unpack the same way it packed");
|
Assert.IsTrue(position2.Position == position1.Position, "Position didn't unpack the same way it packed");
|
||||||
|
@ -305,4 +306,4 @@ namespace OpenSim.Framework.Tests
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3114,7 +3114,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (appearanceModule != null)
|
if (appearanceModule != null)
|
||||||
{
|
{
|
||||||
appearanceModule.SaveBakedTextures(sp.UUID);
|
appearanceModule.SaveBakedTextures(sp.UUID);
|
||||||
OSDMap appearancePacked = sp.Appearance.Pack(-1);
|
EntityTransferContext ctx = new EntityTransferContext();
|
||||||
|
OSDMap appearancePacked = sp.Appearance.Pack(ctx);
|
||||||
|
|
||||||
TaskInventoryItem item
|
TaskInventoryItem item
|
||||||
= SaveNotecard(notecard, "Avatar Appearance", Util.GetFormattedXml(appearancePacked as OSD), true);
|
= SaveNotecard(notecard, "Avatar Appearance", Util.GetFormattedXml(appearancePacked as OSD), true);
|
||||||
|
|
|
@ -262,7 +262,6 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||||
resp["version"] = OSD.FromString(legacyVersion);
|
resp["version"] = OSD.FromString(legacyVersion);
|
||||||
resp["negotiated_inbound_version"] = OSD.FromReal(inboundVersion);
|
resp["negotiated_inbound_version"] = OSD.FromReal(inboundVersion);
|
||||||
resp["negotiated_outbound_version"] = OSD.FromReal(outboundVersion);
|
resp["negotiated_outbound_version"] = OSD.FromReal(outboundVersion);
|
||||||
resp["variable_wearables_count_supported"] = OSD.FromBoolean(true);
|
|
||||||
|
|
||||||
OSDArray featuresWanted = new OSDArray();
|
OSDArray featuresWanted = new OSDArray();
|
||||||
foreach (UUID feature in features)
|
foreach (UUID feature in features)
|
||||||
|
@ -661,6 +660,9 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||||
|
|
||||||
protected void DoAgentPut(Hashtable request, Hashtable responsedata)
|
protected void DoAgentPut(Hashtable request, Hashtable responsedata)
|
||||||
{
|
{
|
||||||
|
// TODO: Encode the ENtityTransferContext
|
||||||
|
EntityTransferContext ctx = new EntityTransferContext();
|
||||||
|
|
||||||
OSDMap args = Utils.GetOSDMap((string)request["body"]);
|
OSDMap args = Utils.GetOSDMap((string)request["body"]);
|
||||||
if (args == null)
|
if (args == null)
|
||||||
{
|
{
|
||||||
|
@ -703,7 +705,7 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||||
AgentData agent = new AgentData();
|
AgentData agent = new AgentData();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
agent.Unpack(args, m_SimulationService.GetScene(destination.RegionID));
|
agent.Unpack(args, m_SimulationService.GetScene(destination.RegionID), ctx);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -722,7 +724,7 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||||
AgentPosition agent = new AgentPosition();
|
AgentPosition agent = new AgentPosition();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
agent.Unpack(args, m_SimulationService.GetScene(destination.RegionID));
|
agent.Unpack(args, m_SimulationService.GetScene(destination.RegionID), ctx);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -152,7 +152,8 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
// <param name=""></param>
|
// <param name=""></param>
|
||||||
public bool SetAppearance(UUID userID, AvatarAppearance appearance)
|
public bool SetAppearance(UUID userID, AvatarAppearance appearance)
|
||||||
{
|
{
|
||||||
OSDMap map = appearance.Pack(-1);
|
EntityTransferContext ctx = new EntityTransferContext();
|
||||||
|
OSDMap map = appearance.Pack(ctx);
|
||||||
if (map == null)
|
if (map == null)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}",userID);
|
m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}",userID);
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
OSDMap args = aCircuit.PackAgentCircuitData(-1);
|
OSDMap args = aCircuit.PackAgentCircuitData(ctx);
|
||||||
PackData(args, source, aCircuit, destination, flags);
|
PackData(args, source, aCircuit, destination, flags);
|
||||||
|
|
||||||
OSDMap result = WebUtil.PostToServiceCompressed(uri, args, 30000);
|
OSDMap result = WebUtil.PostToServiceCompressed(uri, args, 30000);
|
||||||
|
@ -260,7 +260,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
OSDMap args = cAgentData.Pack();
|
OSDMap args = cAgentData.Pack(ctx);
|
||||||
|
|
||||||
args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString());
|
args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString());
|
||||||
args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString());
|
args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString());
|
||||||
|
@ -347,8 +347,6 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
ctx.OutboundVersion = float.Parse(parts[1]);
|
ctx.OutboundVersion = float.Parse(parts[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data.ContainsKey("variable_wearables_count_supported"))
|
|
||||||
ctx.VariableWearablesSupported = true;
|
|
||||||
|
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1}, reason {2}, version {3}/{4}",
|
"[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1}, reason {2}, version {3}/{4}",
|
||||||
|
|
|
@ -34,20 +34,6 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
|
||||||
|
|
||||||
namespace OpenSim.Services.Interfaces
|
namespace OpenSim.Services.Interfaces
|
||||||
{
|
{
|
||||||
public class EntityTransferContext
|
|
||||||
{
|
|
||||||
public EntityTransferContext()
|
|
||||||
{
|
|
||||||
InboundVersion = VersionInfo.SimulationServiceVersionAcceptedMax;
|
|
||||||
OutboundVersion = VersionInfo.SimulationServiceVersionSupportedMax;
|
|
||||||
VariableWearablesSupported = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float InboundVersion { get; set; }
|
|
||||||
public float OutboundVersion { get; set; }
|
|
||||||
public bool VariableWearablesSupported { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface ISimulationService
|
public interface ISimulationService
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue