aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r--OpenSim/Framework/Console/RemoteConsole.cs46
1 files changed, 45 insertions, 1 deletions
diff --git a/OpenSim/Framework/Console/RemoteConsole.cs b/OpenSim/Framework/Console/RemoteConsole.cs
index fdbf1f4..88d385e 100644
--- a/OpenSim/Framework/Console/RemoteConsole.cs
+++ b/OpenSim/Framework/Console/RemoteConsole.cs
@@ -46,6 +46,10 @@ namespace OpenSim.Framework.Console
46 private IHttpServer m_Server = null; 46 private IHttpServer m_Server = null;
47 private IConfigSource m_Config = null; 47 private IConfigSource m_Config = null;
48 48
49 private List<string> m_Scrollback = new List<string>();
50 private ManualResetEvent m_DataEvent = new ManualResetEvent(false);
51 private List<string> m_InputData = new List<string>();
52
49 public RemoteConsole(string defaultPrompt) : base(defaultPrompt) 53 public RemoteConsole(string defaultPrompt) : base(defaultPrompt)
50 { 54 {
51 } 55 }
@@ -62,12 +66,52 @@ namespace OpenSim.Framework.Console
62 66
63 public override void Output(string text, string level) 67 public override void Output(string text, string level)
64 { 68 {
69 lock (m_Scrollback)
70 {
71 while (m_Scrollback.Count >= 1000)
72 m_Scrollback.RemoveAt(0);
73 m_Scrollback.Add(level+":"+text);
74 }
65 System.Console.Write(text); 75 System.Console.Write(text);
66 } 76 }
67 77
68 public override string ReadLine(string p, bool isCommand, bool e) 78 public override string ReadLine(string p, bool isCommand, bool e)
69 { 79 {
70 return String.Empty; 80 System.Console.Write("{0}", prompt);
81
82 m_DataEvent.WaitOne();
83
84 lock(m_InputData)
85 {
86 if (m_InputData.Count == 0)
87 {
88 m_DataEvent.Reset();
89 return "";
90 }
91
92 string cmdinput = m_InputData[0];
93 m_InputData.RemoveAt(0);
94 if (m_InputData.Count == 0)
95 m_DataEvent.Reset();
96
97 if (isCommand)
98 {
99 string[] cmd = Commands.Resolve(Parser.Parse(cmdinput));
100
101 if (cmd.Length != 0)
102 {
103 int i;
104
105 for (i=0 ; i < cmd.Length ; i++)
106 {
107 if (cmd[i].Contains(" "))
108 cmd[i] = "\"" + cmd[i] + "\"";
109 }
110 return String.Empty;
111 }
112 }
113 return cmdinput;
114 }
71 } 115 }
72 } 116 }
73} 117}