| Home · All Classes · All Namespaces · Modules · Functions · Files

# connection-manager-internal.h

    00001 /*
    00002  * This file is part of TelepathyQt4
    00003  *
    00004  * Copyright (C) 2008 Collabora Ltd. <http://www.collabora.co.uk/>
    00005  * Copyright (C) 2008 Nokia Corporation
    00006  *
    00007  * This library is free software; you can redistribute it and/or
    00008  * modify it under the terms of the GNU Lesser General Public
    00009  * License as published by the Free Software Foundation; either
    00010  * version 2.1 of the License, or (at your option) any later version.
    00011  *
    00012  * This library is distributed in the hope that it will be useful,
    00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00015  * Lesser General Public License for more details.
    00016  *
    00017  * You should have received a copy of the GNU Lesser General Public
    00018  * License along with this library; if not, write to the Free Software
    00019  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00020  */
    00021
    00022 #ifndef _TelepathyQt4_connection_manager_internal_h_HEADER_GUARD_
    00023 #define _TelepathyQt4_connection_manager_internal_h_HEADER_GUARD_
    00024
    00025 #include <TelepathyQt4/PendingStringList>
    00026
    00027 #include <QDBusConnection>
    00028 #include <QLatin1String>
    00029 #include <QQueue>
    00030 #include <QSet>
    00031 #include <QString>
    00032
    00033 namespace Tp
    00034 {
    00035
    00036 class ConnectionManager;
    00037 class ReadinessHelper;
    00038
    00039 struct TELEPATHY_QT4_NO_EXPORT ConnectionManager::Private
    00040 {
    00041     Private(ConnectionManager *parent, const QString &name);
    00042     ~Private();
    00043
    00044     bool parseConfigFile();
    00045
    00046     static void introspectMain(Private *self);
    00047     void introspectProtocols();
    00048     void introspectParameters();
    00049
    00050     static QString makeBusName(const QString &name);
    00051     static QString makeObjectPath(const QString &name);
    00052
    00053     ProtocolInfo *protocol(const QString &protocolName);
    00054
    00055     class PendingNames;
    00056
    00057     // Public object
    00058     ConnectionManager *parent;
    00059
    00060     QString name;
    00061
    00062     // Instance of generated interface class
    00063     Client::ConnectionManagerInterface *baseInterface;
    00064
    00065     ReadinessHelper *readinessHelper;
    00066
    00067     // Introspection
    00068     QQueue<QString> parametersQueue;
    00069     ProtocolInfoList protocols;
    00070 };
    00071
    00072 class TELEPATHY_QT4_NO_EXPORT ConnectionManager::Private::PendingNames : public PendingStringList
    00073 {
    00074     Q_OBJECT
    00075
    00076 public:
    00077     PendingNames(const QDBusConnection &bus);
    00078     ~PendingNames() {};
    00079
    00080 private Q_SLOTS:
    00081     void onCallFinished(QDBusPendingCallWatcher *);
    00082     void continueProcessing();
    00083
    00084 private:
    00085     void invokeMethod(const QLatin1String &method);
    00086     void parseResult(const QStringList &names);
    00087
    00088     QQueue<QLatin1String> mMethodsQueue;
    00089     QSet<QString> mResult;
    00090     QDBusConnection mBus;
    00091 };
    00092
    00093 } // Tp
    00094
    00095 #endif