From 787d58ae7f160960fda606be1852c8ed6a9e3893 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 20 May 2009 20:28:57 +0000 Subject: [PATCH] Put some meat on the bones of the REST console. NO user functionality yet --- OpenSim/Framework/Console/RemoteConsole.cs | 46 +++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Console/RemoteConsole.cs b/OpenSim/Framework/Console/RemoteConsole.cs index fdbf1f498a..88d385e57a 100644 --- a/OpenSim/Framework/Console/RemoteConsole.cs +++ b/OpenSim/Framework/Console/RemoteConsole.cs @@ -46,6 +46,10 @@ namespace OpenSim.Framework.Console private IHttpServer m_Server = null; private IConfigSource m_Config = null; + private List m_Scrollback = new List(); + private ManualResetEvent m_DataEvent = new ManualResetEvent(false); + private List m_InputData = new List(); + public RemoteConsole(string defaultPrompt) : base(defaultPrompt) { } @@ -62,12 +66,52 @@ namespace OpenSim.Framework.Console public override void Output(string text, string level) { + lock (m_Scrollback) + { + while (m_Scrollback.Count >= 1000) + m_Scrollback.RemoveAt(0); + m_Scrollback.Add(level+":"+text); + } System.Console.Write(text); } public override string ReadLine(string p, bool isCommand, bool e) { - return String.Empty; + System.Console.Write("{0}", prompt); + + m_DataEvent.WaitOne(); + + lock(m_InputData) + { + if (m_InputData.Count == 0) + { + m_DataEvent.Reset(); + return ""; + } + + string cmdinput = m_InputData[0]; + m_InputData.RemoveAt(0); + if (m_InputData.Count == 0) + m_DataEvent.Reset(); + + if (isCommand) + { + string[] cmd = Commands.Resolve(Parser.Parse(cmdinput)); + + if (cmd.Length != 0) + { + int i; + + for (i=0 ; i < cmd.Length ; i++) + { + if (cmd[i].Contains(" ")) + cmd[i] = "\"" + cmd[i] + "\""; + } + return String.Empty; + } + } + return cmdinput; + } } } }