]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
logger locks
authorsage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Sun, 26 Jun 2005 23:45:28 +0000 (23:45 +0000)
committersage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Sun, 26 Jun 2005 23:45:28 +0000 (23:45 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@341 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/common/Logger.cc
ceph/common/Logger.h

index eb24fe9f5b36919e0444342adb7900fdc1120b37..5e06a8512112ccf79427fe7da642f07fdf1ae283 100644 (file)
@@ -41,11 +41,14 @@ long Logger::inc(char *s, long v)
 }
 long Logger::inc(string& key, long v)
 {
+  lock.Lock();
   if (!type->have_key(key)) 
        type->add_inc(key);
   flush();
   vals[key] += v;
-  return vals[key];
+  long r = vals[key];
+  lock.Unlock();
+  return r;
 }
 
 long Logger::set(char *s, long v)
@@ -55,12 +58,15 @@ long Logger::set(char *s, long v)
 }
 long Logger::set(string& key, long v)
 {
+  lock.Lock();
   if (!type->have_key(key)) 
        type->add_set(key);
 
   flush();
   vals[key] = v;
-  return vals[key];
+  long r = vals[key];
+  lock.Unlock();
+  return r;
 }
 
 long Logger::get(char *s)
@@ -70,11 +76,16 @@ long Logger::get(char *s)
 }
 long Logger::get(string& key)
 {
-  return vals[key];
+  lock.Lock();
+  long r = vals[key];
+  lock.Unlock();
+  return r;
 }
 
 void Logger::flush(bool force) 
 {
+  lock.Lock();
+
   timepair_t now = g_clock.gettimepair();
   timepair_t fromstart = now - start;
 
@@ -115,6 +126,8 @@ void Logger::flush(bool force)
        for (vector<string>::iterator it = type->inc_keys.begin(); it != type->inc_keys.end(); it++) 
          set(*it, 0);
   }
+
+  lock.Unlock();
 }
 
 
index 9ed0a81e0eaaa5264c6343c8fc10f3af12a65f03..d8b4dc4cf847007cc2a013f8641271f9605e21ba 100644 (file)
@@ -3,6 +3,8 @@
 
 #include "include/types.h"
 #include "Clock.h"
+#include "Mutex.h"
+
 #include <string>
 #include <fstream>
 using namespace std;
@@ -14,7 +16,7 @@ class LogType;
 class Logger {
  protected:
   hash_map<string, long> vals;
-
+  Mutex lock;
   LogType *type;
 
   timepair_t start;