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