bionic (2) diststream.2rheolef.gz

Provided by: librheolef-dev_6.7-6_amd64 bug

NAME

       idiststream, odiststream - distributed interface for large data streams

DESCRIPTION

       This  class  provides  a  parallel  and  distributed  stream  interface  for large data management.  File
       decompresion is assumed using gzip and a recursive seach in a directory list is provided for input.

            odiststream foo("NAME", "suffix");

       is similar

            ofstream foo("NAME.suffix").

       The main difference is that writting to ofstream is executed on all processes  while  odiststream  manage
       nicely  the  multi-process  environment.   For  convenience,  the standard streams cin, cout and cerr are
       extended to din, dout and derr.  Notice that, as orheostream (see rheostream(2)), if NAME  does  not  end
       with  `.suffix',  then `.suffix' is automatically added.  By default, compression is performed on the fly
       with gzip, adding an additional `.gz' suffix.  The flush action is nicely handled in compression mode:

            foo.flush();

       This feature allows intermediate results to be available during long computations.  The  compression  can
       be deactivated while opening a file by an optional argument:

            odiststream foo("NAME", "suffix", io::nogz);

       An  existing  compressed file can be reopen in append mode: new results will be appended at the end of an
       existing file:

            odiststream foo("NAME", "suffix", io::app);

       Conversely,

               irheostream foo("NAME","suffix");

       is similar to

               ifstream foo("NAME.suffix").

       Also idiststream manage nicely the  multi-process  environment.   However,  we  look  at  a  search  path
       environment  variable  RHEOPATH in order to find NAME while suffix is assumed.  Moreover, gzip compressed
       files, ending with the `.gz' suffix is assumed, and decompression is done.

IMPLEMENTATION

       class odiststream {
       public:
         typedef std::size_t size_type;

       // allocators/deallocators:

         odiststream();
         odiststream (std::string filename, std::string suffix = "",
                     io::mode_type mode = io::out, const communicator& comm = communicator());
         odiststream (std::string filename,
                     io::mode_type mode, const communicator& comm = communicator());
         odiststream (std::string filename, std::string suffix, const communicator& comm);
         odiststream (std::string filename, const communicator& comm);
         odiststream(std::ostream& os, const communicator& comm = communicator());
         ~odiststream();

       // modifiers:

          void open (std::string filename, std::string suffix = "",
                    io::mode_type mode = io::out, const communicator& comm = communicator());
          void open (std::string filename,
                    io::mode_type mode, const communicator& comm = communicator());
          void open (std::string filename, std::string suffix,
                    const communicator& comm);
          void open (std::string filename, const communicator& comm);
          void flush();
          void close();

       // accessors:

          const communicator& comm() const { return _comm; }
          bool good() const;
          operator bool() const { return good(); }
          static size_type io_proc();

       // internals:

          std::ostream& os();
          bool nop();

       protected:
       // data:
          std::ostream* _ptr_os;
          bool          _use_alloc;
          communicator  _comm;
       };

IMPLEMENTATION

       class idiststream {
       public:
         typedef std::size_t size_type;

       // allocators/deallocators:

         idiststream();
         idiststream (std::istream& is, const communicator& comm = communicator());
         idiststream (std::string filename, std::string suffix = "",
                    const communicator& comm = communicator());
         ~idiststream();

       // modifiers:

         void open (std::string filename, std::string suffix = "",
                    const communicator& comm = communicator());
         void close();

       // accessors:

         const communicator& comm() const { return _comm; }
         bool good() const;
         operator bool() const { return good(); }
         static size_type io_proc();

       // internals:

         std::istream& is();
         bool nop();
         bool do_load();

       protected:
       // data:
         std::istream* _ptr_is;
         bool          _use_alloc;
         communicator  _comm;
       };

SEE ALSO

       rheostream(2)