diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-27 02:26:47 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-09-15 16:14:19 +0200 |
commit | 26816c21f60450e461a5b6ef4ef740f6070ce278 (patch) | |
tree | 55e8aee03e094abf702438e6cd26233047345e70 /common/resourcecontrol.cpp | |
parent | 9a9bb39f7641a818434cafa0dae0c8aa47124c0b (diff) | |
download | sink-26816c21f60450e461a5b6ef4ef740f6070ce278.tar.gz sink-26816c21f60450e461a5b6ef4ef740f6070ce278.zip |
Ported to the kasync revamp
Diffstat (limited to 'common/resourcecontrol.cpp')
-rw-r--r-- | common/resourcecontrol.cpp | 29 |
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 | ||
73 | KAsync::Job<void> ResourceControl::flushMessageQueue(const QByteArrayList &resourceIdentifier) | 73 | KAsync::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 | ||