1 /* 2 mkvmerge -- utility for splicing together matroska files 3 from component media subtypes 4 5 Distributed under the GPL v2 6 see the file COPYING for details 7 or visit https://www.gnu.org/licenses/old-licenses/gpl-2.0.html 8 9 IO callback class definitions 10 11 Written by Moritz Bunkus <moritz@bunkus.org>. 12 */ 13 14 #pragma once 15 16 #include "common/common_pch.h" 17 18 class mm_proxy_io_private_c; 19 class mm_proxy_io_c: public mm_io_c { 20 protected: 21 MTX_DECLARE_PRIVATE(mm_proxy_io_private_c) 22 23 explicit mm_proxy_io_c(mm_proxy_io_private_c &p); 24 25 public: 26 mm_proxy_io_c(mm_io_cptr const &proxy_io); 27 virtual ~mm_proxy_io_c(); 28 29 virtual void setFilePointer(int64_t offset, libebml::seek_mode mode=libebml::seek_beginning) override; 30 virtual uint64_t getFilePointer() override; 31 virtual void clear_eof() override; 32 virtual bool eof() override; 33 virtual void close() override; 34 virtual std::string get_file_name() const override; 35 virtual mm_io_c *get_proxied() const; 36 37 protected: 38 virtual uint32_t _read(void *buffer, size_t size) override; 39 virtual size_t _write(const void *buffer, size_t size) override; 40 41 void close_proxy_io(); 42 }; 43