From 9dd0b44a48bd65a498493857cb56cba03df251ac Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Sat, 11 Oct 2008 00:17:21 +0000 Subject: [PATCH] * Wait up to 10 seconds for an event queue to connect if Self.Teleport() is called when no event queue is connected * Check if a command exists before running it in TestClient git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2295 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/AgentManager.cs | 18 ++++++++++++++++++ Programs/examples/TestClient/ClientManager.cs | 8 ++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/OpenMetaverse/AgentManager.cs b/OpenMetaverse/AgentManager.cs index 25eaf91c..795759f7 100644 --- a/OpenMetaverse/AgentManager.cs +++ b/OpenMetaverse/AgentManager.cs @@ -2150,6 +2150,24 @@ namespace OpenMetaverse /// This call is blocking public bool Teleport(ulong regionHandle, Vector3 position, Vector3 lookAt) { + if (Client.Network.CurrentSim == null || + Client.Network.CurrentSim.Caps == null || + !Client.Network.CurrentSim.Caps.IsEventQueueRunning) + { + // Wait a bit to see if the event queue comes online + AutoResetEvent queueEvent = new AutoResetEvent(false); + NetworkManager.EventQueueRunningCallback queueCallback = + delegate(Simulator simulator) + { + if (simulator == Client.Network.CurrentSim) + queueEvent.Set(); + }; + + Client.Network.OnEventQueueRunning += queueCallback; + queueEvent.WaitOne(10 * 1000, false); + Client.Network.OnEventQueueRunning -= queueCallback; + } + teleportStat = TeleportStatus.None; teleportEvent.Reset(); diff --git a/Programs/examples/TestClient/ClientManager.cs b/Programs/examples/TestClient/ClientManager.cs index d0a8ecd2..55017bb7 100644 --- a/Programs/examples/TestClient/ClientManager.cs +++ b/Programs/examples/TestClient/ClientManager.cs @@ -259,8 +259,12 @@ namespace OpenMetaverse.TestClient delegate(object state) { TestClient testClient = (TestClient)state; - Logger.Log(testClient.Commands[firstToken].Execute(args, fromAgentID), - Helpers.LogLevel.Info, testClient); + if (testClient.Commands.ContainsKey(firstToken)) + Logger.Log(testClient.Commands[firstToken].Execute(args, fromAgentID), + Helpers.LogLevel.Info, testClient); + else + Logger.Log("Unknown command " + firstToken, Helpers.LogLevel.Warning); + ++completed; }, client);