diff --git a/OpenSim/Framework/Console/CommandConsole.cs b/OpenSim/Framework/Console/CommandConsole.cs index 87bdacd2da..bd23d1cb62 100644 --- a/OpenSim/Framework/Console/CommandConsole.cs +++ b/OpenSim/Framework/Console/CommandConsole.cs @@ -678,6 +678,8 @@ namespace OpenSim.Framework.Console { // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public event OnOutputDelegate OnOutput; + public ICommands Commands { get; private set; } public CommandConsole(string defaultPrompt) : base(defaultPrompt) @@ -697,6 +699,13 @@ namespace OpenSim.Framework.Console Output(s); } + protected void FireOnOutput(string text) + { + OnOutputDelegate onOutput = OnOutput; + if (onOutput != null) + onOutput(text); + } + /// /// Display a command prompt on the console and wait for user input /// diff --git a/OpenSim/Framework/Console/LocalConsole.cs b/OpenSim/Framework/Console/LocalConsole.cs index f65813b9ee..d41481fb1c 100644 --- a/OpenSim/Framework/Console/LocalConsole.cs +++ b/OpenSim/Framework/Console/LocalConsole.cs @@ -319,6 +319,8 @@ namespace OpenSim.Framework.Console public override void Output(string text, string level) { + FireOnOutput(text); + lock (m_commandLine) { if (m_cursorYPosition == -1) @@ -509,4 +511,4 @@ namespace OpenSim.Framework.Console } } } -} \ No newline at end of file +} diff --git a/OpenSim/Framework/Console/MockConsole.cs b/OpenSim/Framework/Console/MockConsole.cs index 4d8751f5f6..b489f93b69 100644 --- a/OpenSim/Framework/Console/MockConsole.cs +++ b/OpenSim/Framework/Console/MockConsole.cs @@ -40,6 +40,8 @@ namespace OpenSim.Framework.Console /// public class MockConsole : ICommandConsole { + public event OnOutputDelegate OnOutput; + private MockCommands m_commands = new MockCommands(); public ICommands Commands { get { return m_commands; } } @@ -76,4 +78,4 @@ namespace OpenSim.Framework.Console public string[] Resolve(string[] cmd) { return null; } public XmlElement GetXml(XmlDocument doc) { return null; } } -} \ No newline at end of file +} diff --git a/OpenSim/Framework/Console/RemoteConsole.cs b/OpenSim/Framework/Console/RemoteConsole.cs index e04ca1e1e0..50eb1734a5 100644 --- a/OpenSim/Framework/Console/RemoteConsole.cs +++ b/OpenSim/Framework/Console/RemoteConsole.cs @@ -100,6 +100,7 @@ namespace OpenSim.Framework.Console m_LineNumber++; m_Scrollback.Add(String.Format("{0}", m_LineNumber)+":"+level+":"+text); } + FireOnOutput(text.Trim()); System.Console.WriteLine(text.Trim()); } diff --git a/OpenSim/Framework/ICommandConsole.cs b/OpenSim/Framework/ICommandConsole.cs index ca0ff936ca..8cd20da4ee 100644 --- a/OpenSim/Framework/ICommandConsole.cs +++ b/OpenSim/Framework/ICommandConsole.cs @@ -74,8 +74,12 @@ namespace OpenSim.Framework XmlElement GetXml(XmlDocument doc); } + public delegate void OnOutputDelegate(string message); + public interface ICommandConsole : IConsole { + event OnOutputDelegate OnOutput; + ICommands Commands { get; } /// @@ -87,4 +91,4 @@ namespace OpenSim.Framework string ReadLine(string p, bool isCommand, bool e); } -} \ No newline at end of file +} diff --git a/OpenSim/Region/Framework/Interfaces/IRegionConsole.cs b/OpenSim/Region/Framework/Interfaces/IRegionConsole.cs new file mode 100644 index 0000000000..4d261d6655 --- /dev/null +++ b/OpenSim/Region/Framework/Interfaces/IRegionConsole.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using OpenMetaverse; +using OpenSim.Framework; + +namespace OpenSim.Region.Framework.Interfaces +{ + public interface IRegionConsole + { + bool RunCommand(string command, UUID invokerID); + void SendConsoleOutput(UUID agentID, string message); + void AddCommand(string module, bool shared, string command, string help, string longhelp, CommandDelegate fn); + } +}