A standalone VXI11 server written in rust.
This project was originally designed to integrate directly with rusty-visa (note: the repo is private and I don't have permission to change that). The project was migrated to its own crate for various reasons which are discussed in problems.
At the moment it relies fairly heavily on projects from others:
An important note: This is still a work in progress and at the moment, does not actually stand up a VXI11 server to interact with. It does however implement an XDR-RPC server to support a VXI11 service.
This project was unfortunately, improperly scoped. Before work started I felt very confident in my ability to complete the project within the term. In retrospect, that was very apparently not the case. A large part of starting was understanding how to properly integrate the module with the rusty-visa library. After spending a majority of the term attempting to integrate the VXI11 module into the rusty-visa library and failing, I made the decision to transition it a standalone crate.
This brought about other challenges. I was not able to use any of the utility functions available within the rusty-visa library. To try and get complete the project by the deadline, I ended up using a handful of third-party libraries and tools (see references). Most notably, rust-xdr
and serde-xdr
. rust-xdr
is a code generation tool that allows generating rust code from XDR definition files. serde-xdr
is a library for serializing and deserializing XDR data from and into rust, respectively. Both of these have not been updated in ~3 years and it showed. The rust-xdr
tool generated an acceptable architecture but required that a majority of "bones" be rewritten. Annoyingly, it heavily leverages several deprecated tokio
crates such that upgrading to the latest versions would be approximately as much work as rewriting from scratch. It was as similar story with serde-xdr
as well, the version bundled with the tool was severely antiquantid in comparison to the latest version of rust. I decided to fork and rewrite a majority of the library and was successful in doing so (it can be found here).
As an aside, based off of the project proposal given earlier this term, this project is a failure. However, the work is still important to me, and I plan to continue working on it.
cargo build
Note: The binary produced currently doesn't do anything.