core: Introducing LogLevel enumerator
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Mon, 28 Sep 2009 16:22:36 +0000 (19:22 +0300)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Mon, 28 Sep 2009 22:07:46 +0000 (01:07 +0300)
An enum type to represent the log levels and a method in LogHander to
map this type to GLib.LogLevelFlags.

src/rygel/rygel-log-handler.vala

index 0708120..81669f2 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
+public enum Rygel.LogLevel {
+    INVALID = 0,
+    CRITICAL = 1,
+    ERROR = 2,
+    WARNING = 3,
+    INFO = 4,
+    DEFAULT = 4,
+    DEBUG = 5
+}
+
 public class Rygel.LogHandler : GLib.Object {
     public const string DOMAIN = "Rygel";
     private const LogLevelFlags DEFAULT_LEVELS = LogLevelFlags.LEVEL_WARNING |
@@ -61,4 +71,43 @@ public class Rygel.LogHandler : GLib.Object {
             Log.default_handler (DOMAIN, log_levels, message, null);
         }
     }
+
+    private LogLevelFlags log_level_to_flags (LogLevel level) {
+        LogLevelFlags flags = DEFAULT_LEVELS;
+
+        switch (level) {
+            case LogLevel.CRITICAL:
+                flags = LogLevelFlags.LEVEL_CRITICAL;
+                break;
+            case LogLevel.ERROR:
+                flags = LogLevelFlags.LEVEL_CRITICAL |
+                        LogLevelFlags.LEVEL_ERROR;
+                break;
+            case LogLevel.WARNING:
+                flags = LogLevelFlags.LEVEL_WARNING |
+                        LogLevelFlags.LEVEL_CRITICAL |
+                        LogLevelFlags.LEVEL_ERROR;
+                break;
+            case LogLevel.INFO:
+                flags = LogLevelFlags.LEVEL_WARNING |
+                        LogLevelFlags.LEVEL_CRITICAL |
+                        LogLevelFlags.LEVEL_ERROR |
+                        LogLevelFlags.LEVEL_MESSAGE |
+                        LogLevelFlags.LEVEL_INFO;
+                break;
+            case LogLevel.DEBUG:
+                flags = LogLevelFlags.LEVEL_WARNING |
+                        LogLevelFlags.LEVEL_CRITICAL |
+                        LogLevelFlags.LEVEL_ERROR |
+                        LogLevelFlags.LEVEL_MESSAGE |
+                        LogLevelFlags.LEVEL_INFO |
+                        LogLevelFlags.LEVEL_DEBUG;
+                break;
+            default:
+                flags = DEFAULT_LEVELS;
+                break;
+        }
+
+        return flags;
+    }
 }