[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:08:18 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=c1cff9a

The following commit has been merged in the master branch:
commit c1cff9adcc32cf3124fca05f678e4a7f54c93c78
Author: Marcin Ziemiński <zieminn at gmail.com>
Date:   Fri Jul 11 20:20:42 2014 +0200

    Add PendingCurryOperation in order to handle calls asynchronously.
    
    Signed-off-by: Marcin Ziemiński <zieminn at gmail.com>
---
 otr-proxy/KTpProxy/CMakeLists.txt                  |  1 +
 otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp   | 63 +++++++++++++++++++++-
 otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h     |  2 +
 otr-proxy/KTpProxy/otr-proxy-channel-internal.h    | 11 ----
 ...ice-adaptee.cpp => pending-curry-operation.cpp} | 33 ++++++++----
 .../{types.h => pending-curry-operation.h}         | 38 +++++++++----
 6 files changed, 115 insertions(+), 33 deletions(-)

diff --git a/otr-proxy/KTpProxy/CMakeLists.txt b/otr-proxy/KTpProxy/CMakeLists.txt
index ea29ff2..4f3f99b 100644
--- a/otr-proxy/KTpProxy/CMakeLists.txt
+++ b/otr-proxy/KTpProxy/CMakeLists.txt
@@ -7,6 +7,7 @@ set(ktp-proxy_SRCS
         svc-proxy-service.cpp
         otr-proxy-channel.cpp
         otr-proxy-channel-adaptee.cpp
+        pending-curry-operation.cpp
 )
 
 set(ktp-proxy_LIBS
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
index 364979c..36eee77 100644
--- a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
+++ b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
@@ -20,6 +20,7 @@
 #include "otr-proxy-channel-adaptee.h"
 #include "otr-proxy-channel.h"
 #include "constants.h"
+#include "pending-curry-operation.h"
 
 #include <TelepathyQt/DBusObject>
 #include <TelepathyQt/TextChannel>
@@ -29,6 +30,39 @@
 // TODO
 // - add errors to spec
 
+class SendMessageExtractor : public Extractor
+{
+    public:
+        SendMessageExtractor()
+            : token(QString::fromLatin1(""))
+        { }
+
+        void setContext(const Tp::Service::ChannelProxyInterfaceOTRAdaptor::SendMessageContextPtr &context)
+        {
+            this->context = context;
+        }
+
+        Tp::Service::ChannelProxyInterfaceOTRAdaptor::SendMessageContextPtr& getContext()
+        {
+            return context;
+        }
+
+        const QString& getToken() const
+        {
+            return token;
+        }
+
+        virtual void operator()(Tp::PendingOperation *op)
+        {
+            token = dynamic_cast<Tp::PendingSendMessage*>(op)->sentMessageToken();
+        }
+
+    private:
+        QString token;
+        Tp::Service::ChannelProxyInterfaceOTRAdaptor::SendMessageContextPtr context;
+};
+
+
 OtrProxyChannel::Adaptee::Adaptee(OtrProxyChannel *pc, const QDBusConnection &dbusConnection, const Tp::TextChannelPtr &channel)
     : adaptor(new Tp::Service::ChannelProxyInterfaceOTRAdaptor(dbusConnection, this, pc->dbusObject())),
     pc(pc),
@@ -60,7 +94,7 @@ Tp::MessagePartListList OtrProxyChannel::Adaptee::pendingMessages() const
 
 uint OtrProxyChannel::Adaptee::trustLevel() const
 {
-    return 1;
+    return 0;
 }
 
 QString OtrProxyChannel::Adaptee::localFingerprint() const
@@ -114,7 +148,17 @@ void OtrProxyChannel::Adaptee::sendMessage(const Tp::MessagePartList &message, u
         context->setFinishedWithError(KTP_PROXY_ERROR_NOT_CONNECTED, QString::fromLatin1("Proxy is not connected"));
         return;
     }
-    context->setFinished();
+
+    SendMessageExtractor *mesEx = new SendMessageExtractor();
+    mesEx->setContext(context);
+    PendingCurryOperation *pending = new PendingCurryOperation(
+            chan->send(message, (Tp::MessageSendingFlags) flags),
+            mesEx,
+            Tp::SharedPtr<Tp::RefCounted>::dynamicCast(chan));
+
+    connect(pending,
+            SIGNAL(finished(Tp::PendingOperation*)),
+            SLOT(onPendingSendFinished(Tp::PendingOperation*)));
 }
 
 void OtrProxyChannel::Adaptee::acknowledgePendingMessages(const Tp::UIntList &ids,
@@ -156,3 +200,18 @@ void OtrProxyChannel::Adaptee::onPendingMessageRemoved(const Tp::ReceivedMessage
     QDBusVariant variant = receivedMessage.header().value(QLatin1String("pending-message-id"));
     emit pendingMessagesRemoved(Tp::UIntList() << variant.variant().toUInt(NULL));
 }
+
+
+void OtrProxyChannel::Adaptee::onPendingSendFinished(Tp::PendingOperation *op)
+{
+    PendingCurryOperation *pendingSend = dynamic_cast<PendingCurryOperation*>(op);
+    SendMessageExtractor &ex = dynamic_cast<SendMessageExtractor&>(pendingSend->extractor());
+
+    Tp::Service::ChannelProxyInterfaceOTRAdaptor::SendMessageContextPtr ctx = ex.getContext();
+
+    if(op->isError()) {
+        ctx->setFinishedWithError(op->errorName(), op->errorMessage());
+    } else {
+        ctx->setFinished(ex.getToken());
+    }
+}
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
index 123c58f..a7b3369 100644
--- a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
+++ b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
@@ -64,6 +64,8 @@ class OtrProxyChannel::Adaptee : public QObject
         void onMessageReceived(const Tp::ReceivedMessage &receivedMessage);
         void onPendingMessageRemoved(const Tp::ReceivedMessage &receivedMessage);
 
+        void onPendingSendFinished(Tp::PendingOperation *pendingSend);
+
     Q_SIGNALS:
         void messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken);
         void messageReceived(const Tp::MessagePartList &message);
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-internal.h b/otr-proxy/KTpProxy/otr-proxy-channel-internal.h
deleted file mode 100644
index 1edc7dd..0000000
--- a/otr-proxy/KTpProxy/otr-proxy-channel-internal.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef KTP_PROXY_OTR_PROXY_CHANNEL_INTERNAL_HEADER
-#define KTP_PROXY_OTR_PROXY_CHANNEL_INTERNAL_HEADER
-
-#include "svc-channel-proxy.h"
-
-class OtrProxyChannel::Adaptee : public QObject
-{
-
-};
-
-#endif /* KTP_PROXY_OTR_PROXY_CHANNEL_INTERNAL_HEADER */
diff --git a/otr-proxy/KTpProxy/proxy-service-adaptee.cpp b/otr-proxy/KTpProxy/pending-curry-operation.cpp
similarity index 67%
copy from otr-proxy/KTpProxy/proxy-service-adaptee.cpp
copy to otr-proxy/KTpProxy/pending-curry-operation.cpp
index 379ae29..13c3bfb 100644
--- a/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
+++ b/otr-proxy/KTpProxy/pending-curry-operation.cpp
@@ -17,23 +17,34 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
  ***************************************************************************/
 
