ASU-cubesat / cfdp-rs

A rust implementation of the CCSDS File Delivery Protocol (CFDP)
MIT License
9 stars 2 forks source link

Move Daemon and PDUs/configs to separate crates #52

Closed mkolopanis closed 8 months ago

mkolopanis commented 1 year ago

I've run into this issue a few times working on a mission of mine. Where I want a utility crate or some methods to use parts of the configuration options like TransmissionMode or have access to Primitives. In the current scheme this adds the entire daemon code as a dependency, including the all tokio features.

Maybe it is worth breaking the "executable" parts into a separate crate. My current thought is that the daemon and transaction code code move to a crate like cfdp-daemon but leave basically all the public points of the code (enums, structs, etc) in cfdp-core.

This would be a big structural change, but considering that only @xpromache and myself seem to use this at the moment maybe it is worth it to do sooner. Thoughts would be appreciated if you have a strong opinion @xpromache.

xpromache commented 1 year ago

Your proposal is fine with me, I don't have a strong opinion about it :)

In the project where I use CFDP, I have a simplified config which does not use any of the CFDP constructs. For example TransmissionMode is hardcoded to Acknowledged. Then in the crate which loads the daemon, I convert from my simplified config to the CFDP constructs. But I will have no problem if you split it into two crates.