- add OpenSim.Framework.AssetMetadata class. AssetBase is now composed of it

- trim trailing whitespace
This commit is contained in:
Mike Mazur
2009-02-04 00:01:36 +00:00
parent 1adb8c33b2
commit 0c03a48fb2
33 changed files with 861 additions and 810 deletions

View File

@@ -63,9 +63,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/* private variables */
private readonly UUID m_sessionId;
private readonly UUID m_secureSessionId = UUID.Zero;
private int m_debugPacketLevel;
private readonly AssetCache m_assetCache;
private int m_cachedTextureSerial;
private Timer m_clientPingTimer;
@@ -355,7 +355,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (m_groupPowers.ContainsKey(groupID))
return m_groupPowers[groupID];
return 0;
}
@@ -454,8 +454,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_circuitCode = circuitCode;
m_userEndPoint = remoteEP;
m_proxyEndPoint = proxyEP;
m_proxyEndPoint = proxyEP;
m_firstName = sessionInfo.LoginInfo.First;
m_lastName = sessionInfo.LoginInfo.Last;
m_startpos = sessionInfo.LoginInfo.StartPos;
@@ -473,7 +473,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_PacketHandler = new LLPacketHandler(this, m_networkServer, userSettings);
m_PacketHandler.SynchronizeClient = SynchronizeClient;
m_PacketHandler.OnPacketStats += PopulateStats;
RegisterLocalPacketHandlers();
m_imageManager = new LLImageManager(this, m_assetCache,Scene.RequestModuleInterface<OpenSim.Region.Environment.Interfaces.IJ2KDecoder>());
}
@@ -501,7 +501,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Shut down timers
m_clientPingTimer.Stop();
// This is just to give the client a reasonable chance of
// flushing out all it's packets. There should probably
// be a better mechanism here
@@ -538,7 +538,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_log.DebugFormat(
"[CLIENT]: Close has been called with shutdownCircuit = {0} for {1} attached to scene {2}",
shutdownCircuit, Name, m_scene.RegionInfo.RegionName);
m_imageManager.Close();
m_PacketHandler.Flush();
@@ -716,14 +716,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
info = packet.Type.ToString();
}
Console.WriteLine(m_circuitCode + ":" + direction + ": " + info);
}
}
/// <summary>
/// Main packet processing loop for the UDP component of the client session. Both incoming and outgoing
/// packets are processed here.
/// packets are processed here.
/// </summary>
protected virtual void ClientLoop()
{
@@ -733,12 +733,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
while (IsActive)
{
LLQueItem nextPacket = m_PacketHandler.PacketQueue.Dequeue();
if (nextPacket.Incoming)
{
DebugPacket("IN", nextPacket.Packet);
m_PacketHandler.ProcessInPacket(nextPacket);
}
}
else
{
DebugPacket("OUT", nextPacket.Packet);
@@ -821,14 +821,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_clientThread.Name = "ClientThread";
m_clientThread.IsBackground = true;
m_clientThread.Start();
ThreadTracker.Add(m_clientThread);
ThreadTracker.Add(m_clientThread);
}
/// <summary>
/// Run a user session. This method lies at the base of the entire client thread.
/// </summary>
protected virtual void RunUserSession()
{
{
//tell this thread we are using the culture set up for the sim (currently hardcoded to en_US)
//otherwise it will override this and use the system default
Culture.SetCurrentCulture();
@@ -838,7 +838,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// This sets up all the timers
InitNewClient();
ClientLoop();
}
}
catch (Exception e)
{
if (e is ThreadAbortException)
@@ -1065,7 +1065,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public event ClassifiedInfoUpdate OnClassifiedInfoUpdate;
public event ClassifiedDelete OnClassifiedDelete;
public event ClassifiedDelete OnClassifiedGodDelete;
public event EventNotificationAddRequest OnEventNotificationAddRequest;
public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest;
public event EventGodDelete OnEventGodDelete;
@@ -1078,14 +1078,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void ActivateGesture(UUID assetId, UUID gestureId)
{
}
public void DeactivateGesture(UUID assetId, UUID gestureId)
{
}
// Sound
public void SoundTrigger(UUID soundId, UUID owerid, UUID Objectid,UUID ParentId,float Gain, Vector3 Position,UInt64 Handle)
{
{
}
#region Scene/Avatar to Client
@@ -1330,7 +1330,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(map, patches);
layerpack.Header.Zerocoded = true;
OutPacket(layerpack, ThrottleOutPacketType.Land);
}
@@ -1410,11 +1410,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
agentData.child = false;
agentData.firstname = m_firstName;
agentData.lastname = m_lastName;
ICapabilitiesModule capsModule = m_scene.RequestModuleInterface<ICapabilitiesModule>();
agentData.CapsPath = capsModule.GetCapsPath(m_agentId);
agentData.ChildrenCapSeeds = new Dictionary<ulong,string>(capsModule.GetChildrenSeeds(m_agentId));
return agentData;
}
@@ -1852,21 +1852,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP
inventoryReply.Header.Zerocoded = true;
OutPacket(inventoryReply, ThrottleOutPacketType.Asset);
}
/// <see>IClientAPI.SendBulkUpdateInventory(InventoryFolderBase)</see>
public void SendBulkUpdateInventory(InventoryFolderBase folderBase)
{
// XXX: Nasty temporary move that will be resolved shortly
InventoryFolderImpl folder = (InventoryFolderImpl)folderBase;
// We will use the same transaction id for all the separate packets to be sent out in this update.
UUID transactionId = UUID.Random();
List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks
List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks
= new List<BulkUpdateInventoryPacket.FolderDataBlock>();
SendBulkUpdateInventoryRecursive(folder, ref folderDataBlocks, transactionId);
if (folderDataBlocks.Count > 0)
{
// We'll end up with some unsent folder blocks if there were some empty folders at the end of the list
@@ -1874,16 +1874,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
BulkUpdateInventoryPacket bulkUpdate
= (BulkUpdateInventoryPacket)PacketPool.Instance.GetPacket(PacketType.BulkUpdateInventory);
bulkUpdate.Header.Zerocoded = true;
bulkUpdate.AgentData.AgentID = AgentId;
bulkUpdate.AgentData.TransactionID = transactionId;
bulkUpdate.FolderData = folderDataBlocks.ToArray();
//Console.WriteLine("SendBulkUpdateInventory :" + bulkUpdate);
OutPacket(bulkUpdate, ThrottleOutPacketType.Asset);
bulkUpdate.AgentData.TransactionID = transactionId;
bulkUpdate.FolderData = folderDataBlocks.ToArray();
//Console.WriteLine("SendBulkUpdateInventory :" + bulkUpdate);
OutPacket(bulkUpdate, ThrottleOutPacketType.Asset);
}
}
/// <summary>
/// Recursively construct bulk update packets to send folders and items
/// </summary>
@@ -1891,11 +1891,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <param name="folderDataBlocks"></param>
/// <param name="transactionId"></param>
private void SendBulkUpdateInventoryRecursive(
InventoryFolderImpl folder, ref List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks,
InventoryFolderImpl folder, ref List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks,
UUID transactionId)
{
{
folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder));
const int MAX_ITEMS_PER_PACKET = 5;
// If there are any items then we have to start sending them off in this packet - the next folder will have
@@ -1909,10 +1909,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
bulkUpdate.Header.Zerocoded = true;
bulkUpdate.AgentData.AgentID = AgentId;
bulkUpdate.AgentData.TransactionID = transactionId;
bulkUpdate.FolderData = folderDataBlocks.ToArray();
int itemsToSend = (items.Count > MAX_ITEMS_PER_PACKET ? MAX_ITEMS_PER_PACKET : items.Count);
bulkUpdate.AgentData.TransactionID = transactionId;
bulkUpdate.FolderData = folderDataBlocks.ToArray();
int itemsToSend = (items.Count > MAX_ITEMS_PER_PACKET ? MAX_ITEMS_PER_PACKET : items.Count);
bulkUpdate.ItemData = new BulkUpdateInventoryPacket.ItemDataBlock[itemsToSend];
for (int i = 0; i < itemsToSend; i++)
@@ -1921,51 +1921,51 @@ namespace OpenSim.Region.ClientStack.LindenUDP
bulkUpdate.ItemData[i] = GenerateBulkUpdateItemDataBlock(items[items.Count - 1]);
items.RemoveAt(items.Count - 1);
}
//Console.WriteLine("SendBulkUpdateInventoryRecursive :" + bulkUpdate);
OutPacket(bulkUpdate, ThrottleOutPacketType.Asset);
folderDataBlocks = new List<BulkUpdateInventoryPacket.FolderDataBlock>();
// If we're going to be sending another items packet then it needs to contain just the folder to which those
// items belong.
if (items.Count > 0)
folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder));
}
}
List<InventoryFolderImpl> subFolders = folder.RequestListOfFolderImpls();
foreach (InventoryFolderImpl subFolder in subFolders)
{
SendBulkUpdateInventoryRecursive(subFolder, ref folderDataBlocks, transactionId);
}
}
}
/// <summary>
/// Generate a bulk update inventory data block for the given folder
/// </summary>
/// <param name="folder"></param>
/// <returns></returns>
/// <returns></returns>
private BulkUpdateInventoryPacket.FolderDataBlock GenerateBulkUpdateFolderDataBlock(InventoryFolderBase folder)
{
BulkUpdateInventoryPacket.FolderDataBlock folderBlock = new BulkUpdateInventoryPacket.FolderDataBlock();
folderBlock.FolderID = folder.ID;
folderBlock.ParentID = folder.ParentID;
folderBlock.Type = -1;
folderBlock.Name = Utils.StringToBytes(folder.Name);
folderBlock.Name = Utils.StringToBytes(folder.Name);
return folderBlock;
}
/// <summary>
/// Generate a bulk update inventory data block for the given item
/// Generate a bulk update inventory data block for the given item
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
private BulkUpdateInventoryPacket.ItemDataBlock GenerateBulkUpdateItemDataBlock(InventoryItemBase item)
{
BulkUpdateInventoryPacket.ItemDataBlock itemBlock = new BulkUpdateInventoryPacket.ItemDataBlock();
itemBlock.ItemID = item.ID;
itemBlock.AssetID = item.AssetID;
itemBlock.CreatorID = item.Creator;
@@ -1996,7 +1996,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
itemBlock.ItemID, itemBlock.FolderID,
(uint)PermissionMask.All, 1, (uint)PermissionMask.All, (uint)PermissionMask.All,
(uint)PermissionMask.All);
return itemBlock;
}
@@ -2396,17 +2396,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(viewertime, ThrottleOutPacketType.Task);
*/
}
public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks)
{
ViewerEffectPacket packet = (ViewerEffectPacket)PacketPool.Instance.GetPacket(PacketType.ViewerEffect);
packet.Effect = effectBlocks;
packet.AgentData.AgentID = AgentId;
packet.AgentData.SessionID = SessionId;
packet.Header.Reliable = false;
packet.Header.Zerocoded = true;
OutPacket(packet, ThrottleOutPacketType.Task);
OutPacket(packet, ThrottleOutPacketType.Task);
}
public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember,
@@ -2439,7 +2439,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Gesture
#region Appearance/ Wearables Methods
public void SendWearables(AvatarWearable[] wearables, int serial)
{
AgentWearablesUpdatePacket aw = (AgentWearablesUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentWearablesUpdate);
@@ -2457,9 +2457,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
awb.AssetID = wearables[i].AssetID;
awb.ItemID = wearables[i].ItemID;
aw.WearableData[i] = awb;
// m_log.DebugFormat(
// "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}",
// "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}",
// awb.ItemID, awb.AssetID, i, Name);
}
@@ -2489,7 +2489,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId)
{
//m_log.DebugFormat("[CLIENT]: Sending animations to {0}", Name);
AvatarAnimationPacket ani = (AvatarAnimationPacket)PacketPool.Instance.GetPacket(PacketType.AvatarAnimation);
// TODO: don't create new blocks if recycling an old packet
ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1];
@@ -2546,16 +2546,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <summary>
/// Send a terse positional/rotation/velocity update about an avatar to the client. This avatar can be that of
/// the client itself.
/// the client itself.
/// </summary>
public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position,
Vector3 velocity, Quaternion rotation)
{
if (rotation.X == rotation.Y && rotation.Y == rotation.Z && rotation.Z == rotation.W && rotation.W == 0)
rotation = Quaternion.Identity;
rotation = Quaternion.Identity;
//m_log.DebugFormat("[CLIENT]: Sending rotation {0} for {1} to {2}", rotation, localID, Name);
ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock =
CreateAvatarImprovedBlock(localID, position, velocity, rotation);
ImprovedTerseObjectUpdatePacket terse = (ImprovedTerseObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ImprovedTerseObjectUpdate);
@@ -2567,7 +2567,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
terse.Header.Reliable = false;
terse.Header.Zerocoded = true;
OutPacket(terse, ThrottleOutPacketType.Task);
}
@@ -2593,7 +2593,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
loc.Index = ib;
loc.Header.Reliable = false;
loc.Header.Zerocoded = true;
OutPacket(loc, ThrottleOutPacketType.Task);
}
@@ -2808,7 +2808,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
im.Header.Zerocoded = true;
OutPacket(im, ThrottleOutPacketType.Texture);
}
public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData)
{
ImagePacketPacket im = new ImagePacketPacket();
@@ -2816,13 +2816,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
im.ImageID.Packet = partNumber;
im.ImageID.ID = imageUuid;
im.ImageData.Data = imageData;
OutPacket(im, ThrottleOutPacketType.Texture);
OutPacket(im, ThrottleOutPacketType.Texture);
}
public void SendImageNotFound(UUID imageid)
{
ImageNotInDatabasePacket notFoundPacket
ImageNotInDatabasePacket notFoundPacket
= (ImageNotInDatabasePacket)PacketPool.Instance.GetPacket(PacketType.ImageNotInDatabase);
notFoundPacket.ImageID.ID = imageid;
@@ -2845,9 +2845,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
pack.Region.ObjectCapacity = stats.ObjectCapacity;
//pack.Region = //stats.RegionBlock;
pack.Stat = stats.StatsBlock;
pack.Header.Reliable = false;
OutPacket(pack, ThrottleOutPacketType.Task);
}
@@ -3129,7 +3129,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
updatePacket.ParcelData.IsGroupOwned = landData.IsGroupOwned;
updatePacket.ParcelData.LandingType = landData.LandingType;
updatePacket.ParcelData.LocalID = landData.LocalID;
if (landData.Area > 0)
{
updatePacket.ParcelData.MaxPrims = parcelObjectCapacity;
@@ -3138,10 +3138,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
updatePacket.ParcelData.MaxPrims = 0;
}
updatePacket.ParcelData.MediaAutoScale = landData.MediaAutoScale;
updatePacket.ParcelData.MediaID = landData.MediaID;
updatePacket.ParcelData.MediaURL = LLUtil.StringToPacketBytes(landData.MediaURL);
updatePacket.ParcelData.MediaID = landData.MediaID;
updatePacket.ParcelData.MediaURL = LLUtil.StringToPacketBytes(landData.MediaURL);
updatePacket.ParcelData.MusicURL = LLUtil.StringToPacketBytes(landData.MusicURL);
updatePacket.ParcelData.Name = Utils.StringToBytes(landData.Name);
updatePacket.ParcelData.OtherCleanTime = landData.OtherCleanTime;
@@ -4162,7 +4162,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <summary>
/// This is the starting point for sending a simulator packet out to the client.
///
///
/// Please do not call this from outside the LindenUDP client stack.
/// </summary>
/// <param name="NewPack"></param>
@@ -4244,13 +4244,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (ProcessPacketMethod(Pack))
{
//there is a handler registered that handled this packet type
// in the end, we dereference this, so we have to check if it's null
if (m_imageManager != null)
m_imageManager.ProcessImageQueue(3);
return;
}
// Main packet processing conditional
switch (Pack.Type)
{
@@ -4266,7 +4266,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.ChatFromViewer:
ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack;
@@ -4296,7 +4296,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerChatFromClient(this, args);
}
break;
case PacketType.AvatarPropertiesUpdate:
AvatarPropertiesUpdatePacket Packet = (AvatarPropertiesUpdatePacket)Pack;
@@ -4335,7 +4335,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.ImprovedInstantMessage:
ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack;
string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName);
@@ -4383,7 +4383,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
case PacketType.DeclineFriendship:
DeclineFriendshipPacket dfriendpack = (DeclineFriendshipPacket)Pack;
if (OnDenyFriendRequest != null)
{
OnDenyFriendRequest(this,
@@ -4391,7 +4391,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
dfriendpack.TransactionBlock.TransactionID,
null);
}
break;
break;
case PacketType.TerminateFriendship:
TerminateFriendshipPacket tfriendpack = (TerminateFriendshipPacket)Pack;
@@ -4404,7 +4404,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerTerminateFriendship(this, listOwnerAgentID, exFriendID);
}
break;
case PacketType.RezObject:
RezObjectPacket rezPacket = (RezObjectPacket)Pack;
@@ -4418,8 +4418,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
rezPacket.RezData.FromTaskID);
}
break;
case PacketType.DeRezObject:
case PacketType.DeRezObject:
DeRezObjectPacket DeRezPacket = (DeRezObjectPacket) Pack;
handlerDeRezObject = OnDeRezObject;
if (handlerDeRezObject != null)
@@ -4427,8 +4427,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
foreach (DeRezObjectPacket.ObjectDataBlock data in
DeRezPacket.ObjectData)
{
// It just so happens that the values on the DeRezAction enumerator match the Destination
// values given by a Second Life client
// It just so happens that the values on the DeRezAction enumerator match the Destination
// values given by a Second Life client
handlerDeRezObject(this, data.ObjectLocalID,
DeRezPacket.AgentBlock.GroupID,
(DeRezAction)DeRezPacket.AgentBlock.Destination,
@@ -4436,7 +4436,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
break;
case PacketType.ModifyLand:
ModifyLandPacket modify = (ModifyLandPacket)Pack;
//m_log.Info("[LAND]: LAND:" + modify.ToString());
@@ -4461,7 +4461,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.RegionHandshakeReply:
handlerRegionHandShakeReply = OnRegionHandShakeReply;
@@ -4471,7 +4471,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.AgentWearablesRequest:
handlerRequestWearables = OnRequestWearables;
@@ -4488,7 +4488,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.AgentSetAppearance:
AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
@@ -4537,7 +4537,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
break;
case PacketType.RezSingleAttachmentFromInv:
handlerRezSingleAttachment = OnRezSingleAttachmentFromInv;
if (handlerRezSingleAttachment != null)
@@ -4548,7 +4548,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.DetachAttachmentIntoInv:
handlerDetachAttachmentIntoInv = OnDetachAttachmentIntoInv;
if (handlerDetachAttachmentIntoInv != null)
@@ -4561,7 +4561,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerDetachAttachmentIntoInv(itemID, this);
}
break;
case PacketType.ObjectAttach:
if (OnObjectAttach != null)
{
@@ -4578,7 +4578,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
break;
case PacketType.ObjectDetach:
ObjectDetachPacket dett = (ObjectDetachPacket)Pack;
for (int j = 0; j < dett.ObjectData.Length; j++)
@@ -4592,7 +4592,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.ObjectDrop:
ObjectDropPacket dropp = (ObjectDropPacket)Pack;
for (int j = 0; j < dropp.ObjectData.Length; j++)
@@ -4605,7 +4605,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
break;
case PacketType.SetAlwaysRun:
SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack;
@@ -4614,7 +4614,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerSetAlwaysRun(this, run.AgentData.AlwaysRun);
break;
case PacketType.CompleteAgentMovement:
handlerCompleteMovementToRegion = OnCompleteMovementToRegion;
if (handlerCompleteMovementToRegion != null)
@@ -4624,7 +4624,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerCompleteMovementToRegion = null;
break;
case PacketType.AgentUpdate:
if (OnAgentUpdate != null)
{
@@ -4653,7 +4653,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotationa);
}
break;
case PacketType.AgentAnimation:
AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
@@ -4680,7 +4680,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
break;
case PacketType.AgentRequestSit:
if (OnAgentRequestSit != null)
{
@@ -4692,7 +4692,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset);
}
break;
case PacketType.AgentSit:
if (OnAgentSit != null)
{
@@ -4705,7 +4705,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
break;
case PacketType.SoundTrigger:
SoundTriggerPacket soundTriggerPacket = (SoundTriggerPacket)Pack;
handlerSoundTrigger = OnSoundTrigger;
@@ -4718,7 +4718,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.AvatarPickerRequest:
AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack;
AvatarPickerRequestPacket.AgentDataBlock Requestdata = avRequestQuery.AgentData;
@@ -4732,7 +4732,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Utils.BytesToString(querydata.Name));
}
break;
case PacketType.AgentDataUpdateRequest:
AgentDataUpdateRequestPacket avRequestDataUpdatePacket = (AgentDataUpdateRequestPacket)Pack;
@@ -5108,10 +5108,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
break;
case PacketType.ObjectName:
ObjectNamePacket objName = (ObjectNamePacket)Pack;
handlerObjectName = null;
for (int i = 0; i < objName.ObjectData.Length; i++)
{
{
handlerObjectName = OnObjectName;
if (handlerObjectName != null)
{
@@ -5243,7 +5243,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
ObjectClickActionPacket ocpacket = (ObjectClickActionPacket)Pack;
handlerObjectClickAction = OnObjectClickAction;
if (handlerObjectClickAction != null)
if (handlerObjectClickAction != null)
{
foreach (ObjectClickActionPacket.ObjectDataBlock odata in ocpacket.ObjectData)
{
@@ -5302,7 +5302,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
break;
case PacketType.TransferRequest:
//Console.WriteLine("ClientView.ProcessPackets.cs:ProcessInPacket() - Got transfer request");
TransferRequestPacket transfer = (TransferRequestPacket)Pack;
//Console.WriteLine("Transfer Request: " + transfer.ToString());
// Validate inventory transfers
@@ -5346,12 +5346,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (userInfo == null)
{
m_log.ErrorFormat(
"[CLIENT]: Could not resolve user {0} for caps inventory update",
"[CLIENT]: Could not resolve user {0} for caps inventory update",
AgentId);
break;
}
if (userInfo.RootFolder == null)
break;
@@ -5881,7 +5881,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.TeleportLocationRequest:
TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
// Console.WriteLine(tpLocReq.ToString());
@@ -6693,11 +6693,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// TODO: handle this packet
//m_log.Warn("[CLIENT]: unhandled ObjectSpinStop packet");
break;
case PacketType.InventoryDescendents:
// TODO: handle this packet
//m_log.Warn("[CLIENT]: unhandled InventoryDescent packet");
break;
case PacketType.DirPlacesQuery:
DirPlacesQueryPacket dirPlacesQueryPacket = (DirPlacesQueryPacket)Pack;
@@ -6775,7 +6775,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OnEventInfoRequest(this, eventInfoRequestPacket.EventData.EventID);
}
break;
case PacketType.ParcelSetOtherCleanTime:
ParcelSetOtherCleanTimePacket parcelSetOtherCleanTimePacket = (ParcelSetOtherCleanTimePacket)Pack;
handlerParcelSetOtherCleanTime = OnParcelSetOtherCleanTime;
@@ -7516,7 +7516,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
public void SendAgentOnline(UUID[] agentIDs)
{
{
OnlineNotificationPacket onp = new OnlineNotificationPacket();
OnlineNotificationPacket.AgentBlockBlock[] onpb = new OnlineNotificationPacket.AgentBlockBlock[agentIDs.Length];
for (int i = 0; i < agentIDs.Length; i++)
@@ -7682,7 +7682,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
Transfer.TransferInfo.Params = new byte[20];
Array.Copy(req.RequestAssetID.GetBytes(), 0, Transfer.TransferInfo.Params, 0, 16);
int assType = req.AssetInf.Type;
int assType = req.AssetInf.Metadata.Type;
Array.Copy(Utils.IntToBytes(assType), 0, Transfer.TransferInfo.Params, 16, 4);
}
else if (req.AssetRequestSource == 3)
@@ -7901,7 +7901,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
case "ReliableIsImportant":
return m_PacketHandler.ReliableIsImportant.ToString();
default:
break;
}
@@ -8340,7 +8340,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
dg.AgentData = new AgentDropGroupPacket.AgentDataBlock();
dg.AgentData.AgentID = AgentId;
dg.AgentData.GroupID = groupID;
OutPacket(dg, ThrottleOutPacketType.Task);
}
@@ -8352,7 +8352,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
an.AgentData = new AvatarNotesReplyPacket.AgentDataBlock();
an.AgentData.AgentID = AgentId;
an.Data = new AvatarNotesReplyPacket.DataBlock();
an.Data.TargetID = targetID;
an.Data.Notes = Utils.StringToBytes(text);
@@ -8369,7 +8369,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
ap.AgentData = new AvatarPicksReplyPacket.AgentDataBlock();
ap.AgentData.AgentID = AgentId;
ap.AgentData.TargetID = targetID;
ap.Data = new AvatarPicksReplyPacket.DataBlock[picks.Count];
int i = 0;
@@ -8393,7 +8393,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
ac.AgentData = new AvatarClassifiedReplyPacket.AgentDataBlock();
ac.AgentData.AgentID = AgentId;
ac.AgentData.TargetID = targetID;
ac.Data = new AvatarClassifiedReplyPacket.DataBlock[classifieds.Count];
int i = 0;
@@ -8416,7 +8416,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
pd.AgentData = new ParcelDwellReplyPacket.AgentDataBlock();
pd.AgentData.AgentID = AgentId;
pd.Data = new ParcelDwellReplyPacket.DataBlock();
pd.Data.LocalID = localID;
pd.Data.ParcelID = parcelID;
@@ -8437,7 +8437,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
ur.AgentData = new UserInfoReplyPacket.AgentDataBlock();
ur.AgentData.AgentID = AgentId;
ur.UserData = new UserInfoReplyPacket.UserDataBlock();
ur.UserData.IMViaEMail = imViaEmail;
ur.UserData.DirectoryVisibility = Utils.StringToBytes(Visible);

View File

@@ -42,7 +42,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
/// <summary>
/// A work in progress, to contain the SL specific file transfer code that is currently in various region modules
/// This file currently contains multiple classes that need to be split out into their own files.
/// This file currently contains multiple classes that need to be split out into their own files.
/// </summary>
public class LLFileTransfer : IClientFileTransfer
{
@@ -206,13 +206,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void Initialise(UUID fileID, string fileName)
{
m_asset = new AssetBase();
m_asset.FullID = fileID;
m_asset.Type = type;
m_asset.Metadata.FullID = fileID;
m_asset.Metadata.Type = type;
m_asset.Data = new byte[0];
m_asset.Name = fileName;
m_asset.Description = "empty";
m_asset.Local = true;
m_asset.Temporary = true;
m_asset.Metadata.Name = fileName;
m_asset.Metadata.Description = "empty";
m_asset.Metadata.Local = true;
m_asset.Metadata.Temporary = true;
mXferID = Util.GetNextXferID();
}
@@ -223,13 +223,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void RequestStartXfer(IClientAPI pRemoteClient)
{
if (!String.IsNullOrEmpty(m_asset.Name))
if (!String.IsNullOrEmpty(m_asset.Metadata.Name))
{
pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, Utils.StringToBytes(m_asset.Name));
pRemoteClient.SendXferRequest(mXferID, m_asset.Metadata.Type, m_asset.Metadata.FullID, 0, Utils.StringToBytes(m_asset.Metadata.Name));
}
else
{
pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, new byte[0]);
pRemoteClient.SendXferRequest(mXferID, m_asset.Metadata.Type, m_asset.Metadata.FullID, 0, new byte[0]);
}
}
@@ -238,7 +238,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// </summary>
/// <param name="xferID"></param>
/// <param name="packetID"></param>
/// <param name="data"></param>
/// <param name="data"></param>
public void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data)
{
if (mXferID == xferID)
@@ -273,7 +273,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerUploadDone = UploadDone;
if (handlerUploadDone != null)
{
handlerUploadDone(m_asset.Name, m_asset.FullID, mXferID, m_asset.Data, remoteClient);
handlerUploadDone(m_asset.Metadata.Name, m_asset.Metadata.FullID, mXferID, m_asset.Data, remoteClient);
}
}
@@ -282,7 +282,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerAbort = UploadAborted;
if (handlerAbort != null)
{
handlerAbort(m_asset.Name, m_asset.FullID, mXferID, remoteClient);
handlerAbort(m_asset.Metadata.Name, m_asset.Metadata.FullID, mXferID, remoteClient);
}
}
}
@@ -373,4 +373,4 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
}
}

