~ubuntu-branches/ubuntu/quantal/akonadi/quantal

« back to all changes in this revision

Viewing changes to server/src/akonadi.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2012-01-24 23:43:13 UTC
  • mto: (3.1.12 sid)
  • mto: This revision was merged to the branch mainline in revision 69.
  • Revision ID: package-import@ubuntu.com-20120124234313-ooald4uh9w8jilyw
Tags: upstream-1.7.0
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include "akonadi.h"
21
21
#include "akonadiconnection.h"
22
22
#include "serveradaptor.h"
23
 
#include "akdebug.h"
 
23
#include <akdbus.h>
 
24
#include <akdebug.h>
 
25
#include <akstandarddirs.h>
24
26
 
25
27
#include "cachecleaner.h"
26
28
#include "intervalcheck.h"
 
29
#include "storagejanitor.h"
27
30
#include "storage/dbconfig.h"
28
31
#include "storage/datastore.h"
29
32
#include "notificationmanager.h"
71
74
#endif
72
75
    , mCacheCleaner( 0 )
73
76
    , mIntervalChecker( 0 )
 
77
    , mStorageJanitor( 0 )
74
78
    , mItemRetrievalThread( 0 )
75
79
    , mDatabaseProcess( 0 )
76
80
    , mAlreadyShutdown( false )
77
81
{
78
 
    const QString serverConfigFile = XdgBaseDirs::akonadiServerConfigFile( XdgBaseDirs::ReadWrite );
 
82
    const QString serverConfigFile = AkStandardDirs::serverConfigFile( XdgBaseDirs::ReadWrite );
79
83
    QSettings settings( serverConfigFile, QSettings::IniFormat );
80
84
 
81
 
    DbConfig::configuredDatabase()->init( settings );
82
 
 
83
85
    if ( DbConfig::configuredDatabase()->useInternalServer() )
84
86
      startDatabaseProcess();
85
87
    else
89
91
 
90
92
    s_instance = this;
91
93
 
92
 
    const QString connectionSettingsFile = XdgBaseDirs::akonadiConnectionConfigFile( XdgBaseDirs::WriteOnly );
 
94
    const QString connectionSettingsFile = AkStandardDirs::connectionConfigFile( XdgBaseDirs::WriteOnly );
93
95
    QSettings connectionSettings( connectionSettingsFile, QSettings::IniFormat );
94
96
 
95
97
#ifdef Q_OS_WIN
139
141
    connectionSettings.setValue( QLatin1String( "Data/Method" ), QLatin1String( "NamedPipe" ) );
140
142
    connectionSettings.setValue( QLatin1String( "Data/NamedPipe" ), namedPipe );
141
143
#else
142
 
    const QString socketDir = Utils::preferredSocketDirectory( XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi" ) ) );
 
144
    const QString socketDir = Utils::preferredSocketDirectory( AkStandardDirs::saveDir( "data" ) );
143
145
    const QString socketFile = socketDir + QLatin1String( "/akonadiserver.socket" );
144
146
    unlink( socketFile.toUtf8().constData() );
145
147
    if ( !listen( socketFile ) )
176
178
    mIntervalChecker = new IntervalCheck( this );
177
179
    mIntervalChecker->start( QThread::IdlePriority );
178
180
 
 
181
    mStorageJanitor = new StorageJanitorThread;
 
182
    mStorageJanitor->start( QThread::IdlePriority );
 
183
 
179
184
    mItemRetrievalThread = new ItemRetrievalThread( this );
180
185
    mItemRetrievalThread->start( QThread::HighPriority );
181
186
 
197
202
      connectionSettings.setValue( QLatin1String( "DBUS/Address" ), QLatin1String( dbusAddress ) );
198
203
    }
199
204
 
200
 
    QDBusServiceWatcher *watcher = new QDBusServiceWatcher( QLatin1String( AKONADI_DBUS_CONTROL_SERVICE ),
 
205
    QDBusServiceWatcher *watcher = new QDBusServiceWatcher( AkDBus::serviceName(AkDBus::Control),
201
206
                                                            QDBusConnection::sessionBus(),
202
207
                                                            QDBusServiceWatcher::WatchForOwnerChange, this );
203
208
 
204
 
    connect( watcher, SIGNAL( serviceOwnerChanged( const QString&, const QString&, const QString& ) ),
205
 
             this, SLOT( serviceOwnerChanged( const QString&, const QString&, const QString& ) ) );
 
209
    connect( watcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)),
 
210
             this, SLOT(serviceOwnerChanged(QString,QString,QString)) );
206
211
 
207
212
    // Unhide all the items that are actually hidden.
208
213
    // The hidden flag was probably left out after an (abrupt)
237
242
    qDebug() << "terminating service threads";
238
243
    quitThread( mCacheCleaner );
239
244
    quitThread( mIntervalChecker );
 
245
    quitThread( mStorageJanitor );
240
246
    quitThread( mItemRetrievalThread );
241
247
 
242
248
    delete mSearchManager;
256
262
    qDebug() << "stopping db process";
257
263
    stopDatabaseProcess();
258
264
 
259
 
    QSettings settings( XdgBaseDirs::akonadiServerConfigFile(), QSettings::IniFormat );
260
 
    const QString connectionSettingsFile = XdgBaseDirs::akonadiConnectionConfigFile( XdgBaseDirs::WriteOnly );
 
265
    QSettings settings( AkStandardDirs::serverConfigFile(), QSettings::IniFormat );
 
266
    const QString connectionSettingsFile = AkStandardDirs::connectionConfigFile( XdgBaseDirs::WriteOnly );
261
267
 
262
268
#ifndef Q_OS_WIN
263
269
    QSettings connectionSettings( connectionSettingsFile, QSettings::IniFormat );
264
 
    const QString socketDir = Utils::preferredSocketDirectory( XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi" ) ) );
 
270
    const QString socketDir = Utils::preferredSocketDirectory( AkStandardDirs::saveDir( "data" ) );
265
271
 
266
272
    if ( !QDir::home().remove( socketDir + QLatin1String( "/akonadiserver.socket" ) ) )
267
273
        akError() << "Failed to remove Unix socket";
269
275
    if ( !QDir::home().remove( connectionSettingsFile ) )
270
276
        akError() << "Failed to remove runtime connection config file";
271
277
 
272
 
    QTimer::singleShot( 0, this, SLOT( doQuit() ) );
 
278
    QTimer::singleShot( 0, this, SLOT(doQuit()) );
273
279
}
274
280
 
275
281
void AkonadiServer::doQuit()
286
292
    if ( mAlreadyShutdown )
287
293
      return;
288
294
    QPointer<AkonadiConnection> thread = new AkonadiConnection( socketDescriptor, this );
289
 
    connect( thread, SIGNAL( finished() ), thread, SLOT( deleteLater() ) );
 
295
    connect( thread, SIGNAL(finished()), thread, SLOT(deleteLater()) );
290
296
    mConnections.append( thread );
291
297
    thread->start();
292
298
}
305
311
    return;
306
312
 
307
313
  // create the database directories if they don't exists
308
 
  XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi/" ) );
309
 
  XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi/file_db_data" ) );
 
314
  AkStandardDirs::saveDir( "data" );
 
315
  AkStandardDirs::saveDir( "data", QLatin1String( "file_db_data" ) );
310
316
 
311
317
  DbConfig::configuredDatabase()->startInternalServer();
312
318
}