summaryrefslogtreecommitdiffstats
path: root/common/resourcecontrol.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-07-27 02:26:47 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-09-15 16:14:19 +0200
commit26816c21f60450e461a5b6ef4ef740f6070ce278 (patch)
tree55e8aee03e094abf702438e6cd26233047345e70 /common/resourcecontrol.cpp
parent9a9bb39f7641a818434cafa0dae0c8aa47124c0b (diff)
downloadsink-26816c21f60450e461a5b6ef4ef740f6070ce278.tar.gz
sink-26816c21f60450e461a5b6ef4ef740f6070ce278.zip
Ported to the kasync revamp
Diffstat (limited to 'common/resourcecontrol.cpp')
-rw-r--r--common/resourcecontrol.cpp29
1 files changed, 15 insertions, 14 deletions
diff --git a/common/resourcecontrol.cpp b/common/resourcecontrol.cpp
index 7d092a4..f509318 100644
--- a/common/resourcecontrol.cpp
+++ b/common/resourcecontrol.cpp
@@ -41,22 +41,22 @@ KAsync::Job<void> ResourceControl::shutdown(const QByteArray &identifier)
41 time->start(); 41 time->start();
42 return ResourceAccess::connectToServer(identifier) 42 return ResourceAccess::connectToServer(identifier)
43 .then<void, QSharedPointer<QLocalSocket>>( 43 .then<void, QSharedPointer<QLocalSocket>>(
44 [identifier, time](QSharedPointer<QLocalSocket> socket, KAsync::Future<void> &future) { 44 [identifier, time](const KAsync::Error &error, QSharedPointer<QLocalSocket> socket) {
45 if (error) {
46 SinkTrace() << "Resource is already closed.";
47 // Resource isn't started, nothing to shutdown
48 return KAsync::null();
49 }
45 // We can't currently reuse the socket 50 // We can't currently reuse the socket
46 socket->close(); 51 socket->close();
47 auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier)); 52 auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier));
48 resourceAccess->open(); 53 resourceAccess->open();
49 resourceAccess->sendCommand(Sink::Commands::ShutdownCommand) 54 return resourceAccess->sendCommand(Sink::Commands::ShutdownCommand)
50 .then<void>([&future, resourceAccess, time]() { 55 .addToContext(resourceAccess)
56 .syncThen<void>([resourceAccess, time]() {
51 resourceAccess->close(); 57 resourceAccess->close();
52 SinkTrace() << "Shutdown complete." << Log::TraceTime(time->elapsed()); 58 SinkTrace() << "Shutdown complete." << Log::TraceTime(time->elapsed());
53 future.setFinished(); 59 });
54 })
55 .exec();
56 },
57 [](int, const QString &) {
58 SinkTrace() << "Resource is already closed.";
59 // Resource isn't started, nothing to shutdown
60 }); 60 });
61} 61}
62 62
@@ -67,18 +67,19 @@ KAsync::Job<void> ResourceControl::start(const QByteArray &identifier)
67 time->start(); 67 time->start();
68 auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier)); 68 auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier));
69 resourceAccess->open(); 69 resourceAccess->open();
70 return resourceAccess->sendCommand(Sink::Commands::PingCommand).then<void>([resourceAccess, time]() { SinkTrace() << "Start complete." << Log::TraceTime(time->elapsed()); }); 70 return resourceAccess->sendCommand(Sink::Commands::PingCommand).addToContext(resourceAccess).syncThen<void>([time]() { SinkTrace() << "Start complete." << Log::TraceTime(time->elapsed()); });
71} 71}
72 72
73KAsync::Job<void> ResourceControl::flushMessageQueue(const QByteArrayList &resourceIdentifier) 73KAsync::Job<void> ResourceControl::flushMessageQueue(const QByteArrayList &resourceIdentifier)
74{ 74{
75 SinkTrace() << "flushMessageQueue" << resourceIdentifier; 75 SinkTrace() << "flushMessageQueue" << resourceIdentifier;
76 return KAsync::iterate(resourceIdentifier) 76 return KAsync::value(resourceIdentifier)
77 .template each<void, QByteArray>([](const QByteArray &resource, KAsync::Future<void> &future) { 77 .template each([](const QByteArray &resource) {
78 SinkTrace() << "Flushing message queue " << resource; 78 SinkTrace() << "Flushing message queue " << resource;
79 auto resourceAccess = ResourceAccessFactory::instance().getAccess(resource, ResourceConfig::getResourceType(resource)); 79 auto resourceAccess = ResourceAccessFactory::instance().getAccess(resource, ResourceConfig::getResourceType(resource));
80 resourceAccess->open(); 80 resourceAccess->open();
81 resourceAccess->synchronizeResource(false, true).then<void>([&future, resourceAccess]() { future.setFinished(); }).exec(); 81 return resourceAccess->synchronizeResource(false, true)
82 .addToContext(resourceAccess);
82 }); 83 });
83} 84}
84 85