|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2008-05-21 02:33:03
on Tue May 20 2008, "Adrovic, Ervin" <ervin.adrovic-AT-hp.com> wrote:
> Hi,
>
> I would like to copy binary files from host A to host B. That for I was thinking to use boost MPI and open file on one side read buffer and send it to other side.
>
> bool SendFile(std::ifstream* inputFile)
> {
> bool ret = true;
> if (inputFile != NULL)
> {
> CData data;
> while (inputFile->eof() == false)
> {
> inputFile->read(data.GetDataBuffer(), data.GetDataBufferSize());
> std::streamsize nRead = inputFile->gcount ();
> data.SetDataLen(nRead);
> GetWorld().send(1, MSG_CDATA, data);
> }
> inputFile->close();
> }
>
> return ret;
> }
>
> To complicate a litle bit I may use filters (ZIP, Encrypt, ...) for this operation.
>
> Any idea/sample hoe to implement that?
> Is it possibale to do steaming using MPI?
The only thing you need in order to ship bytes over Boost.MPI is a
Boost.Serialization-compatible interface to those bytes.
I would build a small serializable wrapper that, when serialized out to
an Archive, reads the bytes to be archived from the underlying
ifstream. Then you do the opposite procedure on the receiving end.
HTH,
-- Dave Abrahams BoostPro Computing http://www.boostpro.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk