Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(sdk) Remove
LinkedChunkListener
.
This patch is a turn around about the `LinkedChunkListener`. Many patches have been removed because `LinkedChunkListener` needed to support I/O, so errors and async code. The whole code was affected by that, resulting in a complex API. The idea of this patch is to decoupled this. Here is how. First off, `LinkedChunkListener` is removed. So it's one less generic parameter on `LinkedChunk`. It's also one less trait, so less implementations. Second, now `LinkedChunk` accumulates/collects all “updates” under the form of a new enum `LinkedChunkUpdate`. These updates can be read with `LinkedChunk::updates(&mut self) -> &Vec<LinkedChunkUpdate>`. The reader can simply read them, or even drain them. The reader is responsible to handle these updates and to dispatch them in a storage or whatever. `LinkedChunk` is no longer responsible to do that, removing the need to support errors and to be async. Third, the simplification has led to an optimisation by introducing a new type `LinkedChunkLinks`. The documentation explains what it does and why it was needed. The benefit of this type is: it doesn't increase the size of `LinkedChunk`, but it simplifies the code: no more `Arc`, no more `Mutex` (it was required because with I/O and async), no more borrow checker trick, and the code stays as safe as before.
- Loading branch information