This approach is so much nicer than the threading/queuing approaches we used to have. One async showed up, a ton of the work go pulled out of protocol handing and distributed subsystem sync efforts.
Long lived the multi threaded C++ server buffer! Today, async beging to rule the roost.
It kind of fails with certain protocols. I once wrote an async MSSQL client for Rust, and some data doesn’t say its size in the headers. So this kind of forced the business logic to be async too.
Yeah, those durn data size fields. At first you’re like “why would you do this? It’s specified in the spec, right?” Then you start consuming the data stream and go “oh, yeah need this”.
I was doing some driver work for a real time location tracking board. The serial stream protocol was very well documented and designed. Plenty of byte length count fields, though.