summaryrefslogtreecommitdiffstats
path: root/async/autotests/asynctest.cpp
Commit message (Collapse)AuthorAge
* KAsync has moved to it's own kasync.git repositoryDan Vrátil2015-05-18
|
* Async: rename Async namespace to KAsyncDan Vrátil2015-05-15
|
* Async: Nested job error propagation.Christian Mollekopf2015-04-28
|
* Fixed void async each.Christian Mollekopf2015-04-19
|
* Async: improve error handling and error propagationDan Vrátil2015-04-06
| | | | | | The error is now propagated to the top-most (user-owned) Future. When an error occurs, no further tasks are executed. The first error handler function in the chain is also called, if there's any.
* Async: remove the silly all-tests benchmarkDan Vrátil2015-04-04
|
* Async: implement progress reporting through futureDan Vrátil2015-04-04
| | | | | | | | | | This is a simplified progress reporting, since it does not report progress of ther overcall Job chain, but only of individual tasks, which makes it only really useful on one-task Jobs. TODO: propagate subjob progress to the Future user gets copy of TODO: compound progress reporting (be able to report a progress of the overall Job chain)
* Async: fix crash in Job::nestedJobWrapperDan Vrátil2015-04-04
|
* Async: support (re-)executing single Job multiple timesDan Vrátil2015-04-01
| | | | | | | | | | | | | | | | | | | Storing Future and current Job progress directly in Executors means that we cannot re-execute finished job, or even execute the same Job multiple times in parallel. To do so, we need to make Executors stateless and track the state elsewhere. This change does that by moving the execution state from Executor to Execution class. Executors now only describe the tasks to execute, while Execution holds the current state of execution. New Execution is created every time Job::exec() is called. Execution holds reference to it's result (Future) and Executor which created the Execution. This ensures that Executor is not deleted when Job (which owns Executors) goes out of scope while the execution is still running. At the same time Future holds reference to relevant Execution, so that the Execution is deleted when all copies of Future referring result from the respective Execution are deleted.
* dowhile cleanup, second dowhile version without separate condition.Christian Mollekopf2015-04-01
|
* Added Async::dowhileChristian Mollekopf2015-04-01
|
* Attempt of a description how async is supposed to work, failing async ↵Christian Mollekopf2015-03-31
| | | | lifetime tests.
* Async: allow consumer continuation without argumentsDan Vrátil2015-03-30
| | | | | | | | It is now possible to chain a job that takes no arguments after a job that returns void. Unfortunatelly it is not yet possible to disregard return value of a previous job.
* Async: allow appending Jobs to already running or finished JobsDan Vrátil2015-02-21
| | | | | | | | | When user gets a Job (from a method call for instance), which is already running or might have even finished already, they can still append a new Job to the chain and re-execute it. The Job will internally chain up to the last finished Job, use it's result and continue from the next Job in the chain. If a Job in the chain is still running, it will wait for it to finish and pass the result to the next Job in the chain.
* Async: allow appending existing Job objects to the Job chainDan Vrátil2015-02-20
| | | | | | | | | | | | Now it's possible to do something like Job<int, int> job = createSomeJob(); auto main = Async::start<int>(....).then(job); Previously the 'job' would have to be wrapped in a ThenTask-like lambda (which is what we still do internally), but with this new syntax it's possible to append another job chain to existing chain easilly. This syntax is available for all task types.
* Async: allow Async::start() to have input valueDan Vrátil2015-02-20
| | | | | The initial value can be passed in as argument to Job::exec(), or by another job in case of job chaining.
* Async: introduce sync executorsDan Vrátil2015-02-09
| | | | | | | | | Sync executors don't pass Async::Future into the user-provided tasks, but instead work with return values of the task methods, wrapping them into the Async::Future internally. Sync tasks are of course possible since forever, but not the API for those tasks is much cleaner, for users don't have to deal with "future" in synchronous tasks, for instance when synchronously processing results of an async task before passing the data to another async task.
* AsyncTest: block until innerJob finishes to prevent crashDan Vrátil2015-02-07
| | | | | | | innerJob.exec() starts an async job, so once exec() returns, the innerJob will go out of scope and will be deleted, which however does not prevent the QTimer from invoking it's lambda slot, which will crash when dereferencing a deleted Future.
* Async: Error continuation.Christian Mollekopf2015-01-19
|
* Async test for nested jobs.Christian Mollekopf2015-01-16
|
* Make async use of jobs work.Christian Mollekopf2015-01-06
|
* Async: bring back synchronous Future::waitForFinished()Dan Vrátil2014-12-14
|
* Async: make the processing truly asynchronousDan Vrátil2014-12-14
| | | | | | Now calling exec() starts the first job and returns a pending Future immediately. Caller can then use Async::FutureWatcher to wait for the future to become finished, i.e. for all jobs to finish execution.
* Async: add Reduce taskDan Vrátil2014-12-12
|
* Async: move the actual task exection into Executor implementationDan Vrátil2014-12-11
| | | | | | | As of now, Job is only front interface to a chain of Executor subclasses. Each Executor subclass specializes for given type of execution (then, each, reduce, ...), and the chain is then executed recursively, as we did with the original Job implementation.
* Async: change syntax of callablesDan Vrátil2014-12-11
| | | | | | We now pass our own Async::Future to each task, instead of expecting tasks to return their future. This allows us to re-use the same Future for repeated invocations, like in the Each task.
* Async: simplify the template magic around In... being empty or voidDan Vrátil2014-12-11
|
* Prototype of Async libraryDan Vrátil2014-12-11