How should you implement beastly/complicated network protocols?


Let’s say you want to write a Rust client for an old/complicated/legacy network protocol. CORBA is a perfect example: it’s a Goliath standard specifying everything from method names for its implementors, to a generic message protocol (GIOP), to a network protocol (IIOP), to a network “object” standard; it’s snuck into several industries; it’s only supported by a handful of large, unwieldy C++ libraries; and only the network bits are relevant anymore.

Setting aside the method names standard (& everything else), what is the best way to implement such a protocol in Rust? There are a couple of network libraries, like tokio & mio, but not many examples on how to use them to implement leviathans like CORBA. How would one build the necessary bits of CORBA’s type model, or the layers of CORBA’s object model, with them?