Skip to content
This repository has been archived by the owner on Dec 13, 2023. It is now read-only.

Commit

Permalink
[#3] Add todos
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Eltzschig <[email protected]>
  • Loading branch information
elfenpiff committed Oct 31, 2023
1 parent bb91d52 commit 6cf40f8
Showing 1 changed file with 37 additions and 5 deletions.
42 changes: 37 additions & 5 deletions todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,22 @@

# BEST PRACTICE

* Add `assert!()` in documentation example to replace simple unit tests
* Use `?` operator in documentation examples
* use `#` to hide boiler plate code in documentation

* Every posix wrapper/construct must be fully usable by just including
```
use my::construct::*;
```
Add `pub use ...` to achieve this.
Add `pub use ...` (re-export) to achieve this.
* Evaluate prelude, see: https://doc.rust-lang.org/beta/reference/names/preludes.html
* Never return `Err(...)`, always use `fail!` macro
* When to use what debug level
* TRACE - interesting application events
* DEBUG - only when the function returns a result that contains an error
* name it DBG_ERR
* information dedicated for the developer of the application
* TRACE - interesting application events, e.g. whenever a resource is created/destroyed
* DEBUG - only when the function returns a result that contains an error
* information dedicated for the user of the application
* INFO - some interesting stuff for the user
* WARN - warnings dedicated for the user of the application, the functionality is not
Expand All @@ -29,6 +31,8 @@
# BUGS
* discovery example deletes service
* unix datagram socket, sending credentials and file descriptors no longer works
* was introduced with rust 1.71.0
* activate unit test below again
Expand All @@ -50,6 +54,32 @@
* CTRL+c does not work in windows, all examples do not clean up
# Quality of Life improvement
* Evaluate and refactor basic error handling approach based on enums
* Evaluate crate log and tracing as backend for elkodon logger
* maybe as a feature so that user can select log backend easily
* Use `&str` and utf8 in `ServiceName`, there is no need for a length or ascii restriction
* Rename `enable_safe_overflow` into `set_safe_overflow` in `ServiceBuilder` `publish_subscribe`
* or maybe rename it into behavior: queue and ringbuffer, get inspired by crossbeam queues
* rename `publisher::loan` into `publisher::loan_uninit` and provide `publisher::loan` with default
constructed type
* provide `[T]` (slice) as special type for publisher
* `loan` and `loan_uninit` with alignment and number of Ts
* QoS feature for blocking publisher or pub/sub failures to perform custom
error handling or expert behavior
* explore implementation as trait
* explore implementation as callback
* Explore if it is useful to have the same service name for different messaging patterns
* separate them via internal suffix/prefix
* simple use case: pub/sub + event to notify subscriber to notify sample send
* would reduce error handling: connect to service with wrong messaging pattern
* Event TriggerId as enum to cover user id and file descriptors
* Introduce proc macro to generate types that can be sent via shm
* ensure that only these types are used for ipc transmission
# continue
* Fix platforms
Expand Down Expand Up @@ -267,6 +297,8 @@
* implement timedwait with gnu libc sem_clockwait
* ReadWriteMutex
* implement timedwait with gnu libc pthread_rwlock_clockrdlock. pthread_rwlock_clockwrlock
* Publisher delivers history only when calling send
* new subscriber may waits a long time when send is not called
# Future
Expand Down

0 comments on commit 6cf40f8

Please sign in to comment.