Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Defs Filestore #22

Closed
SakuraIsayeki opened this issue Sep 9, 2022 · 1 comment · Fixed by #30
Closed

Feature: Defs Filestore #22

SakuraIsayeki opened this issue Sep 9, 2022 · 1 comment · Fixed by #30
Assignees
Labels
enhancement New feature or request

Comments

@SakuraIsayeki
Copy link
Member

SakuraIsayeki commented Sep 9, 2022

Problem

After a replay-breaking game client update, all downstream implementations are unable to use the latest replays, without either recompiling towards a new library version provided by us (and therefore restarting their services), or otherwise performing strange dynamic linking of our library, which is as esoteric as it is impractical.

Context

Our library recently switched the game client matching part from hardcoded instructions, to dynamic .def file parsing, with these files coming straight from the game client.
A long-standing service (like an API) should never need to restart for such a trivial change, much less require more development and release/deployment formalities. It should be able to ingest such a change during runtime, eliminating its needs for unnecessary restarts.

Solution

In short: We allow the downstream application to run their own .def filestore.
And we provide an implementation.

Currently this is tied to the IDefinitionStore, which provides the means to implement a part of it, but also is responsible for also backing the type mappings.

We plan to make a breakout of the current implementation to a new and yet TBA interface, to allow an easy implementation of a def backing store, which later can then also be implemented by downstream applications (e.g: proprietary network transfers, in-database storage, Azure/AWS, etc.).

The currently envisionned new implementation will consist of a filesystem backing store, whose path can be configured to any local path on a machine, to serve the necessary .def files. This would concurrently be available to the downstream app, as well as the current system that is the library-embedded backing store, where all files are tied to a library version.

Credits

@SakuraIsayeki SakuraIsayeki added the enhancement New feature or request label Sep 9, 2022
@SakuraIsayeki SakuraIsayeki self-assigned this Sep 9, 2022
SakuraIsayeki added a commit that referenced this issue Sep 9, 2022
This project will hold the main implementation for proposal #22.
@SakuraIsayeki SakuraIsayeki linked a pull request Oct 19, 2023 that will close this issue
@stewieoO
Copy link

Was closed with #30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants