Given two stream-oriented I/O objects in Asio, what is the simplest way to forward data from one device to the other in both directions? Could this be done with boost::iostreams::combination or boost::iostreams:copy perhaps? Or is a manual approach better--waiting for data on each end and then writing it out to the other stream? In other words,how does one leverage Boost and Asio to produce a minimal amount of code?
An example application would be streaming between a serial port and TCP socket as requested in this question.