Implemented UDP fallback for RequestUploadBakedTexture()

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3042 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
John Hurliman
2009-07-31 21:53:32 +00:00
parent 59e9e74a45
commit ee7bb90907

View File

@@ -777,7 +777,36 @@ namespace OpenMetaverse
else
{
Logger.Log("UploadBakedTexture not available, falling back to UDP method", Helpers.LogLevel.Info, Client);
// FIXME:
ThreadPool.QueueUserWorkItem(
delegate(object o)
{
UUID transactionID = UUID.Random();
BakedTextureUploadedCallback uploadCallback = (BakedTextureUploadedCallback)o;
AutoResetEvent uploadEvent = new AutoResetEvent(false);
AssetUploadedCallback udpCallback =
delegate(AssetUpload upload)
{
if (upload.ID == transactionID)
{
uploadEvent.Set();
uploadCallback(upload.Success ? upload.AssetID : UUID.Zero);
}
};
OnAssetUploaded += udpCallback;
UUID assetID;
RequestUpload(out assetID, AssetType.Texture, textureData, true, transactionID);
bool success = uploadEvent.WaitOne(Settings.TRANSFER_TIMEOUT, false);
OnAssetUploaded -= udpCallback;
if (!success)
uploadCallback(UUID.Zero);
}, callback
);
}
}