View File

@@ -47,7 +47,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// Priority Queue for images. Contains lots of data
/// </summary>
private readonly IPriorityQueue<Prio<J2KImage>> pq = new IntervalHeap<Prio<J2KImage>>();
/// <summary>
/// Dictionary of PriorityQueue handles by AssetId
/// </summary>
@@ -87,7 +87,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//if (req.RequestType == 1) // avatar body texture!
// return;
AddQueueItem(req.RequestedAssetID, (int)req.Priority + 100000);
//if (pq[PQHandles[req.RequestedAssetID]].data.Missing)
//{
@@ -96,9 +96,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//
//if (pq[PQHandles[req.RequestedAssetID]].data.HasData && pq[PQHandles[req.RequestedAssetID]].data.Layers.Length > 0)
//{
//}
pq[PQHandles[req.RequestedAssetID]].data.requestedUUID = req.RequestedAssetID;
pq[PQHandles[req.RequestedAssetID]].data.Priority = (int)req.Priority;
@@ -118,7 +118,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return;
//Console.WriteLine("AssetCallback for assetId" + assetID);
if (asset == null || asset.Data == null)
{
lock (pq)
@@ -132,12 +132,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
pq[PQHandles[assetID]].data.asset = asset;
//lock (pq[PQHandles[assetID]].data)
pq[PQHandles[assetID]].data.Update((int)pq[PQHandles[assetID]].data.Priority, pq[PQHandles[assetID]].data.CurrentPacket);
}
/// <summary>
@@ -174,7 +174,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Is the asset missing?
if (process.data.Missing)
{
//m_client.sendtextur
pq[h] -= 90000;
/*
@@ -191,7 +191,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Substitute a blank image
process.data.asset = MissingSubstitute;
process.data.Missing = false;
// If the priority is less then -4billion, the client has forgotten about it.
if (pq[h] < -400000000)
{
@@ -224,7 +224,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
j2kDecodedCallback(process.data.AssetId, new OpenJPEG.J2KLayerInfo[0]);
}
} // Are we waiting?
else if (!process.data.J2KDecodeWaiting)
@@ -259,10 +259,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//pq[h] = process;
}
// uncomment the following line to see the upper most asset and the priority
//Console.WriteLine(process.ToString());
// Lower priority to give the next image a chance to bubble up
pq[h] -= 50000;
}
@@ -318,7 +318,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
}
/// <summary>
/// Adds an image to the queue and update priority
@@ -336,7 +336,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
h = PQHandles[AssetId];
pq[h] = pq[h].SetPriority(priority);
}
else
{
@@ -354,7 +354,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void Close()
{
m_shuttingdown = true;
lock (pq)
{
while (!pq.IsEmpty)
@@ -362,7 +362,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
pq.DeleteMin();
}
}
lock (PQHandles)
PQHandles.Clear();
@@ -423,7 +423,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// </summary>
public UUID AssetId
{
get { return m_asset_ref.FullID; }
get { return m_asset_ref.Metadata.FullID; }
}
/// <summary>
@@ -544,7 +544,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <returns>true if a packet was sent, false if not</returns>
public bool SendPacket(LLClientView client)
{
// If we've hit the end of the send or if the client set -1, return false.
// If we've hit the end of the send or if the client set -1, return false.
if (CurrentPacket > StopPacket || StopPacket == -1)
return false;
@@ -564,7 +564,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
else
{
// Send first packet
byte[] firstImageData = new byte[FIRST_IMAGE_PACKET_SIZE];
try { Buffer.BlockCopy(m_asset_ref.Data, 0, firstImageData, 0, FIRST_IMAGE_PACKET_SIZE); }
@@ -585,7 +585,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// figure out if we're on the last packet, if so, use the last packet size. If not, use 1000.
// we know that the total image size is greater then 1000 if we're here
int imagePacketSize = (CurrentPacket == (TexturePacketCount() ) ) ? LastPacketSize() : IMAGE_PACKET_SIZE;
//if (imagePacketSize > 0)
// imagePacketSize = IMAGE_PACKET_SIZE;
//if (imagePacketSize != 1000)
@@ -611,7 +611,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
try { Buffer.BlockCopy(m_asset_ref.Data, CurrentBytePosition(), imageData, 0, imagePacketSize); }
catch (Exception e)
{
Console.WriteLine(String.Format("Err: srcLen:{0}, BytePos:{1}, desLen:{2}, pktsize:{3}, currpak:{4}, stoppak:{5}, totalpak:{6}", m_asset_ref.Data.Length, CurrentBytePosition(),
Console.WriteLine(String.Format("Err: srcLen:{0}, BytePos:{1}, desLen:{2}, pktsize:{3}, currpak:{4}, stoppak:{5}, totalpak:{6}", m_asset_ref.Data.Length, CurrentBytePosition(),
imageData.Length, imagePacketSize, CurrentPacket,StopPacket,TexturePacketCount()));
Console.WriteLine(e.ToString());
//m_log.Error("Texture data copy failed for " + m_asset_ref.FullID.ToString());
@@ -622,7 +622,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Send next packet to the client
client.SendImageNextPart((ushort)(CurrentPacket - 1), requestedUUID, imageData);
++CurrentPacket;
if (atEnd)
@@ -630,7 +630,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return true;
}
}
/// <summary>
@@ -676,7 +676,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public static Prio<D> operator -(Prio<D> tp, int delta)
{
if (tp.priority - delta < 0)
if (tp.priority - delta < 0)
return new Prio<D>(tp.data, tp.priority - delta);
else
return new Prio<D>(tp.data, 0);