LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in InventoryManager (Not every delegate is converted yet)

LIBOMV-734 Thanks to Douglas R. Miles for converting the events in EstateManager over to new patterns
LIBOMV-735 Removes redundant LoggedIn event from NetworkManager, when LoginProgress Status == Success you can reliably send packets to a simulator. If you send before this event is raised, an exception will be thrown and your application will crash, previously your request would just get sent to the bitbucket without any notice, Thanks lkalif for the help getting this bug fixed correctly

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3187 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
Jim Radford
2009-10-29 09:39:43 +00:00
parent e78f2e8b66
commit 6182ba84cd
13 changed files with 1784 additions and 1047 deletions

View File

@@ -139,33 +139,33 @@ namespace OpenMetaverse.TestClient
return "Notecard creation failed: " + message;
}
InventoryItem FetchItem(UUID itemID)
private InventoryItem FetchItem(UUID itemID)
{
InventoryItem fetchItem = null;
AutoResetEvent fetchItemEvent = new AutoResetEvent(false);
InventoryManager.ItemReceivedCallback itemReceivedCallback =
delegate(InventoryItem item)
EventHandler<ItemReceivedEventArgs> itemReceivedCallback =
delegate(object sender, ItemReceivedEventArgs e)
{
if (item.UUID == itemID)
if (e.Item.UUID == itemID)
{
fetchItem = item;
fetchItem = e.Item;
fetchItemEvent.Set();
}
};
Client.Inventory.OnItemReceived += itemReceivedCallback;
Client.Inventory.ItemReceived += itemReceivedCallback;
Client.Inventory.RequestFetchInventory(itemID, Client.Self.AgentID);
fetchItemEvent.WaitOne(INVENTORY_FETCH_TIMEOUT, false);
Client.Inventory.OnItemReceived -= itemReceivedCallback;
Client.Inventory.ItemReceived -= itemReceivedCallback;
return fetchItem;
}
string DownloadNotecard(UUID itemID, UUID assetID)
private string DownloadNotecard(UUID itemID, UUID assetID)
{
AutoResetEvent assetDownloadEvent = new AutoResetEvent(false);
byte[] notecardData = null;

View File

@@ -67,20 +67,20 @@ namespace OpenMetaverse.TestClient
}
bool wasRunning = false;
InventoryManager.ScriptRunningCallback callback;
EventHandler<ScriptRunningReplyEventArgs> callback;
using (AutoResetEvent OnScriptRunningReset = new AutoResetEvent(false))
{
callback = ((UUID objectID0, UUID sctriptID, bool isMono, bool isRunning) =>
callback = ((object sender, ScriptRunningReplyEventArgs e) =>
{
if (objectID0 == objectID)
if (e.ObjectID == objectID)
{
result += String.Format(" IsMono: {0} IsRunning: {1}", isMono, isRunning);
wasRunning = isRunning;
result += String.Format(" IsMono: {0} IsRunning: {1}", e.IsMono, e.IsRunning);
wasRunning = e.IsRunning;
OnScriptRunningReset.Set();
}
});
Client.Inventory.OnScriptRunning += callback;
Client.Inventory.ScriptRunningReply += callback;
for (int i = 0; i < items.Count; i++)
{
@@ -98,7 +98,7 @@ namespace OpenMetaverse.TestClient
if (assetType == AssetType.LSLBytecode || assetType == AssetType.LSLText)
{
OnScriptRunningReset.Reset();
Client.Inventory.GetScriptRunning(objectID, item.UUID);
Client.Inventory.RequestGetScriptRunning(objectID, item.UUID);
if (!OnScriptRunningReset.WaitOne(10000, true))
{
result += " (no script info)";
@@ -109,7 +109,7 @@ namespace OpenMetaverse.TestClient
{
OnScriptRunningReset.Reset();
result += " Setting " + setTaskTo + " => ";
Client.Inventory.SetScriptRunning(objectID, item.UUID, setTaskTo);
Client.Inventory.RequestSetScriptRunning(objectID, item.UUID, setTaskTo);
if (!OnScriptRunningReset.WaitOne(10000, true))
{
result += " (was not set)";
@@ -122,7 +122,7 @@ namespace OpenMetaverse.TestClient
}
}
}
Client.Inventory.OnScriptRunning -= callback;
Client.Inventory.ScriptRunningReply -= callback;
return result;
}
else

View File

@@ -54,7 +54,7 @@ namespace OpenMetaverse.TestClient
Network.LoginProgress += LoginHandler;
Self.IM += Self_IM;
Groups.GroupMembersReply += GroupMembersHandler;
Inventory.OnObjectOffered += new InventoryManager.ObjectOfferedCallback(Inventory_OnInventoryObjectReceived);
Inventory.InventoryObjectOffered += Inventory_OnInventoryObjectReceived;
Network.RegisterCallback(PacketType.AvatarAppearance, AvatarAppearanceHandler);
Network.RegisterCallback(PacketType.AlertMessage, AlertMessageHandler);
@@ -189,7 +189,7 @@ namespace OpenMetaverse.TestClient
if (p.AgentData.AgentID == e.Simulator.Client.Self.AgentID)
{
GroupID = p.AgentData.ActiveGroupID;
GroupMembersRequestID = e.Simulator.Client.Groups.RequestGroupMembers(GroupID);
}
}
@@ -219,20 +219,20 @@ namespace OpenMetaverse.TestClient
Logger.Log("[AlertMessage] " + Utils.BytesToString(message.AlertData.Message), Helpers.LogLevel.Info, this);
}
private bool Inventory_OnInventoryObjectReceived(InstantMessage offer, AssetType type,
UUID objectID, bool fromTask)
private void Inventory_OnInventoryObjectReceived(object sender, InventoryObjectOfferedEventArgs e)
{
if (MasterKey != UUID.Zero)
{
if (offer.FromAgentID != MasterKey)
return false;
if (e.Offer.FromAgentID != MasterKey)
return;
}
else if (GroupMembers != null && !GroupMembers.ContainsKey(offer.FromAgentID))
else if (GroupMembers != null && !GroupMembers.ContainsKey(e.Offer.FromAgentID))
{
return false;
return;
}
return true;
e.Accept = true;
return;
}
}
}