NCBI C++ ToolKit
multi_writer.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: multi_writer.cpp 33815 2007-05-04 17:18:18Z kazimird $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: Maxim Didenko
27  *
28  *
29  */
30 
31 #include <ncbi_pch.hpp>
32 #include <corelib/ncbistr.hpp>
33 #include <corelib/ncbimisc.hpp>
34 #include <util/util_exception.hpp>
35 #include <util/multi_writer.hpp>
36 
38 
39 CMultiWriter::CMultiWriter(const list<CNcbiOstream*>& dest)
40  : m_Dest(dest)
41 {
42 }
43 
44 
46 {
47 }
48 
49 
51  size_t count,
52  size_t* bytes_written)
53 {
54  NON_CONST_ITERATE( list<CNcbiOstream*>, it, m_Dest) {
55  (*it)->write((const char*)buf, count);
56  }
57  if ( bytes_written ) *bytes_written = count;
58  return eRW_Success;
59 }
60 
62 {
63  NON_CONST_ITERATE( list<CNcbiOstream*>, it, m_Dest) {
64  (*it)->flush();
65  }
66  return eRW_Success;
67 
68 }
69 
virtual ERW_Result Flush(void)
Flush pending data (if any) down to the output device.
CMultiWriter(const list< CNcbiOstream * > &streams)
list< CNcbiOstream * > m_Dest
virtual ERW_Result Write(const void *buf, size_t count, size_t *bytes_written=0)
Write up to "count" bytes from the buffer pointed to by the "buf" argument onto the output device.
virtual ~CMultiWriter()
The NCBI C++ standard methods for dealing with std::string.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
Definition: ncbimisc.hpp:822
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
ERW_Result
Result codes for I/O operations.
@ eRW_Success
Everything is okay, I/O completed.
char * buf
Miscellaneous common-use basic types and functionality.
Modified on Thu May 02 14:31:00 2024 by modify_doxy.py rev. 669887