summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Colorized debug output a bitChristian Mollekopf2015-04-15
|
* Use a queryrunner to execute queries.Christian Mollekopf2015-04-15
| | | | | | | | | | | | | | The queryrunner is responsible for running queries and keeping them up to date. This is required for self-updating queries. To get this to work properly the ResultProvider/emitter had to be fixed. The emitter now only lives as long as the client holds a reference to it, allowing the provider to detect when it is no longer necessary to keep the query alive (because noone is listening). In the process various lifetime issues have been fixed, that we're caused by lambdas capturing smartpointers, that then extended the lifetime of the associated objects unpredictably.
* Always queue commands in resourceaccess.Christian Mollekopf2015-04-12
| | | | | We want to keep the command until we know it arrived in the resource, so we can resend it otherwise.
* Further simplify writing of buffer adaptors.Christian Mollekopf2015-04-12
| | | | Still not quite there but we're avoiding the bulk of duplication by now.
* Compile with flatbuffers 1.1Christian Mollekopf2015-04-12
|
* Compile with QT_NO_DEBUGChristian Mollekopf2015-04-12
|
* Merge remote-tracking branch 'origin/develop' into developChristian Mollekopf2015-04-12
|\
| * Async: add runtime executor tracing for easier debuggingDan Vrátil2015-04-11
| |
| * Async: use baseclass instead of this-> to refer to parent class memberDan Vrátil2015-04-10
| |
| * Fix build (flatbuffers API changed)Dan Vrátil2015-04-10
| |
| * Async: fix build for real this timeDan Vrátil2015-04-10
| |
| * Async: fix buildDan Vrátil2015-04-10
| |
| * Async: const'ifyDan Vrátil2015-04-06
| |
| * 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: update components and lifetime documentationDan 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: move as much Future code as possible from public header to .cppDan Vrátil2015-04-04
| |
| * Async: one TODO done, few more to goDan Vrátil2015-04-04
| |
| * Async: fix crash in Job::nestedJobWrapperDan Vrátil2015-04-04
| |
* | More generic domainadpator code.Christian Mollekopf2015-04-12
| | | | | | | | | | This should cover read and write for entites that have a 1:1 mapping to the resource buffers.
* | checkpointChristian Mollekopf2015-04-10
| |
* | Compile with debug symbols by default for nowChristian Mollekopf2015-04-09
| |
* | commentsChristian Mollekopf2015-04-09
| |
* | Automatic tests.Christian Mollekopf2015-04-09
| |
* | Only measure appending, not creating the buffer.Christian Mollekopf2015-04-09
| |
* | Moved generic parts of the domain adaptor to commonChristian Mollekopf2015-04-09
| |
* | Renamed Akonadi::Domain to Akonadi::ApplicationDomainChristian Mollekopf2015-04-09
| | | | | | | | Because it's really the application domain and not the akonadi domain.
* | Refactored buffer extraction from vector.Christian Mollekopf2015-04-09
| |
* | Started a facade base implementation.Christian Mollekopf2015-04-09
| |
* | Use QByteArray instead of QStringChristian Mollekopf2015-04-09
| | | | | | | | | | All identifiers should be latin1 and we make this explicit by using QByteArray. QString is reserved for strings that can be UTF-8 or alike.
* | cleanupChristian Mollekopf2015-04-08
| |
* | async simplificationsChristian Mollekopf2015-04-08
| |
* | Wait for all queues to drain in processAllMessages.Christian Mollekopf2015-04-08
| |
* | Fixed typoChristian Mollekopf2015-04-08
| |
* | Some more CreateVector => appendAsVector transformations.Christian Mollekopf2015-04-08
| |
* | Less noiseChristian Mollekopf2015-04-07
| |
* | Use memcpy to copy tables into vectors.Christian Mollekopf2015-04-07
| | | | | | | | | | | | Ideally we wouldn't be copying at all, and somehow cast the table to a vector. Unfortunately I haven't figured out how to do that, and this solution at least gets us from 0.065 ms to 0.028 ms in testCreateCommand.
* | Benchmark for in-process writing.Christian Mollekopf2015-04-06
|/ | | | To measure overhead of the communication to the separate process.
* We have to copy all values anyways, so this transaction is no longer required.Christian Mollekopf2015-04-03
|
* log messages.Christian Mollekopf2015-04-03
|
* Merge remote-tracking branch 'origin/develop' into developChristian Mollekopf2015-04-03
|\
| * 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.
* | debug messagesChristian Mollekopf2015-04-03
| |
* | Continue processing if there are more messages.Christian Mollekopf2015-04-03
| |
* | ResourceAccess: copy the buffer before capturing it in the lambda.Christian Mollekopf2015-04-02
| | | | | | | | | | | | | | | | | | | | | | It's lifetime is limited to the end of the function, so we have to copy it before. I switched to QByteArray because it simplifies the code and shouldn't really cost anything, additionally the implicit sharing makes copies cheap. This patch incurs the cost of always copying the buffer instead of writing straight to the socket, but we probably anyways want to keep a copy around, and if it would indeed be a performance issues (I doubt it), we could still optimize that copy away.
* | async simplificationsChristian Mollekopf2015-04-02
| |
* | Unbreak the clientapi.Christian Mollekopf2015-04-02
| | | | | | | | We indeed have to keep the facade alive, otherwise this starts crashing.
* | Cleanup and debug messages.Christian Mollekopf2015-04-02
|/
* Async: have the top executor reference itself during executionDan Vrátil2015-04-01
| | | | | | | | | The only reference to the top executor (the last in chain) is held by the Job. If the Job goes out of scope after it's executed, the top Executor is deleted (which in turn deletes the entire Executor chain). By having the top Executor holding reference to itself during execution we ensure that the Executor chain is not deleted until the job is finished, even when the parent Job object is deleted in the meanwhile.