You want large textures, you shall have! - Xfer system now working for large asset uploads

Fixed the VS solution file.
Now forwars ViewerEffect messages onto the other clients
Renamed OpenSim.Framework/Inventory.cs to OpenSim.Framework/AgentInventory.cs
This commit is contained in:
MW
2007-03-25 17:34:58 +00:00
parent 2fc543e0ab
commit 40af8c2561
11 changed files with 511 additions and 236 deletions

View File

@@ -68,6 +68,7 @@ namespace OpenSim
private const int MAX_APPENDED_ACKS = 10;
private const int RESEND_TIMEOUT = 4000;
private const int MAX_SEQUENCE = 0xFFFFFF;
private AgentAssetUpload UploadAssets;
private LLUUID newAssetFolder = LLUUID.Zero;
private bool debug = false;
@@ -278,28 +279,37 @@ namespace OpenSim
break;
case PacketType.AssetUploadRequest:
//this.debug = true;
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
AssetBase newAsset = OpenSimRoot.Instance.AssetCache.UploadPacket(request, LLUUID.Random());
if ((newAsset != null) && (this.newAssetFolder != LLUUID.Zero))
Console.WriteLine(Pack.ToString());
if (request.AssetBlock.Type == 0)
{
OpenSimRoot.Instance.InventoryCache.AddNewInventoryItem(this, this.newAssetFolder, newAsset);
this.UploadAssets.HandleUploadPacket(request, LLUUID.Random());
}
AssetUploadCompletePacket response = new AssetUploadCompletePacket();
response.AssetBlock.Type =request.AssetBlock.Type;
response.AssetBlock.Success = true;
response.AssetBlock.UUID = request.AssetBlock.TransactionID.Combine(this.SecureSessionID);
this.OutPacket(response);
else
{
this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
}
break;
case PacketType.SendXferPacket:
Console.WriteLine(Pack.ToString());
this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
break;
case PacketType.CreateInventoryFolder:
//Console.WriteLine(Pack.ToString());
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
OpenSimRoot.Instance.InventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type);
Console.WriteLine(Pack.ToString());
break;
case PacketType.CreateInventoryItem:
//Console.WriteLine(Pack.ToString());
Console.WriteLine(Pack.ToString());
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
if (createItem.InventoryBlock.TransactionID != LLUUID.Zero)
{
this.UploadAssets.CreateInventoryItem(createItem);
}
break;
case PacketType.FetchInventory:
Console.WriteLine("fetch item packet");
//Console.WriteLine("fetch item packet");
FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack;
OpenSimRoot.Instance.InventoryCache.FetchInventory(this, FetchInventory);
break;
@@ -307,6 +317,29 @@ namespace OpenSim
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
OpenSimRoot.Instance.InventoryCache.FetchInventoryDescendents(this, Fetch);
break;
case PacketType.UpdateInventoryItem:
/* UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
for (int i = 0; i < update.InventoryData.Length; i++)
{
if (update.InventoryData[i].TransactionID != LLUUID.Zero)
{
AssetBase asset = OpenSimRoot.Instance.AssetCache.GetAsset(update.InventoryData[i].TransactionID.Combine(this.SecureSessionID));
OpenSimRoot.Instance.InventoryCache.UpdateInventoryItem(this, update.InventoryData[i].ItemID, asset);
}
}*/
break;
case PacketType.ViewerEffect:
ViewerEffectPacket viewer = (ViewerEffectPacket)Pack;
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
if (client.AgentID != this.AgentID)
{
viewer.AgentData.AgentID = client.AgentID;
viewer.AgentData.SessionID = client.SessionID;
client.OutPacket(viewer);
}
}
break;
case PacketType.DeRezObject:
//OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Received DeRezObject packet");
OpenSimRoot.Instance.LocalWorld.DeRezObject((DeRezObjectPacket)Pack, this);
@@ -522,6 +555,8 @@ namespace OpenSim
cirpack = initialcirpack;
userEP = remoteEP;
PacketQueue = new BlockingQueue<QueItem>();
this.UploadAssets = new AgentAssetUpload(this);
AckTimer = new System.Timers.Timer(500);
AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed);
AckTimer.Start();