Merge branch 'master' of ssh://MyConnection/var/git/opensim
commit
30ce56e721
|
@ -77,7 +77,6 @@ what it is today.
|
|||
* Intimidated
|
||||
* Jeremy Bongio (IBM)
|
||||
* jhurliman
|
||||
* Mike Osias (IBM)
|
||||
* John R Sohn (XenReborn)
|
||||
* jonc
|
||||
* Junta Kohime
|
||||
|
@ -91,6 +90,7 @@ what it is today.
|
|||
* maimedleech
|
||||
* Mic Bowman
|
||||
* Michelle Argus
|
||||
* Mike Osias (IBM)
|
||||
* Mike Pitman (IBM)
|
||||
* mikkopa/_someone - RealXtend
|
||||
* Mircea Kitsune
|
||||
|
@ -119,9 +119,11 @@ what it is today.
|
|||
* Xantor
|
||||
* Y. Nitta
|
||||
* YZh
|
||||
* Zackary Geers aka Kunnis Basiat
|
||||
* Zha Ewry
|
||||
|
||||
|
||||
|
||||
LSL Devs
|
||||
|
||||
* Alondria
|
||||
|
|
|
@ -41,12 +41,18 @@ using OpenSim.Region.Framework.Interfaces;
|
|||
|
||||
namespace OpenSim.Client.Linden
|
||||
{
|
||||
/// <summary>
|
||||
/// Linden UDP Stack Region Module
|
||||
/// </summary>
|
||||
public class LLClientStackModule : INonSharedRegionModule
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
#region IRegionModule Members
|
||||
|
||||
/// <summary>
|
||||
/// Scene that contains the region's data
|
||||
/// </summary>
|
||||
protected Scene m_scene;
|
||||
protected bool m_createClientStack = false;
|
||||
protected IClientNetworkServer m_clientServer;
|
||||
|
|
|
@ -204,8 +204,16 @@ namespace OpenSim.Data.Tests
|
|||
UUID webloginkey = UUID.Random();
|
||||
uint homeregx = (uint) random.Next();
|
||||
uint homeregy = (uint) random.Next();
|
||||
Vector3 homeloc = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
|
||||
Vector3 homelookat = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
|
||||
Vector3 homeloc
|
||||
= new Vector3(
|
||||
(float)Math.Round(random.NextDouble(), 5),
|
||||
(float)Math.Round(random.NextDouble(), 5),
|
||||
(float)Math.Round(random.NextDouble(), 5));
|
||||
Vector3 homelookat
|
||||
= new Vector3(
|
||||
(float)Math.Round(random.NextDouble(), 5),
|
||||
(float)Math.Round(random.NextDouble(), 5),
|
||||
(float)Math.Round(random.NextDouble(), 5));
|
||||
int created = random.Next();
|
||||
int lastlogin = random.Next();
|
||||
string userinvuri = RandomName();
|
||||
|
|
|
@ -0,0 +1,298 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using NUnit.Framework;
|
||||
using NUnit.Framework.Constraints;
|
||||
using NUnit.Framework.SyntaxHelpers;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Data.Tests
|
||||
{
|
||||
public static class Constraints
|
||||
{
|
||||
//This is here because C# has a gap in the language, you can't infer type from a constructor
|
||||
public static PropertyCompareConstraint<T> PropertyCompareConstraint<T>(T expected)
|
||||
{
|
||||
return new PropertyCompareConstraint<T>(expected);
|
||||
}
|
||||
}
|
||||
|
||||
public class PropertyCompareConstraint<T> : NUnit.Framework.Constraints.Constraint
|
||||
{
|
||||
private readonly object _expected;
|
||||
//the reason everywhere uses propertyNames.Reverse().ToArray() is because the stack is backwards of the order we want to display the properties in.
|
||||
private string failingPropertyName = string.Empty;
|
||||
private object failingExpected;
|
||||
private object failingActual;
|
||||
|
||||
public PropertyCompareConstraint(T expected)
|
||||
{
|
||||
_expected = expected;
|
||||
}
|
||||
|
||||
public override bool Matches(object actual)
|
||||
{
|
||||
return ObjectCompare(_expected, actual, new Stack<string>());
|
||||
}
|
||||
|
||||
private bool ObjectCompare(object expected, object actual, Stack<string> propertyNames)
|
||||
{
|
||||
if (actual.GetType() != expected.GetType())
|
||||
{
|
||||
propertyNames.Push("GetType()");
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actual.GetType();
|
||||
failingExpected = expected.GetType();
|
||||
return false;
|
||||
}
|
||||
|
||||
if(actual.GetType() == typeof(Color))
|
||||
{
|
||||
Color actualColor = (Color) actual;
|
||||
Color expectedColor = (Color) expected;
|
||||
if (actualColor.R != expectedColor.R)
|
||||
{
|
||||
propertyNames.Push("R");
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actualColor.R;
|
||||
failingExpected = expectedColor.R;
|
||||
return false;
|
||||
}
|
||||
if (actualColor.G != expectedColor.G)
|
||||
{
|
||||
propertyNames.Push("G");
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actualColor.G;
|
||||
failingExpected = expectedColor.G;
|
||||
return false;
|
||||
}
|
||||
if (actualColor.B != expectedColor.B)
|
||||
{
|
||||
propertyNames.Push("B");
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actualColor.B;
|
||||
failingExpected = expectedColor.B;
|
||||
return false;
|
||||
}
|
||||
if (actualColor.A != expectedColor.A)
|
||||
{
|
||||
propertyNames.Push("A");
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actualColor.A;
|
||||
failingExpected = expectedColor.A;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//Skip static properties. I had a nasty problem comparing colors because of all of the public static colors.
|
||||
PropertyInfo[] properties = expected.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||
foreach (var property in properties)
|
||||
{
|
||||
if (ignores.Contains(property.Name))
|
||||
continue;
|
||||
|
||||
object actualValue = property.GetValue(actual, null);
|
||||
object expectedValue = property.GetValue(expected, null);
|
||||
|
||||
//If they are both null, they are equal
|
||||
if (actualValue == null && expectedValue == null)
|
||||
continue;
|
||||
|
||||
//If only one is null, then they aren't
|
||||
if (actualValue == null || expectedValue == null)
|
||||
{
|
||||
propertyNames.Push(property.Name);
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actualValue;
|
||||
failingExpected = expectedValue;
|
||||
return false;
|
||||
}
|
||||
|
||||
IComparable comp = actualValue as IComparable;
|
||||
if (comp != null)
|
||||
{
|
||||
if (comp.CompareTo(expectedValue) != 0)
|
||||
{
|
||||
propertyNames.Push(property.Name);
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
propertyNames.Pop();
|
||||
failingActual = actualValue;
|
||||
failingExpected = expectedValue;
|
||||
return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
IEnumerable arr = actualValue as IEnumerable;
|
||||
if (arr != null)
|
||||
{
|
||||
List<object> actualList = arr.Cast<object>().ToList();
|
||||
List<object> expectedList = ((IEnumerable)expectedValue).Cast<object>().ToList();
|
||||
if (actualList.Count != expectedList.Count)
|
||||
{
|
||||
propertyNames.Push(property.Name);
|
||||
propertyNames.Push("Count");
|
||||
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||
failingActual = actualList.Count;
|
||||
failingExpected = expectedList.Count;
|
||||
propertyNames.Pop();
|
||||
propertyNames.Pop();
|
||||
}
|
||||
//Todo: A value-wise comparison of all of the values.
|
||||
//Everything seems okay...
|
||||
continue;
|
||||
}
|
||||
|
||||
propertyNames.Push(property.Name);
|
||||
if (!ObjectCompare(expectedValue, actualValue, propertyNames))
|
||||
return false;
|
||||
propertyNames.Pop();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void WriteDescriptionTo(MessageWriter writer)
|
||||
{
|
||||
writer.WriteExpectedValue(failingExpected);
|
||||
}
|
||||
|
||||
public override void WriteActualValueTo(MessageWriter writer)
|
||||
{
|
||||
writer.WriteActualValue(failingActual);
|
||||
writer.WriteLine();
|
||||
writer.Write(" On Property: " + failingPropertyName);
|
||||
}
|
||||
|
||||
//These notes assume the lambda: (x=>x.Parent.Value)
|
||||
//ignores should really contain like a fully dotted version of the property name, but I'm starting with small steps
|
||||
readonly List<string> ignores = new List<string>();
|
||||
public PropertyCompareConstraint<T> IgnoreProperty(Expression<Func<T, object>> func)
|
||||
{
|
||||
Expression express = func.Body;
|
||||
PullApartExpression(express);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
private void PullApartExpression(Expression express)
|
||||
{
|
||||
//This deals with any casts... like implicit casts to object. Not all UnaryExpression are casts, but this is a first attempt.
|
||||
if (express is UnaryExpression)
|
||||
PullApartExpression(((UnaryExpression)express).Operand);
|
||||
if (express is MemberExpression)
|
||||
{
|
||||
//If the inside of the lambda is the access to x, we've hit the end of the chain.
|
||||
// We should track by the fully scoped parameter name, but this is the first rev of doing this.
|
||||
if (((MemberExpression)express).Expression is ParameterExpression)
|
||||
{
|
||||
ignores.Add(((MemberExpression)express).Member.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Otherwise there could be more parameters inside...
|
||||
PullApartExpression(((MemberExpression)express).Expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[TestFixture]
|
||||
public class PropertyCompareConstraintTest
|
||||
{
|
||||
public class HasInt
|
||||
{
|
||||
public int TheValue { get; set; }
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IntShouldMatch()
|
||||
{
|
||||
HasInt actual = new HasInt { TheValue = 5 };
|
||||
HasInt expected = new HasInt { TheValue = 5 };
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IntShouldNotMatch()
|
||||
{
|
||||
HasInt actual = new HasInt { TheValue = 5 };
|
||||
HasInt expected = new HasInt { TheValue = 4 };
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.False);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void IntShouldIgnore()
|
||||
{
|
||||
HasInt actual = new HasInt { TheValue = 5 };
|
||||
HasInt expected = new HasInt { TheValue = 4 };
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected).IgnoreProperty(x=>x.TheValue);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AssetShouldMatch()
|
||||
{
|
||||
UUID uuid1 = UUID.Random();
|
||||
AssetBase actual = new AssetBase(uuid1, "asset one");
|
||||
AssetBase expected = new AssetBase(uuid1, "asset one");
|
||||
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AssetShouldNotMatch()
|
||||
{
|
||||
UUID uuid1 = UUID.Random();
|
||||
AssetBase actual = new AssetBase(uuid1, "asset one");
|
||||
AssetBase expected = new AssetBase(UUID.Random(), "asset one");
|
||||
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AssetShouldNotMatch2()
|
||||
{
|
||||
UUID uuid1 = UUID.Random();
|
||||
AssetBase actual = new AssetBase(uuid1, "asset one");
|
||||
AssetBase expected = new AssetBase(uuid1, "asset two");
|
||||
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestColors()
|
||||
{
|
||||
Color actual = Color.Red;
|
||||
Color expected = Color.FromArgb(actual.A, actual.R, actual.G, actual.B);
|
||||
|
||||
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||
|
||||
Assert.That(constraint.Matches(actual), Is.True);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using NUnit.Framework;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Data.Tests
|
||||
{
|
||||
public static class ScrambleForTesting
|
||||
{
|
||||
private static readonly Random random = new Random();
|
||||
public static void Scramble(object obj)
|
||||
{
|
||||
PropertyInfo[] properties = obj.GetType().GetProperties();
|
||||
foreach (var property in properties)
|
||||
{
|
||||
//Skip indexers of classes. We will assume that everything that has an indexer
|
||||
// is also IEnumberable. May not always be true, but should be true normally.
|
||||
if(property.GetIndexParameters().Length > 0)
|
||||
continue;
|
||||
|
||||
RandomizeProperty(obj, property, null);
|
||||
}
|
||||
//Now if it implments IEnumberable, it's probably some kind of list, so we should randomize
|
||||
// everything inside of it.
|
||||
IEnumerable enumerable = obj as IEnumerable;
|
||||
if(enumerable != null)
|
||||
{
|
||||
foreach (object value in enumerable)
|
||||
{
|
||||
Scramble(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void RandomizeProperty(object obj, PropertyInfo property, object[] index)
|
||||
{
|
||||
Type t = property.PropertyType;
|
||||
if (!property.CanWrite)
|
||||
return;
|
||||
object value = property.GetValue(obj, index);
|
||||
if (value == null)
|
||||
return;
|
||||
|
||||
if (t == typeof (string))
|
||||
property.SetValue(obj, RandomName(), index);
|
||||
else if (t == typeof (UUID))
|
||||
property.SetValue(obj, UUID.Random(), index);
|
||||
else if (t == typeof (sbyte))
|
||||
property.SetValue(obj, (sbyte)random.Next(sbyte.MinValue, sbyte.MaxValue), index);
|
||||
else if (t == typeof (short))
|
||||
property.SetValue(obj, (short)random.Next(short.MinValue, short.MaxValue), index);
|
||||
else if (t == typeof (int))
|
||||
property.SetValue(obj, random.Next(), index);
|
||||
else if (t == typeof (long))
|
||||
property.SetValue(obj, random.Next() * int.MaxValue, index);
|
||||
else if (t == typeof (byte))
|
||||
property.SetValue(obj, (byte)random.Next(byte.MinValue, byte.MaxValue), index);
|
||||
else if (t == typeof (ushort))
|
||||
property.SetValue(obj, (ushort)random.Next(ushort.MinValue, ushort.MaxValue), index);
|
||||
else if (t == typeof (uint))
|
||||
property.SetValue(obj, Convert.ToUInt32(random.Next()), index);
|
||||
else if (t == typeof (ulong))
|
||||
property.SetValue(obj, Convert.ToUInt64(random.Next()) * Convert.ToUInt64(UInt32.MaxValue), index);
|
||||
else if (t == typeof (bool))
|
||||
property.SetValue(obj, true, index);
|
||||
else if (t == typeof (byte[]))
|
||||
{
|
||||
byte[] bytes = new byte[30];
|
||||
random.NextBytes(bytes);
|
||||
property.SetValue(obj, bytes, index);
|
||||
}
|
||||
else
|
||||
Scramble(value);
|
||||
}
|
||||
|
||||
private static string RandomName()
|
||||
{
|
||||
StringBuilder name = new StringBuilder();
|
||||
int size = random.Next(5, 12);
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
char ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
|
||||
name.Append(ch);
|
||||
}
|
||||
return name.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
[TestFixture]
|
||||
public class ScrableForTestingTest
|
||||
{
|
||||
[Test]
|
||||
public void TestScramble()
|
||||
{
|
||||
AssetBase actual = new AssetBase(UUID.Random(), "asset one");
|
||||
ScrambleForTesting.Scramble(actual);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -46,6 +46,11 @@ namespace OpenSim.Framework
|
|||
private Dictionary<string, Resource> Resources = new Dictionary<string, Resource>();
|
||||
private Dictionary<string, Role> Roles = new Dictionary<string, Role>();
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new role
|
||||
/// </summary>
|
||||
/// <param name="role"></param>
|
||||
/// <returns></returns>
|
||||
public ACL AddRole(Role role)
|
||||
{
|
||||
if (Roles.ContainsKey(role.Name))
|
||||
|
@ -56,6 +61,11 @@ namespace OpenSim.Framework
|
|||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new resource
|
||||
/// </summary>
|
||||
/// <param name="resource"></param>
|
||||
/// <returns></returns>
|
||||
public ACL AddResource(Resource resource)
|
||||
{
|
||||
Resources.Add(resource.Name, resource);
|
||||
|
@ -63,6 +73,12 @@ namespace OpenSim.Framework
|
|||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Permision for user/roll on a resource
|
||||
/// </summary>
|
||||
/// <param name="role"></param>
|
||||
/// <param name="resource"></param>
|
||||
/// <returns></returns>
|
||||
public Permission HasPermission(string role, string resource)
|
||||
{
|
||||
if (!Roles.ContainsKey(role))
|
||||
|
@ -234,6 +250,9 @@ namespace OpenSim.Framework
|
|||
|
||||
#region Tests
|
||||
|
||||
/// <summary>
|
||||
/// ACL Test class
|
||||
/// </summary>
|
||||
internal class ACLTester
|
||||
{
|
||||
public ACLTester()
|
||||
|
|
|
@ -32,26 +32,83 @@ using OpenMetaverse.StructuredData;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Circuit data for an agent. Connection information shared between
|
||||
/// regions that accept UDP connections from a client
|
||||
/// </summary>
|
||||
public class AgentCircuitData
|
||||
{
|
||||
/// <summary>
|
||||
/// Avatar Unique Agent Identifier
|
||||
/// </summary>
|
||||
public UUID AgentID;
|
||||
|
||||
/// <summary>
|
||||
/// Avatar's Appearance
|
||||
/// </summary>
|
||||
public AvatarAppearance Appearance;
|
||||
|
||||
/// <summary>
|
||||
/// Agent's root inventory folder
|
||||
/// </summary>
|
||||
public UUID BaseFolder;
|
||||
|
||||
/// <summary>
|
||||
/// Base Caps path for user
|
||||
/// </summary>
|
||||
public string CapsPath = String.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Seed caps for neighbor regions that the user can see into
|
||||
/// </summary>
|
||||
public Dictionary<ulong, string> ChildrenCapSeeds;
|
||||
|
||||
/// <summary>
|
||||
/// Root agent, or Child agent
|
||||
/// </summary>
|
||||
public bool child;
|
||||
|
||||
/// <summary>
|
||||
/// Number given to the client when they log-in that they provide
|
||||
/// as credentials to the UDP server
|
||||
/// </summary>
|
||||
public uint circuitcode;
|
||||
|
||||
/// <summary>
|
||||
/// Agent's account first name
|
||||
/// </summary>
|
||||
public string firstname;
|
||||
public UUID InventoryFolder;
|
||||
|
||||
/// <summary>
|
||||
/// Agent's account last name
|
||||
/// </summary>
|
||||
public string lastname;
|
||||
|
||||
/// <summary>
|
||||
/// Random Unique GUID for this session. Client gets this at login and it's
|
||||
/// only supposed to be disclosed over secure channels
|
||||
/// </summary>
|
||||
public UUID SecureSessionID;
|
||||
|
||||
/// <summary>
|
||||
/// Non secure Session ID
|
||||
/// </summary>
|
||||
public UUID SessionID;
|
||||
|
||||
/// <summary>
|
||||
/// Position the Agent's Avatar starts in the region
|
||||
/// </summary>
|
||||
public Vector3 startpos;
|
||||
|
||||
public AgentCircuitData()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create AgentCircuitData from a Serializable AgentCircuitData
|
||||
/// </summary>
|
||||
/// <param name="cAgent"></param>
|
||||
public AgentCircuitData(sAgentCircuitData cAgent)
|
||||
{
|
||||
AgentID = new UUID(cAgent.AgentID);
|
||||
|
@ -68,6 +125,10 @@ namespace OpenSim.Framework
|
|||
ChildrenCapSeeds = cAgent.ChildrenCapSeeds;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pack AgentCircuitData into an OSDMap for transmission over LLSD XML or LLSD json
|
||||
/// </summary>
|
||||
/// <returns>map of the agent circuit data</returns>
|
||||
public OSDMap PackAgentCircuitData()
|
||||
{
|
||||
OSDMap args = new OSDMap();
|
||||
|
@ -98,6 +159,10 @@ namespace OpenSim.Framework
|
|||
return args;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unpack agent circuit data map into an AgentCiruitData object
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
public void UnpackAgentCircuitData(OSDMap args)
|
||||
{
|
||||
if (args["agent_id"] != null)
|
||||
|
@ -150,6 +215,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serializable Agent Circuit Data
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class sAgentCircuitData
|
||||
{
|
||||
|
|
|
@ -30,18 +30,52 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Client provided parameters for avatar movement
|
||||
/// </summary>
|
||||
public class AgentUpdateArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// Agent's unique ID
|
||||
/// </summary>
|
||||
public UUID AgentID;
|
||||
|
||||
/// <summary>
|
||||
/// Rotation of the avatar's body
|
||||
/// </summary>
|
||||
public Quaternion BodyRotation;
|
||||
|
||||
/// <summary>
|
||||
/// AT portion of the camera matrix
|
||||
/// </summary>
|
||||
public Vector3 CameraAtAxis;
|
||||
|
||||
/// <summary>
|
||||
/// Position of the camera in the Scene
|
||||
/// </summary>
|
||||
public Vector3 CameraCenter;
|
||||
public Vector3 CameraLeftAxis;
|
||||
public Vector3 CameraUpAxis;
|
||||
|
||||
/// <summary>
|
||||
/// Bitflag field for agent movement. Fly, forward, backward, turn left, turn right, go up, go down, Straffe, etc.
|
||||
/// </summary>
|
||||
public uint ControlFlags;
|
||||
|
||||
/// <summary>
|
||||
/// Agent's client Draw distance setting
|
||||
/// </summary>
|
||||
public float Far;
|
||||
public byte Flags;
|
||||
|
||||
/// <summary>
|
||||
/// Rotation of the avatar's head
|
||||
/// </summary>
|
||||
public Quaternion HeadRotation;
|
||||
|
||||
/// <summary>
|
||||
/// Session Id
|
||||
/// </summary>
|
||||
public UUID SessionID;
|
||||
public byte State;
|
||||
}
|
||||
|
|
|
@ -31,10 +31,17 @@ using OpenMetaverse.StructuredData;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Information about an Animation
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class Animation
|
||||
{
|
||||
private UUID animID;
|
||||
|
||||
/// <summary>
|
||||
/// ID of Animation
|
||||
/// </summary>
|
||||
public UUID AnimID
|
||||
{
|
||||
get { return animID; }
|
||||
|
@ -49,6 +56,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
|
||||
private UUID objectID;
|
||||
|
||||
/// <summary>
|
||||
/// Unique ID of object that is being animated
|
||||
/// </summary>
|
||||
public UUID ObjectID
|
||||
{
|
||||
get { return objectID; }
|
||||
|
@ -59,6 +70,12 @@ namespace OpenSim.Framework
|
|||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an Animation based on the data
|
||||
/// </summary>
|
||||
/// <param name="animID">UUID ID of animation</param>
|
||||
/// <param name="sequenceNum"></param>
|
||||
/// <param name="objectID">ID of object to be animated</param>
|
||||
public Animation(UUID animID, int sequenceNum, UUID objectID)
|
||||
{
|
||||
this.animID = animID;
|
||||
|
@ -66,11 +83,20 @@ namespace OpenSim.Framework
|
|||
this.objectID = objectID;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Animation from OSDMap from LLSD XML or LLSD json
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
public Animation(OSDMap args)
|
||||
{
|
||||
UnpackUpdateMessage(args);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Pack this object up as an OSDMap for transferring via LLSD XML or LLSD json
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public OSDMap PackUpdateMessage()
|
||||
{
|
||||
OSDMap anim = new OSDMap();
|
||||
|
@ -80,6 +106,10 @@ namespace OpenSim.Framework
|
|||
return anim;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fill object with data from OSDMap
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
public void UnpackUpdateMessage(OSDMap args)
|
||||
{
|
||||
if (args["animation"] != null)
|
||||
|
|
|
@ -31,10 +31,20 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Asset class. All Assets are reference by this class or a class derived from this class
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class AssetBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Data of the Asset
|
||||
/// </summary>
|
||||
private byte[] m_data;
|
||||
|
||||
/// <summary>
|
||||
/// Meta Data of the Asset
|
||||
/// </summary>
|
||||
private AssetMetadata m_metadata;
|
||||
|
||||
public AssetBase()
|
||||
|
@ -71,6 +81,9 @@ namespace OpenSim.Framework
|
|||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if this asset is a binary or text asset
|
||||
/// </summary>
|
||||
public bool IsBinaryAsset
|
||||
{
|
||||
get
|
||||
|
@ -102,12 +115,17 @@ namespace OpenSim.Framework
|
|||
set { m_data = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asset UUID
|
||||
/// </summary>
|
||||
public UUID FullID
|
||||
{
|
||||
get { return m_metadata.FullID; }
|
||||
set { m_metadata.FullID = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asset MetaData ID (transferring from UUID to string ID)
|
||||
/// </summary>
|
||||
public string ID
|
||||
{
|
||||
get { return m_metadata.ID; }
|
||||
|
@ -126,18 +144,27 @@ namespace OpenSim.Framework
|
|||
set { m_metadata.Description = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// (sbyte) AssetType enum
|
||||
/// </summary>
|
||||
public sbyte Type
|
||||
{
|
||||
get { return m_metadata.Type; }
|
||||
set { m_metadata.Type = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is this a region only asset, or does this exist on the asset server also
|
||||
/// </summary>
|
||||
public bool Local
|
||||
{
|
||||
get { return m_metadata.Local; }
|
||||
set { m_metadata.Local = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is this asset going to be saved to the asset database?
|
||||
/// </summary>
|
||||
public bool Temporary
|
||||
{
|
||||
get { return m_metadata.Temporary; }
|
||||
|
|
|
@ -28,14 +28,13 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Security.Permissions;
|
||||
using OpenMetaverse;
|
||||
using log4net;
|
||||
using System.Reflection;
|
||||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains the Avatar's Appearance and methods to manipulate the appearance.
|
||||
/// </summary>
|
||||
public class AvatarAppearance
|
||||
{
|
||||
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
|
|
@ -29,10 +29,24 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Avatar returned by the Avatar Picker request
|
||||
/// </summary>
|
||||
public class AvatarPickerAvatar
|
||||
{
|
||||
/// <summary>
|
||||
/// Avatar's Unique ID
|
||||
/// </summary>
|
||||
public UUID AvatarID;
|
||||
|
||||
/// <summary>
|
||||
/// Avatar's Account first name
|
||||
/// </summary>
|
||||
public string firstName;
|
||||
|
||||
/// <summary>
|
||||
/// Avatar's Account last name
|
||||
/// </summary>
|
||||
public string lastName;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,9 +30,19 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Args to return to a client that queries picker data
|
||||
/// </summary>
|
||||
public class AvatarPickerReplyAgentDataArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// Unique Agent ID
|
||||
/// </summary>
|
||||
public UUID AgentID;
|
||||
|
||||
/// <summary>
|
||||
/// ID of query user submitted
|
||||
/// </summary>
|
||||
public UUID QueryID;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,9 @@ namespace OpenSim.Framework
|
|||
get { return m_cultureInfo; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set Culture to en-US to make string processing of numbers simpler.
|
||||
/// </summary>
|
||||
public static void SetCurrentCulture()
|
||||
{
|
||||
Thread.CurrentThread.CurrentCulture = m_cultureInfo;
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System.Collections;
|
||||
using OpenMetaverse;
|
||||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
public interface IProfileModule
|
||||
{
|
||||
Hashtable GetProfileData(UUID userID);
|
||||
}
|
||||
}
|
|
@ -68,5 +68,24 @@ namespace OpenSim.Framework
|
|||
get { return _version; }
|
||||
set { _version = value; }
|
||||
}
|
||||
|
||||
public InventoryFolderBase()
|
||||
{
|
||||
}
|
||||
|
||||
public InventoryFolderBase(UUID id)
|
||||
{
|
||||
ID = id;
|
||||
}
|
||||
|
||||
public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version)
|
||||
{
|
||||
ID = id;
|
||||
Name = name;
|
||||
Owner = owner;
|
||||
Type = type;
|
||||
ParentID = parent;
|
||||
Version = version;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,9 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Details of a Parcel of land
|
||||
/// </summary>
|
||||
public class LandData
|
||||
{
|
||||
private Vector3 _AABBMax = new Vector3();
|
||||
|
@ -80,6 +83,9 @@ namespace OpenSim.Framework
|
|||
private int _dwell = 0;
|
||||
private int _otherCleanTime = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Upper corner of the AABB for the parcel
|
||||
/// </summary>
|
||||
public Vector3 AABBMax {
|
||||
get {
|
||||
return _AABBMax;
|
||||
|
@ -88,7 +94,9 @@ namespace OpenSim.Framework
|
|||
_AABBMax = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lower corner of the AABB for the parcel
|
||||
/// </summary>
|
||||
public Vector3 AABBMin {
|
||||
get {
|
||||
return _AABBMin;
|
||||
|
@ -98,6 +106,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Area in meters^2 the parcel contains
|
||||
/// </summary>
|
||||
public int Area {
|
||||
get {
|
||||
return _area;
|
||||
|
@ -107,6 +118,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ID of auction (3rd Party Integration) when parcel is being auctioned
|
||||
/// </summary>
|
||||
public uint AuctionID {
|
||||
get {
|
||||
return _auctionID;
|
||||
|
@ -116,6 +130,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UUID of authorized buyer of parcel. This is UUID.Zero if anyone can buy it.
|
||||
/// </summary>
|
||||
public UUID AuthBuyerID {
|
||||
get {
|
||||
return _authBuyerID;
|
||||
|
@ -125,6 +142,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Category of parcel. Used for classifying the parcel in classified listings
|
||||
/// </summary>
|
||||
public ParcelCategory Category {
|
||||
get {
|
||||
return _category;
|
||||
|
@ -134,6 +154,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Date that the current owner purchased or claimed the parcel
|
||||
/// </summary>
|
||||
public int ClaimDate {
|
||||
get {
|
||||
return _claimDate;
|
||||
|
@ -143,6 +166,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The last price that the parcel was sold at
|
||||
/// </summary>
|
||||
public int ClaimPrice {
|
||||
get {
|
||||
return _claimPrice;
|
||||
|
@ -152,6 +178,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Global ID for the parcel. (3rd Party Integration)
|
||||
/// </summary>
|
||||
public UUID GlobalID {
|
||||
get {
|
||||
return _globalID;
|
||||
|
@ -161,6 +190,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unique ID of the Group that owns
|
||||
/// </summary>
|
||||
public UUID GroupID {
|
||||
get {
|
||||
return _groupID;
|
||||
|
@ -170,6 +202,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of SceneObjectPart that are owned by a Group
|
||||
/// </summary>
|
||||
public int GroupPrims {
|
||||
get {
|
||||
return _groupPrims;
|
||||
|
@ -179,6 +214,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the Land Parcel is owned by a group
|
||||
/// </summary>
|
||||
public bool IsGroupOwned {
|
||||
get {
|
||||
return _isGroupOwned;
|
||||
|
@ -188,6 +226,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// jp2 data for the image representative of the parcel in the parcel dialog
|
||||
/// </summary>
|
||||
public byte[] Bitmap {
|
||||
get {
|
||||
return _bitmap;
|
||||
|
@ -197,6 +238,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parcel Description
|
||||
/// </summary>
|
||||
public string Description {
|
||||
get {
|
||||
return _description;
|
||||
|
@ -206,6 +250,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parcel settings. Access flags, Fly, NoPush, Voice, Scripts allowed, etc. ParcelFlags
|
||||
/// </summary>
|
||||
public uint Flags {
|
||||
get {
|
||||
return _flags;
|
||||
|
@ -215,6 +262,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if people are able to teleport where they please on the parcel or if they
|
||||
/// get constrainted to a specific point on teleport within the parcel
|
||||
/// </summary>
|
||||
public byte LandingType {
|
||||
get {
|
||||
return _landingType;
|
||||
|
@ -224,6 +275,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parcel Name
|
||||
/// </summary>
|
||||
public string Name {
|
||||
get {
|
||||
return _name;
|
||||
|
@ -233,6 +287,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Status of Parcel, Leased, Abandoned, For Sale
|
||||
/// </summary>
|
||||
public ParcelStatus Status {
|
||||
get {
|
||||
return _status;
|
||||
|
@ -242,6 +299,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Internal ID of the parcel. Sometimes the client will try to use this value
|
||||
/// </summary>
|
||||
public int LocalID {
|
||||
get {
|
||||
return _localID;
|
||||
|
@ -251,6 +311,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if we scale the media based on the surface it's on
|
||||
/// </summary>
|
||||
public byte MediaAutoScale {
|
||||
get {
|
||||
return _mediaAutoScale;
|
||||
|
@ -260,6 +323,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Texture Guid to replace with the output of the media stream
|
||||
/// </summary>
|
||||
public UUID MediaID {
|
||||
get {
|
||||
return _mediaID;
|
||||
|
@ -269,6 +335,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// URL to the media file to display
|
||||
/// </summary>
|
||||
public string MediaURL {
|
||||
get {
|
||||
return _mediaURL;
|
||||
|
@ -278,6 +347,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// URL to the shoutcast music stream to play on the parcel
|
||||
/// </summary>
|
||||
public string MusicURL {
|
||||
get {
|
||||
return _musicURL;
|
||||
|
@ -287,6 +359,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of SceneObjectPart that are owned by users who do not own the parcel
|
||||
/// and don't have the 'group. These are elegable for AutoReturn collection
|
||||
/// </summary>
|
||||
public int OtherPrims {
|
||||
get {
|
||||
return _otherPrims;
|
||||
|
@ -296,6 +372,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Owner Avatar or Group of the parcel. Naturally, all land masses must be
|
||||
/// owned by someone
|
||||
/// </summary>
|
||||
public UUID OwnerID {
|
||||
get {
|
||||
return _ownerID;
|
||||
|
@ -305,6 +385,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of SceneObjectPart that are owned by the owner of the parcel
|
||||
/// </summary>
|
||||
public int OwnerPrims {
|
||||
get {
|
||||
return _ownerPrims;
|
||||
|
@ -314,6 +397,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List of access data for the parcel. User data, some bitflags, and a time
|
||||
/// </summary>
|
||||
public List<ParcelManager.ParcelAccessEntry> ParcelAccessList {
|
||||
get {
|
||||
return _parcelAccessList;
|
||||
|
@ -323,6 +409,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// How long in hours a Pass to the parcel is given
|
||||
/// </summary>
|
||||
public float PassHours {
|
||||
get {
|
||||
return _passHours;
|
||||
|
@ -332,6 +421,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Price to purchase a Pass to a restricted parcel
|
||||
/// </summary>
|
||||
public int PassPrice {
|
||||
get {
|
||||
return _passPrice;
|
||||
|
@ -341,6 +433,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When the parcel is being sold, this is the price to purchase the parcel
|
||||
/// </summary>
|
||||
public int SalePrice {
|
||||
get {
|
||||
return _salePrice;
|
||||
|
@ -350,6 +445,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of SceneObjectPart that are currently selected by avatar
|
||||
/// </summary>
|
||||
public int SelectedPrims {
|
||||
get {
|
||||
return _selectedPrims;
|
||||
|
@ -359,6 +457,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of meters^2 in the Simulator
|
||||
/// </summary>
|
||||
public int SimwideArea {
|
||||
get {
|
||||
return _simwideArea;
|
||||
|
@ -368,6 +469,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of SceneObjectPart in the Simulator
|
||||
/// </summary>
|
||||
public int SimwidePrims {
|
||||
get {
|
||||
return _simwidePrims;
|
||||
|
@ -377,6 +481,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ID of the snapshot used in the client parcel dialog of the parcel
|
||||
/// </summary>
|
||||
public UUID SnapshotID {
|
||||
get {
|
||||
return _snapshotID;
|
||||
|
@ -386,6 +493,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When teleporting is restricted to a certain point, this is the location
|
||||
/// that the user will be redirected to
|
||||
/// </summary>
|
||||
public Vector3 UserLocation {
|
||||
get {
|
||||
return _userLocation;
|
||||
|
@ -395,6 +506,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When teleporting is restricted to a certain point, this is the rotation
|
||||
/// that the user will be positioned
|
||||
/// </summary>
|
||||
public Vector3 UserLookAt {
|
||||
get {
|
||||
return _userLookAt;
|
||||
|
@ -404,6 +519,9 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Depreciated idea. Number of visitors ~= free money
|
||||
/// </summary>
|
||||
public int Dwell {
|
||||
get {
|
||||
return _dwell;
|
||||
|
@ -413,6 +531,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of minutes to return SceneObjectGroup that are owned by someone who doesn't own
|
||||
/// the parcel and isn't set to the same 'group' as the parcel.
|
||||
/// </summary>
|
||||
public int OtherCleanTime {
|
||||
get {
|
||||
return _otherCleanTime;
|
||||
|
@ -422,11 +544,16 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public LandData()
|
||||
{
|
||||
_globalID = UUID.Random();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Make a new copy of the land data
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public LandData Copy()
|
||||
{
|
||||
LandData landData = new LandData();
|
||||
|
|
|
@ -443,7 +443,7 @@ namespace OpenSim.Framework.Servers
|
|||
string inputLine;
|
||||
int strcmp;
|
||||
|
||||
if (File.Exists( gitCommitFileName))
|
||||
if (File.Exists(gitCommitFileName))
|
||||
{
|
||||
StreamReader CommitFile = File.OpenText(gitCommitFileName);
|
||||
buildVersion = Environment.NewLine + "git# " + CommitFile.ReadLine();
|
||||
|
|
|
@ -964,8 +964,10 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
}
|
||||
}
|
||||
|
||||
response.ContentType = "application/llsd+json";
|
||||
return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(llsdResponse));
|
||||
// response.ContentType = "application/llsd+json";
|
||||
// return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(llsdResponse));
|
||||
response.ContentType = "application/llsd+xml";
|
||||
return OSDParser.SerializeLLSDXmlBytes(llsdResponse);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -0,0 +1,339 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
using System.Collections.Generic;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using NUnit.Framework;
|
||||
|
||||
|
||||
namespace OpenSim.Framework.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class AgentCircuitDataTest
|
||||
{
|
||||
private UUID AgentId;
|
||||
private AvatarAppearance AvAppearance;
|
||||
private byte[] VisualParams;
|
||||
private UUID BaseFolder;
|
||||
private string CapsPath;
|
||||
private Dictionary<ulong, string> ChildrenCapsPaths;
|
||||
private uint circuitcode = 0949030;
|
||||
private string firstname;
|
||||
private string lastname;
|
||||
private UUID SecureSessionId;
|
||||
private UUID SessionId;
|
||||
private Vector3 StartPos;
|
||||
|
||||
|
||||
[SetUp]
|
||||
public void setup()
|
||||
{
|
||||
AgentId = UUID.Random();
|
||||
BaseFolder = UUID.Random();
|
||||
CapsPath = "http://www.opensimulator.org/Caps/Foo";
|
||||
ChildrenCapsPaths = new Dictionary<ulong, string>();
|
||||
ChildrenCapsPaths.Add(ulong.MaxValue, "http://www.opensimulator.org/Caps/Foo2");
|
||||
firstname = "CoolAvatarTest";
|
||||
lastname = "test";
|
||||
StartPos = new Vector3(5,23,125);
|
||||
|
||||
SecureSessionId = UUID.Random();
|
||||
SessionId = UUID.Random();
|
||||
|
||||
AvAppearance = new AvatarAppearance(AgentId);
|
||||
AvAppearance.SetDefaultWearables();
|
||||
VisualParams = new byte[218];
|
||||
AvAppearance.SetDefaultParams(VisualParams);
|
||||
|
||||
//body
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEIGHT] = 155;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_THICKNESS] = 00;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BODY_FAT] = 0;
|
||||
|
||||
//Torso
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_TORSO_MUSCLES] = 48;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NECK_THICKNESS] = 43;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NECK_LENGTH] = 255;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SHOULDERS] = 94;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CHEST_MALE_NO_PECS] = 199;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_ARM_LENGTH] = 255;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HAND_SIZE] = 33;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_TORSO_LENGTH] = 240;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LOVE_HANDLES] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BELLY_SIZE] = 0;
|
||||
|
||||
// legs
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LEG_MUSCLES] = 82;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LEG_LENGTH] = 255;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HIP_WIDTH] = 84;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HIP_LENGTH] = 166;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BUTT_SIZE] = 64;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SADDLEBAGS] = 89;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BOWED_LEGS] = 127;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_FOOT_SIZE] = 45;
|
||||
|
||||
|
||||
// head
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEAD_SIZE] = 255;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SQUASH_STRETCH_HEAD] = 0; // head stretch
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEAD_SHAPE] = 155;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EGG_HEAD] = 127;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_POINTY_EARS] = 255;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEAD_LENGTH] = 45;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_FACE_SHEAR] = 127;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_FOREHEAD_ANGLE] = 104;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BIG_BROW] = 94;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_PUFFY_UPPER_CHEEKS] = 0; // upper cheeks
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_DOUBLE_CHIN] = 122; // lower cheeks
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HIGH_CHEEK_BONES] = 130;
|
||||
|
||||
|
||||
|
||||
// eyes
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYE_SIZE] = 105;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_EYES] = 135;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYE_SPACING] = 184;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYELID_CORNER_UP] = 230;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYELID_INNER_CORNER_UP] = 120;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYE_DEPTH] = 158;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_UPPER_EYELID_FOLD] = 69;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BAGGY_EYES] = 38;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYELASHES_LONG] = 127;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_POP_EYE] = 127;
|
||||
|
||||
VisualParams[(int)AvatarAppearance.VPElement.EYES_EYE_COLOR] = 25;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.EYES_EYE_LIGHTNESS] = 127;
|
||||
|
||||
// ears
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BIG_EARS] = 255;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EARS_OUT] = 127;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_ATTACHED_EARLOBES] = 127;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_POINTY_EARS] = 255;
|
||||
|
||||
// nose
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NOSE_BIG_OUT] = 79;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_NOSE] = 35;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BROAD_NOSTRILS] = 86;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LOW_SEPTUM_NOSE] = 112; // nostril division
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BULBOUS_NOSE] = 25;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NOBLE_NOSE_BRIDGE] = 25; // upper bridge
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LOWER_BRIDGE_NOSE] = 25; // lower bridge
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_NOSE_BRIDGE] = 25;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_UPTURNED_NOSE_TIP] = 107;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BULBOUS_NOSE_TIP] = 25;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CROOKED_NOSE] = 127;
|
||||
|
||||
|
||||
// Mouth
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_WIDTH] = 122;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_TALL_LIPS] = 10; // lip fullness
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_THICKNESS] = 112;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_RATIO] = 137;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_MOUTH_HEIGHT] = 176;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_MOUTH_CORNER] = 140; // Sad --> happy
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_CLEFT_DEEP] = 84;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_LIP_CLEFT] = 84;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SHIFT_MOUTH] = 127;
|
||||
|
||||
|
||||
// chin
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WEAK_CHIN] = 119;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SQUARE_JAW] = 5;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_DEEP_CHIN] = 132;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_JAW_ANGLE] = 153;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_JAW_JUT] = 100;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_JOWLS] = 38;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CLEFT_CHIN] = 89;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CLEFT_CHIN_UPPER] = 89;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_DOUBLE_CHIN] = 0;
|
||||
|
||||
|
||||
// hair color
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_WHITE_HAIR] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_RAINBOW_COLOR_39] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_BLONDE_HAIR] = 24;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_RED_HAIR] = 0;
|
||||
|
||||
// hair style
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_VOLUME] = 160;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_FRONT] = 153;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SIDES] = 153;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BACK] = 170;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BIG_FRONT] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BIG_TOP] = 117;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BIG_BACK] = 170;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_FRONT_FRINGE] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_SIDE_FRINGE] = 142;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_BACK_FRINGE] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SIDES_FULL] = 146;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SWEEP] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SHEAR_FRONT] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SHEAR_BACK] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_TAPER_FRONT] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_TAPER_BACK] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_RUMPLED] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_PIGTAILS] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_PONYTAIL] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SPIKED] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_TILT] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_PART_MIDDLE] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_PART_RIGHT] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_PART_LEFT] = 0;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_BANGS_PART_MIDDLE] = 155;
|
||||
|
||||
//Eyebrows
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_EYEBROW_SIZE] = 20;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_EYEBROW_DENSITY] = 140;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_LOWER_EYEBROWS] = 200; // eyebrow height
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_ARCED_EYEBROWS] = 124;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_POINTY_EYEBROWS] = 65;
|
||||
|
||||
//Facial hair
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_THICKNESS] = 65;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_SIDEBURNS] = 235;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_MOUSTACHE] = 75;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_CHIN_CURTAINS] = 140;
|
||||
VisualParams[(int)AvatarAppearance.VPElement.HAIR_SOULPATCH] = 0;
|
||||
|
||||
AvAppearance.VisualParams = VisualParams;
|
||||
|
||||
List<byte> wearbyte = new List<byte>();
|
||||
for (int i = 0; i < VisualParams.Length; i++)
|
||||
{
|
||||
wearbyte.Add(VisualParams[i]);
|
||||
}
|
||||
|
||||
|
||||
AvAppearance.SetAppearance(AvAppearance.Texture.GetBytes(), wearbyte);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test to ensure that the serialization format is the same and the underlying types don't change without notice
|
||||
/// oldSerialization is just a json serialization of the OSDMap packed for the AgentCircuitData.
|
||||
/// The idea is that if the current json serializer cannot parse the old serialization, then the underlying types
|
||||
/// have changed and are incompatible.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void HistoricalAgentCircuitDataOSDConversion()
|
||||
{
|
||||
string oldSerialization = "{\"agent_id\":\"522675bd-8214-40c1-b3ca-9c7f7fd170be\",\"base_folder\":\"c40b5f5f-476f-496b-bd69-b5a539c434d8\",\"caps_path\":\"http://www.opensimulator.org/Caps/Foo\",\"children_seeds\":[{\"handle\":\"18446744073709551615\",\"seed\":\"http://www.opensimulator.org/Caps/Foo2\"}],\"child\":false,\"circuit_code\":\"949030\",\"first_name\":\"CoolAvatarTest\",\"last_name\":\"test\",\"inventory_folder\":\"c40b5f5f-476f-496b-bd69-b5a539c434d8\",\"secure_session_id\":\"1e608e2b-0ddb-41f6-be0f-926f61cd3e0a\",\"session_id\":\"aa06f798-9d70-4bdb-9bbf-012a02ee2baf\",\"start_pos\":\"<5, 23, 125>\"}";
|
||||
AgentCircuitData Agent1Data = new AgentCircuitData();
|
||||
Agent1Data.AgentID = new UUID("522675bd-8214-40c1-b3ca-9c7f7fd170be");
|
||||
Agent1Data.Appearance = AvAppearance;
|
||||
Agent1Data.BaseFolder = new UUID("c40b5f5f-476f-496b-bd69-b5a539c434d8");
|
||||
Agent1Data.CapsPath = CapsPath;
|
||||
Agent1Data.child = false;
|
||||
Agent1Data.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||
Agent1Data.circuitcode = circuitcode;
|
||||
Agent1Data.firstname = firstname;
|
||||
Agent1Data.InventoryFolder = new UUID("c40b5f5f-476f-496b-bd69-b5a539c434d8");
|
||||
Agent1Data.lastname = lastname;
|
||||
Agent1Data.SecureSessionID = new UUID("1e608e2b-0ddb-41f6-be0f-926f61cd3e0a");
|
||||
Agent1Data.SessionID = new UUID("aa06f798-9d70-4bdb-9bbf-012a02ee2baf");
|
||||
Agent1Data.startpos = StartPos;
|
||||
|
||||
OSDMap map2 = (OSDMap)OSDParser.DeserializeJson(oldSerialization);
|
||||
|
||||
|
||||
AgentCircuitData Agent2Data = new AgentCircuitData();
|
||||
Agent2Data.UnpackAgentCircuitData(map2);
|
||||
|
||||
Assert.That((Agent1Data.AgentID == Agent2Data.AgentID));
|
||||
Assert.That((Agent1Data.BaseFolder == Agent2Data.BaseFolder));
|
||||
|
||||
Assert.That((Agent1Data.CapsPath == Agent2Data.CapsPath));
|
||||
Assert.That((Agent1Data.child == Agent2Data.child));
|
||||
Assert.That((Agent1Data.ChildrenCapSeeds.Count == Agent2Data.ChildrenCapSeeds.Count));
|
||||
Assert.That((Agent1Data.circuitcode == Agent2Data.circuitcode));
|
||||
Assert.That((Agent1Data.firstname == Agent2Data.firstname));
|
||||
Assert.That((Agent1Data.InventoryFolder == Agent2Data.InventoryFolder));
|
||||
Assert.That((Agent1Data.lastname == Agent2Data.lastname));
|
||||
Assert.That((Agent1Data.SecureSessionID == Agent2Data.SecureSessionID));
|
||||
Assert.That((Agent1Data.SessionID == Agent2Data.SessionID));
|
||||
Assert.That((Agent1Data.startpos == Agent2Data.startpos));
|
||||
/*
|
||||
Enable this once VisualParams go in the packing method
|
||||
for (int i=0;i<208;i++)
|
||||
Assert.That((Agent1Data.Appearance.VisualParams[i] == Agent2Data.Appearance.VisualParams[i]));
|
||||
*/
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test to ensure that the packing and unpacking methods work.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestAgentCircuitDataOSDConversion()
|
||||
{
|
||||
AgentCircuitData Agent1Data = new AgentCircuitData();
|
||||
Agent1Data.AgentID = AgentId;
|
||||
Agent1Data.Appearance = AvAppearance;
|
||||
Agent1Data.BaseFolder = BaseFolder;
|
||||
Agent1Data.CapsPath = CapsPath;
|
||||
Agent1Data.child = false;
|
||||
Agent1Data.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||
Agent1Data.circuitcode = circuitcode;
|
||||
Agent1Data.firstname = firstname;
|
||||
Agent1Data.InventoryFolder = BaseFolder;
|
||||
Agent1Data.lastname = lastname;
|
||||
Agent1Data.SecureSessionID = SecureSessionId;
|
||||
Agent1Data.SessionID = SessionId;
|
||||
Agent1Data.startpos = StartPos;
|
||||
|
||||
|
||||
OSDMap map = Agent1Data.PackAgentCircuitData();
|
||||
string str = OSDParser.SerializeJsonString(map);
|
||||
//System.Console.WriteLine(str);
|
||||
OSDMap map2 = (OSDMap)OSDParser.DeserializeJson(str);
|
||||
|
||||
|
||||
AgentCircuitData Agent2Data = new AgentCircuitData();
|
||||
Agent2Data.UnpackAgentCircuitData(map2);
|
||||
|
||||
Assert.That((Agent1Data.AgentID == Agent2Data.AgentID));
|
||||
Assert.That((Agent1Data.BaseFolder == Agent2Data.BaseFolder));
|
||||
|
||||
Assert.That((Agent1Data.CapsPath == Agent2Data.CapsPath));
|
||||
Assert.That((Agent1Data.child == Agent2Data.child));
|
||||
Assert.That((Agent1Data.ChildrenCapSeeds.Count == Agent2Data.ChildrenCapSeeds.Count));
|
||||
Assert.That((Agent1Data.circuitcode == Agent2Data.circuitcode));
|
||||
Assert.That((Agent1Data.firstname == Agent2Data.firstname));
|
||||
Assert.That((Agent1Data.InventoryFolder == Agent2Data.InventoryFolder));
|
||||
Assert.That((Agent1Data.lastname == Agent2Data.lastname));
|
||||
Assert.That((Agent1Data.SecureSessionID == Agent2Data.SecureSessionID));
|
||||
Assert.That((Agent1Data.SessionID == Agent2Data.SessionID));
|
||||
Assert.That((Agent1Data.startpos == Agent2Data.startpos));
|
||||
|
||||
/*
|
||||
Enable this once VisualParams go in the packing method
|
||||
for (int i = 0; i < 208; i++)
|
||||
Assert.That((Agent1Data.Appearance.VisualParams[i] == Agent2Data.Appearance.VisualParams[i]));
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,201 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
using System.Collections.Generic;
|
||||
using OpenMetaverse;
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
|
||||
namespace OpenSim.Framework.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class AgentCircuitManagerTests
|
||||
{
|
||||
private AgentCircuitData m_agentCircuitData1;
|
||||
private AgentCircuitData m_agentCircuitData2;
|
||||
private UUID AgentId1;
|
||||
private UUID AgentId2;
|
||||
private uint circuitcode1;
|
||||
private uint circuitcode2;
|
||||
|
||||
private UUID SessionId1;
|
||||
private UUID SessionId2;
|
||||
private Random rnd = new Random(Environment.TickCount);
|
||||
|
||||
[SetUp]
|
||||
public void setup()
|
||||
{
|
||||
|
||||
AgentId1 = UUID.Random();
|
||||
AgentId2 = UUID.Random();
|
||||
circuitcode1 = (uint) rnd.Next((int)uint.MinValue, int.MaxValue);
|
||||
circuitcode2 = (uint) rnd.Next((int)uint.MinValue, int.MaxValue);
|
||||
SessionId1 = UUID.Random();
|
||||
SessionId2 = UUID.Random();
|
||||
UUID BaseFolder = UUID.Random();
|
||||
string CapsPath = "http://www.opensimulator.org/Caps/Foo";
|
||||
Dictionary<ulong,string> ChildrenCapsPaths = new Dictionary<ulong, string>();
|
||||
ChildrenCapsPaths.Add(ulong.MaxValue, "http://www.opensimulator.org/Caps/Foo2");
|
||||
string firstname = "CoolAvatarTest";
|
||||
string lastname = "test";
|
||||
Vector3 StartPos = new Vector3(5, 23, 125);
|
||||
|
||||
UUID SecureSessionId = UUID.Random();
|
||||
UUID SessionId = UUID.Random();
|
||||
|
||||
m_agentCircuitData1 = new AgentCircuitData();
|
||||
m_agentCircuitData1.AgentID = AgentId1;
|
||||
m_agentCircuitData1.Appearance = new AvatarAppearance(AgentId1);
|
||||
m_agentCircuitData1.BaseFolder = BaseFolder;
|
||||
m_agentCircuitData1.CapsPath = CapsPath;
|
||||
m_agentCircuitData1.child = false;
|
||||
m_agentCircuitData1.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||
m_agentCircuitData1.circuitcode = circuitcode1;
|
||||
m_agentCircuitData1.firstname = firstname;
|
||||
m_agentCircuitData1.InventoryFolder = BaseFolder;
|
||||
m_agentCircuitData1.lastname = lastname;
|
||||
m_agentCircuitData1.SecureSessionID = SecureSessionId;
|
||||
m_agentCircuitData1.SessionID = SessionId1;
|
||||
m_agentCircuitData1.startpos = StartPos;
|
||||
|
||||
m_agentCircuitData2 = new AgentCircuitData();
|
||||
m_agentCircuitData2.AgentID = AgentId2;
|
||||
m_agentCircuitData2.Appearance = new AvatarAppearance(AgentId2);
|
||||
m_agentCircuitData2.BaseFolder = BaseFolder;
|
||||
m_agentCircuitData2.CapsPath = CapsPath;
|
||||
m_agentCircuitData2.child = false;
|
||||
m_agentCircuitData2.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||
m_agentCircuitData2.circuitcode = circuitcode2;
|
||||
m_agentCircuitData2.firstname = firstname;
|
||||
m_agentCircuitData2.InventoryFolder = BaseFolder;
|
||||
m_agentCircuitData2.lastname = lastname;
|
||||
m_agentCircuitData2.SecureSessionID = SecureSessionId;
|
||||
m_agentCircuitData2.SessionID = SessionId2;
|
||||
m_agentCircuitData2.startpos = StartPos;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate that adding the circuit works appropriately
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void AddAgentCircuitTest()
|
||||
{
|
||||
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||
agentCircuitManager.AddNewCircuit(circuitcode1,m_agentCircuitData1);
|
||||
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||
AgentCircuitData agent = agentCircuitManager.GetAgentCircuitData(circuitcode1);
|
||||
|
||||
Assert.That((m_agentCircuitData1.AgentID == agent.AgentID));
|
||||
Assert.That((m_agentCircuitData1.BaseFolder == agent.BaseFolder));
|
||||
|
||||
Assert.That((m_agentCircuitData1.CapsPath == agent.CapsPath));
|
||||
Assert.That((m_agentCircuitData1.child == agent.child));
|
||||
Assert.That((m_agentCircuitData1.ChildrenCapSeeds.Count == agent.ChildrenCapSeeds.Count));
|
||||
Assert.That((m_agentCircuitData1.circuitcode == agent.circuitcode));
|
||||
Assert.That((m_agentCircuitData1.firstname == agent.firstname));
|
||||
Assert.That((m_agentCircuitData1.InventoryFolder == agent.InventoryFolder));
|
||||
Assert.That((m_agentCircuitData1.lastname == agent.lastname));
|
||||
Assert.That((m_agentCircuitData1.SecureSessionID == agent.SecureSessionID));
|
||||
Assert.That((m_agentCircuitData1.SessionID == agent.SessionID));
|
||||
Assert.That((m_agentCircuitData1.startpos == agent.startpos));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate that removing the circuit code removes it appropriately
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void RemoveAgentCircuitTest()
|
||||
{
|
||||
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||
agentCircuitManager.AddNewCircuit(circuitcode1, m_agentCircuitData1);
|
||||
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||
agentCircuitManager.RemoveCircuit(circuitcode2);
|
||||
|
||||
AgentCircuitData agent = agentCircuitManager.GetAgentCircuitData(circuitcode2);
|
||||
Assert.That(agent == null);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate that changing the circuit code works
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void ChangeAgentCircuitCodeTest()
|
||||
{
|
||||
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||
agentCircuitManager.AddNewCircuit(circuitcode1, m_agentCircuitData1);
|
||||
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||
bool result = false;
|
||||
|
||||
result = agentCircuitManager.TryChangeCiruitCode(circuitcode1, 393930);
|
||||
|
||||
AgentCircuitData agent = agentCircuitManager.GetAgentCircuitData(393930);
|
||||
AgentCircuitData agent2 = agentCircuitManager.GetAgentCircuitData(circuitcode1);
|
||||
Assert.That(agent != null);
|
||||
Assert.That(agent2 == null);
|
||||
Assert.That(result);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validates that the login authentication scheme is working
|
||||
/// First one should be authorized
|
||||
/// Rest should not be authorized
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void ValidateLoginTest()
|
||||
{
|
||||
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||
agentCircuitManager.AddNewCircuit(circuitcode1, m_agentCircuitData1);
|
||||
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||
|
||||
// should be authorized
|
||||
AuthenticateResponse resp = agentCircuitManager.AuthenticateSession(SessionId1, AgentId1, circuitcode1);
|
||||
Assert.That(resp.Authorised);
|
||||
|
||||
|
||||
//should not be authorized
|
||||
resp = agentCircuitManager.AuthenticateSession(SessionId1, UUID.Random(), circuitcode1);
|
||||
Assert.That(!resp.Authorised);
|
||||
|
||||
resp = agentCircuitManager.AuthenticateSession(UUID.Random(), AgentId1, circuitcode1);
|
||||
Assert.That(!resp.Authorised);
|
||||
|
||||
resp = agentCircuitManager.AuthenticateSession(SessionId1, AgentId1, circuitcode2);
|
||||
Assert.That(!resp.Authorised);
|
||||
|
||||
resp = agentCircuitManager.AuthenticateSession(SessionId2, AgentId1, circuitcode2);
|
||||
Assert.That(!resp.Authorised);
|
||||
|
||||
agentCircuitManager.RemoveCircuit(circuitcode2);
|
||||
|
||||
resp = agentCircuitManager.AuthenticateSession(SessionId2, AgentId2, circuitcode2);
|
||||
Assert.That(!resp.Authorised);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,192 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OpenSim.Framework.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class ThreadTrackerTests
|
||||
{
|
||||
private bool running = true;
|
||||
private bool running2 = true;
|
||||
|
||||
[Test]
|
||||
public void DefaultThreadTrackerTest()
|
||||
{
|
||||
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||
|
||||
/*
|
||||
foreach (Thread t in lThread)
|
||||
{
|
||||
System.Console.WriteLine(t.Name);
|
||||
}
|
||||
*/
|
||||
|
||||
Assert.That(lThread.Count == 1);
|
||||
Assert.That(lThread[0].Name == "ThreadTrackerThread");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate that adding a thread to the thread tracker works
|
||||
/// Validate that removing a thread from the thread tracker also works.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void AddThreadToThreadTrackerTestAndRemoveTest()
|
||||
{
|
||||
Thread t = new Thread(run);
|
||||
t.Name = "TestThread";
|
||||
t.Priority = ThreadPriority.BelowNormal;
|
||||
t.IsBackground = true;
|
||||
t.SetApartmentState(ApartmentState.MTA);
|
||||
t.Start();
|
||||
ThreadTracker.Add(t);
|
||||
|
||||
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||
|
||||
Assert.That(lThread.Count == 2);
|
||||
|
||||
foreach (Thread tr in lThread)
|
||||
{
|
||||
Assert.That((tr.Name == "ThreadTrackerThread" || tr.Name == "TestThread"));
|
||||
}
|
||||
running = false;
|
||||
ThreadTracker.Remove(t);
|
||||
|
||||
lThread = ThreadTracker.GetThreads();
|
||||
|
||||
Assert.That(lThread.Count == 1);
|
||||
|
||||
foreach (Thread tr in lThread)
|
||||
{
|
||||
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test a dead thread removal by aborting it and setting it's last seen active date to 50 seconds
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void DeadThreadTest()
|
||||
{
|
||||
Thread t = new Thread(run2);
|
||||
t.Name = "TestThread";
|
||||
t.Priority = ThreadPriority.BelowNormal;
|
||||
t.IsBackground = true;
|
||||
t.SetApartmentState(ApartmentState.MTA);
|
||||
t.Start();
|
||||
ThreadTracker.Add(t);
|
||||
t.Abort();
|
||||
Thread.Sleep(5000);
|
||||
ThreadTracker.m_Threads[1].LastSeenActive = DateTime.Now.Ticks - (50*10000000);
|
||||
ThreadTracker.CleanUp();
|
||||
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||
|
||||
Assert.That(lThread.Count == 1);
|
||||
|
||||
foreach (Thread tr in lThread)
|
||||
{
|
||||
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UnstartedThreadTest()
|
||||
{
|
||||
Thread t = new Thread(run2);
|
||||
t.Name = "TestThread";
|
||||
t.Priority = ThreadPriority.BelowNormal;
|
||||
t.IsBackground = true;
|
||||
t.SetApartmentState(ApartmentState.MTA);
|
||||
ThreadTracker.Add(t);
|
||||
ThreadTracker.m_Threads[1].LastSeenActive = DateTime.Now.Ticks - (50 * 10000000);
|
||||
ThreadTracker.CleanUp();
|
||||
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||
|
||||
Assert.That(lThread.Count == 1);
|
||||
|
||||
foreach (Thread tr in lThread)
|
||||
{
|
||||
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void NullThreadTest()
|
||||
{
|
||||
Thread t = null;
|
||||
ThreadTracker.Add(t);
|
||||
|
||||
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||
|
||||
Assert.That(lThread.Count == 1);
|
||||
|
||||
foreach (Thread tr in lThread)
|
||||
{
|
||||
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Worker thread 0
|
||||
/// </summary>
|
||||
/// <param name="o"></param>
|
||||
public void run( object o)
|
||||
{
|
||||
while (running)
|
||||
{
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Worker thread 1
|
||||
/// </summary>
|
||||
/// <param name="o"></param>
|
||||
public void run2(object o)
|
||||
{
|
||||
try
|
||||
{
|
||||
while (running2)
|
||||
{
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -77,12 +77,15 @@ namespace OpenSim.Framework
|
|||
public static void Add(Thread thread)
|
||||
{
|
||||
#if DEBUG
|
||||
lock (m_Threads)
|
||||
if (thread != null)
|
||||
{
|
||||
ThreadTrackerItem tti = new ThreadTrackerItem();
|
||||
tti.Thread = thread;
|
||||
tti.LastSeenActive = DateTime.Now.Ticks;
|
||||
m_Threads.Add(tti);
|
||||
lock (m_Threads)
|
||||
{
|
||||
ThreadTrackerItem tti = new ThreadTrackerItem();
|
||||
tti.Thread = thread;
|
||||
tti.LastSeenActive = DateTime.Now.Ticks;
|
||||
m_Threads.Add(tti);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -107,16 +110,25 @@ namespace OpenSim.Framework
|
|||
{
|
||||
foreach (ThreadTrackerItem tti in new ArrayList(m_Threads))
|
||||
{
|
||||
if (tti.Thread.IsAlive)
|
||||
try
|
||||
{
|
||||
// Its active
|
||||
tti.LastSeenActive = DateTime.Now.Ticks;
|
||||
|
||||
|
||||
if (tti.Thread.IsAlive)
|
||||
{
|
||||
// Its active
|
||||
tti.LastSeenActive = DateTime.Now.Ticks;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Its not active -- if its expired then remove it
|
||||
if (tti.LastSeenActive + ThreadTimeout < DateTime.Now.Ticks)
|
||||
m_Threads.Remove(tti);
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
// Its not active -- if its expired then remove it
|
||||
if (tti.LastSeenActive + ThreadTimeout < DateTime.Now.Ticks)
|
||||
m_Threads.Remove(tti);
|
||||
m_Threads.Remove(tti);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,25 +36,47 @@ using OpenSim.Framework.Console;
|
|||
|
||||
namespace OpenSim
|
||||
{
|
||||
/// <summary>
|
||||
/// Starting class for the OpenSimulator Region
|
||||
/// </summary>
|
||||
public class Application
|
||||
{
|
||||
/// <summary>
|
||||
/// Text Console Logger
|
||||
/// </summary>
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
/// <summary>
|
||||
/// Path to the main ini Configuration file
|
||||
/// </summary>
|
||||
public static string iniFilePath = "";
|
||||
|
||||
/// <summary>
|
||||
/// Save Crashes in the bin/crashes folder. Configurable with m_crashDir
|
||||
/// </summary>
|
||||
public static bool m_saveCrashDumps = false;
|
||||
|
||||
/// <summary>
|
||||
/// Directory to save crash reports to. Relative to bin/
|
||||
/// </summary>
|
||||
public static string m_crashDir = "crashes";
|
||||
|
||||
/// <summary>
|
||||
/// Instance of the OpenSim class. This could be OpenSim or OpenSimBackground depending on the configuration
|
||||
/// </summary>
|
||||
protected static OpenSimBase m_sim = null;
|
||||
|
||||
//could move our main function into OpenSimMain and kill this class
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
// First line
|
||||
// First line, hook the appdomain to the crash reporter
|
||||
AppDomain.CurrentDomain.UnhandledException +=
|
||||
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
||||
|
||||
// Add the arguments supplied when running the application to the configuration
|
||||
ArgvConfigSource configSource = new ArgvConfigSource(args);
|
||||
|
||||
// Configure Log4Net
|
||||
configSource.AddSwitch("Startup", "logconfig");
|
||||
string logConfigFile = configSource.Configs["Startup"].GetString("logconfig", String.Empty);
|
||||
if (logConfigFile != String.Empty)
|
||||
|
@ -69,6 +91,8 @@ namespace OpenSim
|
|||
m_log.Info("[OPENSIM MAIN]: configured log4net using default OpenSim.exe.config");
|
||||
}
|
||||
|
||||
// Check if the system is compatible with OpenSimulator.
|
||||
// Ensures that the minimum system requirements are met
|
||||
m_log.Info("Performing compatibility checks... ");
|
||||
string supported = String.Empty;
|
||||
if (Util.IsEnvironmentSupported(ref supported))
|
||||
|
@ -80,6 +104,7 @@ namespace OpenSim
|
|||
m_log.Warn("Environment is unsupported (" + supported + ")\n");
|
||||
}
|
||||
|
||||
// Configure nIni aliases and localles
|
||||
Culture.SetCurrentCulture();
|
||||
|
||||
|
||||
|
@ -99,8 +124,13 @@ namespace OpenSim
|
|||
configSource.AddConfig("StandAlone");
|
||||
configSource.AddConfig("Network");
|
||||
|
||||
// Check if we're running in the background or not
|
||||
bool background = configSource.Configs["Startup"].GetBoolean("background", false);
|
||||
|
||||
// Check if we're saving crashes
|
||||
m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false);
|
||||
|
||||
// load Crash directory config
|
||||
m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir);
|
||||
|
||||
if (background)
|
||||
|
@ -118,6 +148,7 @@ namespace OpenSim
|
|||
{
|
||||
try
|
||||
{
|
||||
// Block thread here for input
|
||||
MainConsole.Instance.Prompt();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
@ -37,12 +37,32 @@ using OpenSim.Framework;
|
|||
|
||||
namespace OpenSim
|
||||
{
|
||||
/// <summary>
|
||||
/// Loads the Configuration files into nIni
|
||||
/// </summary>
|
||||
public class ConfigurationLoader
|
||||
{
|
||||
/// <summary>
|
||||
/// Various Config settings the region needs to start
|
||||
/// Physics Engine, Mesh Engine, GridMode, PhysicsPrim allowed, Neighbor,
|
||||
/// StorageDLL, Storage Connection String, Estate connection String, Client Stack
|
||||
/// Standalone settings.
|
||||
/// </summary>
|
||||
protected ConfigSettings m_configSettings;
|
||||
|
||||
/// <summary>
|
||||
/// A source of Configuration data
|
||||
/// </summary>
|
||||
protected OpenSimConfigSource m_config;
|
||||
|
||||
/// <summary>
|
||||
/// Grid Service Information. This refers to classes and addresses of the grid service
|
||||
/// </summary>
|
||||
protected NetworkServersInfo m_networkServersInfo;
|
||||
|
||||
/// <summary>
|
||||
/// Console logger
|
||||
/// </summary>
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
@ -51,6 +71,13 @@ namespace OpenSim
|
|||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads the region configuration
|
||||
/// </summary>
|
||||
/// <param name="argvSource">Parameters passed into the process when started</param>
|
||||
/// <param name="configSettings"></param>
|
||||
/// <param name="networkInfo"></param>
|
||||
/// <returns>A configuration that gets passed to modules</returns>
|
||||
public OpenSimConfigSource LoadConfigSettings(
|
||||
IConfigSource argvSource, out ConfigSettings configSettings,
|
||||
out NetworkServersInfo networkInfo)
|
||||
|
@ -169,15 +196,22 @@ namespace OpenSim
|
|||
return m_config;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the included files as ini configuration files
|
||||
/// </summary>
|
||||
/// <param name="sources">List of URL strings or filename strings</param>
|
||||
private void AddIncludes(List<string> sources)
|
||||
{
|
||||
//loop over config sources
|
||||
foreach (IConfig config in m_config.Source.Configs)
|
||||
{
|
||||
// Look for Include-* in the key name
|
||||
string[] keys = config.GetKeys();
|
||||
foreach (string k in keys)
|
||||
{
|
||||
if (k.StartsWith("Include-"))
|
||||
{
|
||||
// read the config file to be included.
|
||||
string file = config.GetString(k);
|
||||
if (IsUri(file))
|
||||
{
|
||||
|
@ -199,7 +233,11 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if we can convert the string to a URI
|
||||
/// </summary>
|
||||
/// <param name="file">String uri to the remote resource</param>
|
||||
/// <returns>true if we can convert the string to a Uri object</returns>
|
||||
bool IsUri(string file)
|
||||
{
|
||||
Uri configUri;
|
||||
|
@ -253,7 +291,7 @@ namespace OpenSim
|
|||
/// <summary>
|
||||
/// Setup a default config values in case they aren't present in the ini file
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <returns>A Configuration source containing the default configuration</returns>
|
||||
private static IConfigSource DefaultConfig()
|
||||
{
|
||||
IConfigSource defaultConfig = new IniConfigSource();
|
||||
|
@ -322,6 +360,9 @@ namespace OpenSim
|
|||
return defaultConfig;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read initial region settings from the ConfigSource
|
||||
/// </summary>
|
||||
protected virtual void ReadConfigSettings()
|
||||
{
|
||||
IConfig startupConfig = m_config.Source.Configs["Startup"];
|
||||
|
|
|
@ -29,12 +29,24 @@ using OpenSim.Framework;
|
|||
|
||||
namespace OpenSim
|
||||
{
|
||||
/// <summary>
|
||||
/// OpenSimulator Application Plugin framework interface
|
||||
/// </summary>
|
||||
public interface IApplicationPlugin : IPlugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialize the Plugin
|
||||
/// </summary>
|
||||
/// <param name="openSim">The Application instance</param>
|
||||
void Initialise(OpenSimBase openSim);
|
||||
|
||||
/// <summary>
|
||||
/// Called when the application loading is completed
|
||||
/// </summary>
|
||||
void PostInitialise();
|
||||
}
|
||||
|
||||
|
||||
public class ApplicationPluginInitialiser : PluginInitialiserBase
|
||||
{
|
||||
private OpenSimBase server;
|
||||
|
|
|
@ -146,6 +146,9 @@ namespace OpenSim
|
|||
ChangeSelectedRegion("region", new string[] {"change", "region", "root"});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register standard set of region console commands
|
||||
/// </summary>
|
||||
private void RegisterConsoleCommands()
|
||||
{
|
||||
m_console.Commands.AddCommand("region", false, "clear assets",
|
||||
|
@ -332,6 +335,11 @@ namespace OpenSim
|
|||
base.ShutdownSpecific();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Timer to run a specific text file as console commands. Configured in in the main ini file
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void RunAutoTimerScript(object sender, EventArgs e)
|
||||
{
|
||||
if (m_timedScript != "disabled")
|
||||
|
@ -342,6 +350,11 @@ namespace OpenSim
|
|||
|
||||
#region Console Commands
|
||||
|
||||
/// <summary>
|
||||
/// Kicks users off the region
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmdparams">name of avatar to kick</param>
|
||||
private void KickUserCommand(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length < 4)
|
||||
|
@ -401,6 +414,10 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens a file and uses it as input to the console command parser.
|
||||
/// </summary>
|
||||
/// <param name="fileName">name of file to use as input to the console</param>
|
||||
private static void PrintFileToConsole(string fileName)
|
||||
{
|
||||
if (File.Exists(fileName))
|
||||
|
@ -419,12 +436,22 @@ namespace OpenSim
|
|||
m_log.Info("Not implemented.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Force resending of all updates to all clients in active region(s)
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="args"></param>
|
||||
private void HandleForceUpdate(string module, string[] args)
|
||||
{
|
||||
m_log.Info("Updating all clients");
|
||||
m_sceneManager.ForceCurrentSceneClientUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Edits the scale of a primative with the name specified
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="args">0,1, name, x, y, z</param>
|
||||
private void HandleEditScale(string module, string[] args)
|
||||
{
|
||||
if (args.Length == 6)
|
||||
|
@ -437,6 +464,11 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new region based on the parameters specified. This will ask the user questions on the console
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmd">0,1,region name, region XML file</param>
|
||||
private void HandleCreateRegion(string module, string[] cmd)
|
||||
{
|
||||
if (cmd.Length < 4)
|
||||
|
@ -473,16 +505,32 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable logins
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmd"></param>
|
||||
private void HandleLoginEnable(string module, string[] cmd)
|
||||
{
|
||||
ProcessLogin(true);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Disable logins
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmd"></param>
|
||||
private void HandleLoginDisable(string module, string[] cmd)
|
||||
{
|
||||
ProcessLogin(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Log login status to the console
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmd"></param>
|
||||
private void HandleLoginStatus(string module, string[] cmd)
|
||||
{
|
||||
if (m_commsManager.GridService.RegionLoginsEnabled == false)
|
||||
|
@ -492,6 +540,12 @@ namespace OpenSim
|
|||
m_log.Info("[ Login ] Login are enabled");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Change and load configuration file data.
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmd"></param>
|
||||
private void HandleConfig(string module, string[] cmd)
|
||||
{
|
||||
List<string> args = new List<string>(cmd);
|
||||
|
@ -557,6 +611,12 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Load, Unload, and list Region modules in use
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmd"></param>
|
||||
private void HandleModules(string module, string[] cmd)
|
||||
{
|
||||
List<string> args = new List<string>(cmd);
|
||||
|
@ -797,6 +857,11 @@ namespace OpenSim
|
|||
}
|
||||
|
||||
// see BaseOpenSimServer
|
||||
/// <summary>
|
||||
/// Many commands list objects for debugging. Some of the types are listed here
|
||||
/// </summary>
|
||||
/// <param name="mod"></param>
|
||||
/// <param name="cmd"></param>
|
||||
public override void HandleShow(string mod, string[] cmd)
|
||||
{
|
||||
base.HandleShow(mod, cmd);
|
||||
|
@ -902,6 +967,10 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// print UDP Queue data for each client
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private string GetQueuesReport()
|
||||
{
|
||||
string report = String.Empty;
|
||||
|
@ -1010,6 +1079,11 @@ namespace OpenSim
|
|||
m_commsManager.UserAdminService.ResetUserPassword(firstName, lastName, newPassword);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Use XML2 format to serialize data to a file
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmdparams"></param>
|
||||
protected void SavePrimsXml2(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length > 5)
|
||||
|
@ -1022,6 +1096,11 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Use XML format to serialize data to a file
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmdparams"></param>
|
||||
protected void SaveXml(string module, string[] cmdparams)
|
||||
{
|
||||
m_log.Error("[CONSOLE]: PLEASE NOTE, save-xml is DEPRECATED and may be REMOVED soon. If you are using this and there is some reason you can't use save-xml2, please file a mantis detailing the reason.");
|
||||
|
@ -1036,6 +1115,11 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads data and region objects from XML format.
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmdparams"></param>
|
||||
protected void LoadXml(string module, string[] cmdparams)
|
||||
{
|
||||
m_log.Error("[CONSOLE]: PLEASE NOTE, load-xml is DEPRECATED and may be REMOVED soon. If you are using this and there is some reason you can't use load-xml2, please file a mantis detailing the reason.");
|
||||
|
@ -1079,7 +1163,11 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize region data to XML2Format
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmdparams"></param>
|
||||
protected void SaveXml2(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length > 2)
|
||||
|
@ -1092,6 +1180,11 @@ namespace OpenSim
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load region data from Xml2Format
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="cmdparams"></param>
|
||||
protected void LoadXml2(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length > 2)
|
||||
|
|
|
@ -40,9 +40,6 @@ namespace OpenSim.Region.Communications.Hypergrid
|
|||
{
|
||||
public class HGCommunicationsGridMode : CommunicationsManager // CommunicationsOGS1
|
||||
{
|
||||
private static readonly ILog m_log
|
||||
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
IHyperlink m_osw = null;
|
||||
public IHyperlink HGServices
|
||||
{
|
||||
|
|
|
@ -74,7 +74,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
/// <summary>
|
||||
/// Test saving a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet).
|
||||
/// </summary>
|
||||
//[Test]
|
||||
[Test]
|
||||
public void TestSaveIarV0_1()
|
||||
{
|
||||
TestHelper.InMethod();
|
||||
|
@ -82,7 +82,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
|
||||
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
|
||||
|
||||
Scene scene = SceneSetupHelpers.SetupScene("");
|
||||
Scene scene = SceneSetupHelpers.SetupScene("Inventory");
|
||||
SceneSetupHelpers.SetupSceneModules(scene, archiverModule);
|
||||
CommunicationsManager cm = scene.CommsManager;
|
||||
|
||||
|
@ -222,7 +222,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
/// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where
|
||||
/// an account exists with the creator name.
|
||||
/// </summary>
|
||||
//[Test]
|
||||
[Test]
|
||||
public void TestLoadIarV0_1ExistingUsers()
|
||||
{
|
||||
TestHelper.InMethod();
|
||||
|
@ -262,7 +262,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
|
||||
|
||||
// Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene
|
||||
Scene scene = SceneSetupHelpers.SetupScene();
|
||||
Scene scene = SceneSetupHelpers.SetupScene("inventory");
|
||||
IUserAdminService userAdminService = scene.CommsManager.UserAdminService;
|
||||
|
||||
SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
|
||||
|
@ -276,16 +276,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
|
||||
CachedUserInfo userInfo
|
||||
= scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName);
|
||||
//userInfo.FetchInventory();
|
||||
/*
|
||||
for (int i = 0 ; i < 50 ; i++)
|
||||
{
|
||||
if (userInfo.HasReceivedInventory == true)
|
||||
break;
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
|
||||
*/
|
||||
|
||||
InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName);
|
||||
Assert.That(foundItem, Is.Not.Null, "Didn't find loaded item");
|
||||
Assert.That(
|
||||
|
@ -395,17 +386,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
userInfo = UserProfileTestUtils.CreateUserWithInventory(commsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
|
||||
//userInfo.FetchInventory();
|
||||
/*
|
||||
for (int i = 0 ; i < 50 ; i++)
|
||||
{
|
||||
if (userInfo.HasReceivedInventory == true)
|
||||
break;
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
|
||||
*/
|
||||
|
||||
Console.WriteLine("userInfo.RootFolder 1: {0}", userInfo.RootFolder);
|
||||
|
||||
|
@ -429,22 +409,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
|||
|
||||
Console.WriteLine("userInfo.RootFolder 2: {0}", userInfo.RootFolder);
|
||||
|
||||
try
|
||||
{
|
||||
new InventoryArchiveReadRequest(userInfo, null, (Stream)null, null, null)
|
||||
.ReplicateArchivePathToUserInventory(itemArchivePath, false, userInfo.RootFolder, foldersCreated, nodesLoaded);
|
||||
new InventoryArchiveReadRequest(userInfo, null, (Stream)null, null, null)
|
||||
.ReplicateArchivePathToUserInventory(
|
||||
itemArchivePath, false, userInfo.RootFolder, foldersCreated, nodesLoaded);
|
||||
|
||||
Console.WriteLine("userInfo.RootFolder 3: {0}", userInfo.RootFolder);
|
||||
InventoryFolderImpl folder1 = userInfo.RootFolder.FindFolderByPath("a");
|
||||
Assert.That(folder1, Is.Not.Null, "Could not find folder a");
|
||||
InventoryFolderImpl folder2 = folder1.FindFolderByPath("b");
|
||||
Assert.That(folder2, Is.Not.Null, "Could not find folder b");
|
||||
}
|
||||
catch (NullReferenceException e)
|
||||
{
|
||||
// Non fatal for now until we resolve the race condition
|
||||
Console.WriteLine("Test failed with {0}", e);
|
||||
}
|
||||
Console.WriteLine("userInfo.RootFolder 3: {0}", userInfo.RootFolder);
|
||||
InventoryFolderImpl folder1 = userInfo.RootFolder.FindFolderByPath("a");
|
||||
Assert.That(folder1, Is.Not.Null, "Could not find folder a");
|
||||
InventoryFolderImpl folder2 = folder1.FindFolderByPath("b");
|
||||
Assert.That(folder2, Is.Not.Null, "Could not find folder b");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using log4net;
|
||||
|
@ -41,6 +42,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
|
|||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private Scene m_scene;
|
||||
private IProfileModule m_profileModule = null;
|
||||
|
||||
public AvatarProfilesModule()
|
||||
{
|
||||
|
@ -56,6 +58,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
|
|||
|
||||
public void PostInitialise()
|
||||
{
|
||||
m_profileModule = m_scene.RequestModuleInterface<IProfileModule>();
|
||||
}
|
||||
|
||||
public void Close()
|
||||
|
@ -108,6 +111,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
|
|||
charterMember = Utils.StringToBytes(profile.CustomType);
|
||||
}
|
||||
|
||||
if (m_profileModule != null)
|
||||
{
|
||||
Hashtable profileData = m_profileModule.GetProfileData(remoteClient.AgentId);
|
||||
if (profileData["ProfileUrl"] != null)
|
||||
profile.ProfileUrl = profileData["ProfileUrl"].ToString();
|
||||
}
|
||||
remoteClient.SendAvatarProperties(profile.ID, profile.AboutText,
|
||||
Util.ToDateTime(profile.Created).ToString("M/d/yyyy", CultureInfo.InvariantCulture),
|
||||
charterMember, profile.FirstLifeAboutText, (uint)(profile.UserFlags & 0xff),
|
||||
|
|
|
@ -0,0 +1,206 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using OpenMetaverse;
|
||||
using Nini.Config;
|
||||
using log4net;
|
||||
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Services.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
{
|
||||
public abstract class BaseInventoryConnector : IInventoryService
|
||||
{
|
||||
protected InventoryCache m_cache;
|
||||
|
||||
protected virtual void Init(IConfigSource source)
|
||||
{
|
||||
m_cache = new InventoryCache();
|
||||
m_cache.Init(source, this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create the entire inventory for a given user
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
public abstract bool CreateUserInventory(UUID user);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the skeleton of the inventory -- folders only
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public abstract List<InventoryFolderBase> GetInventorySkeleton(UUID userId);
|
||||
|
||||
/// <summary>
|
||||
/// Synchronous inventory fetch.
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <returns></returns>
|
||||
public abstract InventoryCollection GetUserInventory(UUID userID);
|
||||
|
||||
/// <summary>
|
||||
/// Request the inventory for a user. This is an asynchronous operation that will call the callback when the
|
||||
/// inventory has been received
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <param name="callback"></param>
|
||||
public abstract void GetUserInventory(UUID userID, InventoryReceiptCallback callback);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve the root inventory folder for the given user.
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <returns>null if no root folder was found</returns>
|
||||
public abstract InventoryFolderBase GetRootFolder(UUID userID);
|
||||
|
||||
public abstract Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the user folder for the given folder-type
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
|
||||
{
|
||||
return m_cache.GetFolderForType(userID, type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets everything (folders and items) inside a folder
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="folderID"></param>
|
||||
/// <returns></returns>
|
||||
public abstract InventoryCollection GetFolderContent(UUID userID, UUID folderID);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the items inside a folder
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <param name="folderID"></param>
|
||||
/// <returns></returns>
|
||||
public abstract List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID);
|
||||
|
||||
/// <summary>
|
||||
/// Add a new folder to the user's inventory
|
||||
/// </summary>
|
||||
/// <param name="folder"></param>
|
||||
/// <returns>true if the folder was successfully added</returns>
|
||||
public abstract bool AddFolder(InventoryFolderBase folder);
|
||||
|
||||
/// <summary>
|
||||
/// Update a folder in the user's inventory
|
||||
/// </summary>
|
||||
/// <param name="folder"></param>
|
||||
/// <returns>true if the folder was successfully updated</returns>
|
||||
public abstract bool UpdateFolder(InventoryFolderBase folder);
|
||||
|
||||
/// <summary>
|
||||
/// Move an inventory folder to a new location
|
||||
/// </summary>
|
||||
/// <param name="folder">A folder containing the details of the new location</param>
|
||||
/// <returns>true if the folder was successfully moved</returns>
|
||||
public abstract bool MoveFolder(InventoryFolderBase folder);
|
||||
|
||||
/// <summary>
|
||||
/// Purge an inventory folder of all its items and subfolders.
|
||||
/// </summary>
|
||||
/// <param name="folder"></param>
|
||||
/// <returns>true if the folder was successfully purged</returns>
|
||||
public abstract bool PurgeFolder(InventoryFolderBase folder);
|
||||
|
||||
/// <summary>
|
||||
/// Add a new item to the user's inventory.
|
||||
/// If the given item has to parent folder, it tries to find the most
|
||||
/// suitable folder for it.
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if the item was successfully added</returns>
|
||||
public bool AddItem(InventoryItemBase item)
|
||||
{
|
||||
if (item.Folder == UUID.Zero)
|
||||
{
|
||||
InventoryFolderBase f = GetFolderForType(item.Owner, (AssetType)item.AssetType);
|
||||
if (f != null)
|
||||
item.Folder = f.ID;
|
||||
else
|
||||
{
|
||||
f = GetRootFolder(item.Owner);
|
||||
if (f != null)
|
||||
item.Folder = f.ID;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return AddItemPlain(item);
|
||||
}
|
||||
|
||||
protected abstract bool AddItemPlain(InventoryItemBase item);
|
||||
|
||||
/// <summary>
|
||||
/// Update an item in the user's inventory
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if the item was successfully updated</returns>
|
||||
public abstract bool UpdateItem(InventoryItemBase item);
|
||||
|
||||
/// <summary>
|
||||
/// Delete an item from the user's inventory
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if the item was successfully deleted</returns>
|
||||
public abstract bool DeleteItem(InventoryItemBase item);
|
||||
|
||||
public abstract InventoryItemBase QueryItem(InventoryItemBase item);
|
||||
|
||||
public abstract InventoryFolderBase QueryFolder(InventoryFolderBase folder);
|
||||
|
||||
/// <summary>
|
||||
/// Does the given user have an inventory structure?
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <returns></returns>
|
||||
public abstract bool HasInventoryForUser(UUID userID);
|
||||
|
||||
/// <summary>
|
||||
/// Get the active gestures of the agent.
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public abstract List<InventoryItemBase> GetActiveGestures(UUID userId);
|
||||
|
||||
}
|
||||
}
|
|
@ -41,7 +41,7 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
{
|
||||
public class HGInventoryBroker : InventoryCache, ISharedRegionModule, IInventoryService
|
||||
public class HGInventoryBroker : BaseInventoryConnector, ISharedRegionModule, IInventoryService
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
|
@ -138,7 +138,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
{
|
||||
}
|
||||
|
||||
public override void AddRegion(Scene scene)
|
||||
public void AddRegion(Scene scene)
|
||||
{
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
@ -156,12 +156,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
|
||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||
base.AddRegion(scene);
|
||||
m_cache.AddRegion(scene);
|
||||
}
|
||||
|
||||
public override void RemoveRegion(Scene scene)
|
||||
public void RemoveRegion(Scene scene)
|
||||
{
|
||||
base.RemoveRegion(scene);
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
||||
m_cache.RemoveRegion(scene);
|
||||
}
|
||||
|
||||
public void RegionLoaded(Scene scene)
|
||||
|
@ -175,17 +178,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
|
||||
#region IInventoryService
|
||||
|
||||
public bool CreateUserInventory(UUID userID)
|
||||
public override bool CreateUserInventory(UUID userID)
|
||||
{
|
||||
return m_GridService.CreateUserInventory(userID);
|
||||
}
|
||||
|
||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||
{
|
||||
return m_GridService.GetInventorySkeleton(userId);
|
||||
}
|
||||
|
||||
public InventoryCollection GetUserInventory(UUID userID)
|
||||
public override InventoryCollection GetUserInventory(UUID userID)
|
||||
{
|
||||
if (IsLocalGridUser(userID))
|
||||
return m_GridService.GetUserInventory(userID);
|
||||
|
@ -193,7 +196,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return null;
|
||||
}
|
||||
|
||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||
{
|
||||
if (IsLocalGridUser(userID))
|
||||
m_GridService.GetUserInventory(userID, callback);
|
||||
|
@ -220,7 +223,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
// }
|
||||
//}
|
||||
|
||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
{
|
||||
if (IsLocalGridUser(userID))
|
||||
return m_GridService.GetFolderContent(userID, folderID);
|
||||
|
@ -271,12 +274,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return new Dictionary<AssetType, InventoryFolderBase>();
|
||||
}
|
||||
|
||||
public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||
{
|
||||
return new List<InventoryItemBase>();
|
||||
}
|
||||
|
||||
public bool AddFolder(InventoryFolderBase folder)
|
||||
public override bool AddFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -291,7 +294,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool UpdateFolder(InventoryFolderBase folder)
|
||||
public override bool UpdateFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -306,7 +309,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool MoveFolder(InventoryFolderBase folder)
|
||||
public override bool MoveFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -321,7 +324,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool PurgeFolder(InventoryFolderBase folder)
|
||||
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -336,7 +339,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool AddItem(InventoryItemBase item)
|
||||
// public bool AddItem(InventoryItemBase item) inherited
|
||||
// Uses AddItemPlain
|
||||
|
||||
protected override bool AddItemPlain(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return false;
|
||||
|
@ -351,7 +357,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool UpdateItem(InventoryItemBase item)
|
||||
public override bool UpdateItem(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return false;
|
||||
|
@ -366,7 +372,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool DeleteItem(InventoryItemBase item)
|
||||
public override bool DeleteItem(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return false;
|
||||
|
@ -381,7 +387,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public InventoryItemBase QueryItem(InventoryItemBase item)
|
||||
public override InventoryItemBase QueryItem(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
@ -396,7 +402,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||
public override InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return null;
|
||||
|
@ -411,17 +417,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
}
|
||||
|
||||
public bool HasInventoryForUser(UUID userID)
|
||||
public override bool HasInventoryForUser(UUID userID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public InventoryFolderBase GetRootFolder(UUID userID)
|
||||
public override InventoryFolderBase GetRootFolder(UUID userID)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||
{
|
||||
return new List<InventoryItemBase>();
|
||||
}
|
||||
|
|
|
@ -1,4 +1,31 @@
|
|||
using System;
|
||||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
|
||||
|
@ -12,21 +39,23 @@ using log4net;
|
|||
|
||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
{
|
||||
public abstract class InventoryCache
|
||||
public class InventoryCache
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
protected BaseInventoryConnector m_Connector;
|
||||
protected List<Scene> m_Scenes;
|
||||
|
||||
// The cache proper
|
||||
protected Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>> m_InventoryCache;
|
||||
|
||||
protected virtual void Init(IConfigSource source)
|
||||
public virtual void Init(IConfigSource source, BaseInventoryConnector connector)
|
||||
{
|
||||
m_Scenes = new List<Scene>();
|
||||
m_InventoryCache = new Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>>();
|
||||
m_Connector = connector;
|
||||
}
|
||||
|
||||
public virtual void AddRegion(Scene scene)
|
||||
|
@ -59,9 +88,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
|
||||
// If not, go get them and place them in the cache
|
||||
Dictionary<AssetType, InventoryFolderBase> folders = GetSystemFolders(presence.UUID);
|
||||
m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent, fetched system folders for {0} {1}: count {2}",
|
||||
presence.Firstname, presence.Lastname, folders.Count);
|
||||
Dictionary<AssetType, InventoryFolderBase> folders = m_Connector.GetSystemFolders(presence.UUID);
|
||||
m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent in {0}, fetched system folders for {1} {2}: count {3}",
|
||||
presence.Scene.RegionInfo.RegionName, presence.Firstname, presence.Lastname, folders.Count);
|
||||
if (folders.Count > 0)
|
||||
lock (m_InventoryCache)
|
||||
m_InventoryCache.Add(presence.UUID, folders);
|
||||
|
@ -69,28 +98,32 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
|
||||
void OnClientClosed(UUID clientID, Scene scene)
|
||||
{
|
||||
ScenePresence sp = null;
|
||||
foreach (Scene s in m_Scenes)
|
||||
if (m_InventoryCache.ContainsKey(clientID)) // if it's still in cache
|
||||
{
|
||||
s.TryGetAvatar(clientID, out sp);
|
||||
if ((sp != null) && !sp.IsChildAgent)
|
||||
ScenePresence sp = null;
|
||||
foreach (Scene s in m_Scenes)
|
||||
{
|
||||
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, but user {1} still in sim. Keeping system folders in cache",
|
||||
scene.RegionInfo.RegionName, clientID);
|
||||
return;
|
||||
s.TryGetAvatar(clientID, out sp);
|
||||
if ((sp != null) && !sp.IsChildAgent && (s != scene))
|
||||
{
|
||||
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, but user {1} still in sim. Keeping system folders in cache",
|
||||
scene.RegionInfo.RegionName, clientID);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Drop system folders
|
||||
lock (m_InventoryCache)
|
||||
if (m_InventoryCache.ContainsKey(clientID))
|
||||
{
|
||||
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, user {1} out of sim. Dropping system folders",
|
||||
scene.RegionInfo.RegionName, clientID);
|
||||
|
||||
m_InventoryCache.Remove(clientID);
|
||||
}
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, user {1} out of sim. Dropping system folders",
|
||||
scene.RegionInfo.RegionName, clientID);
|
||||
// Drop system folders
|
||||
lock (m_InventoryCache)
|
||||
if (m_InventoryCache.ContainsKey(clientID))
|
||||
m_InventoryCache.Remove(clientID);
|
||||
|
||||
}
|
||||
|
||||
public abstract Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID);
|
||||
|
||||
public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
|
||||
{
|
||||
|
|
|
@ -41,7 +41,7 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
{
|
||||
public class LocalInventoryServicesConnector : InventoryCache, ISharedRegionModule, IInventoryService
|
||||
public class LocalInventoryServicesConnector : BaseInventoryConnector, ISharedRegionModule, IInventoryService
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
|
@ -124,7 +124,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
{
|
||||
}
|
||||
|
||||
public override void AddRegion(Scene scene)
|
||||
public void AddRegion(Scene scene)
|
||||
{
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
@ -141,12 +141,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
// "[INVENTORY CONNECTOR]: Registering IInventoryService to scene {0}", scene.RegionInfo.RegionName);
|
||||
|
||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||
base.AddRegion(scene);
|
||||
m_cache.AddRegion(scene);
|
||||
}
|
||||
|
||||
public override void RemoveRegion(Scene scene)
|
||||
public void RemoveRegion(Scene scene)
|
||||
{
|
||||
base.RemoveRegion(scene);
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
||||
m_cache.RemoveRegion(scene);
|
||||
}
|
||||
|
||||
public void RegionLoaded(Scene scene)
|
||||
|
@ -160,22 +163,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
|
||||
#region IInventoryService
|
||||
|
||||
public bool CreateUserInventory(UUID user)
|
||||
public override bool CreateUserInventory(UUID user)
|
||||
{
|
||||
return m_InventoryService.CreateUserInventory(user);
|
||||
}
|
||||
|
||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||
{
|
||||
return m_InventoryService.GetInventorySkeleton(userId);
|
||||
}
|
||||
|
||||
public InventoryCollection GetUserInventory(UUID id)
|
||||
public override InventoryCollection GetUserInventory(UUID id)
|
||||
{
|
||||
return m_InventoryService.GetUserInventory(id);
|
||||
}
|
||||
|
||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||
{
|
||||
m_InventoryService.GetUserInventory(userID, callback);
|
||||
}
|
||||
|
@ -207,13 +210,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return new Dictionary<AssetType, InventoryFolderBase>();
|
||||
}
|
||||
|
||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
{
|
||||
return m_InventoryService.GetFolderContent(userID, folderID);
|
||||
}
|
||||
|
||||
|
||||
public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||
{
|
||||
return m_InventoryService.GetFolderItems(userID, folderID);
|
||||
}
|
||||
|
@ -223,7 +226,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="folder"></param>
|
||||
/// <returns>true if the folder was successfully added</returns>
|
||||
public bool AddFolder(InventoryFolderBase folder)
|
||||
public override bool AddFolder(InventoryFolderBase folder)
|
||||
{
|
||||
return m_InventoryService.AddFolder(folder);
|
||||
}
|
||||
|
@ -233,7 +236,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="folder"></param>
|
||||
/// <returns>true if the folder was successfully updated</returns>
|
||||
public bool UpdateFolder(InventoryFolderBase folder)
|
||||
public override bool UpdateFolder(InventoryFolderBase folder)
|
||||
{
|
||||
return m_InventoryService.UpdateFolder(folder);
|
||||
}
|
||||
|
@ -243,7 +246,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="folder">A folder containing the details of the new location</param>
|
||||
/// <returns>true if the folder was successfully moved</returns>
|
||||
public bool MoveFolder(InventoryFolderBase folder)
|
||||
public override bool MoveFolder(InventoryFolderBase folder)
|
||||
{
|
||||
return m_InventoryService.MoveFolder(folder);
|
||||
}
|
||||
|
@ -253,17 +256,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="folder"></param>
|
||||
/// <returns>true if the folder was successfully purged</returns>
|
||||
public bool PurgeFolder(InventoryFolderBase folder)
|
||||
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||
{
|
||||
return m_InventoryService.PurgeFolder(folder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a new item to the user's inventory
|
||||
/// Add a new item to the user's inventory, plain
|
||||
/// Called by base class AddItem
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if the item was successfully added</returns>
|
||||
public bool AddItem(InventoryItemBase item)
|
||||
protected override bool AddItemPlain(InventoryItemBase item)
|
||||
{
|
||||
return m_InventoryService.AddItem(item);
|
||||
}
|
||||
|
@ -273,7 +277,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if the item was successfully updated</returns>
|
||||
public bool UpdateItem(InventoryItemBase item)
|
||||
public override bool UpdateItem(InventoryItemBase item)
|
||||
{
|
||||
return m_InventoryService.UpdateItem(item);
|
||||
}
|
||||
|
@ -283,17 +287,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if the item was successfully deleted</returns>
|
||||
public bool DeleteItem(InventoryItemBase item)
|
||||
public override bool DeleteItem(InventoryItemBase item)
|
||||
{
|
||||
return m_InventoryService.DeleteItem(item);
|
||||
}
|
||||
|
||||
public InventoryItemBase QueryItem(InventoryItemBase item)
|
||||
public override InventoryItemBase QueryItem(InventoryItemBase item)
|
||||
{
|
||||
return m_InventoryService.QueryItem(item);
|
||||
}
|
||||
|
||||
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||
public override InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||
{
|
||||
return m_InventoryService.QueryFolder(folder);
|
||||
}
|
||||
|
@ -303,7 +307,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <returns></returns>
|
||||
public bool HasInventoryForUser(UUID userID)
|
||||
public override bool HasInventoryForUser(UUID userID)
|
||||
{
|
||||
return m_InventoryService.HasInventoryForUser(userID);
|
||||
}
|
||||
|
@ -313,12 +317,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <returns>null if no root folder was found</returns>
|
||||
public InventoryFolderBase GetRootFolder(UUID userID)
|
||||
public override InventoryFolderBase GetRootFolder(UUID userID)
|
||||
{
|
||||
return m_InventoryService.GetRootFolder(userID);
|
||||
}
|
||||
|
||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||
{
|
||||
return m_InventoryService.GetActiveGestures(userId);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ using OpenMetaverse;
|
|||
|
||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
{
|
||||
public class RemoteInventoryServicesConnector : InventoryCache, ISharedRegionModule, IInventoryService
|
||||
public class RemoteInventoryServicesConnector : BaseInventoryConnector, ISharedRegionModule, IInventoryService
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
@ -102,7 +102,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
{
|
||||
}
|
||||
|
||||
public override void AddRegion(Scene scene)
|
||||
public void AddRegion(Scene scene)
|
||||
{
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
@ -117,12 +117,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
}
|
||||
|
||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||
base.AddRegion(scene);
|
||||
m_cache.AddRegion(scene);
|
||||
}
|
||||
|
||||
public override void RemoveRegion(Scene scene)
|
||||
public void RemoveRegion(Scene scene)
|
||||
{
|
||||
base.RemoveRegion(scene);
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
||||
m_cache.RemoveRegion(scene);
|
||||
}
|
||||
|
||||
public void RegionLoaded(Scene scene)
|
||||
|
@ -138,22 +141,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
|
||||
#region IInventoryService
|
||||
|
||||
public bool CreateUserInventory(UUID user)
|
||||
public override bool CreateUserInventory(UUID user)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||
{
|
||||
return new List<InventoryFolderBase>();
|
||||
}
|
||||
|
||||
public InventoryCollection GetUserInventory(UUID userID)
|
||||
public override InventoryCollection GetUserInventory(UUID userID)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||
{
|
||||
UUID sessionID = GetSessionID(userID);
|
||||
try
|
||||
|
@ -180,7 +183,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.GetSystemFolders(userID.ToString(), sessionID);
|
||||
}
|
||||
|
||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
{
|
||||
UUID sessionID = GetSessionID(userID);
|
||||
try
|
||||
|
@ -199,12 +202,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return nullCollection;
|
||||
}
|
||||
|
||||
public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||
{
|
||||
return new List<InventoryItemBase>();
|
||||
}
|
||||
|
||||
public bool AddFolder(InventoryFolderBase folder)
|
||||
public override bool AddFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -213,7 +216,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.AddFolder(folder.Owner.ToString(), folder, sessionID);
|
||||
}
|
||||
|
||||
public bool UpdateFolder(InventoryFolderBase folder)
|
||||
public override bool UpdateFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -222,7 +225,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.UpdateFolder(folder.Owner.ToString(), folder, sessionID);
|
||||
}
|
||||
|
||||
public bool MoveFolder(InventoryFolderBase folder)
|
||||
public override bool MoveFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -231,7 +234,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID);
|
||||
}
|
||||
|
||||
public bool PurgeFolder(InventoryFolderBase folder)
|
||||
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return false;
|
||||
|
@ -240,7 +243,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.PurgeFolder(folder.Owner.ToString(), folder, sessionID);
|
||||
}
|
||||
|
||||
public bool AddItem(InventoryItemBase item)
|
||||
// public bool AddItem(InventoryItemBase item) inherited
|
||||
// Uses AddItemPlain
|
||||
|
||||
protected override bool AddItemPlain(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return false;
|
||||
|
@ -249,7 +255,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.AddItem(item.Owner.ToString(), item, sessionID);
|
||||
}
|
||||
|
||||
public bool UpdateItem(InventoryItemBase item)
|
||||
public override bool UpdateItem(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return false;
|
||||
|
@ -258,7 +264,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID);
|
||||
}
|
||||
|
||||
public bool DeleteItem(InventoryItemBase item)
|
||||
public override bool DeleteItem(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return false;
|
||||
|
@ -267,7 +273,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.DeleteItem(item.Owner.ToString(), item, sessionID);
|
||||
}
|
||||
|
||||
public InventoryItemBase QueryItem(InventoryItemBase item)
|
||||
public override InventoryItemBase QueryItem(InventoryItemBase item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
@ -276,7 +282,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.QueryItem(item.Owner.ToString(), item, sessionID);
|
||||
}
|
||||
|
||||
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||
public override InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
return null;
|
||||
|
@ -285,17 +291,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
|||
return m_RemoteConnector.QueryFolder(folder.Owner.ToString(), folder, sessionID);
|
||||
}
|
||||
|
||||
public bool HasInventoryForUser(UUID userID)
|
||||
public override bool HasInventoryForUser(UUID userID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public InventoryFolderBase GetRootFolder(UUID userID)
|
||||
public override InventoryFolderBase GetRootFolder(UUID userID)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||
{
|
||||
return new List<InventoryItemBase>();
|
||||
}
|
||||
|
|
|
@ -429,7 +429,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
private RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = null;
|
||||
private ParcelPrimCountTainted handlerParcelPrimCountTainted = null;
|
||||
private ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = null;
|
||||
private ScriptTimerEvent handlerScriptTimerEvent = null;
|
||||
// TODO: unused: private ScriptTimerEvent handlerScriptTimerEvent = null;
|
||||
private EstateToolsSunUpdate handlerEstateToolsSunUpdate = null;
|
||||
|
||||
private ScriptColliding handlerCollidingStart = null;
|
||||
|
|
|
@ -622,8 +622,26 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
"[AGENT INVENTORY]: Failed to move folder {0} to {1} for user {2}",
|
||||
folderID, parentID, remoteClient.Name);
|
||||
}
|
||||
}
|
||||
|
||||
public void HandleMoveInventoryFolder2(IClientAPI remoteClient, UUID folderID, UUID parentID)
|
||||
{
|
||||
InventoryFolderBase folder = new InventoryFolderBase(folderID);
|
||||
folder = InventoryService.QueryFolder(folder);
|
||||
if (folder != null)
|
||||
{
|
||||
folder.ParentID = parentID;
|
||||
if (!InventoryService.MoveFolder(folder))
|
||||
m_log.WarnFormat("[AGENT INVENTORY]: could not move folder {0}", folderID);
|
||||
else
|
||||
m_log.DebugFormat("[AGENT INVENTORY]: folder {0} moved to parent {1}", folderID, parentID);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.WarnFormat("[AGENT INVENTORY]: request to move folder {0} but folder not found", folderID);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// This should delete all the items and folders in the given directory.
|
||||
/// </summary>
|
||||
|
@ -647,6 +665,17 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
"[AGENT INVENTORY]: Failed to purge folder for user {0} {1}",
|
||||
remoteClient.Name, remoteClient.AgentId);
|
||||
}
|
||||
}
|
||||
|
||||
public void HandlePurgeInventoryDescendents2(IClientAPI remoteClient, UUID folderID)
|
||||
{
|
||||
InventoryFolderBase folder = new InventoryFolderBase(folderID);
|
||||
|
||||
if (InventoryService.PurgeFolder(folder))
|
||||
m_log.DebugFormat("[AGENT INVENTORY]: folder {0} purged successfully", folderID);
|
||||
else
|
||||
m_log.WarnFormat("[AGENT INVENTORY]: could not purge folder {0}", folderID);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1038,6 +1038,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send out simstats data to all clients
|
||||
/// </summary>
|
||||
/// <param name="stats">Stats on the Simulator's performance</param>
|
||||
private void SendSimStatsPackets(SimStats stats)
|
||||
{
|
||||
List<ScenePresence> StatSendAgents = GetScenePresences();
|
||||
|
@ -1050,6 +1054,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recount SceneObjectPart in parcel aabb
|
||||
/// </summary>
|
||||
private void UpdateLand()
|
||||
{
|
||||
if (LandChannel != null)
|
||||
|
@ -1061,11 +1068,17 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update the terrain if it needs to be updated.
|
||||
/// </summary>
|
||||
private void UpdateTerrain()
|
||||
{
|
||||
EventManager.TriggerTerrainTick();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Back up queued up changes
|
||||
/// </summary>
|
||||
private void UpdateStorageBackup()
|
||||
{
|
||||
if (!m_backingup)
|
||||
|
@ -1078,6 +1091,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends out the OnFrame event to the modules
|
||||
/// </summary>
|
||||
private void UpdateEvents()
|
||||
{
|
||||
m_eventManager.TriggerOnFrame();
|
||||
|
@ -1133,6 +1149,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Synchronous force backup. For deletes and links/unlinks
|
||||
/// </summary>
|
||||
/// <param name="group">Object to be backed up</param>
|
||||
public void ForceSceneObjectBackup(SceneObjectGroup group)
|
||||
{
|
||||
if (group != null)
|
||||
|
@ -1141,6 +1161,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return object to avatar Message
|
||||
/// </summary>
|
||||
/// <param name="agentID">Avatar Unique Id</param>
|
||||
/// <param name="objectName">Name of object returned</param>
|
||||
/// <param name="location">Location of object returned</param>
|
||||
/// <param name="reason">Reasion for object return</param>
|
||||
public void AddReturn(UUID agentID, string objectName, Vector3 location, string reason)
|
||||
{
|
||||
lock (m_returns)
|
||||
|
@ -1167,6 +1194,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
#region Load Terrain
|
||||
|
||||
/// <summary>
|
||||
/// Store the terrain in the persistant data store
|
||||
/// </summary>
|
||||
public void SaveTerrain()
|
||||
{
|
||||
m_storageManager.DataStore.StoreTerrain(Heightmap.GetDoubles(), RegionInfo.RegionID);
|
||||
|
@ -1269,6 +1299,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
#region Load Land
|
||||
|
||||
/// <summary>
|
||||
/// Loads all Parcel data from the datastore for region identified by regionID
|
||||
/// </summary>
|
||||
/// <param name="regionID">Unique Identifier of the Region to load parcel data for</param>
|
||||
public void loadAllLandObjectsFromStorage(UUID regionID)
|
||||
{
|
||||
m_log.Info("[SCENE]: Loading land objects from storage");
|
||||
|
@ -1322,6 +1356,20 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets a new rez location based on the raycast and the size of the object that is being rezzed.
|
||||
/// </summary>
|
||||
/// <param name="RayStart"></param>
|
||||
/// <param name="RayEnd"></param>
|
||||
/// <param name="RayTargetID"></param>
|
||||
/// <param name="rot"></param>
|
||||
/// <param name="bypassRayCast"></param>
|
||||
/// <param name="RayEndIsIntersection"></param>
|
||||
/// <param name="frontFacesOnly"></param>
|
||||
/// <param name="scale"></param>
|
||||
/// <param name="FaceCenter"></param>
|
||||
/// <returns></returns>
|
||||
public Vector3 GetNewRezLocation(Vector3 RayStart, Vector3 RayEnd, UUID RayTargetID, Quaternion rot, byte bypassRayCast, byte RayEndIsIntersection, bool frontFacesOnly, Vector3 scale, bool FaceCenter)
|
||||
{
|
||||
Vector3 pos = Vector3.Zero;
|
||||
|
@ -1412,6 +1460,19 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Create a New SceneObjectGroup/Part by raycasting
|
||||
/// </summary>
|
||||
/// <param name="ownerID"></param>
|
||||
/// <param name="groupID"></param>
|
||||
/// <param name="RayEnd"></param>
|
||||
/// <param name="rot"></param>
|
||||
/// <param name="shape"></param>
|
||||
/// <param name="bypassRaycast"></param>
|
||||
/// <param name="RayStart"></param>
|
||||
/// <param name="RayTargetID"></param>
|
||||
/// <param name="RayEndIsIntersection"></param>
|
||||
public virtual void AddNewPrim(UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot, PrimitiveBaseShape shape,
|
||||
byte bypassRaycast, Vector3 RayStart, UUID RayTargetID,
|
||||
byte RayEndIsIntersection)
|
||||
|
@ -1829,6 +1890,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attachment rezzing
|
||||
/// </summary>
|
||||
/// <param name="userID">Agent Unique ID</param>
|
||||
/// <param name="itemID">Object ID</param>
|
||||
/// <returns>False</returns>
|
||||
public virtual bool IncomingCreateObject(UUID userID, UUID itemID)
|
||||
{
|
||||
ScenePresence sp = GetScenePresence(userID);
|
||||
|
@ -1841,6 +1908,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a Scene Object group to the Scene.
|
||||
/// Verifies that the creator of the object is not banned from the simulator.
|
||||
/// Checks if the item is an Attachment
|
||||
/// </summary>
|
||||
/// <param name="sceneObject"></param>
|
||||
/// <returns>True if the SceneObjectGroup was added, False if it was not</returns>
|
||||
public bool AddSceneObject(SceneObjectGroup sceneObject)
|
||||
{
|
||||
// If the user is banned, we won't let any of their objects
|
||||
|
@ -1933,6 +2007,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
#region Add/Remove Avatar Methods
|
||||
|
||||
/// <summary>
|
||||
/// Adding a New Client and Create a Presence for it.
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
public override void AddNewClient(IClientAPI client)
|
||||
{
|
||||
SubscribeToClientEvents(client);
|
||||
|
@ -1977,6 +2055,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
EventManager.TriggerOnNewClient(client);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register for events from the client
|
||||
/// </summary>
|
||||
/// <param name="client">The IClientAPI of the connected client</param>
|
||||
protected virtual void SubscribeToClientEvents(IClientAPI client)
|
||||
{
|
||||
client.OnRegionHandShakeReply += SendLayerData;
|
||||
|
@ -2019,12 +2101,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags;
|
||||
client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily;
|
||||
client.OnObjectPermissions += HandleObjectPermissionsUpdate;
|
||||
|
||||
client.OnCreateNewInventoryItem += CreateNewInventoryItem;
|
||||
client.OnCreateNewInventoryFolder += HandleCreateInventoryFolder;
|
||||
client.OnUpdateInventoryFolder += HandleUpdateInventoryFolder;
|
||||
client.OnMoveInventoryFolder += HandleMoveInventoryFolder;
|
||||
client.OnMoveInventoryFolder += HandleMoveInventoryFolder; // 2; //!!
|
||||
client.OnFetchInventoryDescendents += HandleFetchInventoryDescendents;
|
||||
client.OnPurgeInventoryDescendents += HandlePurgeInventoryDescendents;
|
||||
client.OnPurgeInventoryDescendents += HandlePurgeInventoryDescendents; // 2; //!!
|
||||
client.OnFetchInventory += HandleFetchInventory;
|
||||
client.OnUpdateInventoryItem += UpdateInventoryItemAsset;
|
||||
client.OnCopyInventoryItem += CopyInventoryItem;
|
||||
|
@ -2036,6 +2119,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
client.OnRemoveTaskItem += RemoveTaskInventory;
|
||||
client.OnUpdateTaskInventory += UpdateTaskInventory;
|
||||
client.OnMoveTaskItem += ClientMoveTaskInventoryItem;
|
||||
|
||||
client.OnGrabObject += ProcessObjectGrab;
|
||||
client.OnDeGrabObject += ProcessObjectDeGrab;
|
||||
client.OnMoneyTransferRequest += ProcessMoneyTransferRequest;
|
||||
|
@ -2068,8 +2152,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// <summary>
|
||||
/// Teleport an avatar to their home region
|
||||
/// </summary>
|
||||
/// <param name="agentId"></param>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="agentId">The avatar's Unique ID</param>
|
||||
/// <param name="client">The IClientAPI for the client</param>
|
||||
public virtual void TeleportClientHome(UUID agentId, IClientAPI client)
|
||||
{
|
||||
UserProfileData UserProfile = CommsManager.UserService.GetUserProfile(agentId);
|
||||
|
@ -2097,6 +2181,21 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Duplicates object specified by localID at position raycasted against RayTargetObject using
|
||||
/// RayEnd and RayStart to determine what the angle of the ray is
|
||||
/// </summary>
|
||||
/// <param name="localID">ID of object to duplicate</param>
|
||||
/// <param name="dupeFlags"></param>
|
||||
/// <param name="AgentID">Agent doing the duplication</param>
|
||||
/// <param name="GroupID">Group of new object</param>
|
||||
/// <param name="RayTargetObj">The target of the Ray</param>
|
||||
/// <param name="RayEnd">The ending of the ray (farthest away point)</param>
|
||||
/// <param name="RayStart">The Beginning of the ray (closest point)</param>
|
||||
/// <param name="BypassRaycast">Bool to bypass raycasting</param>
|
||||
/// <param name="RayEndIsIntersection">The End specified is the place to add the object</param>
|
||||
/// <param name="CopyCenters">Position the object at the center of the face that it's colliding with</param>
|
||||
/// <param name="CopyRotates">Rotate the object the same as the localID object</param>
|
||||
public void doObjectDuplicateOnRay(uint localID, uint dupeFlags, UUID AgentID, UUID GroupID,
|
||||
UUID RayTargetObj, Vector3 RayEnd, Vector3 RayStart,
|
||||
bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters, bool CopyRotates)
|
||||
|
@ -2168,6 +2267,14 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the Home Point. The GridService uses this to know where to put a user when they log-in
|
||||
/// </summary>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <param name="regionHandle"></param>
|
||||
/// <param name="position"></param>
|
||||
/// <param name="lookAt"></param>
|
||||
/// <param name="flags"></param>
|
||||
public virtual void SetHomeRezPoint(IClientAPI remoteClient, ulong regionHandle, Vector3 position, Vector3 lookAt, uint flags)
|
||||
{
|
||||
UserProfileData UserProfile = CommsManager.UserService.GetUserProfile(remoteClient.AgentId);
|
||||
|
@ -2338,6 +2445,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes region from an avatar's known region list. This coincides with child agents. For each child agent, there will be a known region entry.
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="avatarID"></param>
|
||||
/// <param name="regionslst"></param>
|
||||
public void HandleRemoveKnownRegionsFromAvatar(UUID avatarID, List<ulong> regionslst)
|
||||
{
|
||||
ScenePresence av = GetScenePresence(avatarID);
|
||||
|
@ -2353,12 +2466,19 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Closes all endpoints with the circuitcode provided.
|
||||
/// </summary>
|
||||
/// <param name="circuitcode">Circuit Code of the endpoint to close</param>
|
||||
public override void CloseAllAgents(uint circuitcode)
|
||||
{
|
||||
// Called by ClientView to kill all circuit codes
|
||||
ClientManager.CloseAllAgents(circuitcode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inform all other ScenePresences on this Scene that someone else has changed position on the minimap.
|
||||
/// </summary>
|
||||
public void NotifyMyCoarseLocationChange()
|
||||
{
|
||||
ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
|
||||
|
@ -2453,9 +2573,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// The return bool should allow for connections to be refused, but as not all calling paths
|
||||
/// take proper notice of it let, we allowed banned users in still.
|
||||
/// </summary>
|
||||
/// <param name="regionHandle"></param>
|
||||
/// <param name="agent"></param>
|
||||
/// <param name="reason"></param>
|
||||
/// <param name="agent">CircuitData of the agent who is connecting</param>
|
||||
/// <param name="reason">Outputs the reason for the false response on this string</param>
|
||||
/// <returns>True if the region accepts this agent. False if it does not. False will
|
||||
/// also return a reason.</returns>
|
||||
public bool NewUserConnection(AgentCircuitData agent, out string reason)
|
||||
{
|
||||
// Don't disable this log message - it's too helpful
|
||||
|
@ -2528,6 +2649,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that the user has a session on the Grid
|
||||
/// </summary>
|
||||
/// <param name="agent">Circuit Data of the Agent we're verifying</param>
|
||||
/// <param name="reason">Outputs the reason for the false response on this string</param>
|
||||
/// <returns>True if the user has a session on the grid. False if it does not. False will
|
||||
/// also return a reason.</returns>
|
||||
public virtual bool AuthenticateUser(AgentCircuitData agent, out string reason)
|
||||
{
|
||||
reason = String.Empty;
|
||||
|
@ -2540,6 +2668,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verify if the user can connect to this region. Checks the banlist and ensures that the region is set for public access
|
||||
/// </summary>
|
||||
/// <param name="agent">The circuit data for the agent</param>
|
||||
/// <param name="reason">outputs the reason to this string</param>
|
||||
/// <returns>True if the region accepts this agent. False if it does not. False will
|
||||
/// also return a reason.</returns>
|
||||
protected virtual bool AuthorizeUser(AgentCircuitData agent, out string reason)
|
||||
{
|
||||
reason = String.Empty;
|
||||
|
@ -2598,16 +2733,32 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update an AgentCircuitData object with new information
|
||||
/// </summary>
|
||||
/// <param name="data">Information to update the AgentCircuitData with</param>
|
||||
public void UpdateCircuitData(AgentCircuitData data)
|
||||
{
|
||||
m_authenticateHandler.UpdateAgentData(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Change the Circuit Code for the user's Circuit Data
|
||||
/// </summary>
|
||||
/// <param name="oldcc">The old Circuit Code. Must match a previous circuit code</param>
|
||||
/// <param name="newcc">The new Circuit Code. Must not be an already existing circuit code</param>
|
||||
/// <returns>True if we successfully changed it. False if we did not</returns>
|
||||
public bool ChangeCircuitCode(uint oldcc, uint newcc)
|
||||
{
|
||||
return m_authenticateHandler.TryChangeCiruitCode(oldcc, newcc);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The Grid has requested that we log-off a user. Log them off.
|
||||
/// </summary>
|
||||
/// <param name="AvatarID">Unique ID of the avatar to log-off</param>
|
||||
/// <param name="RegionSecret">SecureSessionID of the user, or the RegionSecret text when logging on to the grid</param>
|
||||
/// <param name="message">message to display to the user. Reason for being logged off</param>
|
||||
public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message)
|
||||
{
|
||||
ScenePresence loggingOffUser = null;
|
||||
|
@ -2673,6 +2824,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// We've got an update about an agent that sees into this region,
|
||||
/// send it to ScenePresence for processing It's the full data.
|
||||
/// </summary>
|
||||
/// <param name="cAgentData">Agent that contains all of the relevant things about an agent.
|
||||
/// Appearance, animations, position, etc.</param>
|
||||
/// <returns>true if we handled it.</returns>
|
||||
public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData)
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
|
@ -2690,6 +2848,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// We've got an update about an agent that sees into this region,
|
||||
/// send it to ScenePresence for processing It's only positional data
|
||||
/// </summary>
|
||||
/// <param name="cAgentData">AgentPosition that contains agent positional data so we can know what to send</param>
|
||||
/// <returns>true if we handled it.</returns>
|
||||
public virtual bool IncomingChildAgentDataUpdate(AgentPosition cAgentData)
|
||||
{
|
||||
//m_log.Debug(" XXX Scene IncomingChildAgentDataUpdate POSITION in " + RegionInfo.RegionName);
|
||||
|
|
|
@ -48,6 +48,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public delegate void RemoveKnownRegionsFromAvatarList(UUID avatarID, List<ulong> regionlst);
|
||||
|
||||
/// <summary>
|
||||
/// Class that Region communications runs through
|
||||
/// </summary>
|
||||
public class SceneCommunicationService //one instance per region
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
@ -60,15 +63,46 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
protected List<UUID> m_agentsInTransit;
|
||||
|
||||
/// <summary>
|
||||
/// An agent is crossing into this region
|
||||
/// </summary>
|
||||
public event AgentCrossing OnAvatarCrossingIntoRegion;
|
||||
|
||||
/// <summary>
|
||||
/// A user will arrive shortly, set up appropriate credentials so it can connect
|
||||
/// </summary>
|
||||
public event ExpectUserDelegate OnExpectUser;
|
||||
|
||||
/// <summary>
|
||||
/// A Prim will arrive shortly
|
||||
/// </summary>
|
||||
public event ExpectPrimDelegate OnExpectPrim;
|
||||
public event CloseAgentConnection OnCloseAgentConnection;
|
||||
|
||||
/// <summary>
|
||||
/// A new prim has arrived
|
||||
/// </summary>
|
||||
public event PrimCrossing OnPrimCrossingIntoRegion;
|
||||
|
||||
/// <summary>
|
||||
/// A New Region is up and available
|
||||
/// </summary>
|
||||
public event RegionUp OnRegionUp;
|
||||
|
||||
/// <summary>
|
||||
/// We have a child agent for this avatar and we're getting a status update about it
|
||||
/// </summary>
|
||||
public event ChildAgentUpdate OnChildAgentUpdate;
|
||||
//public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar;
|
||||
|
||||
/// <summary>
|
||||
/// Time to log one of our users off. Grid Service sends this mostly
|
||||
/// </summary>
|
||||
public event LogOffUser OnLogOffUser;
|
||||
|
||||
/// <summary>
|
||||
/// A region wants land data from us!
|
||||
/// </summary>
|
||||
public event GetLandData OnGetLandData;
|
||||
|
||||
private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion;
|
||||
|
@ -123,11 +157,20 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a region with the name closest to string provided
|
||||
/// </summary>
|
||||
/// <param name="name">Partial Region Name for matching</param>
|
||||
/// <returns>Region Information for the region</returns>
|
||||
public RegionInfo RequestClosestRegion(string name)
|
||||
{
|
||||
return m_commsProvider.GridService.RequestClosestRegion(name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This region is shutting down, de-register all events!
|
||||
/// De-Register region from Grid!
|
||||
/// </summary>
|
||||
public void Close()
|
||||
{
|
||||
if (regionCommsHost != null)
|
||||
|
@ -159,10 +202,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
#region CommsManager Event handlers
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// A New User will arrive shortly, Informs the scene that there's a new user on the way
|
||||
/// </summary>
|
||||
/// <param name="regionHandle"></param>
|
||||
/// <param name="agent"></param>
|
||||
/// <param name="agent">Data we need to ensure that the agent can connect</param>
|
||||
///
|
||||
protected void NewUserConnection(AgentCircuitData agent)
|
||||
{
|
||||
|
@ -174,6 +216,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The Grid has requested us to log-off the user
|
||||
/// </summary>
|
||||
/// <param name="AgentID">Unique ID of agent to log-off</param>
|
||||
/// <param name="RegionSecret">The secret string that the region establishes with the grid when registering</param>
|
||||
/// <param name="message">The message to send to the user that tells them why they were logged off</param>
|
||||
protected void GridLogOffUser(UUID AgentID, UUID RegionSecret, string message)
|
||||
{
|
||||
handlerLogOffUser = OnLogOffUser;
|
||||
|
@ -183,6 +231,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A New Region is now available. Inform the scene that there is a new region available.
|
||||
/// </summary>
|
||||
/// <param name="region">Information about the new region that is available</param>
|
||||
/// <returns>True if the event was handled</returns>
|
||||
protected bool newRegionUp(RegionInfo region)
|
||||
{
|
||||
handlerRegionUp = OnRegionUp;
|
||||
|
@ -194,6 +247,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inform the scene that we've got an update about a child agent that we have
|
||||
/// </summary>
|
||||
/// <param name="cAgentData"></param>
|
||||
/// <returns></returns>
|
||||
protected bool ChildAgentUpdate(ChildAgentDataUpdate cAgentData)
|
||||
{
|
||||
handlerChildAgentUpdate = OnChildAgentUpdate;
|
||||
|
@ -204,6 +262,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
protected void AgentCrossing(UUID agentID, Vector3 position, bool isFlying)
|
||||
{
|
||||
handlerAvatarCrossingIntoRegion = OnAvatarCrossingIntoRegion;
|
||||
|
@ -213,6 +272,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// We have a new prim from a neighbor
|
||||
/// </summary>
|
||||
/// <param name="primID">unique ID for the primative</param>
|
||||
/// <param name="objXMLData">XML2 encoded data of the primative</param>
|
||||
/// <param name="XMLMethod">An Int that represents the version of the XMLMethod</param>
|
||||
/// <returns>True if the prim was accepted, false if it was not</returns>
|
||||
protected bool IncomingPrimCrossing(UUID primID, String objXMLData, int XMLMethod)
|
||||
{
|
||||
handlerExpectPrim = OnExpectPrim;
|
||||
|
|
|
@ -1098,30 +1098,29 @@ if (m_shape != null) {
|
|||
}
|
||||
}
|
||||
|
||||
private void handleTimerAccounting(uint localID, double interval)
|
||||
{
|
||||
if (localID == LocalId)
|
||||
{
|
||||
|
||||
float sec = (float)interval;
|
||||
if (m_parentGroup != null)
|
||||
{
|
||||
if (sec == 0)
|
||||
{
|
||||
if (m_parentGroup.scriptScore + 0.001f >= float.MaxValue - 0.001)
|
||||
m_parentGroup.scriptScore = 0;
|
||||
|
||||
m_parentGroup.scriptScore += 0.001f;
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_parentGroup.scriptScore + (0.001f / sec) >= float.MaxValue - (0.001f / sec))
|
||||
m_parentGroup.scriptScore = 0;
|
||||
m_parentGroup.scriptScore += (0.001f / sec);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// TODO: unused:
|
||||
// private void handleTimerAccounting(uint localID, double interval)
|
||||
// {
|
||||
// if (localID == LocalId)
|
||||
// {
|
||||
// float sec = (float)interval;
|
||||
// if (m_parentGroup != null)
|
||||
// {
|
||||
// if (sec == 0)
|
||||
// {
|
||||
// if (m_parentGroup.scriptScore + 0.001f >= float.MaxValue - 0.001)
|
||||
// m_parentGroup.scriptScore = 0;
|
||||
//
|
||||
// m_parentGroup.scriptScore += 0.001f;
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (m_parentGroup.scriptScore + (0.001f / sec) >= float.MaxValue - (0.001f / sec))
|
||||
// m_parentGroup.scriptScore = 0;
|
||||
// m_parentGroup.scriptScore += (0.001f / sec);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
|
@ -1248,7 +1247,6 @@ if (m_shape != null) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// hook to the physics scene to apply angular impulse
|
||||
/// This is sent up to the group, which then finds the root prim
|
||||
|
@ -1809,7 +1807,6 @@ if (m_shape != null) {
|
|||
m_parentGroup.SetHoverHeight(0f, PIDHoverType.Ground, 0f);
|
||||
}
|
||||
|
||||
|
||||
public virtual void OnGrab(Vector3 offsetPos, IClientAPI remoteClient)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -113,6 +113,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
|||
agent.InventoryFolder = UUID.Zero;
|
||||
agent.startpos = Vector3.Zero;
|
||||
agent.CapsPath = GetRandomCapsObjectPath();
|
||||
agent.ChildrenCapSeeds = new Dictionary<ulong, string>();
|
||||
|
||||
string reason;
|
||||
scene.NewUserConnection(agent, out reason);
|
||||
|
@ -147,7 +148,13 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
|||
TestHelper.InMethod();
|
||||
|
||||
string reason;
|
||||
|
||||
if (acd1 == null)
|
||||
fixNullPresence();
|
||||
|
||||
scene.NewUserConnection(acd1, out reason);
|
||||
if (testclient == null)
|
||||
testclient = new TestClient(acd1, scene);
|
||||
scene.AddNewClient(testclient);
|
||||
|
||||
ScenePresence presence = scene.GetScenePresence(agent1);
|
||||
|
@ -162,6 +169,24 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
|||
|
||||
Assert.That(neighbours.Count, Is.EqualTo(2));
|
||||
}
|
||||
public void fixNullPresence()
|
||||
{
|
||||
string firstName = "testfirstname";
|
||||
|
||||
AgentCircuitData agent = new AgentCircuitData();
|
||||
agent.AgentID = agent1;
|
||||
agent.firstname = firstName;
|
||||
agent.lastname = "testlastname";
|
||||
agent.SessionID = UUID.Zero;
|
||||
agent.SecureSessionID = UUID.Zero;
|
||||
agent.circuitcode = 123;
|
||||
agent.BaseFolder = UUID.Zero;
|
||||
agent.InventoryFolder = UUID.Zero;
|
||||
agent.startpos = Vector3.Zero;
|
||||
agent.CapsPath = GetRandomCapsObjectPath();
|
||||
|
||||
acd1 = agent;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void T013_TestRemoveNeighbourRegion()
|
||||
|
|
|
@ -38,6 +38,7 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion;
|
|||
using OpenSim.Tests.Common;
|
||||
using OpenSim.Tests.Common.Mock;
|
||||
using OpenSim.Tests.Common.Setup;
|
||||
using System.Threading;
|
||||
|
||||
namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
{
|
||||
|
@ -55,56 +56,130 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
|||
public void TestSimpleNotNeighboursTeleport()
|
||||
{
|
||||
TestHelper.InMethod();
|
||||
ThreadRunResults results = new ThreadRunResults();
|
||||
results.Result = false;
|
||||
results.Message = "Test did not run";
|
||||
TestRunning testClass = new TestRunning(results);
|
||||
|
||||
Thread testThread = new Thread(testClass.run);
|
||||
|
||||
try
|
||||
{
|
||||
// Seems kind of redundant to start a thread and then join it, however.. We need to protect against
|
||||
// A thread abort exception in the simulator code.
|
||||
testThread.Start();
|
||||
testThread.Join();
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
|
||||
}
|
||||
Assert.That(testClass.results.Result, Is.EqualTo(true), testClass.results.Message);
|
||||
// Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class ThreadRunResults
|
||||
{
|
||||
public bool Result = false;
|
||||
public string Message = string.Empty;
|
||||
}
|
||||
|
||||
public class TestRunning
|
||||
{
|
||||
public ThreadRunResults results;
|
||||
public TestRunning(ThreadRunResults t)
|
||||
{
|
||||
results = t;
|
||||
}
|
||||
public void run(object o)
|
||||
{
|
||||
|
||||
//results.Result = true;
|
||||
log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
|
||||
UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100");
|
||||
UUID sceneBId = UUID.Parse("00000000-0000-0000-0000-000000000200");
|
||||
TestCommunicationsManager cm = new TestCommunicationsManager();
|
||||
|
||||
// shared module
|
||||
ISharedRegionModule interregionComms = new RESTInterregionComms();
|
||||
|
||||
|
||||
Scene sceneA = SceneSetupHelpers.SetupScene("sceneA", sceneAId, 1000, 1000, cm);
|
||||
SceneSetupHelpers.SetupSceneModules(sceneA, new IniConfigSource(), interregionComms);
|
||||
sceneA.RegisterRegionWithGrid();
|
||||
|
||||
|
||||
Scene sceneB = SceneSetupHelpers.SetupScene("sceneB", sceneBId, 1010, 1010, cm);
|
||||
SceneSetupHelpers.SetupSceneModules(sceneB, new IniConfigSource(), interregionComms);
|
||||
sceneB.RegisterRegionWithGrid();
|
||||
|
||||
UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041");
|
||||
|
||||
UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041");
|
||||
TestClient client = SceneSetupHelpers.AddRootAgent(sceneA, agentId);
|
||||
|
||||
|
||||
ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>();
|
||||
|
||||
results.Result = (sceneACapsModule.GetCapsPath(agentId) == client.CapsSeedUrl);
|
||||
|
||||
if (!results.Result)
|
||||
{
|
||||
results.Message = "Incorrect caps object path set up in sceneA";
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
Assert.That(
|
||||
sceneACapsModule.GetCapsPath(agentId),
|
||||
Is.EqualTo(client.CapsSeedUrl),
|
||||
sceneACapsModule.GetCapsPath(agentId),
|
||||
Is.EqualTo(client.CapsSeedUrl),
|
||||
"Incorrect caps object path set up in sceneA");
|
||||
|
||||
*/
|
||||
// FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used.
|
||||
client.TeleportTargetScene = sceneB;
|
||||
|
||||
|
||||
client.TeleportTargetScene = sceneB;
|
||||
client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40));
|
||||
|
||||
results.Result = (sceneB.GetScenePresence(agentId) != null);
|
||||
if (!results.Result)
|
||||
{
|
||||
results.Message = "Client does not have an agent in sceneB";
|
||||
return;
|
||||
}
|
||||
|
||||
//Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
|
||||
|
||||
Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
|
||||
Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
|
||||
|
||||
//Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
|
||||
|
||||
results.Result = (sceneA.GetScenePresence(agentId) == null);
|
||||
if (!results.Result)
|
||||
{
|
||||
results.Message = "Client still had an agent in sceneA";
|
||||
return;
|
||||
}
|
||||
|
||||
ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>();
|
||||
|
||||
|
||||
|
||||
results.Result = ("http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort +
|
||||
"/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/" == client.CapsSeedUrl);
|
||||
if (!results.Result)
|
||||
{
|
||||
results.Message = "Incorrect caps object path set up in sceneB";
|
||||
return;
|
||||
}
|
||||
|
||||
// Temporary assertion - caps url construction should at least be doable through a method.
|
||||
/*
|
||||
Assert.That(
|
||||
"http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
|
||||
Is.EqualTo(client.CapsSeedUrl),
|
||||
"Incorrect caps object path set up in sceneB");
|
||||
|
||||
"http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
|
||||
Is.EqualTo(client.CapsSeedUrl),
|
||||
"Incorrect caps object path set up in sceneB");
|
||||
*/
|
||||
// This assertion will currently fail since we don't remove the caps paths when no longer needed
|
||||
//Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path");
|
||||
|
||||
|
||||
// TODO: Check that more of everything is as it should be
|
||||
|
||||
|
||||
// TODO: test what happens if we try to teleport to a region that doesn't exist
|
||||
}
|
||||
}
|
||||
|
|
|
@ -304,12 +304,10 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f);
|
||||
public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f);
|
||||
|
||||
private uint heightmapWidth = m_regionWidth + 1;
|
||||
private uint heightmapHeight = m_regionHeight + 1;
|
||||
|
||||
private uint heightmapWidthSamples;
|
||||
|
||||
private uint heightmapHeightSamples;
|
||||
// TODO: unused: private uint heightmapWidth = m_regionWidth + 1;
|
||||
// TODO: unused: private uint heightmapHeight = m_regionHeight + 1;
|
||||
// TODO: unused: private uint heightmapWidthSamples;
|
||||
// TODO: unused: private uint heightmapHeightSamples;
|
||||
|
||||
private volatile int m_global_contactcount = 0;
|
||||
|
||||
|
|
|
@ -125,9 +125,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
if (lease.CurrentState == LeaseState.Initial)
|
||||
{
|
||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
|
||||
lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||
lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(0);
|
||||
// lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||
// lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||
}
|
||||
return lease;
|
||||
}
|
||||
|
|
|
@ -166,9 +166,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
if (lease.CurrentState == LeaseState.Initial)
|
||||
{
|
||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
|
||||
lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||
lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(0);
|
||||
// lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||
// lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||
}
|
||||
return lease;
|
||||
}
|
||||
|
|
|
@ -42,16 +42,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
|||
public partial class ScriptBaseClass : MarshalByRefObject, IScript
|
||||
{
|
||||
private Dictionary<string, MethodInfo> inits = new Dictionary<string, MethodInfo>();
|
||||
private ScriptSponsor m_sponser;
|
||||
// private ScriptSponsor m_sponser;
|
||||
|
||||
public override Object InitializeLifetimeService()
|
||||
{
|
||||
ILease lease = (ILease)base.InitializeLifetimeService();
|
||||
if (lease.CurrentState == LeaseState.Initial)
|
||||
{
|
||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
|
||||
lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||
lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||
// Infinite
|
||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(0);
|
||||
// lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||
// lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||
}
|
||||
return lease;
|
||||
}
|
||||
|
@ -79,7 +80,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
|||
}
|
||||
}
|
||||
|
||||
m_sponser = new ScriptSponsor();
|
||||
// m_sponser = new ScriptSponsor();
|
||||
}
|
||||
|
||||
private Executor m_Executor = null;
|
||||
|
@ -112,7 +113,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
|||
return;
|
||||
|
||||
ILease lease = (ILease)RemotingServices.GetLifetimeService(data as MarshalByRefObject);
|
||||
lease.Register(m_sponser);
|
||||
// lease.Register(m_sponser);
|
||||
|
||||
MethodInfo mi = inits[api];
|
||||
|
||||
|
@ -126,7 +127,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
|||
|
||||
public void Close()
|
||||
{
|
||||
m_sponser.Close();
|
||||
// m_sponser.Close();
|
||||
}
|
||||
|
||||
public Dictionary<string, object> GetVars()
|
||||
|
|
|
@ -53,7 +53,7 @@ using OpenSim.Region.ScriptEngine.Interfaces;
|
|||
|
||||
namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||
{
|
||||
public class ScriptInstance : MarshalByRefObject, IScriptInstance, ISponsor
|
||||
public class ScriptInstance : MarshalByRefObject, IScriptInstance
|
||||
{
|
||||
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
|
@ -261,7 +261,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
"SecondLife.Script");
|
||||
|
||||
ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass);
|
||||
lease.Register(this);
|
||||
// lease.Register(this);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
@ -1006,10 +1006,5 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public TimeSpan Renewal(ILease lease)
|
||||
{
|
||||
return lease.InitialLeaseTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine.Tests
|
|||
/// <summary>
|
||||
/// Scene presence tests
|
||||
/// </summary>
|
||||
/// Commented out XEngineTests that don't do anything
|
||||
/*
|
||||
[TestFixture]
|
||||
public class XEngineTest
|
||||
{
|
||||
|
@ -65,4 +67,5 @@ namespace OpenSim.Region.ScriptEngine.XEngine.Tests
|
|||
xengine.RegionLoaded(scene);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -729,8 +729,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
item.Name, startParam, postOnRez,
|
||||
stateSource, m_MaxScriptQueue);
|
||||
|
||||
m_log.DebugFormat("[XEngine] Loaded script {0}.{1}",
|
||||
part.ParentGroup.RootPart.Name, item.Name);
|
||||
m_log.DebugFormat("[XEngine] Loaded script {0}.{1}, script UUID {2}, prim UUID {3} @ {4}",
|
||||
part.ParentGroup.RootPart.Name, item.Name, assetID, part.UUID, part.ParentGroup.RootPart.AbsolutePosition.ToString());
|
||||
|
||||
instance.AppDomain = appDomain;
|
||||
instance.LineMap = linemap;
|
||||
|
|
|
@ -34,25 +34,53 @@ namespace OpenSim.Services.Interfaces
|
|||
|
||||
public interface IAssetService
|
||||
{
|
||||
// Three different ways to retrieve an asset
|
||||
//
|
||||
/// <summary>
|
||||
/// Get an asset synchronously.
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
AssetBase Get(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Get an asset's metadata
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
AssetMetadata GetMetadata(string id);
|
||||
|
||||
byte[] GetData(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Get an asset asynchronously
|
||||
/// </summary>
|
||||
/// <param name="id">The asset id</param>
|
||||
/// <param name="sender">Represents the requester. Passed back via the handler</param>
|
||||
/// <param name="handler">The handler to call back once the asset has been retrieved</param>
|
||||
/// <returns>True if the id was parseable, false otherwise</returns>
|
||||
bool Get(string id, Object sender, AssetRetrieved handler);
|
||||
|
||||
// Creates a new asset
|
||||
// Returns a random ID if none is passed into it
|
||||
//
|
||||
/// <summary>
|
||||
/// Creates a new asset
|
||||
/// </summary>
|
||||
/// Returns a random ID if none is passed into it
|
||||
/// <param name="asset"></param>
|
||||
/// <returns></returns>
|
||||
string Store(AssetBase asset);
|
||||
|
||||
// Attachments and bare scripts need this!!
|
||||
//
|
||||
/// <summary>
|
||||
/// Update an asset's content
|
||||
/// </summary>
|
||||
/// Attachments and bare scripts need this!!
|
||||
/// <param name="id"> </param>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
bool UpdateContent(string id, byte[] data);
|
||||
|
||||
// Kill an asset
|
||||
//
|
||||
/// <summary>
|
||||
/// Delete an asset
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
bool Delete(string id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,13 @@ namespace OpenSim.Tests.Common.Mock
|
|||
|
||||
public AssetBase Get(string id)
|
||||
{
|
||||
return Assets[ id ];
|
||||
AssetBase asset;
|
||||
if (Assets.ContainsKey(id))
|
||||
asset = Assets[id];
|
||||
else
|
||||
asset = null;
|
||||
|
||||
return asset;
|
||||
}
|
||||
|
||||
public AssetMetadata GetMetadata(string id)
|
||||
|
@ -59,8 +65,10 @@ namespace OpenSim.Tests.Common.Mock
|
|||
}
|
||||
|
||||
public bool Get(string id, object sender, AssetRetrieved handler)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
{
|
||||
handler(id, sender, Get(id));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public string Store(AssetBase asset)
|
||||
|
|
|
@ -1,4 +1,31 @@
|
|||
using System;
|
||||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim.Framework;
|
||||
|
|
|
@ -25,7 +25,7 @@ See configuring OpenSim
|
|||
== Installation on Linux ==
|
||||
|
||||
Prereqs:
|
||||
* Mono >= 2.4 (>= 2.4.2 is better)
|
||||
* Mono >= 2.0.1 (>= 2.4.2 is better)
|
||||
* Nant >= 0.86beta
|
||||
* sqlite3 or mysql 5.x (you'll need a back end database)
|
||||
|
||||
|
|
226
prebuild.xml
226
prebuild.xml
|
@ -34,7 +34,7 @@
|
|||
|
||||
<!-- Core OpenSim Projects -->
|
||||
<!--
|
||||
<Project name="OpenSim.Model" path="OpenSim/Model" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Model" path="OpenSim/Model" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -55,7 +55,7 @@
|
|||
</Project>
|
||||
-->
|
||||
|
||||
<Project name="OpenSim.Framework.Servers.HttpServer" path="OpenSim/Framework/Servers/HttpServer" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers.HttpServer" path="OpenSim/Framework/Servers/HttpServer" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -91,7 +91,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Console" path="OpenSim/Framework/Console" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Console" path="OpenSim/Framework/Console" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -113,7 +113,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework" path="OpenSim/Framework" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework" path="OpenSim/Framework" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
|
@ -145,7 +145,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Serialization" path="OpenSim/Framework/Serialization" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Serialization" path="OpenSim/Framework/Serialization" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -170,7 +170,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Statistics" path="OpenSim/Framework/Statistics" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Statistics" path="OpenSim/Framework/Statistics" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -194,7 +194,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data" path="OpenSim/Data" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data" path="OpenSim/Data" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
|
@ -223,7 +223,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Configuration.XML" path="OpenSim/Framework/Configuration/XML" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Configuration.XML" path="OpenSim/Framework/Configuration/XML" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -248,7 +248,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Configuration.HTTP" path="OpenSim/Framework/Configuration/HTTP" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Configuration.HTTP" path="OpenSim/Framework/Configuration/HTTP" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -275,7 +275,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.AssetLoader.Filesystem" path="OpenSim/Framework/AssetLoader/Filesystem" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.AssetLoader.Filesystem" path="OpenSim/Framework/AssetLoader/Filesystem" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -300,7 +300,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.RegionLoader.Web" path="OpenSim/Framework/RegionLoader/Web" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.RegionLoader.Web" path="OpenSim/Framework/RegionLoader/Web" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -326,7 +326,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.RegionLoader.Filesystem" path="OpenSim/Framework/RegionLoader/Filesystem" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.RegionLoader.Filesystem" path="OpenSim/Framework/RegionLoader/Filesystem" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -351,7 +351,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Servers" path="OpenSim/Framework/Servers" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers" path="OpenSim/Framework/Servers" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -384,7 +384,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Physics.Manager" path="OpenSim/Region/Physics/Manager" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.Manager" path="OpenSim/Region/Physics/Manager" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -412,7 +412,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- Physics Plug-ins -->
|
||||
<Project name="OpenSim.Region.Physics.BasicPhysicsPlugin" path="OpenSim/Region/Physics/BasicPhysicsPlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BasicPhysicsPlugin" path="OpenSim/Region/Physics/BasicPhysicsPlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -435,7 +435,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Physics.POSPlugin" path="OpenSim/Region/Physics/POSPlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.POSPlugin" path="OpenSim/Region/Physics/POSPlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -458,7 +458,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Physics.PhysXPlugin" path="OpenSim/Region/Physics/PhysXPlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.PhysXPlugin" path="OpenSim/Region/Physics/PhysXPlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -483,7 +483,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Physics.OdePlugin" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.OdePlugin" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -512,7 +512,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Physics.BulletXPlugin" path="OpenSim/Region/Physics/BulletXPlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BulletXPlugin" path="OpenSim/Region/Physics/BulletXPlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -542,7 +542,7 @@
|
|||
|
||||
|
||||
|
||||
<Project name="OpenSim.Region.Physics.Meshing" path="OpenSim/Region/Physics/Meshing" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.Meshing" path="OpenSim/Region/Physics/Meshing" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -570,7 +570,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Physics.BulletDotNETPlugin" path="OpenSim/Region/Physics/BulletDotNETPlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BulletDotNETPlugin" path="OpenSim/Region/Physics/BulletDotNETPlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||
|
@ -598,7 +598,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.Interfaces" path="OpenSim/Services/Interfaces" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.Interfaces" path="OpenSim/Services/Interfaces" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -626,7 +626,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Framework.Capabilities" path="OpenSim/Framework/Capabilities" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Capabilities" path="OpenSim/Framework/Capabilities" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -660,7 +660,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Communications" path="OpenSim/Framework/Communications" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Communications" path="OpenSim/Framework/Communications" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -702,7 +702,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Region.Framework" path="OpenSim/Region/Framework" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Framework" path="OpenSim/Region/Framework" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -752,7 +752,7 @@
|
|||
|
||||
<!-- OpenSim.Framework.Communications -->
|
||||
|
||||
<Project name="OpenSim.Region.Communications.Local" path="OpenSim/Region/Communications/Local" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Communications.Local" path="OpenSim/Region/Communications/Local" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -783,7 +783,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Communications.OGS1" path="OpenSim/Region/Communications/OGS1" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Communications.OGS1" path="OpenSim/Region/Communications/OGS1" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -820,7 +820,7 @@
|
|||
|
||||
<!-- OGS projects -->
|
||||
|
||||
<Project name="OpenSim.Grid.Communications.OGS1" path="OpenSim/Grid/Communications/OGS1" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.Communications.OGS1" path="OpenSim/Grid/Communications/OGS1" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -847,7 +847,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.Framework" path="OpenSim/Grid/Framework" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.Framework" path="OpenSim/Grid/Framework" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -878,7 +878,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.GridServer" path="OpenSim/Grid/GridServer" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.GridServer" path="OpenSim/Grid/GridServer" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -913,7 +913,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.GridServer.Modules" path="OpenSim/Grid/GridServer.Modules" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.GridServer.Modules" path="OpenSim/Grid/GridServer.Modules" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -950,7 +950,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Grid.AssetServer" path="OpenSim/Grid/AssetServer" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetServer" path="OpenSim/Grid/AssetServer" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -982,7 +982,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.AssetInventoryServer" path="OpenSim/Grid/AssetInventoryServer" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer" path="OpenSim/Grid/AssetInventoryServer" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1012,7 +1012,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.AssetInventoryServer.Plugins" path="OpenSim/Grid/AssetInventoryServer/Plugins" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer.Plugins" path="OpenSim/Grid/AssetInventoryServer/Plugins" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -1043,7 +1043,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.AssetInventoryServer.Plugins.Simple" path="OpenSim/Grid/AssetInventoryServer/Plugins/Simple" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer.Plugins.Simple" path="OpenSim/Grid/AssetInventoryServer/Plugins/Simple" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -1072,7 +1072,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim" path="OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim" path="OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -1104,7 +1104,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.UserServer.Modules" path="OpenSim/Grid/UserServer.Modules" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.UserServer.Modules" path="OpenSim/Grid/UserServer.Modules" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1143,7 +1143,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Grid.UserServer" path="OpenSim/Grid/UserServer" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.UserServer" path="OpenSim/Grid/UserServer" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1181,7 +1181,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.InventoryServer" path="OpenSim/Grid/InventoryServer" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.InventoryServer" path="OpenSim/Grid/InventoryServer" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1213,7 +1213,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Grid.MessagingServer.Modules" path="OpenSim/Grid/MessagingServer.Modules" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.MessagingServer.Modules" path="OpenSim/Grid/MessagingServer.Modules" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1247,7 +1247,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Grid.MessagingServer" path="OpenSim/Grid/MessagingServer" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Grid.MessagingServer" path="OpenSim/Grid/MessagingServer" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1281,7 +1281,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.Base" path="OpenSim/Services/Base" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.Base" path="OpenSim/Services/Base" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1308,7 +1308,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.UserService" path="OpenSim/Services/UserService" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.UserService" path="OpenSim/Services/UserService" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1338,7 +1338,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.Connectors" path="OpenSim/Services/Connectors" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.Connectors" path="OpenSim/Services/Connectors" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1371,7 +1371,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Services.AssetService" path="OpenSim/Services/AssetService" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.AssetService" path="OpenSim/Services/AssetService" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1402,7 +1402,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.FreeswitchService" path="OpenSim/Services/FreeswitchService" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.FreeswitchService" path="OpenSim/Services/FreeswitchService" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1433,7 +1433,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.AuthenticationService" path="OpenSim/Services/AuthenticationService" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.AuthenticationService" path="OpenSim/Services/AuthenticationService" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1464,7 +1464,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Services.InventoryService" path="OpenSim/Services/InventoryService" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Services.InventoryService" path="OpenSim/Services/InventoryService" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1496,7 +1496,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Server.Base" path="OpenSim/Server/Base" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Server.Base" path="OpenSim/Server/Base" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1524,7 +1524,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Server.Handlers" path="OpenSim/Server/Handlers" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Server.Handlers" path="OpenSim/Server/Handlers" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1560,7 +1560,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Server" path="OpenSim/Server" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Server" path="OpenSim/Server" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
|
@ -1593,7 +1593,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.CoreModules" path="OpenSim/Region/CoreModules" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.CoreModules" path="OpenSim/Region/CoreModules" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1654,7 +1654,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.CoreModules.World.Terrain.DefaultEffects" path="OpenSim/Region/CoreModules/World/Terrain/DefaultEffects" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.CoreModules.World.Terrain.DefaultEffects" path="OpenSim/Region/CoreModules/World/Terrain/DefaultEffects" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../../bin/Terrain/</OutputPath>
|
||||
|
@ -1677,7 +1677,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Region.OptionalModules" path="OpenSim/Region/OptionalModules" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.OptionalModules" path="OpenSim/Region/OptionalModules" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1736,7 +1736,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Communications.Hypergrid" path="OpenSim/Region/Communications/Hypergrid" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Communications.Hypergrid" path="OpenSim/Region/Communications/Hypergrid" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -1773,7 +1773,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ClientStack" path="OpenSim/Region/ClientStack" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack" path="OpenSim/Region/ClientStack" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1810,7 +1810,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- ClientStack Plugins -->
|
||||
<Project name="OpenSim.Region.ClientStack.LindenUDP" path="OpenSim/Region/ClientStack/LindenUDP" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack.LindenUDP" path="OpenSim/Region/ClientStack/LindenUDP" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -1851,7 +1851,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- Datastore Plugins -->
|
||||
<Project name="OpenSim.Data.Null" path="OpenSim/Data/Null" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.Null" path="OpenSim/Data/Null" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1878,7 +1878,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- OpenSim app -->
|
||||
<Project name="OpenSim" path="OpenSim/Region/Application" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim" path="OpenSim/Region/Application" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1920,7 +1920,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.LoadRegions" path="OpenSim/ApplicationPlugins/LoadRegions" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.LoadRegions" path="OpenSim/ApplicationPlugins/LoadRegions" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1955,7 +1955,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.RegionModulesController" path="OpenSim/ApplicationPlugins/RegionModulesController" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.RegionModulesController" path="OpenSim/ApplicationPlugins/RegionModulesController" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -1985,7 +1985,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.CreateCommsManager" path="OpenSim/ApplicationPlugins/CreateCommsManager" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.CreateCommsManager" path="OpenSim/ApplicationPlugins/CreateCommsManager" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2028,7 +2028,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.RemoteController" path="OpenSim/ApplicationPlugins/RemoteController" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.RemoteController" path="OpenSim/ApplicationPlugins/RemoteController" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2068,7 +2068,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- REST plugins -->
|
||||
<Project name="OpenSim.ApplicationPlugins.Rest"
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.Rest"
|
||||
path="OpenSim/ApplicationPlugins/Rest" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
|
@ -2104,7 +2104,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.Rest.Regions"
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.Rest.Regions"
|
||||
path="OpenSim/ApplicationPlugins/Rest/Regions" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
|
@ -2142,7 +2142,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.Rest.Inventory"
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.Rest.Inventory"
|
||||
path="OpenSim/ApplicationPlugins/Rest/Inventory" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
|
@ -2187,7 +2187,7 @@
|
|||
|
||||
<!-- Scene Server API Example Apps -->
|
||||
|
||||
<Project name="OpenSim.Region.DataSnapshot" path="OpenSim/Region/DataSnapshot" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.DataSnapshot" path="OpenSim/Region/DataSnapshot" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2220,7 +2220,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Examples.SimpleModule" path="OpenSim/Region/Examples/SimpleModule" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Examples.SimpleModule" path="OpenSim/Region/Examples/SimpleModule" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>bin/</OutputPath>
|
||||
|
@ -2250,7 +2250,7 @@
|
|||
<!-- Client Stack Modules -->
|
||||
|
||||
|
||||
<Project name="OpenSim.Client.MXP" path="OpenSim/Client/MXP" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Client.MXP" path="OpenSim/Client/MXP" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2279,7 +2279,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Client.VWoHTTP" path="OpenSim/Client/VWoHTTP" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Client.VWoHTTP" path="OpenSim/Client/VWoHTTP" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2310,7 +2310,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Client.Linden" path="OpenSim/Client/Linden" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Client.Linden" path="OpenSim/Client/Linden" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2350,7 +2350,7 @@
|
|||
|
||||
|
||||
<!-- Data Base Modules -->
|
||||
<Project name="OpenSim.Data.MySQL" path="OpenSim/Data/MySQL" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.MySQL" path="OpenSim/Data/MySQL" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2386,7 +2386,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.MSSQL" path="OpenSim/Data/MSSQL" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.MSSQL" path="OpenSim/Data/MSSQL" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2419,7 +2419,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.SQLite" path="OpenSim/Data/SQLite" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.SQLite" path="OpenSim/Data/SQLite" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2456,7 +2456,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.NHibernate" path="OpenSim/Data/NHibernate" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.NHibernate" path="OpenSim/Data/NHibernate" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2496,7 +2496,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="SmartThreadPool" path="ThirdParty/SmartThreadPool" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="SmartThreadPool" path="ThirdParty/SmartThreadPool" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
|
@ -2518,7 +2518,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Shared" path="OpenSim/Region/ScriptEngine/Shared" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared" path="OpenSim/Region/ScriptEngine/Shared" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -2557,7 +2557,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Shared.Api.Runtime" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.Api.Runtime" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../../bin/</OutputPath>
|
||||
|
@ -2592,7 +2592,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Shared.YieldProlog" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.YieldProlog" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../../../bin/</OutputPath>
|
||||
|
@ -2626,7 +2626,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Shared.Api" path="OpenSim/Region/ScriptEngine/Shared/Api/Implementation" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.Api" path="OpenSim/Region/ScriptEngine/Shared/Api/Implementation" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../../bin/</OutputPath>
|
||||
|
@ -2665,7 +2665,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Shared.CodeTools" path="OpenSim/Region/ScriptEngine/Shared/CodeTools" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.CodeTools" path="OpenSim/Region/ScriptEngine/Shared/CodeTools" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -2698,7 +2698,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Shared.Instance" path="OpenSim/Region/ScriptEngine/Shared/Instance" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.Instance" path="OpenSim/Region/ScriptEngine/Shared/Instance" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -2737,7 +2737,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.XEngine" path="OpenSim/Region/ScriptEngine/XEngine" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.XEngine" path="OpenSim/Region/ScriptEngine/XEngine" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -2780,7 +2780,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.DotNetEngine" path="OpenSim/Region/ScriptEngine/DotNetEngine" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.DotNetEngine" path="OpenSim/Region/ScriptEngine/DotNetEngine" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -2820,7 +2820,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Shared.Script" path="OpenSim/ScriptEngine/Shared.Script" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Shared.Script" path="OpenSim/ScriptEngine/Shared.Script" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2842,7 +2842,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Shared" path="OpenSim/ScriptEngine/Shared" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Shared" path="OpenSim/ScriptEngine/Shared" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2880,7 +2880,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ApplicationPlugins.ScriptEngine" path="OpenSim/ApplicationPlugins/ScriptEngine" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.ScriptEngine" path="OpenSim/ApplicationPlugins/ScriptEngine" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -2921,7 +2921,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_LSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_LSL" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_LSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_LSL" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -2960,7 +2960,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_OSSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_OSSL" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_OSSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_OSSL" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -2999,7 +2999,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Compilers" path="OpenSim/ScriptEngine/Components/DotNetEngine/Compilers" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Compilers" path="OpenSim/ScriptEngine/Components/DotNetEngine/Compilers" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -3041,7 +3041,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Events" path="OpenSim/ScriptEngine/Components/DotNetEngine/Events" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Events" path="OpenSim/ScriptEngine/Components/DotNetEngine/Events" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -3081,7 +3081,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Scheduler" path="OpenSim/ScriptEngine/Components/DotNetEngine/Scheduler" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Scheduler" path="OpenSim/ScriptEngine/Components/DotNetEngine/Scheduler" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -3121,7 +3121,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.ScriptEngine.Engines.DotNetEngine" path="OpenSim/ScriptEngine/Engines/DotNetEngine" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Engines.DotNetEngine" path="OpenSim/ScriptEngine/Engines/DotNetEngine" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3166,7 +3166,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.UserStatistics" path="OpenSim/Region/UserStatistics" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.UserStatistics" path="OpenSim/Region/UserStatistics" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3217,7 +3217,7 @@
|
|||
|
||||
<!-- Tools -->
|
||||
|
||||
<Project name="pCampBot" path="OpenSim/Tools/pCampBot" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="pCampBot" path="OpenSim/Tools/pCampBot" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3244,7 +3244,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- Test Suite -->
|
||||
<Project name="OpenSim.TestSuite" path="OpenSim/TestSuite" type="Exe">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.TestSuite" path="OpenSim/TestSuite" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
|
@ -3271,7 +3271,7 @@
|
|||
</Project>
|
||||
|
||||
<!-- Test assemblies -->
|
||||
<Project name="OpenSim.Tests.Common" path="OpenSim/Tests/Common" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Tests.Common" path="OpenSim/Tests/Common" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3311,7 +3311,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.Tests" path="OpenSim/Data/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.Tests" path="OpenSim/Data/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3326,6 +3326,7 @@
|
|||
<ReferencePath>../../../bin/</ReferencePath>
|
||||
<Reference name="System"/>
|
||||
<Reference name="System.Xml"/>
|
||||
<Reference name="System.Core"/>
|
||||
<Reference name="System.Drawing"/>
|
||||
<Reference name="System.Data"/>
|
||||
<Reference name="OpenMetaverse.dll"/>
|
||||
|
@ -3342,7 +3343,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.MySQL.Tests" path="OpenSim/Data/MySQL/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.MySQL.Tests" path="OpenSim/Data/MySQL/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3378,7 +3379,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.NHibernate.Tests" path="OpenSim/Data/NHibernate/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.NHibernate.Tests" path="OpenSim/Data/NHibernate/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3417,7 +3418,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Data.SQLite.Tests" path="OpenSim/Data/SQLite/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Data.SQLite.Tests" path="OpenSim/Data/SQLite/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3454,7 +3455,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Tests" path="OpenSim/Framework/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Tests" path="OpenSim/Framework/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3472,6 +3473,7 @@
|
|||
<Reference name="System.Data"/>
|
||||
<Reference name="OpenMetaverse.dll"/>
|
||||
<Reference name="OpenMetaverseTypes.dll"/>
|
||||
<Reference name="OpenMetaverse.StructuredData.dll"/>
|
||||
<Reference name="XMLRPC.dll"/>
|
||||
<Reference name="OpenSim.Framework.Console"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
|
@ -3483,7 +3485,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Servers.Tests" path="OpenSim/Framework/Servers/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers.Tests" path="OpenSim/Framework/Servers/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3513,7 +3515,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Servers.HttpServer.Tests" path="OpenSim/Framework/Servers/HttpServer/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers.HttpServer.Tests" path="OpenSim/Framework/Servers/HttpServer/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -3542,7 +3544,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Framework.Communications.Tests" path="OpenSim/Framework/Communications/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Communications.Tests" path="OpenSim/Framework/Communications/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3577,7 +3579,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.CoreModules.Tests" path="OpenSim/Region/CoreModules" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.CoreModules.Tests" path="OpenSim/Region/CoreModules" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3638,7 +3640,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.Framework.Tests" path="OpenSim/Region/Framework" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Framework.Tests" path="OpenSim/Region/Framework" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3694,7 +3696,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ClientStack.LindenUDP.Tests" path="OpenSim/Region/ClientStack/LindenUDP/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack.LindenUDP.Tests" path="OpenSim/Region/ClientStack/LindenUDP/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../../bin/</OutputPath>
|
||||
|
@ -3727,7 +3729,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Region.ScriptEngine.Tests" path="OpenSim/Region/ScriptEngine" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Tests" path="OpenSim/Region/ScriptEngine" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
|
@ -3773,7 +3775,7 @@
|
|||
TODO: this is kind of lame, we basically build a duplicate
|
||||
assembly but with tests added in, just because we can't resolve cross-bin-dir-refs.
|
||||
-->
|
||||
<Project name="OpenSim.Region.Physics.OdePlugin.Tests" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.OdePlugin.Tests" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3801,7 +3803,7 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="OpenSim.Server.Handlers.Tests" path="OpenSim/Server/Handlers/Tests" type="Library">
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Server.Handlers.Tests" path="OpenSim/Server/Handlers/Tests" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../../bin/</OutputPath>
|
||||
|
@ -3860,7 +3862,7 @@
|
|||
</Options>
|
||||
</Configuration>
|
||||
|
||||
<Project name="Prebuild" path="src/" language="C#" assemblyName="Prebuild" icon="App.ico" type="Exe" rootNamespace="Prebuild" startupObject="Prebuild.Prebuild">
|
||||
<Project frameworkVersion="v3_5" name="Prebuild" path="src/" language="C#" assemblyName="Prebuild" icon="App.ico" type="Exe" rootNamespace="Prebuild" startupObject="Prebuild.Prebuild">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<CompilerDefines>DEBUG;TRACE</CompilerDefines>
|
||||
|
|
Loading…
Reference in New Issue