Skip to content

Server-client Architectural flaw #4

@cyb3rdog

Description

@cyb3rdog

Issue description

Unfortunatelly, escape pod itself, and this extensions for escape pod, has been designed incorrectly with an architectural flaw.
Instead of escapepod being client to to the escapepod-extension server, it should be vice-versa, to allow multiple extensions to be used with the escapepod. Currently, it is possible to have only one extension, to which the escapepod binary connects for passing the extent intents for further processing.

Expected functionality

To have more the possibility to use more than one extension with the escape pod. Example

  • first extension from an author A will process intents 1, 2 and 3.
  • second extension from an author B will process intents 4. 5 and 6.
    In other words, when i release my extension to the community, it wont be possible for them to use their own extensions anymore.

Resolution proposal

  1. Change the design and architecture of this to perhaps include the server part into the escapepod binary itself, and for the extension connectivity, expose the server with a bi-directional event streaming grpc service, so multiple clients can connect and subsribe to the events raised from the escape pod server, and also respond with a respose of whether they have processed/will be processing the given intent or not.
    Conceptual-wise this would be similar principle to current event streaming implemented in original anki API, which as well publishes various events for multiple clients to subsribe for, never knowing which client will actually perform any further processing of such event and which don't.
  2. to re-implement this 'escape-pod-extension' as a one static 'extension server' to the 'escapepod' binary (so the rpi will always have configured this one as a static extension endpoint), but instead of direct processing the intents itself, add the new server into this to actually change this to be kind of double-server 'proxy hub' awaiting the intents from ep, and forwarding them into the bi-directional stream for various clients.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions