Trying to get rid of while(){tick tick tick} by using more intelligent threading classes
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@474 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -75,7 +75,7 @@ class Decoder {
|
||||
// FIXME
|
||||
Console.WriteLine("sorry, filtering is currently broken :(");
|
||||
return;
|
||||
grep = String.Join(" ", args);
|
||||
// grep = String.Join(" ", args);
|
||||
}
|
||||
|
||||
for (Reset();;) {
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
// #define DEBUG_PACKETS
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
@@ -41,7 +43,6 @@ namespace libsecondlife.AssetSystem
|
||||
/// </summary>
|
||||
public class AssetManager
|
||||
{
|
||||
private const bool DEBUG_PACKETS = false;
|
||||
|
||||
|
||||
public const int SINK_FEE_IMAGE = 1;
|
||||
@@ -133,14 +134,18 @@ namespace libsecondlife.AssetSystem
|
||||
{
|
||||
packet = AssetPacketHelpers.AssetUploadRequestHeaderOnly(asset, curUploadRequest.TransactionID);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
curUploadRequest.AssetData = asset.AssetData;
|
||||
}
|
||||
else
|
||||
{
|
||||
packet = AssetPacketHelpers.AssetUploadRequest(asset, curUploadRequest.TransactionID);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
|
||||
curUploadRequest.Completed.WaitOne();
|
||||
@@ -184,7 +189,10 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
Packet packet = AssetPacketHelpers.TransferRequest(slClient.Network.SessionID, slClient.Network.AgentID, TransferID, item );
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
tr.Completed.WaitOne();
|
||||
|
||||
@@ -193,7 +201,10 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
private void AssetUploadCompleteCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
Packets.AssetUploadCompletePacket reply = (AssetUploadCompletePacket)packet;
|
||||
|
||||
curUploadRequest.AssetID = reply.AssetBlock.UUID;
|
||||
@@ -208,7 +219,10 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
private void RequestXferCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
RequestXferPacket reply = (RequestXferPacket)packet;
|
||||
|
||||
ulong XferID = reply.XferID.ID;
|
||||
@@ -226,12 +240,18 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
packet = AssetPacketHelpers.SendXferPacket(XferID, packetData, 0);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
|
||||
private void ConfirmXferPacketCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
ConfirmXferPacketPacket reply = (ConfirmXferPacketPacket)packet;
|
||||
|
||||
ulong XferID = reply.XferID.ID;
|
||||
@@ -251,7 +271,10 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
packet = AssetPacketHelpers.SendXferPacket(XferID, packetData, i);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -263,7 +286,10 @@ namespace libsecondlife.AssetSystem
|
||||
uint lastPacket = (uint)int.MaxValue + (uint)numPackets + (uint)1;
|
||||
packet = AssetPacketHelpers.SendXferPacket(XferID, packetData, lastPacket);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
throw new Exception("Something is wrong with uploading assets, a confirmation came in for a packet we didn't send.");
|
||||
@@ -272,7 +298,10 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
private void TransferInfoCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
TransferInfoPacket reply = (TransferInfoPacket)packet;
|
||||
|
||||
LLUUID TransferID = reply.TransferInfo.TransferID;
|
||||
@@ -305,7 +334,10 @@ namespace libsecondlife.AssetSystem
|
||||
|
||||
private void TransferPacketCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
TransferPacketPacket reply = (TransferPacketPacket)packet;
|
||||
|
||||
LLUUID TransferID = reply.TransferData.TransferID;
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//#define DEBUG_PACKETS
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
@@ -42,7 +45,6 @@ namespace libsecondlife.AssetSystem
|
||||
/// </summary>
|
||||
public class ImageManager
|
||||
{
|
||||
private const bool DEBUG_PACKETS = true;
|
||||
|
||||
private SecondLife slClient;
|
||||
|
||||
@@ -333,7 +335,9 @@ namespace libsecondlife.AssetSystem
|
||||
/// <param name="simulator"></param>
|
||||
public void ImageDataCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
ImageDataPacket reply = (ImageDataPacket)packet;
|
||||
|
||||
@@ -382,7 +386,9 @@ namespace libsecondlife.AssetSystem
|
||||
/// <param name="simulator"></param>
|
||||
public void ImagePacketCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
ImagePacketPacket reply = (ImagePacketPacket)packet;
|
||||
|
||||
@@ -429,7 +435,9 @@ namespace libsecondlife.AssetSystem
|
||||
/// </summary>
|
||||
public void ImageNotInDatabaseCallbackHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
ImageNotInDatabasePacket reply = (ImageNotInDatabasePacket)packet;
|
||||
|
||||
|
||||
@@ -24,8 +24,11 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//#define DEBUG_PACKETS
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
|
||||
using libsecondlife;
|
||||
using libsecondlife.AssetSystem;
|
||||
@@ -40,7 +43,7 @@ namespace libsecondlife.InventorySystem
|
||||
/// </summary>
|
||||
public class InventoryManager
|
||||
{
|
||||
private const bool DEBUG_PACKETS = false;
|
||||
// private const bool DEBUG_PACKETS = false;
|
||||
|
||||
|
||||
// Reference to the SLClient Library
|
||||
@@ -67,7 +70,7 @@ namespace libsecondlife.InventorySystem
|
||||
|
||||
// Used to track current item being created
|
||||
private InventoryItem iiCreationInProgress;
|
||||
private bool ItemCreationInProgress;
|
||||
public ManualResetEvent ItemCreationCompleted;
|
||||
|
||||
private uint LastPacketRecieved;
|
||||
|
||||
@@ -246,37 +249,45 @@ namespace libsecondlife.InventorySystem
|
||||
|
||||
internal void ItemCreate(InventoryItem iitem)
|
||||
{
|
||||
if (ItemCreationInProgress)
|
||||
if( iiCreationInProgress != null )
|
||||
{
|
||||
throw new Exception("Can only create one item at a time, and an item creation is already in progress.");
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemCreationInProgress = true; // This is released when we receive UpdateCreateInventoryItemHandler
|
||||
iiCreationInProgress = iitem;
|
||||
}
|
||||
|
||||
ItemCreationCompleted = new ManualResetEvent(false);
|
||||
iiCreationInProgress = iitem;
|
||||
|
||||
|
||||
Packet packet = InvPacketHelper.CreateInventoryItem(iitem);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
|
||||
while (ItemCreationInProgress)
|
||||
{
|
||||
slClient.Tick();
|
||||
}
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
ItemCreationCompleted.WaitOne();
|
||||
|
||||
iiCreationInProgress = null;
|
||||
}
|
||||
|
||||
internal void ItemUpdate(InventoryItem iitem)
|
||||
{
|
||||
Packet packet = InvPacketHelper.UpdateInventoryItem(iitem);
|
||||
slClient.Network.SendPacket(packet);
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
|
||||
internal void ItemCopy(LLUUID ItemID, LLUUID TargetFolderID)
|
||||
{
|
||||
Packet packet = InvPacketHelper.CopyInventoryItem(ItemID, TargetFolderID);
|
||||
slClient.Network.SendPacket(packet);
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
|
||||
internal void ItemGiveTo(InventoryItem iitem, LLUUID ToAgentID)
|
||||
@@ -293,6 +304,9 @@ namespace libsecondlife.InventorySystem
|
||||
|
||||
slClient.Network.SendPacket(packet);
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
|
||||
internal void ItemRemove(InventoryItem iitem)
|
||||
@@ -302,6 +316,10 @@ namespace libsecondlife.InventorySystem
|
||||
|
||||
Packet packet = InvPacketHelper.RemoveInventoryItem(iitem.ItemID);
|
||||
slClient.Network.SendPacket(packet);
|
||||
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
}
|
||||
|
||||
internal InventoryNotecard NewNotecard(string Name, string Description, string Body, LLUUID FolderID)
|
||||
@@ -409,9 +427,11 @@ namespace libsecondlife.InventorySystem
|
||||
|
||||
public void UpdateCreateInventoryItemHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
if (DEBUG_PACKETS) { Console.WriteLine(packet); }
|
||||
#if DEBUG_PACKETS
|
||||
Console.WriteLine(packet);
|
||||
#endif
|
||||
|
||||
if (ItemCreationInProgress)
|
||||
if (iiCreationInProgress == null)
|
||||
{
|
||||
UpdateCreateInventoryItemPacket reply = (UpdateCreateInventoryItemPacket)packet;
|
||||
|
||||
@@ -442,7 +462,7 @@ namespace libsecondlife.InventorySystem
|
||||
|
||||
// NOT USED YET: iiCreationInProgress._CallbackID = reply.InventoryData[0].CallbackID;
|
||||
|
||||
ItemCreationInProgress = false;
|
||||
ItemCreationCompleted.Set();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user