added a mutex lock in Core::bufferInfo()
[quassel.git] / src / core / core.cpp
index e222a13..2e3da6d 100644 (file)
@@ -28,6 +28,7 @@
 #include "coresettings.h"
 #include "signalproxy.h"
 #include "sqlitestorage.h"
+#include "network.h"
 
 Core *Core::instanceptr = 0;
 QMutex Core::mutex;
@@ -48,6 +49,10 @@ Core::Core()
   : storage(0)
 {
   startTime = QDateTime::currentDateTime();  // for uptime :)
+
+  connect(&_storageSyncTimer, SIGNAL(timeout()),
+         this, SLOT(syncStorage()));
+  _storageSyncTimer.start(10 * 60 * 1000); // in msecs
 }
 
 void Core::init() {
@@ -94,6 +99,11 @@ Core::~Core() {
   qDeleteAll(sessions);
 }
 
+void Core::syncStorage() {
+  QMutexLocker locker(&mutex);
+  return instance()->storage->sync();
+}
+
 void Core::restoreState() {
   if(instance()->sessions.count()) {
     qWarning() << qPrintable(tr("Calling restoreState() even though active sessions exist!"));
@@ -127,15 +137,24 @@ void Core::saveState() {
 }
 
 /*** Storage Access ***/
+bool Core::createNetworkId(UserId user, NetworkInfo &info) {
+  QMutexLocker locker(&mutex);
+  NetworkId networkId = instance()->storage->createNetworkId(user, info);
+  if(!networkId.isValid())
+    return false;
+  
+  info.networkId = networkId;
+  return true;
+}
 
 NetworkId Core::networkId(UserId user, const QString &network) {
   QMutexLocker locker(&mutex);
   return instance()->storage->getNetworkId(user, network);
 }
 
-BufferInfo Core::bufferInfo(UserId user, const QString &network, const QString &buffer) {
-  //QMutexLocker locker(&mutex);
-  return instance()->storage->getBufferInfo(user, network, buffer);
+BufferInfo Core::bufferInfo(UserId user, const NetworkId &networkId, const QString &buffer) {
+  QMutexLocker locker(&mutex);
+  return instance()->storage->getBufferInfo(user, networkId, buffer);
 }
 
 MsgId Core::storeMessage(const Message &message) {