Libosmium
2.16.0
Fast and flexible C++ library for working with OpenStreetMap data
|
Go to the documentation of this file. 1 #ifndef OSMIUM_IO_COMPRESSION_HPP
2 #define OSMIUM_IO_COMPRESSION_HPP
36 #include <osmium/io/detail/read_write.hpp>
49 #include <system_error>
81 virtual
void write(const
std::
string& data) = 0;
83 virtual
void close() = 0;
112 virtual
std::
string read() = 0;
114 virtual
void close() = 0;
168 std::string error_message{
"Support for compression '"};
170 error_message +=
"' not compiled into this binary";
195 compression_map_type::value_type cc{compression,
197 create_decompressor_fd,
198 create_decompressor_buffer)};
203 template <
typename... TArgs>
206 return std::unique_ptr<osmium::io::Compressor>(std::get<0>(callbacks)(std::forward<TArgs>(args)...));
211 auto p = std::unique_ptr<osmium::io::Decompressor>(std::get<1>(callbacks)(fd));
218 return std::unique_ptr<osmium::io::Decompressor>(std::get<2>(callbacks)(buffer, size));
249 void write(
const std::string& data)
override {
250 osmium::io::detail::reliable_write(
m_fd, data.data(), data.size());
265 osmium::io::detail::reliable_fsync(fd);
267 osmium::io::detail::reliable_close(fd);
321 buffer.resize(std::string::size_type(nread));
334 osmium::io::detail::reliable_close(fd);
351 inline bool get_registered_no_compression() noexcept {
352 return registered_no_compression;
361 #endif // OSMIUM_IO_COMPRESSION_HPP
~NoCompressor() noexcept override
Definition: compression.hpp:241
std::size_t offset() const noexcept
Definition: compression.hpp:124
Compressor & operator=(const Compressor &)=default
NoCompressor & operator=(const NoCompressor &)=delete
static CompressionFactory & instance()
Definition: compression.hpp:184
fsync m_fsync
Definition: compression.hpp:59
CompressionFactory()=default
std::size_t file_size() const override
Definition: compression.hpp:271
std::function< osmium::io::Decompressor *(const char *, std::size_t)> create_decompressor_type_buffer
Definition: compression.hpp:147
~NoDecompressor() noexcept override
Definition: compression.hpp:301
Definition: compression.hpp:57
int m_fd
Definition: compression.hpp:279
void close() override
Definition: compression.hpp:330
Definition: compression.hpp:91
NoDecompressor & operator=(const NoDecompressor &)=delete
int m_fd
Definition: compression.hpp:226
std::map< const osmium::io::file_compression, callbacks_type > compression_map_type
Definition: compression.hpp:155
std::size_t m_offset
Definition: compression.hpp:282
std::unique_ptr< osmium::io::Decompressor > create_decompressor(const osmium::io::file_compression compression, const char *buffer, const std::size_t size) const
Definition: compression.hpp:216
Compressor(const fsync sync) noexcept
Definition: compression.hpp:69
virtual void write(const std::string &data)=0
Definition: compression.hpp:277
compression_map_type m_callbacks
Definition: compression.hpp:157
std::size_t m_file_size
Definition: compression.hpp:225
virtual std::size_t file_size() const
Definition: compression.hpp:85
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
@ input_buffer_size
Definition: compression.hpp:99
Definition: compression.hpp:223
NoCompressor(const int fd, const fsync sync)
Definition: compression.hpp:230
std::unique_ptr< osmium::io::Compressor > create_compressor(const osmium::io::file_compression compression, TArgs &&... args) const
Definition: compression.hpp:204
std::unique_ptr< osmium::io::Decompressor > create_decompressor(const osmium::io::file_compression compression, const int fd) const
Definition: compression.hpp:209
std::size_t file_size(int fd)
Definition: file.hpp:109
NoDecompressor(const char *buffer, const std::size_t size)
Definition: compression.hpp:290
virtual std::string read()=0
Decompressor & operator=(const Decompressor &)=delete
fsync
Definition: writer_options.hpp:51
std::tuple< create_compressor_type, create_decompressor_type_fd, create_decompressor_type_buffer > callbacks_type
Definition: compression.hpp:153
file_compression
Definition: file_compression.hpp:42
virtual ~Decompressor() noexcept=default
void write(const std::string &data) override
Definition: compression.hpp:249
const char * as_string(file_compression compression)
Definition: file_compression.hpp:48
std::size_t m_buffer_size
Definition: compression.hpp:281
std::function< osmium::io::Decompressor *(int)> create_decompressor_type_fd
Definition: compression.hpp:146
const char * m_buffer
Definition: compression.hpp:280
const callbacks_type & find_callbacks(const osmium::io::file_compression compression) const
Definition: compression.hpp:161
Definition: location.hpp:551
std::string read() override
Definition: compression.hpp:309
Definition: compression.hpp:141
CompressionFactory & operator=(const CompressionFactory &)=delete
std::function< osmium::io::Compressor *(int, fsync)> create_compressor_type
Definition: compression.hpp:145
void set_file_size(const std::size_t size) noexcept
Definition: compression.hpp:120
void set_offset(const std::size_t offset) noexcept
Definition: compression.hpp:128
~CompressionFactory() noexcept=default
bool register_compression(osmium::io::file_compression compression, const create_compressor_type &create_compressor, const create_decompressor_type_fd &create_decompressor_fd, const create_decompressor_type_buffer &create_decompressor_buffer)
Definition: compression.hpp:189
std::atomic< std::size_t > m_file_size
Definition: compression.hpp:93
bool do_fsync() const noexcept
Definition: compression.hpp:63
void close() override
Definition: compression.hpp:254
std::size_t file_size() const noexcept
Definition: compression.hpp:116
NoDecompressor(const int fd)
Definition: compression.hpp:286
std::atomic< std::size_t > m_offset
Definition: compression.hpp:94