using System; using System.Collections.Generic; using System.Linq; using System.Text; using TradeIdeas.Extensions; using TradeIdeas.ServerConnection; using System.Windows.Forms; using System.Drawing; namespace TIProDevExtension { /// /// This sends a request to the micro proxy. The response is a description of the /// current state of the micro proxy for this user. This can be helpful for finding /// certain types of bugs. For example, if we got disconnected from one server and /// didn't realize it. /// class MicroProxyDebugDumpExtension : IMainInit { /// /// Normal init for extensions. /// /// /// public static IList GetExtensions(Object mainProgram) { List result = new List(1); result.Add(new MicroProxyDebugDumpExtension((IMainProgram)mainProgram)); return result; } private readonly IMainProgram _mainProgram; private ToolStripMenuItem _menuItem; private ToolStrip _invoker; private MicroProxyDebugDumpExtension(IMainProgram mainProgram) { _mainProgram = mainProgram; } private void RequestDebugDump() { var message = TalkWithServer.CreateMessage("command", "micro_proxy_debug_dump"); _invoker = _menuItem.GetCurrentParent(); _mainProgram.ConnectionMaster.SendManager.SendMessage(message, Response); } private void Response(byte[] body, object clientId) { if (null != body) { string asString = TalkWithServer.BytesToStr(body); _invoker.BeginInvoke((MethodInvoker)delegate { Response(asString); }); } } private void Response(string body) { MicroProxyDebugDumpViewer viewer = new MicroProxyDebugDumpViewer(body); viewer.Show(); } public void MainInit() { _menuItem = _mainProgram.AddToToolsMenu("Micro Proxy Debug Dump", RequestDebugDump); } } }