| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
Having them separated is rather pointless (since we need one for every
type, and all types are the interface of sink, as one), and caused quite
a bit of friction when adding new types. This will also make it easier
to change things for all types.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Otherwise if the source resource manages to clean up the revision before
the target resource gets to process the new entity, then the blob file
is gone already.
|
|
|
|
|
| |
This avoid uselessly querying resources only to discover that they don't
have a facade for the type.
|
| |
|
|
|
|
|
| |
...we used to accidentally move external blobs after the property was
lost when storing the modificatoin in the queue.
|
| |
|
| |
|
|
|
|
| |
A first usecase is parsing different property types.
|
| |
|
|
|
|
| |
Thanks to marcoscarpetta for the patch!
|
| |
|
|
|
|
| |
An the compiler in fedora 26 also tells us that.
|
|
|
|
| |
After the initial bloom, it should turn into a regular filter.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Ensure we always have a messageId to work with,
and avoid grouping all non-threaded messages together.
|
|
|
|
|
|
| |
Instead we make it part of the plugin.
This ensure we also have access to the proper capabilities when creating
a resource via sinksh.
|
| |
|
| |
|
|
|
|
|
|
| |
This is really part of the storage, and will help us to cleanly
implement features like moving properties into a temporary place when
reading in a clean way as well.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This allows us to make sure that references are not taken out of
context (the resource).
Because we need to use the type-specific accessors more we also ran into
a problem that we cannot "downcast" a reference with the change
recording still working, for that we have the cast<T>() operator now.
|
| |
|
|
|
|
|
|
| |
When moving an entity to another resource we have to move the blob
properties to a temporary directory first, and that requires that we are
able to distinguish blob properties from the rest at runtime.
|
| |
|
|
|
|
|
|
| |
Not pretty, but that at least allows us to centrally define
the string to type dispatch (It's somehow very hard to do in
C++ without repeating all types over and over in various interfaces).
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
complex than a simple key-value pair.
|
| |
|
|
|
|
|
| |
We have to access properties, so we need the mapper anyways, and the
ApplicationDomainType type shouldn't be a large overhead anyways.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the initial refactoring to improve how we deal with the storage.
It does a couple of things:
* Rename Sink::Storage to Sink::Storage::DataStore to free up the
Sink::Storage namespace
* Introduce a Sink::ResourceContext to have a single object that can be
passed around containing everything that is necessary to operate on a
resource. This is a lot better than the multiple separate parameters
that we used to pass around all over the place, while still allowing
for dependency injection for tests.
* Tie storage access together using the new EntityStore that directly
works with ApplicationDomainTypes. This gives us a central place where
main storage, indexes and buffer adaptors are tied together, which
will also give us a place to implement external indexes, such as a
fulltextindex using xapian.
* Use ApplicationDomainTypes as the default way to pass around entities.
Instead of using various ways to pass around entities (buffers,
buffer adaptors, ApplicationDomainTypes), only use a single way.
The old approach was confusing, and was only done as:
* optimization; really shouldn't be necessary and otherwise I'm sure
we can find better ways to optimize ApplicationDomainType itself.
* a way to account for entities that have multiple buffers, a concept
that I no longer deem relevant.
While this commit does the bulk of the work to get there, the following
commits will refactor more stuff to get things back to normal.
|