| Exiv2

Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
Exiv2::RemoteIo::Impl Class Referenceabstract

Internal Pimpl abstract structure of class RemoteIo. More...

## Public Member Functions
| Impl (const std::string &url, size_t blockSize)
| Constructor.
virtual | ~Impl ()
| Destructor. Releases all managed memory.
| Impl (const Impl &)=delete
Impl & | operator= (const Impl &)=delete
virtual int64_t | getFileLength ()=0
| Get the length (in bytes) of the remote file.
virtual void | getDataByRange (size_t lowBlock, size_t highBlock, std::string &response)=0
| Get the data by range.
virtual void | writeRemote (const byte *data, size_t size, size_t from, size_t to)=0
| Submit the data to the remote machine. The data replace a part of the remote file. The replaced part of remote file is indicated by from and to parameters.
virtual size_t | populateBlocks (size_t lowBlock, size_t highBlock)
| Get the data from the remote machine and write them to the memory blocks.

## Public Attributes
std::string | path_
| (Standard) path
size_t | blockSize_
| Size of the block memory.
BlockMap * | blocksMap_ {nullptr}
| An array contains all blocksMap.
size_t | size_ {0}
| The file size.
size_t | idx_ {0}
| Index into the memory area.
bool | isMalloced_ {false}
| Was the blocksMap_ allocated?
bool | eof_ {false}
| EOF indicator.
Protocol | protocol_
| the protocol of url
size_t | totalRead_ {0}
| bytes requested from host

## Detailed Description

Internal Pimpl abstract structure of class RemoteIo.

## Member Function Documentation

## ◆ getDataByRange()

virtual void Exiv2::RemoteIo::Impl::getDataByRange | ( | size_t | lowBlock,
|  | size_t | highBlock,
|  | std::string & | response )
| pure virtual

Get the data by range.

Parameters

  lowBlock | The start block index.
  highBlock | The end block index.
  response | The data from the server.

Exceptions

  Error | if the server returns the error code.

Note
  Set lowBlock = -1 and highBlock = -1 to get the whole file content.

Referenced by populateBlocks().

## ◆ getFileLength()

virtual int64_t Exiv2::RemoteIo::Impl::getFileLength | ( |  | ) |
| pure virtual

Get the length (in bytes) of the remote file.

Returns
  Return -1 if the size is unknown. Otherwise it returns the length of remote file (in bytes).

Exceptions

  Error | if the server returns the error code.

## ◆ populateBlocks()

size_t Exiv2::RemoteIo::Impl::populateBlocks | ( | size_t | lowBlock,
|  | size_t | highBlock )
| virtual

Get the data from the remote machine and write them to the memory blocks.

Parameters

  lowBlock | The start block index.
  highBlock | The end block index.

Returns
  Number of bytes written to the memory block successfully

Exceptions

  Error | if it fails.

References blockSize_, blocksMap_, getDataByRange(), and size_.

## ◆ writeRemote()

virtual void Exiv2::RemoteIo::Impl::writeRemote | ( | const byte * | data,
|  | size_t | size,
|  | size_t | from,
|  | size_t | to )
| pure virtual

Submit the data to the remote machine. The data replace a part of the remote file. The replaced part of remote file is indicated by from and to parameters.

Parameters

  data | The data are submitted to the remote machine.
  size | The size of data.
  from | The start position in the remote file where the data replace.
  to | The end position in the remote file where the data replace.

Note
  The write access is available on some protocols. HTTP and HTTPS require the script file on the remote machine to handle the data. SSH requires the permission to edit the file.

Exceptions

  Error | if it fails.

References Exiv2::RemoteIo::size().

The documentation for this class was generated from the following file:

- basicio.cpp