Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 3 additions & 12 deletions source/src/utility/io/orstream.hh
Original file line number Diff line number Diff line change
Expand Up @@ -58,19 +58,10 @@ protected: // Creation
= default;


private: // Creation
public: // Creation (deleted)


/// @brief Copy constructor: Undefined
orstream( orstream const & );


private: // Methods: assignment


/// @brief Copy assignment: Undefined
orstream &
operator =( orstream const & );
orstream( orstream const & ) = delete;
orstream & operator =( orstream const & ) = delete;


public: // Methods: conversion
Expand Down
31 changes: 14 additions & 17 deletions source/src/utility/io/ozstream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ ozstream::open_append_if_existed( std::string const& filename_a, std::stringstre
#ifdef USEMPI
// std::cout << "MPI_Reroute " << (bMPI_reroute_stream_ ? " active " : " not-active ") << std::endl;
if ( bMPI_reroute_stream_ ) { // this is switched via call to static function enable_MPI_reroute()
mpi_stream_p_ = new mpi_stream::mpi_ostream( filename_a, mpi_FileBuf_master_rank_, preprinted_header, true );
if ( ( !mpi_stream_p_ ) || ( !( *mpi_stream_p_ ) ) ) {
mpi_stream_p_.reset( new mpi_stream::mpi_ostream( filename_a, mpi_FileBuf_master_rank_, preprinted_header, true ) );
if ( !( *mpi_stream_p_ ) ) {
compression_ = NONE;
} else compression_ = UNCOMPRESSED;
return;
Expand Down Expand Up @@ -94,8 +94,8 @@ ozstream::open(
// std::cout << "MPI_Reroute " << (bMPI_reroute_stream_ ? " active " : " not-active ") << std::endl;
if ( bMPI_reroute_stream_ ) {
std::stringstream no_header;
mpi_stream_p_ = new mpi_stream::mpi_ostream( filename_, mpi_FileBuf_master_rank_, no_header, open_mode & ios::app );
if ( ( !mpi_stream_p_ ) || ( !( *mpi_stream_p_ ) ) ) {
mpi_stream_p_.reset( new mpi_stream::mpi_ostream( filename_, mpi_FileBuf_master_rank_, no_header, open_mode & ios::app ) );
if ( !( *mpi_stream_p_ ) ) {
compression_ = NONE;
} else {
compression_ = UNCOMPRESSED;
Expand Down Expand Up @@ -139,12 +139,10 @@ ozstream::open(

// Attach zip_ostream to ofstream if gzip file
if ( compression_ == GZIP ) {
// zip_stream_p_ deleted by close() above so don't have to here
zip_stream_p_ = new zip_ostream( of_stream_, true, static_cast< size_t >( Z_DEFAULT_COMPRESSION ), zlib_stream::DefaultStrategy, 15, 8, buffer_size_ );
if ( ( !zip_stream_p_ ) || ( !( *zip_stream_p_ ) ) ||
( !zip_stream_p_->is_gzip() ) ) { // zip_stream not in good state
if ( zip_stream_p_ ) delete zip_stream_p_;
zip_stream_p_ = nullptr;
// zip_stream_p_ cleared by close() above so don't have to here
zip_stream_p_.reset( new zip_ostream( of_stream_, true, static_cast< size_t >( Z_DEFAULT_COMPRESSION ), zlib_stream::DefaultStrategy, 15, 8, buffer_size_ ) );
if ( !( *zip_stream_p_ ) || !zip_stream_p_->is_gzip() ) { // zip_stream not in good state
zip_stream_p_.reset();
of_stream_.close();
// Set failbit so failure can be detected
of_stream_.setstate( ios_base::failbit );
Expand Down Expand Up @@ -175,8 +173,8 @@ ozstream::open_append( std::string const & filename_a )
// std::cout << "MPI_Reroute " << (bMPI_reroute_stream_ ? " active " : " not-active ") << std::endl;
if ( bMPI_reroute_stream_ ) {
std::stringstream no_header;
mpi_stream_p_ = new mpi_stream::mpi_ostream( filename_, mpi_FileBuf_master_rank_, no_header, true );
if ( ( !mpi_stream_p_ ) || ( !( *mpi_stream_p_ ) ) ) {
mpi_stream_p_.reset( new mpi_stream::mpi_ostream( filename_, mpi_FileBuf_master_rank_, no_header, true ) );
if ( !( *mpi_stream_p_ ) ) {
compression_ = NONE;
} else compression_ = UNCOMPRESSED;
return;
Expand Down Expand Up @@ -208,11 +206,10 @@ ozstream::open_append( std::string const & filename_a )

// Attach zip_ostream to ofstream if gzip file
if ( compression_ == GZIP ) {
// zip_stream_p_ deleted by close() above so don't have to here
zip_stream_p_ = new zip_ostream( of_stream_, true, static_cast< size_t >( Z_DEFAULT_COMPRESSION ), zlib_stream::DefaultStrategy, 15, 8, buffer_size_ );
if ( ( !zip_stream_p_ ) || ( !( *zip_stream_p_ ) ) ||
( !zip_stream_p_->is_gzip() ) ) { // zip_stream not in good state
delete zip_stream_p_; zip_stream_p_ = nullptr;
// zip_stream_p_ cleared by close() above so don't have to here
zip_stream_p_.reset( new zip_ostream( of_stream_, true, static_cast< size_t >( Z_DEFAULT_COMPRESSION ), zlib_stream::DefaultStrategy, 15, 8, buffer_size_ ) );
if ( !( *zip_stream_p_ ) || !zip_stream_p_->is_gzip() ) { // zip_stream not in good state
zip_stream_p_.reset();
of_stream_.close();
// Set failbit so failure can be detected
of_stream_.setstate( ios_base::failbit );
Expand Down
20 changes: 9 additions & 11 deletions source/src/utility/io/ozstream.hh
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@

// C++ headers
#include <fstream>
#include <memory>

namespace utility {
namespace io {
Expand Down Expand Up @@ -438,15 +439,14 @@ public: // Methods: i/o
#endif
if ( zip_stream_p_ ) {
zip_stream_p_->zflush_finalize();
delete zip_stream_p_; zip_stream_p_ = nullptr;
zip_stream_p_.reset();
}
of_stream_.close();
of_stream_.clear();
if ( mpi_stream_p_ ) {
mpi_stream_p_->close();
mpi_stream_p_->clear();
delete mpi_stream_p_;
mpi_stream_p_ = nullptr;
mpi_stream_p_.reset();
}
compression_ = NONE;
filename_.clear();
Expand Down Expand Up @@ -692,8 +692,8 @@ private: // buffer management
allocate_assign_char_buffer()
{
if ( !char_buffer_p_ && !of_stream_.is_open() ) {
char_buffer_p_ = new char[ buffer_size_ ];
of_stream_.rdbuf()->pubsetbuf( char_buffer_p_, buffer_size_ );
char_buffer_p_.reset( new char[ buffer_size_ ] );
of_stream_.rdbuf()->pubsetbuf( char_buffer_p_.get(), buffer_size_ );

return true;
}
Expand All @@ -710,8 +710,7 @@ private: // buffer management
destroy_char_buffer()
{
if ( char_buffer_p_ && !of_stream_.is_open() ) {
delete [] char_buffer_p_;
char_buffer_p_ = nullptr;
char_buffer_p_.reset();

return true;
}
Expand Down Expand Up @@ -750,13 +749,12 @@ private: // Fields
std::streamsize buffer_size_;

/// @brief character buffer pointer (owning)
char * char_buffer_p_;
std::unique_ptr<char[]> char_buffer_p_;

/// @brief Zip file stream pointer (owning)
zlib_stream::zip_ostream *zip_stream_p_;
std::unique_ptr<zlib_stream::zip_ostream> zip_stream_p_;


mpi_stream::mpi_ostream *mpi_stream_p_;
std::unique_ptr<mpi_stream::mpi_ostream> mpi_stream_p_;

static bool bMPI_reroute_stream_;
static int mpi_FileBuf_master_rank_;
Expand Down