27 #include "eckit/io/DataHandle.h"
28 #include "eckit/exception/Exceptions.h"
29 #include "eckit/filesystem/PathName.h"
30 #include "eckit/io/FileDescHandle.h"
31 #include "eckit/config/Resource.h"
45 template <
typename ITERATOR>
49 rowsBufferSize_(
eckit::Resource<
long>(
"$ODB_ROWS_BUFFER_SIZE;-rowsBufferSize;rowsBufferSize", DEFAULT_ROWS_BUFFER_SIZE)),
50 openDataHandle_(true),
51 deleteDataHandle_(true)
54 template <
typename ITERATOR>
58 rowsBufferSize_(
eckit::Resource<
long>(
"$ODB_ROWS_BUFFER_SIZE;-rowsBufferSize;rowsBufferSize", DEFAULT_ROWS_BUFFER_SIZE)),
59 openDataHandle_(true),
60 deleteDataHandle_(true)
62 if (
path_ ==
"/dev/stdout" ||
path_ ==
"stdout")
64 eckit::Log::info() <<
"Writing to stdout" << std::endl;
70 template <
typename ITERATOR>
74 rowsBufferSize_(
eckit::Resource<
long>(
"$ODB_ROWS_BUFFER_SIZE;-rowsBufferSize;rowsBufferSize", DEFAULT_ROWS_BUFFER_SIZE)),
75 openDataHandle_(openDataHandle),
76 deleteDataHandle_(deleteDataHandle)
79 template <
typename ITERATOR>
83 rowsBufferSize_(
eckit::Resource<
long>(
"$ODB_ROWS_BUFFER_SIZE;-rowsBufferSize;rowsBufferSize", DEFAULT_ROWS_BUFFER_SIZE)),
84 openDataHandle_(openDataHandle),
85 deleteDataHandle_(false)
88 template <
typename ITERATOR>
91 template <
typename ITERATOR>
94 eckit::DataHandle *dh = 0;
107 template <
typename ITERATOR>
110 eckit::Length estimatedLength = 10*1024*1024;
111 eckit::DataHandle *h = append
114 return new ITERATOR(*
this, h,
false);
eckit::DataHandle * writeToFile(const eckit::PathName &, const eckit::Length &=eckit::Length(0), bool openDataHandle=true)
eckit::DataHandle * appendToFile(const eckit::PathName &, const eckit::Length &=eckit::Length(0), bool openDataHandle=true)
static ODBAPISettings & instance()
IteratorProxy< ITERATOR, Writer > iterator
const eckit::PathName path_
iterator begin(bool openDataHandle=true)
eckit::DataHandle * dataHandle_
ITERATOR * createWriteIterator(eckit::PathName, bool append=false)