From 2f072d1e1045d2a0a1ac96487492ac915166b1dc Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Mon, 18 Jun 2007 15:55:30 +0000 Subject: * example soft logger by delegate --- Common/OpenSim.Framework/Logger.cs | 85 ++++++++++++++++++++++ Common/OpenSim.Framework/OpenSim.Framework.csproj | 3 + .../OpenSim.Framework/OpenSim.Framework.dll.build | 1 + 3 files changed, 89 insertions(+) create mode 100644 Common/OpenSim.Framework/Logger.cs (limited to 'Common') diff --git a/Common/OpenSim.Framework/Logger.cs b/Common/OpenSim.Framework/Logger.cs new file mode 100644 index 0000000..e7eaa03 --- /dev/null +++ b/Common/OpenSim.Framework/Logger.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace OpenSim.Framework +{ + public class Logger + { + public static Logger Instance = new Logger( false ); + + public delegate void LoggerMethodDelegate(); + private delegate bool LoggerDelegate( LoggerMethodDelegate whatToDo ); + + + private LoggerDelegate m_delegate; + + public Logger( bool log ) + { + if( log ) + { + m_delegate = CatchAndLog; + } + else + { + m_delegate = DontCatch; + } + } + + public bool Wrap( LoggerMethodDelegate whatToDo ) + { + return m_delegate( whatToDo ); + } + + + private bool CatchAndLog(LoggerMethodDelegate whatToDo) + { + try + { + whatToDo(); + return true; + } + catch(Exception e) + { + System.Console.WriteLine( "Exception logged!!! Woah!!!!" ); + return false; + } + } + + private bool DontCatch(LoggerMethodDelegate whatToDo) + { + whatToDo(); + return true; + } + + public class LoggerExample + { + public void TryWrap() + { + // This will log and ignore + Logger log = new Logger(true); + + log.Wrap(delegate() + { + Int16.Parse("waa!"); + }); + + // This will throw; + try + { + + log = new Logger(false); + + log.Wrap(delegate() + { + Int16.Parse("waa!"); + }); + } + catch + { + System.Console.WriteLine("Example barfed!"); + } + } + } + } +} diff --git a/Common/OpenSim.Framework/OpenSim.Framework.csproj b/Common/OpenSim.Framework/OpenSim.Framework.csproj index 060e471..f9a4f2d 100644 --- a/Common/OpenSim.Framework/OpenSim.Framework.csproj +++ b/Common/OpenSim.Framework/OpenSim.Framework.csproj @@ -102,6 +102,9 @@ Code + + Code + Code diff --git a/Common/OpenSim.Framework/OpenSim.Framework.dll.build b/Common/OpenSim.Framework/OpenSim.Framework.dll.build index 524255c..ab511f2 100644 --- a/Common/OpenSim.Framework/OpenSim.Framework.dll.build +++ b/Common/OpenSim.Framework/OpenSim.Framework.dll.build @@ -15,6 +15,7 @@ + -- cgit v1.1