From a4fc6b5fbba7fd9a7b147b11a0d1c3ded1834d54 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Tue, 27 Mar 2007 08:10:15 +0000 Subject: * Now there's one Console class, and instead the apps responds to cmd's and show's * Removed Golden Future TCP/SimChat options * Moved Ode.NET.dll to bin and changed prebuild accordingly (due to Prebuild limitations) * Normalized some namespaces * Added FxCop project * Added (temp disabled) Servers project (for great justice) --- OpenSim.Framework.Console/ConsoleBase.cs | 144 ++++++++++++++++++--- OpenSim.Framework.Console/ConsoleCallbacksBase.cs | 12 ++ .../OpenSim.Framework.Console.csproj | 5 +- .../OpenSim.Framework.Console.dll.build | 83 ++++++------ 4 files changed, 183 insertions(+), 61 deletions(-) create mode 100644 OpenSim.Framework.Console/ConsoleCallbacksBase.cs (limited to 'OpenSim.Framework.Console') diff --git a/OpenSim.Framework.Console/ConsoleBase.cs b/OpenSim.Framework.Console/ConsoleBase.cs index 5343e71..e2e4457 100644 --- a/OpenSim.Framework.Console/ConsoleBase.cs +++ b/OpenSim.Framework.Console/ConsoleBase.cs @@ -1,45 +1,151 @@ using System; +using System.IO; namespace OpenSim.Framework.Console { - public abstract class ConsoleBase + public class ConsoleBase { + StreamWriter Log; + public conscmd_callback cmdparser; + public string componentname; - public enum ConsoleType + // STUPID HACK ALERT!!!! STUPID HACK ALERT!!!!! + // constype - the type of console to use (see enum ConsoleType) + // sparam - depending on the console type: + // TCP - the IP to bind to (127.0.0.1 if blank) + // Local - param ignored + // and for the iparam: + // TCP - the port to bind to + // Local - param ignored + // LogFile - duh + // componentname - which component of the OGS system? (user, asset etc) + // cmdparser - a reference to a conscmd_callback object + + public ConsoleBase(string LogFile, string componentname, conscmd_callback cmdparser) { - Local, // Use stdio - TCP, // Use TCP/telnet - SimChat // Use in-world chat (for gods) + this.componentname = componentname; + this.cmdparser = cmdparser; + + System.Console.WriteLine("ServerConsole.cs - creating new local console"); + System.Console.WriteLine("Logs will be saved to current directory in " + LogFile); + Log = File.AppendText(LogFile); + Log.WriteLine("========================================================================"); + Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString()); } - public abstract void Close(); + public void Close() + { + Log.WriteLine("Shutdown at " + DateTime.Now.ToString()); + Log.Close(); + } + + public void Write(string format, params object[] args) + { + Log.Write(format, args); + System.Console.Write(format, args); + return; + } - public abstract void Write(string format, params object[] args); + public void WriteLine(string format, params object[] args) + { + Log.WriteLine(format, args); + System.Console.WriteLine(format, args); + return; + } - public abstract void WriteLine(string format, params object[] args); + public string ReadLine() + { + string TempStr = System.Console.ReadLine(); + Log.WriteLine(TempStr); + return TempStr; + } - public abstract string ReadLine(); + public int Read() + { + int TempInt = System.Console.Read(); + Log.Write((char)TempInt); + return TempInt; + } - public abstract int Read(); + // Displays a prompt and waits for the user to enter a string, then returns that string + // Done with no echo and suitable for passwords + public string PasswdPrompt(string prompt) + { + // FIXME: Needs to be better abstracted + Log.WriteLine(prompt); + this.Write(prompt); + ConsoleColor oldfg = System.Console.ForegroundColor; + System.Console.ForegroundColor = System.Console.BackgroundColor; + string temp = System.Console.ReadLine(); + System.Console.ForegroundColor = oldfg; + return temp; + } // Displays a command prompt and waits for the user to enter a string, then returns that string - public abstract string CmdPrompt(string prompt); + public string CmdPrompt(string prompt) + { + this.Write(prompt); + return this.ReadLine(); + } // Displays a command prompt and returns a default value if the user simply presses enter - public abstract string CmdPrompt(string prompt, string defaultresponse); + public string CmdPrompt(string prompt, string defaultresponse) + { + string temp = CmdPrompt(prompt); + if (temp == "") + { + return defaultresponse; + } + else + { + return temp; + } + } // Displays a command prompt and returns a default value, user may only enter 1 of 2 options - public abstract string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB); + public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB) + { + bool itisdone = false; + string temp = CmdPrompt(prompt, defaultresponse); + while (itisdone == false) + { + if ((temp == OptionA) || (temp == OptionB)) + { + itisdone = true; + } + else + { + this.WriteLine("Valid options are " + OptionA + " or " + OptionB); + temp = CmdPrompt(prompt, defaultresponse); + } + } + return temp; + } // Runs a command with a number of parameters - public abstract Object RunCmd(string Cmd, string[] cmdparams); + public Object RunCmd(string Cmd, string[] cmdparams) + { + cmdparser.RunCmd(Cmd, cmdparams); + return null; + } // Shows data about something - public abstract void ShowCommands(string ShowWhat); - - // Displays a prompt to the user and then runs the command they entered - public abstract void MainConsolePrompt(); + public void ShowCommands(string ShowWhat) + { + cmdparser.Show(ShowWhat); + } - public abstract void SetStatus(string status); + public void MainConsolePrompt() + { + string[] tempstrarray; + string tempstr = this.CmdPrompt(this.componentname + "# "); + tempstrarray = tempstr.Split(' '); + string cmd = tempstrarray[0]; + Array.Reverse(tempstrarray); + Array.Resize(ref tempstrarray, tempstrarray.Length - 1); + Array.Reverse(tempstrarray); + string[] cmdparams = (string[])tempstrarray; + RunCmd(cmd, cmdparams); + } } } diff --git a/OpenSim.Framework.Console/ConsoleCallbacksBase.cs b/OpenSim.Framework.Console/ConsoleCallbacksBase.cs new file mode 100644 index 0000000..bb589d2 --- /dev/null +++ b/OpenSim.Framework.Console/ConsoleCallbacksBase.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace OpenSim.Framework.Console +{ + public interface conscmd_callback + { + void RunCmd(string cmd, string[] cmdparams); + void Show(string ShowWhat); + } +} diff --git a/OpenSim.Framework.Console/OpenSim.Framework.Console.csproj b/OpenSim.Framework.Console/OpenSim.Framework.Console.csproj index a2718a5..bd10ce2 100644 --- a/OpenSim.Framework.Console/OpenSim.Framework.Console.csproj +++ b/OpenSim.Framework.Console/OpenSim.Framework.Console.csproj @@ -3,7 +3,7 @@ Local 8.0.50727 2.0 - {F5AD51E9-CF59-4C70-A586-CBD161EBB85F} + {7AED7536-7D6B-4E28-8016-B5A554C663B4} Debug AnyCPU @@ -72,6 +72,9 @@ Code + + Code + Code diff --git a/OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build b/OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build index 2dfc9b0..fa90bb6 100644 --- a/OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build +++ b/OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build @@ -1,41 +1,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.1