Electrostat-Lab / Electrostat-Lab/Electrostatic-Sandbox

[HID-API] Introducing the DataProcessingFilter API as a part of the pipe and filter architecture

Open
#38 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C
Stars
9
Forks
5
Avg merge
20m
Merged PRs (30d)
1

Description

According to the `data-pipe architectural model`, it's stated from the functional requirements to build a successful API, that the data transforming components could be _Preprocessing filters_, which entails components that are bound to the receiving procedural interface (e.g., data decryptors, and data decoders), and _Postprocessing filters_, which entails components that are bound to the transmitting procedural interface (e.g., data encryptors, and data encoders).

Concurrency, through the process/thread view of the design analysis, should be considered, and it will become handy to use [Jector](https://github.com/Electrostat-Lab/Jector/tree/master).

The HID-API should provide the following to achieve this:
* _DataProcessingFilter_ interface: encapsulating filter properties (e.g., name of executing thread), and other meta-data.
* _DataFilterListener_ interface: provides a standard strategy pattern for the data filter components.
* Incorporate the _TaskExecutorManager_ from `Jector-API` in the HID-API; to execute filters as tasks on pre-defined threads if existing or create a new thread pool to execute data filters.
* _PreprocessingFilter_ interface (optional if a specific usage is attained).
* _PostprocessingFilter_ interface (optional if a specific usage is attained).

Note: Data filters could be also designated as `PretransmissionFilter`s and `PostreceiveFilter`s.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.