| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
| |
corruption.
It looks like the memory corruption (malloc started to crash) was coming QLocalSocket related
signals. According to the docs it's not safe (whatever that means), to
delete a QObject with pending signals, so we use deleteLater to schedule
it's deletion. This resolved the crashes.
|
| |
|
|
|
|
|
|
|
| |
The password (or any other secret), is now cached in the client process
(in-memory only), and delivered to the resource via command.
The resource avoids doing any operations against the source until the
secret is available.
|
| |
|
| |
|
|
|
|
|
|
|
| |
To have hierarchical debug output we have to pass around something at
run-time, there is no reasonable alternative. Log::Context provides the
identifier to do just that and largely replaces the debug component
idea.
|
|
|
|
|
|
| |
We have to kill pending commands as well, and we have to make sure that
we call open only once the commands are actually enqueued, so we can
kill them in case of failure.
|
| |
|
|
|
|
|
|
|
| |
Instead of trying to actually flush queues, we send a special command
through the same queues as the other commands and can thus guarantee
that the respective commands have been processed without blocking
anything.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of a single #define as debug area the new system allows for an
identifier for each debug message with the structure component.area.
The component is a dot separated identifier of the runtime component,
such as the process or the plugin.
The area is the code component, and can be as such defined at
compiletime.
The idea of this system is that it becomes possible to i.e. look at the
output of all messages in the query subsystem of a specific resource
(something that happens in the client process, but in the
resource-specific subcomponent).
The new macros are supposed to be less likely to clash with other names,
hence the new names.
|
|
|
|
| |
Found with valgrind
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
clang-format -i */**{.cpp,.h}
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This cuts the exportet symbols from 12k to 2k and the library size from
16Mb to 14Mb, which isn't great but still an improvement.
About 30% of the symbols are coming from the Store:: interface.
nm -C -D /work/install/lib64/libsinkcommon.so.0.1
|
|
|
|
| |
(except for documentation).
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* Smarter caching. ResourceAccess instances close after a timeout, if not reused.
* Introduced a start command to avoid race condition when sending
commands to a resource that is currently shutting down.
* We resend pending commands after we lost access to the resource
* unexpectedly.
|
|
|
|
|
|
|
|
|
| |
We want one connection per application per resource instance.
With this change the connection is maintained for the lifetime of the
client process (it should probably time out instead), but we at least
avoid creating a connection per operation/query, which results in
a significant performance boost (~10% for reading, 90% for writing in
dummyresourcebenchmark).
|
|
|
|
|
|
|
|
| |
The QueryRunner object lives for the duration of the query (so just
for the initial query for non-live queries, and for the lifetime of the
result model for live queries).
It's supposed to handle all the threading internally and decouple the
lifetime of the facade.
|
| |
|
|
|
|
|
| |
So far only includes modifications and additions,
removals are not yet stored as separate revisions.
|
|
|
|
| |
So we have commands in one place, and not in a header file.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Another nice showcase implementation how things get easier, testable and
composable using async.
|
|
|
|
|
| |
We want to keep the command until we know it arrived in the resource,
so we can resend it otherwise.
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
There's a chance that the resource actually wanted to shut-down. Instead
ResourceAccess should only reopen the connection if it still has work to do.
|
| |
|
|
|
|
|
| |
As queries become reactive this should become less important. We can then just wait until
all results become available. For tests it is in either case useful though.
|
| |
|
| |
|