-#include "proxy-service-adaptee.h"
-#include "svc-proxy-service.h"
-#include "proxy-service.h"
 
-#include <TelepathyQt/DBusObject>
+#include "pending-curry-operation.h"
 
-ProxyServiceAdaptee::ProxyServiceAdaptee(ProxyService *ps, const QDBusConnection &dbusConnection)
-    : adaptor(new Tp::Service::ProxyServiceAdaptor(dbusConnection, this, ps->dbusObject()))
+Extractor::~Extractor() { }
+
+PendingCurryOperation::PendingCurryOperation(Tp::PendingOperation *op, Extractor *ex, const Tp::SharedPtr<Tp::RefCounted> &obj)
+: Tp::PendingOperation(obj),
+    ex(ex)
 {
+    connect(op, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onFinished(Tp::PendingOperation*)));
 }
-ProxyServiceAdaptee::~ProxyServiceAdaptee() { }
 
-void ProxyServiceAdaptee::onProxyConnected(const QDBusObjectPath &proxyPath)
+PendingCurryOperation::~PendingCurryOperation()
 {
-    emit proxyconnected(proxyPath);
+    delete ex;
 }
-void ProxyServiceAdaptee::onProxyDisconnected(const QDBusObjectPath &proxyPath)
+
+Extractor& PendingCurryOperation::extractor()
+{
+    return *ex;
+}
+
+void PendingCurryOperation::onFinished(Tp::PendingOperation *op)
 {
-    emit proxydisconnected(proxyPath);
+    if(op->isError()) {
+        setFinishedWithError(op->errorName(), op->errorMessage());
+        return;
+    }
+    (*ex)(op);
+    setFinished();
 }
diff --git a/otr-proxy/KTpProxy/types.h b/otr-proxy/KTpProxy/pending-curry-operation.h
similarity index 67%
copy from otr-proxy/KTpProxy/types.h
copy to otr-proxy/KTpProxy/pending-curry-operation.h
index dfe7ee9..5c96e0a 100644
--- a/otr-proxy/KTpProxy/types.h
+++ b/otr-proxy/KTpProxy/pending-curry-operation.h
@@ -17,17 +17,37 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
  ***************************************************************************/
 
-#ifndef KTP_PROXY_TYPES_HEADER
-#define KTP_PROXY_TYPES_HEADER
+#ifndef KTP_PROXY_PENDING_CURRY_OPERATION_HEADER
+#define KTP_PROXY_PENDING_CURRY_OPERATION_HEADER
 
-#include <TelepathyQt/SharedPtr>
+#include <TelepathyQt/PendingOperation>
 
-class OtrProxyChannel;
-class ProxyService;
-class ProxyObserver;
+#include <QObject>
 
-typedef Tp::SharedPtr<OtrProxyChannel> OtrProxyChannelPtr;
-typedef Tp::SharedPtr<ProxyService> ProxyServicePtr;
-typedef Tp::SharedPtr<ProxyObserver> ProxyObserverPtr;
+
+class Extractor
+{
+    public:
+        virtual ~Extractor();
+        virtual void operator()(Tp::PendingOperation *op) = 0;
+};
+
+class PendingCurryOperation : public Tp::PendingOperation
+{
+    Q_OBJECT
+
+    public:
+        PendingCurryOperation(Tp::PendingOperation *op, Extractor *ex, const Tp::SharedPtr<Tp::RefCounted> &obj);
+        ~PendingCurryOperation();
+
+        Extractor& extractor();
+
+    private Q_SLOTS:
+        void onFinished(Tp::PendingOperation *op);
+
+    private:
+        Extractor *ex;
+
+};
 
 #endif

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list