mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
Formatting cleanup.
This commit is contained in:
@@ -59,7 +59,7 @@ namespace OpenSim.Framework
|
||||
|
||||
// Body
|
||||
defaultWearables[0].ItemID = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9");
|
||||
defaultWearables[0].AssetID = new UUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
||||
defaultWearables[0].AssetID = new UUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
||||
|
||||
// Skin
|
||||
defaultWearables[1].ItemID = new UUID("77c41e39-38f9-f75a-024e-585989bfabc9");
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
using OpenMetaverse;
|
||||
|
||||
namespace OpenSim.Framework.Capabilities
|
||||
{
|
||||
{
|
||||
/// <summary>
|
||||
/// Capabilities utility methods
|
||||
/// </summary>
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace OpenSim.Framework.Client
|
||||
// Porting Guide from old IM
|
||||
// SendIM(...)
|
||||
// Loses FromAgentSession - this should be added by implementers manually.
|
||||
//
|
||||
//
|
||||
|
||||
public interface IClientIM
|
||||
{
|
||||
|
||||
@@ -177,9 +177,9 @@ namespace OpenSim.Framework
|
||||
}
|
||||
|
||||
public void ViewerEffectHandler(IClientAPI sender, List<ViewerEffectEventHandlerArg> args)
|
||||
{
|
||||
{
|
||||
// TODO: don't create new blocks if recycling an old packet
|
||||
List<ViewerEffectPacket.EffectBlock> effectBlock = new List<ViewerEffectPacket.EffectBlock>();
|
||||
List<ViewerEffectPacket.EffectBlock> effectBlock = new List<ViewerEffectPacket.EffectBlock>();
|
||||
for (int i = 0; i < args.Count; i++)
|
||||
{
|
||||
ViewerEffectPacket.EffectBlock effect = new ViewerEffectPacket.EffectBlock();
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <summary>
|
||||
/// How many operations between time checks.
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
private const int DefaultOperationsBetweenTimeChecks = 40;
|
||||
|
||||
/// <summary>
|
||||
@@ -168,7 +168,7 @@ namespace OpenSim.Framework
|
||||
private int m_version;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CnmMemoryCache{TKey,TValue}"/> class.
|
||||
/// Initializes a new instance of the <see cref="CnmMemoryCache{TKey,TValue}"/> class.
|
||||
/// </summary>
|
||||
public CnmMemoryCache()
|
||||
: this(DefaultMaxSize)
|
||||
@@ -277,7 +277,7 @@ namespace OpenSim.Framework
|
||||
/// </param>
|
||||
protected virtual void AddToNewGeneration(int bucketIndex, TKey key, TValue value, long size)
|
||||
{
|
||||
// Add to newest generation
|
||||
// Add to newest generation
|
||||
if (!m_newGeneration.Set(bucketIndex, key, value, size))
|
||||
{
|
||||
// Failed to add new generation
|
||||
@@ -311,7 +311,7 @@ namespace OpenSim.Framework
|
||||
/// Bucket index is remainder when element key's hash value is divided by bucket count.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// For example: key's hash is 72, bucket count is 5, element's bucket index is 72 % 5 = 2.
|
||||
/// For example: key's hash is 72, bucket count is 5, element's bucket index is 72 % 5 = 2.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
protected virtual int GetBucketIndex(TKey key)
|
||||
@@ -367,7 +367,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
private void RecycleGenerations()
|
||||
{
|
||||
// Rotate old generation to new generation, new generation to old generation
|
||||
// Rotate old generation to new generation, new generation to old generation
|
||||
IGeneration temp = m_newGeneration;
|
||||
m_newGeneration = m_oldGeneration;
|
||||
m_newGeneration.Clear();
|
||||
@@ -522,7 +522,7 @@ namespace OpenSim.Framework
|
||||
/// <summary>
|
||||
/// Index of first element's in element chain.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <value>
|
||||
/// -1 if there is no element in bucket; otherwise first element's index in the element chain.
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
@@ -692,7 +692,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// 0 if element is free; otherwise larger than 0.
|
||||
/// </value>
|
||||
/// </value>
|
||||
public long Size;
|
||||
|
||||
/// <summary>
|
||||
@@ -771,7 +771,7 @@ namespace OpenSim.Framework
|
||||
/// </returns>
|
||||
/// <exception cref="InvalidOperationException">
|
||||
/// The enumerator has reach end of collection or <see cref="MoveNext"/> is not called.
|
||||
/// </exception>
|
||||
/// </exception>
|
||||
public KeyValuePair<TKey, TValue> Current
|
||||
{
|
||||
get
|
||||
@@ -1405,10 +1405,10 @@ namespace OpenSim.Framework
|
||||
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
|
||||
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
|
||||
public bool IsSizeLimited
|
||||
@@ -1438,7 +1438,7 @@ namespace OpenSim.Framework
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
|
||||
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements;
|
||||
@@ -1449,7 +1449,7 @@ namespace OpenSim.Framework
|
||||
/// or <see cref="ICnmCache{TKey,TValue}.TryGetValue"/> methods in <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> , then element is automatically removed from
|
||||
/// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may
|
||||
/// stay longer in cache.
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.PurgeExpired"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
|
||||
@@ -1503,7 +1503,7 @@ namespace OpenSim.Framework
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.Set"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
public long MaxElementSize
|
||||
{
|
||||
get { return m_maxElementSize; }
|
||||
@@ -1517,7 +1517,7 @@ namespace OpenSim.Framework
|
||||
/// <value>
|
||||
/// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.
|
||||
/// </para>
|
||||
@@ -1562,10 +1562,10 @@ namespace OpenSim.Framework
|
||||
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
|
||||
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
|
||||
public long Size
|
||||
@@ -1576,9 +1576,9 @@ namespace OpenSim.Framework
|
||||
/// <summary>
|
||||
/// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <value>
|
||||
/// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </value>
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/>
|
||||
@@ -1630,7 +1630,7 @@ namespace OpenSim.Framework
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements
|
||||
/// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache.
|
||||
/// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
|
||||
@@ -1810,7 +1810,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with
|
||||
/// the specified key; otherwise, <see langword="false"/>.
|
||||
/// the specified key; otherwise, <see langword="false"/>.
|
||||
/// </returns>
|
||||
/// <param name="key">
|
||||
/// The key whose <paramref name="value"/> to get.
|
||||
|
||||
@@ -142,7 +142,7 @@ namespace OpenSim.Framework
|
||||
/// </returns>
|
||||
/// <exception cref="InvalidOperationException">
|
||||
/// The enumerator has reach end of collection or <see cref="MoveNext"/> is not called.
|
||||
/// </exception>
|
||||
/// </exception>
|
||||
public KeyValuePair<TKey, TValue> Current
|
||||
{
|
||||
get { return m_enumerator.Current; }
|
||||
@@ -327,10 +327,10 @@ namespace OpenSim.Framework
|
||||
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
|
||||
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
|
||||
public bool IsSizeLimited
|
||||
@@ -366,7 +366,7 @@ namespace OpenSim.Framework
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
|
||||
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements;
|
||||
@@ -377,7 +377,7 @@ namespace OpenSim.Framework
|
||||
/// or <see cref="ICnmCache{TKey,TValue}.TryGetValue"/> methods in <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> , then element is automatically removed from
|
||||
/// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may
|
||||
/// stay longer in cache.
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.PurgeExpired"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
|
||||
@@ -440,7 +440,7 @@ namespace OpenSim.Framework
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.Set"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
public long MaxElementSize
|
||||
{
|
||||
get
|
||||
@@ -458,7 +458,7 @@ namespace OpenSim.Framework
|
||||
/// <value>
|
||||
/// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.
|
||||
/// </para>
|
||||
@@ -507,10 +507,10 @@ namespace OpenSim.Framework
|
||||
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
|
||||
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
|
||||
public long Size
|
||||
@@ -527,9 +527,9 @@ namespace OpenSim.Framework
|
||||
/// <summary>
|
||||
/// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <value>
|
||||
/// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </value>
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/>
|
||||
@@ -584,7 +584,7 @@ namespace OpenSim.Framework
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements
|
||||
/// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache.
|
||||
/// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
|
||||
@@ -704,7 +704,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with
|
||||
/// the specified key; otherwise, <see langword="false"/>.
|
||||
/// the specified key; otherwise, <see langword="false"/>.
|
||||
/// </returns>
|
||||
/// <param name="key">
|
||||
/// The key whose <paramref name="value"/> to get.
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
/// Stores user profile and inventory data received from backend services for a particular user.
|
||||
/// </summary>
|
||||
public class CachedUserInfo
|
||||
{
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
//// <value>
|
||||
@@ -190,7 +190,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
resolvedFolders.Add(folder);
|
||||
resolvedFolderDictionary[folder.ID] = folder;
|
||||
parentFolder.AddChildFolder(folder);
|
||||
}
|
||||
}
|
||||
}
|
||||
} // foreach (folder in pendingCategorizationFolders[parentFolder.ID])
|
||||
|
||||
@@ -422,7 +422,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
///
|
||||
/// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE
|
||||
/// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing,
|
||||
/// and needs to be changed.
|
||||
/// and needs to be changed.
|
||||
///
|
||||
/// <param name="folderID"></param>
|
||||
/// <param name="type"></param>
|
||||
@@ -500,7 +500,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
InventoryFolderImpl oldParentFolder = RootFolder.FindFolder(folder.ParentID);
|
||||
|
||||
if (oldParentFolder != null)
|
||||
{
|
||||
{
|
||||
oldParentFolder.RemoveChildFolder(folderID);
|
||||
parentFolder.AddChildFolder(folder);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
/// User profiles indexed by name
|
||||
/// </summary>
|
||||
private readonly Dictionary<string, CachedUserInfo> m_userProfilesByName
|
||||
= new Dictionary<string, CachedUserInfo>();
|
||||
= new Dictionary<string, CachedUserInfo>();
|
||||
|
||||
/// <summary>
|
||||
/// The root library folder.
|
||||
@@ -125,26 +125,26 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
/// </summary>
|
||||
/// If the user isn't in cache then the user is requested from the profile service.
|
||||
/// <param name="userID"></param>
|
||||
/// <returns>null if no user details are found</returns>
|
||||
/// <returns>null if no user details are found</returns>
|
||||
public CachedUserInfo GetUserDetails(string fname, string lname)
|
||||
{
|
||||
lock (m_userProfilesByName)
|
||||
{
|
||||
{
|
||||
CachedUserInfo userInfo;
|
||||
|
||||
if (m_userProfilesByName.TryGetValue(string.Format(NAME_FORMAT, fname, lname), out userInfo))
|
||||
if (m_userProfilesByName.TryGetValue(string.Format(NAME_FORMAT, fname, lname), out userInfo))
|
||||
{
|
||||
return userInfo;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
UserProfileData userProfile = m_commsManager.UserService.GetUserProfile(fname, lname);
|
||||
|
||||
if (userProfile != null)
|
||||
return AddToCaches(userProfile);
|
||||
return AddToCaches(userProfile);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,20 +185,20 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
// probably by making sure that the update doesn't use the UserCacheInfo.UserProfile directly (possibly via
|
||||
// returning a read only class from the cache).
|
||||
// public bool StoreProfile(UserProfileData userProfile)
|
||||
// {
|
||||
// {
|
||||
// lock (m_userProfilesById)
|
||||
// {
|
||||
// {
|
||||
// CachedUserInfo userInfo = GetUserDetails(userProfile.ID);
|
||||
//
|
||||
//
|
||||
// if (userInfo != null)
|
||||
// {
|
||||
// userInfo.m_userProfile = userProfile;
|
||||
// userInfo.m_userProfile = userProfile;
|
||||
// m_commsManager.UserService.UpdateUserProfile(userProfile);
|
||||
//
|
||||
//
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// return false;
|
||||
// }
|
||||
|
||||
@@ -220,7 +220,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
}
|
||||
}
|
||||
|
||||
return createdUserInfo;
|
||||
return createdUserInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -234,7 +234,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
{
|
||||
if (m_userProfilesById.ContainsKey(userId))
|
||||
{
|
||||
CachedUserInfo userInfo = m_userProfilesById[userId];
|
||||
CachedUserInfo userInfo = m_userProfilesById[userId];
|
||||
m_userProfilesById.Remove(userId);
|
||||
|
||||
lock (m_userProfilesByName)
|
||||
@@ -244,7 +244,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -90,8 +90,8 @@ namespace OpenSim.Framework.Communications
|
||||
public IUserAdminService UserAdminService
|
||||
{
|
||||
get { return m_userAdminService; }
|
||||
}
|
||||
protected IUserAdminService m_userAdminService;
|
||||
}
|
||||
protected IUserAdminService m_userAdminService;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace OpenSim.Framework.Communications
|
||||
/// Update avatar appearance information
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="appearance"></param>
|
||||
/// <param name="appearance"></param>
|
||||
void UpdateUserAppearance(UUID user, AvatarAppearance appearance);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,6 @@ namespace OpenSim.Framework.Communications
|
||||
/// <param name="lastName"></param>
|
||||
/// <param name="newPassword"></param>
|
||||
/// <returns>true if the update was successful, false otherwise</returns>
|
||||
bool ResetUserPassword(string firstName, string lastName, string newPassword);
|
||||
bool ResetUserPassword(string firstName, string lastName, string newPassword);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace OpenSim.Framework.Communications
|
||||
/// <param name="friendlistowner">The agent that who's friends list is being updated</param>
|
||||
/// <param name="friend">The agent that is getting or loosing permissions</param>
|
||||
/// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param>
|
||||
void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms);
|
||||
void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms);
|
||||
|
||||
/// <summary>
|
||||
/// Logs off a user on the user server
|
||||
@@ -130,7 +130,7 @@ namespace OpenSim.Framework.Communications
|
||||
/// <returns>
|
||||
/// A List of FriendListItems that contains info about the user's friends.
|
||||
/// Always returns a list even if the user has no friends
|
||||
/// </returns>
|
||||
/// </returns>
|
||||
List<FriendListItem> GetUserFriendList(UUID friendlistowner);
|
||||
|
||||
// This probably shouldn't be here, it belongs to IAuthentication
|
||||
@@ -149,7 +149,7 @@ namespace OpenSim.Framework.Communications
|
||||
/// <param name="userID"></param>
|
||||
/// <param name="password"></param>
|
||||
/// <returns></returns>
|
||||
bool AuthenticateUserByPassword(UUID userID, string password);
|
||||
bool AuthenticateUserByPassword(UUID userID, string password);
|
||||
|
||||
// Temporary Hack until we move everything to the new service model
|
||||
void SetInventoryService(IInventoryService invService);
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace OpenSim.Framework.Communications.Osp
|
||||
|
||||
public string Name { get { return "OspInventoryWrapperPlugin"; } }
|
||||
public string Version { get { return "0.1"; } }
|
||||
public void Initialise() {}
|
||||
public void Initialise() {}
|
||||
public void Initialise(string connect) {}
|
||||
public void Dispose() {}
|
||||
|
||||
@@ -80,9 +80,9 @@ namespace OpenSim.Framework.Communications.Osp
|
||||
}
|
||||
|
||||
protected InventoryItemBase PostProcessItem(InventoryItemBase item)
|
||||
{
|
||||
{
|
||||
item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_commsManager);
|
||||
return item;
|
||||
return item;
|
||||
}
|
||||
|
||||
public List<InventoryFolderBase> getFolderHierarchy(UUID parentID) { return m_wrappedPlugin.getFolderHierarchy(parentID); }
|
||||
|
||||
@@ -33,13 +33,13 @@ using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
|
||||
namespace OpenSim.Framework.Communications.Osp
|
||||
{
|
||||
{
|
||||
/// <summary>
|
||||
/// Resolves OpenSim Profile Anchors (OSPA). An OSPA is a string used to provide information for
|
||||
/// identifying user profiles or supplying a simple name if no profile is available.
|
||||
/// </summary>
|
||||
public class OspResolver
|
||||
{
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
public const string OSPA_PREFIX = "ospa:";
|
||||
@@ -73,7 +73,7 @@ namespace OpenSim.Framework.Communications.Osp
|
||||
{
|
||||
return
|
||||
OSPA_PREFIX + OSPA_NAME_KEY + OSPA_PAIR_SEPARATOR + firstName + OSPA_NAME_VALUE_SEPARATOR + lastName;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resolve an osp string into the most suitable internal OpenSim identifier.
|
||||
@@ -89,13 +89,13 @@ namespace OpenSim.Framework.Communications.Osp
|
||||
/// is returned.
|
||||
/// </returns>
|
||||
public static UUID ResolveOspa(string ospa, CommunicationsManager commsManager)
|
||||
{
|
||||
{
|
||||
if (!ospa.StartsWith(OSPA_PREFIX))
|
||||
return UUID.Zero;
|
||||
|
||||
m_log.DebugFormat("[OSP RESOLVER]: Resolving {0}", ospa);
|
||||
|
||||
string ospaMeat = ospa.Substring(OSPA_PREFIX.Length);
|
||||
string ospaMeat = ospa.Substring(OSPA_PREFIX.Length);
|
||||
string[] ospaTuples = ospaMeat.Split(OSPA_TUPLE_SEPARATOR_ARRAY);
|
||||
|
||||
foreach (string tuple in ospaTuples)
|
||||
@@ -162,7 +162,7 @@ namespace OpenSim.Framework.Communications.Osp
|
||||
tempUserProfile.ID = HashName(tempUserProfile.Name);
|
||||
|
||||
m_log.DebugFormat(
|
||||
"[OSP RESOLVER]: Adding temporary user profile for {0} {1}", tempUserProfile.Name, tempUserProfile.ID);
|
||||
"[OSP RESOLVER]: Adding temporary user profile for {0} {1}", tempUserProfile.Name, tempUserProfile.ID);
|
||||
commsManager.UserService.AddTemporaryUserProfile(tempUserProfile);
|
||||
|
||||
return tempUserProfile.ID;
|
||||
|
||||
@@ -1072,7 +1072,7 @@ namespace OpenSim.Framework.Communications.Services
|
||||
/// <param name="user"></param>
|
||||
/// <param name="response"></param>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <returns>true if the region was successfully contacted, false otherwise</returns>
|
||||
/// <returns>true if the region was successfully contacted, false otherwise</returns>
|
||||
protected abstract bool PrepareLoginToRegion(
|
||||
RegionInfo regionInfo, UserProfileData user, LoginResponse response, IPEndPoint client);
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ using OpenMetaverse;
|
||||
using OpenSim.Data;
|
||||
|
||||
namespace OpenSim.Framework.Communications
|
||||
{
|
||||
{
|
||||
/// <summary>
|
||||
/// Plugin for managing temporary user profiles.
|
||||
/// </summary>
|
||||
@@ -45,7 +45,7 @@ namespace OpenSim.Framework.Communications
|
||||
|
||||
public string Name { get { return "TemporaryUserProfilePlugin"; } }
|
||||
public string Version { get { return "0.1"; } }
|
||||
public void Initialise() {}
|
||||
public void Initialise() {}
|
||||
public void Initialise(string connect) {}
|
||||
public void Dispose() {}
|
||||
|
||||
|
||||
@@ -152,8 +152,8 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
|
||||
public virtual bool AuthenticateUserByPassword(UUID userID, string password)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
|
||||
timedOut = true;
|
||||
lock (this)
|
||||
{
|
||||
{
|
||||
UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
@@ -150,7 +150,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
CachedUserInfo userInfo;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
{
|
||||
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
@@ -171,7 +171,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
CachedUserInfo userInfo;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
{
|
||||
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
@@ -206,7 +206,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
CachedUserInfo userInfo;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
{
|
||||
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
@@ -271,7 +271,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
CachedUserInfo userInfo;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
{
|
||||
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
@@ -311,7 +311,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
CachedUserInfo userInfo;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
{
|
||||
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
|
||||
Monitor.Wait(this, 60000);
|
||||
}
|
||||
|
||||
@@ -318,7 +318,7 @@ namespace OpenSim.Framework.Communications.Tests
|
||||
{
|
||||
TestHelper.InMethod();
|
||||
|
||||
//Console.WriteLine("Starting T023_TestAuthenticatedLoginAlreadyLoggedIn()");
|
||||
//Console.WriteLine("Starting T023_TestAuthenticatedLoginAlreadyLoggedIn()");
|
||||
//log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
string error_already_logged = "You appear to be already logged in. " +
|
||||
|
||||
@@ -94,9 +94,9 @@ namespace OpenSim.Framework.Communications
|
||||
public void AddPlugin(string provider, string connect)
|
||||
{
|
||||
m_plugins.AddRange(DataPluginFactory.LoadDataPlugins<IUserDataPlugin>(provider, connect));
|
||||
}
|
||||
}
|
||||
|
||||
#region UserProfile
|
||||
#region UserProfile
|
||||
|
||||
public virtual void AddTemporaryUserProfile(UserProfileData userProfile)
|
||||
{
|
||||
@@ -924,8 +924,8 @@ namespace OpenSim.Framework.Communications
|
||||
if (md5PasswordHash == userProfile.PasswordHash)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ namespace OpenSim.Framework.Console
|
||||
/// <param name="helpParts">Parsed parts of the help string. If empty then general help is returned.</param>
|
||||
/// <returns></returns>
|
||||
public List<string> GetHelp(string[] cmd)
|
||||
{
|
||||
{
|
||||
List<string> help = new List<string>();
|
||||
List<string> helpParts = new List<string>(cmd);
|
||||
|
||||
@@ -115,7 +115,7 @@ namespace OpenSim.Framework.Console
|
||||
/// <param name="helpParts"></param>
|
||||
/// <returns></returns>
|
||||
private List<string> CollectHelp(List<string> helpParts)
|
||||
{
|
||||
{
|
||||
string originalHelpRequest = string.Join(" ", helpParts.ToArray());
|
||||
List<string> help = new List<string>();
|
||||
|
||||
@@ -132,7 +132,7 @@ namespace OpenSim.Framework.Console
|
||||
if (dict[helpPart] is Dictionary<string, Object>)
|
||||
dict = (Dictionary<string, object>)dict[helpPart];
|
||||
|
||||
helpParts.RemoveAt(0);
|
||||
helpParts.RemoveAt(0);
|
||||
}
|
||||
|
||||
// There was a command for the given help string
|
||||
@@ -149,7 +149,7 @@ namespace OpenSim.Framework.Console
|
||||
}
|
||||
|
||||
return help;
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> CollectHelp(Dictionary<string, object> dict)
|
||||
{
|
||||
@@ -180,7 +180,7 @@ namespace OpenSim.Framework.Console
|
||||
/// <param name="longhelp"></param>
|
||||
/// <param name="fn"></param>
|
||||
public void AddCommand(string module, bool shared, string command,
|
||||
string help, string longhelp, CommandDelegate fn)
|
||||
string help, string longhelp, CommandDelegate fn)
|
||||
{
|
||||
AddCommand(module, shared, command, help, longhelp,
|
||||
String.Empty, fn);
|
||||
|
||||
@@ -90,13 +90,13 @@ namespace OpenSim.Framework
|
||||
|
||||
m_configMember.addConfigurationOption("allow_forceful_banlines",
|
||||
ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||
"Allow Forceful Banlines", "TRUE", true);
|
||||
"Allow Forceful Banlines", "TRUE", true);
|
||||
|
||||
m_configMember.addConfigurationOption("allow_region_registration",
|
||||
ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN,
|
||||
"Allow regions to register immediately upon grid server startup? true/false",
|
||||
"True",
|
||||
false);
|
||||
false);
|
||||
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||
"Remote console access user name [Default: disabled]", "", false);
|
||||
|
||||
@@ -147,7 +147,7 @@ namespace OpenSim.Framework
|
||||
break;
|
||||
case "allow_region_registration":
|
||||
AllowRegionRegistration = (bool)configuration_result;
|
||||
break;
|
||||
break;
|
||||
case "console_user":
|
||||
ConsoleUser = (string)configuration_result;
|
||||
break;
|
||||
|
||||
@@ -34,23 +34,23 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <summary>
|
||||
/// Interface to the local asset cache. This is the mechanism through which assets can be added and requested.
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public interface IAssetCache : IPlugin
|
||||
{
|
||||
/// <value>
|
||||
/// The 'server' from which assets can be requested and to which assets are persisted.
|
||||
/// </value>
|
||||
/// </value>
|
||||
|
||||
void Initialise(ConfigSettings cs);
|
||||
void Initialise(ConfigSettings cs);
|
||||
|
||||
/// <summary>
|
||||
/// Report statistical data to the log.
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
void ShowState();
|
||||
|
||||
/// <summary>
|
||||
/// Clear the asset cache.
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
void Clear();
|
||||
|
||||
/// <summary>
|
||||
@@ -58,7 +58,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
/// <param name="assetId"></param>
|
||||
/// <param name="asset"></param>
|
||||
/// <returns>true if the asset was in the cache, false if it was not</returns>
|
||||
/// <returns>true if the asset was in the cache, false if it was not</returns>
|
||||
bool TryGetCachedAsset(UUID assetID, out AssetBase asset);
|
||||
|
||||
/// <summary>
|
||||
@@ -69,7 +69,7 @@ namespace OpenSim.Framework
|
||||
/// <param name="isTexture"></param>
|
||||
/// A callback invoked when the asset has either been found or not found.
|
||||
/// If the asset was found this is called with the asset UUID and the asset data
|
||||
/// If the asset was not found this is still called with the asset UUID but with a null asset data reference</param>
|
||||
/// If the asset was not found this is still called with the asset UUID but with a null asset data reference</param>
|
||||
void GetAsset(UUID assetID, AssetRequestCallback callback, bool isTexture);
|
||||
|
||||
/// <summary>
|
||||
@@ -84,13 +84,13 @@ namespace OpenSim.Framework
|
||||
///
|
||||
/// <param name="assetID"></param>
|
||||
/// <param name="isTexture"></param>
|
||||
/// <returns>null if the asset could not be retrieved</returns>
|
||||
/// <returns>null if the asset could not be retrieved</returns>
|
||||
AssetBase GetAsset(UUID assetID, bool isTexture);
|
||||
|
||||
/// <summary>
|
||||
/// Add an asset to both the persistent store and the cache.
|
||||
/// </summary>
|
||||
/// <param name="asset"></param>
|
||||
/// <param name="asset"></param>
|
||||
void AddAsset(AssetBase asset);
|
||||
|
||||
/// <summary>
|
||||
@@ -100,14 +100,14 @@ namespace OpenSim.Framework
|
||||
/// of the asset cache. This is needed because the osdynamic
|
||||
/// texture code grows the asset cache without bounds. The
|
||||
/// real solution here is a much better cache archicture, but
|
||||
/// this is a stop gap measure until we have such a thing.
|
||||
/// this is a stop gap measure until we have such a thing.
|
||||
void ExpireAsset(UUID assetID);
|
||||
|
||||
/// <summary>
|
||||
/// Handle an asset request from the client. The result will be sent back asynchronously.
|
||||
/// </summary>
|
||||
/// <param name="userInfo"></param>
|
||||
/// <param name="transferRequest"></param>
|
||||
/// <param name="transferRequest"></param>
|
||||
void AddAssetRequest(IClientAPI userInfo, TransferRequestPacket transferRequest);
|
||||
}
|
||||
|
||||
|
||||
@@ -810,7 +810,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
void Start();
|
||||
|
||||
void Stop();
|
||||
void Stop();
|
||||
|
||||
// void ActivateGesture(UUID assetId, UUID gestureId);
|
||||
|
||||
@@ -824,7 +824,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
/// <param name="agentID">The id of the agent associated with the appearance</param>
|
||||
/// <param name="visualParams"></param>
|
||||
/// <param name="textureEntry"></param>
|
||||
/// <param name="textureEntry"></param>
|
||||
void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry);
|
||||
|
||||
void SendStartPingCheck(byte seq);
|
||||
@@ -833,7 +833,7 @@ namespace OpenSim.Framework
|
||||
/// Tell the client that an object has been deleted
|
||||
/// </summary>
|
||||
/// <param name="regionHandle"></param>
|
||||
/// <param name="localID"></param>
|
||||
/// <param name="localID"></param>
|
||||
void SendKillObject(ulong regionHandle, uint localID);
|
||||
|
||||
void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs);
|
||||
|
||||
@@ -180,16 +180,16 @@ namespace OpenSim.Framework
|
||||
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
|
||||
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="MaxElementSize"/>
|
||||
/// <seealso cref="Size"/>
|
||||
/// <seealso cref="MaxSize"/>
|
||||
/// <seealso cref="MaxSize"/>
|
||||
/// <seealso cref="IsCountLimited"/>
|
||||
/// <seealso cref="IsTimeLimited"/>
|
||||
bool IsSizeLimited { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
|
||||
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements;
|
||||
@@ -200,7 +200,7 @@ namespace OpenSim.Framework
|
||||
/// or <see cref="TryGetValue"/> methods in <see cref="ExpirationTime"/> , then element is automatically removed from
|
||||
/// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may
|
||||
/// stay longer in cache.
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="ExpirationTime"/>
|
||||
/// <seealso cref="PurgeExpired"/>
|
||||
/// <seealso cref="IsCountLimited"/>
|
||||
@@ -237,7 +237,7 @@ namespace OpenSim.Framework
|
||||
/// <seealso cref="Set"/>
|
||||
/// <seealso cref="IsSizeLimited"/>
|
||||
/// <seealso cref="Size"/>
|
||||
/// <seealso cref="MaxSize"/>
|
||||
/// <seealso cref="MaxSize"/>
|
||||
long MaxElementSize { get; }
|
||||
|
||||
/// <summary>
|
||||
@@ -246,7 +246,7 @@ namespace OpenSim.Framework
|
||||
/// <value>
|
||||
/// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.
|
||||
/// </para>
|
||||
@@ -278,10 +278,10 @@ namespace OpenSim.Framework
|
||||
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
|
||||
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// </remarks>
|
||||
/// <seealso cref="MaxElementSize"/>
|
||||
/// <seealso cref="IsSizeLimited"/>
|
||||
/// <seealso cref="MaxSize"/>
|
||||
/// <seealso cref="MaxSize"/>
|
||||
/// <seealso cref="IsCountLimited"/>
|
||||
/// <seealso cref="ExpirationTime"/>
|
||||
long Size { get; }
|
||||
@@ -289,9 +289,9 @@ namespace OpenSim.Framework
|
||||
/// <summary>
|
||||
/// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <value>
|
||||
/// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
|
||||
/// </value>
|
||||
/// </value>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/>
|
||||
@@ -322,7 +322,7 @@ namespace OpenSim.Framework
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements
|
||||
/// may stay longer than <see cref="ExpirationTime"/> in the cache.
|
||||
/// may stay longer than <see cref="ExpirationTime"/> in the cache.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
/// <seealso cref="IsTimeLimited"/>
|
||||
@@ -418,7 +418,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with
|
||||
/// the specified key; otherwise, <see langword="false"/>.
|
||||
/// the specified key; otherwise, <see langword="false"/>.
|
||||
/// </returns>
|
||||
/// <param name="key">
|
||||
/// The key whose <paramref name="value"/> to get.
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace OpenSim.Framework
|
||||
GodTakeCopy = 5,
|
||||
Delete = 6,
|
||||
Return = 9
|
||||
};
|
||||
};
|
||||
|
||||
public interface IScene
|
||||
{
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
public interface ISceneObject
|
||||
{
|
||||
UUID UUID { get; }
|
||||
UUID UUID { get; }
|
||||
ISceneObject CloneForNewScene();
|
||||
string ToXml2();
|
||||
string ExtraToXmlString();
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace OpenSim.Framework
|
||||
ID = id;
|
||||
Name = name;
|
||||
Owner = owner;
|
||||
ParentID = parent;
|
||||
ParentID = parent;
|
||||
}
|
||||
|
||||
public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version)
|
||||
|
||||
@@ -304,7 +304,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <summary>
|
||||
/// Find a folder given a PATH_DELIMITER delimited path starting from this folder
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
///
|
||||
/// This method does not handle paths that contain multiple delimitors
|
||||
///
|
||||
|
||||
@@ -34,10 +34,10 @@ namespace OpenSim.Framework
|
||||
/// Inventory Item - contains all the properties associated with an individual inventory piece.
|
||||
/// </summary>
|
||||
public class InventoryItemBase : InventoryNodeBase, ICloneable
|
||||
{
|
||||
{
|
||||
/// <value>
|
||||
/// The inventory type of the item. This is slightly different from the asset type in some situations.
|
||||
/// </value>
|
||||
/// </value>
|
||||
public int InvType
|
||||
{
|
||||
get
|
||||
@@ -54,7 +54,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
/// The folder this item is contained in
|
||||
/// </value>
|
||||
/// </value>
|
||||
public UUID Folder
|
||||
{
|
||||
get
|
||||
@@ -71,7 +71,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
/// The creator of this item
|
||||
/// </value>
|
||||
/// </value>
|
||||
public string CreatorId
|
||||
{
|
||||
get
|
||||
@@ -114,7 +114,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
m_creatorIdAsUuid = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
protected UUID m_creatorIdAsUuid = UUID.Zero;
|
||||
|
||||
/// <value>
|
||||
@@ -130,13 +130,13 @@ namespace OpenSim.Framework
|
||||
set
|
||||
{
|
||||
m_description = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
protected string m_description = String.Empty;
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public uint NextPermissions
|
||||
{
|
||||
get
|
||||
@@ -153,7 +153,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
/// A mask containing permissions for the current owner (cannot be enforced)
|
||||
/// </value>
|
||||
/// </value>
|
||||
public uint CurrentPermissions
|
||||
{
|
||||
get
|
||||
@@ -170,7 +170,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public uint BasePermissions
|
||||
{
|
||||
get
|
||||
@@ -187,7 +187,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public uint EveryOnePermissions
|
||||
{
|
||||
get
|
||||
@@ -204,7 +204,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public uint GroupPermissions
|
||||
{
|
||||
get
|
||||
@@ -221,7 +221,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
/// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
|
||||
/// </value>
|
||||
/// </value>
|
||||
public int AssetType
|
||||
{
|
||||
get
|
||||
@@ -238,7 +238,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
/// The UUID of the associated asset on the asset server
|
||||
/// </value>
|
||||
/// </value>
|
||||
public UUID AssetID
|
||||
{
|
||||
get
|
||||
@@ -255,7 +255,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public UUID GroupID
|
||||
{
|
||||
get
|
||||
@@ -272,13 +272,13 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public bool GroupOwned
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_groupOwned;
|
||||
}
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
@@ -289,7 +289,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public int SalePrice
|
||||
{
|
||||
get
|
||||
@@ -306,7 +306,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public byte SaleType
|
||||
{
|
||||
get
|
||||
@@ -323,7 +323,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public uint Flags
|
||||
{
|
||||
get
|
||||
@@ -340,7 +340,7 @@ namespace OpenSim.Framework
|
||||
|
||||
/// <value>
|
||||
///
|
||||
/// </value>
|
||||
/// </value>
|
||||
public int CreationDate
|
||||
{
|
||||
get
|
||||
|
||||
@@ -31,12 +31,12 @@ namespace OpenSim.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Common base class for inventory nodes of different types (files, folders, etc.)
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public class InventoryNodeBase
|
||||
{
|
||||
{
|
||||
/// <summary>
|
||||
/// The name of the node (64 characters or less)
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public virtual string Name
|
||||
{
|
||||
get { return m_name; }
|
||||
@@ -51,17 +51,17 @@ namespace OpenSim.Framework
|
||||
{
|
||||
get { return m_id; }
|
||||
set { m_id = value; }
|
||||
}
|
||||
}
|
||||
private UUID m_id;
|
||||
|
||||
/// <summary>
|
||||
/// The agent who's inventory this is contained by
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public virtual UUID Owner
|
||||
{
|
||||
get { return m_owner; }
|
||||
set { m_owner = value; }
|
||||
}
|
||||
private UUID m_owner;
|
||||
private UUID m_owner;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
public class NetworkServersInfo
|
||||
{
|
||||
public string AssetSendKey = String.Empty;
|
||||
public string AssetSendKey = String.Empty;
|
||||
public string AssetURL = "http://127.0.0.1:" + ConfigSettings.DefaultAssetServerHttpPort.ToString() + "/";
|
||||
|
||||
public string GridRecvKey = String.Empty;
|
||||
|
||||
@@ -1040,7 +1040,7 @@ namespace OpenSim.Framework
|
||||
public static RegionInfo Create(UUID regionID, string regionName, uint regX, uint regY, string externalHostName, uint httpPort, uint simPort, uint remotingPort, string serverURI)
|
||||
{
|
||||
RegionInfo regionInfo;
|
||||
IPEndPoint neighbourInternalEndPoint = new IPEndPoint(Util.GetHostFromDNS(externalHostName), (int)simPort);
|
||||
IPEndPoint neighbourInternalEndPoint = new IPEndPoint(Util.GetHostFromDNS(externalHostName), (int)simPort);
|
||||
regionInfo = new RegionInfo(regX, regY, neighbourInternalEndPoint, externalHostName);
|
||||
regionInfo.RemotingPort = remotingPort;
|
||||
regionInfo.RemotingAddress = externalHostName;
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace OpenSim.Framework.Serialization.External
|
||||
settings.Elevation2NE = double.Parse(xtr.ReadElementContentAsString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xtr.ReadEndElement();
|
||||
xtr.ReadStartElement("Terrain");
|
||||
@@ -200,8 +200,8 @@ namespace OpenSim.Framework.Serialization.External
|
||||
|
||||
xtw.WriteStartElement("RegionSettings");
|
||||
|
||||
xtw.WriteStartElement("General");
|
||||
xtw.WriteElementString("AllowDamage", settings.AllowDamage.ToString());
|
||||
xtw.WriteStartElement("General");
|
||||
xtw.WriteElementString("AllowDamage", settings.AllowDamage.ToString());
|
||||
xtw.WriteElementString("AllowLandResell", settings.AllowLandResell.ToString());
|
||||
xtw.WriteElementString("AllowLandJoinDivide", settings.AllowLandJoinDivide.ToString());
|
||||
xtw.WriteElementString("BlockFly", settings.BlockFly.ToString());
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenSim.Framework.Serialization.External
|
||||
/// Serialize and deserialize region settings as an external format.
|
||||
/// </summary>
|
||||
public class UserProfileSerializer
|
||||
{
|
||||
{
|
||||
public const int MAJOR_VERSION = 0;
|
||||
public const int MINOR_VERSION = 1;
|
||||
|
||||
@@ -65,6 +65,6 @@ namespace OpenSim.Framework.Serialization.External
|
||||
sw.Close();
|
||||
|
||||
return sw.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -158,7 +158,7 @@ namespace OpenSim.Framework.Servers
|
||||
m_consoleAppender.Threshold = Level.All;
|
||||
|
||||
Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold));
|
||||
}
|
||||
}
|
||||
|
||||
m_console.Commands.AddCommand("base", false, "quit",
|
||||
"quit",
|
||||
@@ -196,7 +196,7 @@ namespace OpenSim.Framework.Servers
|
||||
|
||||
/// <summary>
|
||||
/// Should be overriden and referenced by descendents if they need to perform extra shutdown processing
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public virtual void ShutdownSpecific() {}
|
||||
|
||||
/// <summary>
|
||||
@@ -286,7 +286,7 @@ namespace OpenSim.Framework.Servers
|
||||
/// </summary>
|
||||
public virtual void Startup()
|
||||
{
|
||||
m_log.Info("[STARTUP]: Beginning startup processing");
|
||||
m_log.Info("[STARTUP]: Beginning startup processing");
|
||||
|
||||
EnhanceVersionInformation();
|
||||
|
||||
@@ -301,7 +301,7 @@ namespace OpenSim.Framework.Servers
|
||||
|
||||
/// <summary>
|
||||
/// Should be overriden and referenced by descendents if they need to perform extra shutdown processing
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public virtual void Shutdown()
|
||||
{
|
||||
ShutdownSpecific();
|
||||
@@ -367,7 +367,7 @@ namespace OpenSim.Framework.Servers
|
||||
}
|
||||
|
||||
public virtual void HandleShow(string module, string[] cmd)
|
||||
{
|
||||
{
|
||||
List<string> args = new List<string>(cmd);
|
||||
|
||||
args.RemoveAt(0);
|
||||
@@ -375,7 +375,7 @@ namespace OpenSim.Framework.Servers
|
||||
string[] showParams = args.ToArray();
|
||||
|
||||
switch (showParams[0])
|
||||
{
|
||||
{
|
||||
case "info":
|
||||
Notice("Version: " + m_version);
|
||||
Notice("Startup directory: " + m_startupDirectory);
|
||||
|
||||
@@ -168,7 +168,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
"[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e);
|
||||
}
|
||||
|
||||
}, null);
|
||||
}, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
|
||||
public BaseHttpServer(uint port, bool ssl) : this (port)
|
||||
{
|
||||
m_ssl = ssl;
|
||||
m_ssl = ssl;
|
||||
}
|
||||
|
||||
public BaseHttpServer(uint port, bool ssl, uint sslport, string CN) : this (port, ssl)
|
||||
@@ -156,7 +156,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
lock (m_rpcHandlers)
|
||||
{
|
||||
m_rpcHandlers[method] = handler;
|
||||
m_rpcHandlersKeepAlive[method] = keepAlive; // default
|
||||
m_rpcHandlersKeepAlive[method] = keepAlive; // default
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -323,7 +323,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
OSHttpRequest request = objstate.oreq;
|
||||
OSHttpResponse resp = objstate.oresp;
|
||||
|
||||
HandleRequest(request,resp);
|
||||
HandleRequest(request,resp);
|
||||
}
|
||||
|
||||
public virtual void HandleRequest(OSHttpRequest request, OSHttpResponse response)
|
||||
@@ -712,7 +712,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
lock (m_rpcHandlers)
|
||||
{
|
||||
methodWasFound = m_rpcHandlers.TryGetValue(methodName, out method);
|
||||
}
|
||||
}
|
||||
|
||||
if (methodWasFound)
|
||||
{
|
||||
@@ -931,7 +931,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
m_log.DebugFormat("[BASE HTTP SERVER] LLSD IOException {0}.", e);
|
||||
m_log.DebugFormat("[BASE HTTP SERVER] LLSD IOException {0}.", e);
|
||||
}
|
||||
catch (SocketException e)
|
||||
{
|
||||
@@ -1368,7 +1368,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
bestMatch = pattern;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(bestMatch))
|
||||
{
|
||||
@@ -1480,7 +1480,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
{
|
||||
m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SendHTML404(OSHttpResponse response, string host)
|
||||
@@ -1589,7 +1589,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
// if you want more detailed trace information from the HttpServer
|
||||
//m_httpListener2.UseTraceLogs = true;
|
||||
|
||||
//m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor;
|
||||
//m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1624,7 +1624,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
}
|
||||
|
||||
public void httpServerDisconnectMonitor(IHttpClientContext source, SocketError err)
|
||||
{
|
||||
{
|
||||
switch (err)
|
||||
{
|
||||
case SocketError.NotSocket:
|
||||
@@ -1635,7 +1635,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
}
|
||||
|
||||
public void httpServerException(object source, Exception exception)
|
||||
{
|
||||
{
|
||||
m_log.ErrorFormat("[HTTPSERVER]: {0} had an exception {1}", source.ToString(), exception.ToString());
|
||||
/*
|
||||
if (HTTPDRunning)// && NotSocketErrors > 5)
|
||||
@@ -1662,7 +1662,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
m_log.Warn("[BASEHTTPSERVER]: Null Reference when stopping HttpServer.");
|
||||
m_log.Warn("[BASEHTTPSERVER]: Null Reference when stopping HttpServer.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -128,6 +128,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
|
||||
string GetHTTP404(string host);
|
||||
|
||||
string GetHTTP500();
|
||||
string GetHTTP500();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace OpenSim
|
||||
///
|
||||
/// Having this version number allows the grid service to reject connections from regions running a version
|
||||
/// of the code that is too old.
|
||||
///
|
||||
///
|
||||
/// </value>
|
||||
public readonly static int MajorInterfaceVersion = 6;
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ namespace OpenSim.Framework
|
||||
///
|
||||
/// TODO: This looks very much like the OpenMetaverse SimStatsPacket. It should be much more generic stats
|
||||
/// storage.
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
public class SimStats
|
||||
{
|
||||
{
|
||||
public uint RegionX
|
||||
{
|
||||
get { return m_regionX; }
|
||||
@@ -47,25 +47,25 @@ namespace OpenSim.Framework
|
||||
public uint RegionY
|
||||
{
|
||||
get { return m_regionY; }
|
||||
}
|
||||
}
|
||||
private uint m_regionY;
|
||||
|
||||
public SimStatsPacket.RegionBlock RegionBlock
|
||||
{
|
||||
get { return m_regionBlock; }
|
||||
}
|
||||
}
|
||||
private SimStatsPacket.RegionBlock m_regionBlock;
|
||||
|
||||
public SimStatsPacket.StatBlock[] StatsBlock
|
||||
{
|
||||
get { return m_statsBlock; }
|
||||
}
|
||||
}
|
||||
private SimStatsPacket.StatBlock[] m_statsBlock;
|
||||
|
||||
public uint RegionFlags
|
||||
{
|
||||
get { return m_regionFlags; }
|
||||
}
|
||||
}
|
||||
private uint m_regionFlags;
|
||||
|
||||
public uint ObjectCapacity
|
||||
@@ -76,7 +76,7 @@ namespace OpenSim.Framework
|
||||
|
||||
public UUID RegionUUID
|
||||
{
|
||||
get { return regionUUID;}
|
||||
get { return regionUUID; }
|
||||
}
|
||||
private UUID regionUUID;
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenSim.Framework
|
||||
/// A dictionary for task inventory.
|
||||
/// </summary>
|
||||
/// This class is not thread safe. Callers must synchronize on Dictionary methods or Clone() this object before
|
||||
/// iterating over it.
|
||||
/// iterating over it.
|
||||
public class TaskInventoryDictionary : Dictionary<UUID, TaskInventoryItem>,
|
||||
ICloneable, IXmlSerializable
|
||||
{
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace OpenSim.Framework
|
||||
}
|
||||
|
||||
private static void ThreadTrackerThreadLoop()
|
||||
{
|
||||
{
|
||||
try
|
||||
{
|
||||
while (true)
|
||||
@@ -70,8 +70,8 @@ namespace OpenSim.Framework
|
||||
{
|
||||
m_log.ErrorFormat(
|
||||
"[THREAD TRACKER]: Thread tracker cleanup thread terminating with exception. Please report this error. Exception is {0}",
|
||||
e);
|
||||
}
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Add(Thread thread)
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace OpenSim.Framework
|
||||
m_configMember.addConfigurationOption("library_location",
|
||||
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
|
||||
"Path to library control file",
|
||||
string.Format(".{0}inventory{0}Libraries.xml", Path.DirectorySeparatorChar), false);
|
||||
string.Format(".{0}inventory{0}Libraries.xml", Path.DirectorySeparatorChar), false);
|
||||
|
||||
m_configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||
"DLL for database provider", "OpenSim.Data.MySQL.dll", false);
|
||||
|
||||
@@ -217,7 +217,7 @@ namespace OpenSim.Framework
|
||||
public string Name
|
||||
{
|
||||
get { return String.Format("{0} {1}", m_firstname, m_surname); }
|
||||
}
|
||||
}
|
||||
|
||||
public string Email
|
||||
{
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace OpenSim.Framework
|
||||
/// </summary>
|
||||
public class Util
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private static uint nextXferID = 5000;
|
||||
private static Random randomClass = new Random();
|
||||
@@ -136,7 +136,7 @@ namespace OpenSim.Framework
|
||||
float dx = a.X - b.X;
|
||||
float dy = a.Y - b.Y;
|
||||
float dz = a.Z - b.Z;
|
||||
return (dx*dx + dy*dy + dz*dz) < (amount*amount);
|
||||
return (dx*dx + dy*dy + dz*dz) < (amount*amount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -975,7 +975,7 @@ namespace OpenSim.Framework
|
||||
else
|
||||
{
|
||||
os = ReadEtcIssue();
|
||||
}
|
||||
}
|
||||
|
||||
if (os.Length > 45)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user