diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/Foundation/include/Poco/FileStream_POSIX.h | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/FileStream_POSIX.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/FileStream_POSIX.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/FileStream_POSIX.h b/contrib/libs/poco/Foundation/include/Poco/FileStream_POSIX.h new file mode 100644 index 0000000000..f5fa25cb8a --- /dev/null +++ b/contrib/libs/poco/Foundation/include/Poco/FileStream_POSIX.h @@ -0,0 +1,72 @@ +// +// FileStream_POSIX.h +// +// Library: Foundation +// Package: Streams +// Module: FileStream +// +// Definition of the FileStreamBuf, FileInputStream and FileOutputStream classes. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_FileStream_POSIX_INCLUDED +#define Foundation_FileStream_POSIX_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/BufferedBidirectionalStreamBuf.h" +#include <istream> +#include <ostream> + + +namespace Poco { + + +class Foundation_API FileStreamBuf: public BufferedBidirectionalStreamBuf + /// This stream buffer handles Fileio +{ +public: + FileStreamBuf(); + /// Creates a FileStreamBuf. + + ~FileStreamBuf(); + /// Destroys the FileStream. + + void open(const std::string& path, std::ios::openmode mode); + /// Opens the given file in the given mode. + + bool close(); + /// Closes the File stream buffer. Returns true if successful, + /// false otherwise. + + std::streampos seekoff(std::streamoff off, std::ios::seekdir dir, std::ios::openmode mode = std::ios::in | std::ios::out); + /// Change position by offset, according to way and mode. + + std::streampos seekpos(std::streampos pos, std::ios::openmode mode = std::ios::in | std::ios::out); + /// Change to specified position, according to mode. + +protected: + enum + { + BUFFER_SIZE = 4096 + }; + + int readFromDevice(char* buffer, std::streamsize length); + int writeToDevice(const char* buffer, std::streamsize length); + +private: + std::string _path; + int _fd; + std::streamoff _pos; +}; + + +} // namespace Poco + + +#endif // Foundation_FileStream_WIN32_INCLUDED |