[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