CZipStorage Class Reference
#include <ZipStorage.h>
List of all members.
|
Public Types |
| enum | SeekType { seekFromBeginning,
seekFromEnd,
seekCurrent
} |
| enum | State {
stateOpened = 0x0001,
stateReadOnly = 0x0002,
stateAutoClose = 0x0004,
stateExisting = 0x0008,
stateSegmented = 0x0010,
stateSplit = stateSegmented | 0x0020,
stateBinarySplit = stateSplit | 0x0040,
stateSpan = stateSegmented | 0x0080
} |
Public Member Functions |
| ZIP_SIZE_TYPE | AssureFree (ZIP_SIZE_TYPE uNeeded) |
| void | ChangeVolume () |
| void | ChangeVolume (ZIP_VOLUME_TYPE uNumber) |
| void | ChangeVolumeDec () |
| CZipString | Close (bool bWrite, bool bGetLastVolumeName) |
| void | FinalizeSegm () |
| void | Flush () |
|
void | FlushBuffers () |
| void | FlushFile () |
| ZIP_VOLUME_TYPE | GetCurrentVolume () const |
| ZIP_SIZE_TYPE | GetOccupiedSpace () const |
| ZIP_SIZE_TYPE | GetPosition () const |
| const CZipSplitNamesHandler * | GetSplitNamesHandler () const |
| CZipSplitNamesHandler * | GetSplitNamesHandler () |
|
void | Initialize () |
| bool | IsBinarySplit () const |
| bool | IsClosed (bool bArchive) const |
| bool | IsExisting () const |
| bool | IsExistingSegmented () const |
| bool | IsNewSegmented () const |
| bool | IsReadOnly () const |
| bool | IsRegularSplit () const |
| bool | IsSegmented () const |
| bool | IsSpanned () const |
| bool | IsSplit () const |
| void | NextVolume (ZIP_SIZE_TYPE uNeeded) |
| void | Open (LPCTSTR lpszPathName, int iMode, ZIP_SIZE_TYPE uVolumeSize) |
| void | Open (CZipAbstractFile &af, int iMode, bool bAutoClose) |
| DWORD | Read (void *pBuf, DWORD iSize, bool bAtOnce) |
| ULONGLONG | Seek (ULONGLONG lOff, SeekType iSeekType=seekFromBeginning) |
| void | SeekInBinary (ZIP_FILE_SIZE lOff, bool bSeekToBegin=false) |
| bool | SetSplitNamesHandler (CZipSplitNamesHandler *pNames, bool bAutoDelete) |
| void | UpdateSegmMode (ZIP_VOLUME_TYPE uLastVolume) |
| ZIP_SIZE_TYPE | VolumeLeft () const |
| void | Write (const void *pBuf, DWORD iSize, bool bAtOnce) |
Public Attributes |
| CZipAbstractFile * | m_pFile |
Static Public Attributes |
| static char | m_gszExtHeaderSignat [] |
Protected Member Functions |
| void | CallCallback (ZIP_SIZE_TYPE uNeeded, int iCode, CZipString szTemp) |
| CZipString | ChangeSpannedRead () |
| CZipString | ChangeSplitRead () |
| void | EmptyWriteBuffer () |
| DWORD | GetFreeInBuffer () const |
| ZIP_SIZE_TYPE | GetFreeVolumeSpace () const |
| ZIP_SIZE_TYPE | GetLastDataOffset () |
| ZIP_FILE_USIZE | LocateSignature (char *szSignature, ZIP_SIZE_TYPE uMaxDepth) |
| bool | OpenFile (LPCTSTR lpszName, UINT uFlags, bool bThrow=true) |
| CZipString | RenameLastFileInSplitArchive () |
| void | WriteInternalBuffer (const char *pBuf, DWORD uSize) |
Protected Attributes |
| int | m_iLocateBufferSize |
| int | m_iWriteBufferSize |
| CZipSegmCallback * | m_pSpanChangeVolumeFunc |
| CZipSegmCallback * | m_pSplitChangeVolumeFunc |
| CZipAutoBuffer | m_pWriteBuffer |
| ZIP_SIZE_TYPE | m_uBytesBeforeZip |
| DWORD | m_uBytesInWriteBuffer |
| ZIP_SIZE_TYPE | m_uBytesWritten |
| ZIP_SIZE_TYPE | m_uCurrentVolSize |
| ZIP_VOLUME_TYPE | m_uCurrentVolume |
| ZIP_SIZE_TYPE | m_uSplitData |
Friends |
|
class | CZipArchive |
|
class | CZipCentralDir |
Detailed Description
Represents the storage layer for an archive.
Member Enumeration Documentation
The direction of the seeking operation.
- See also:
- CZipStorage::Seek
- Enumerator:
-
| seekFromBeginning |
Start seeking from the beginning of a file. |
| seekFromEnd |
Start seeking from the end of a file. |
| seekCurrent |
Start seeking from the current position in the archive. This value can cause a volume change when a segmented archive is opened for reading. |
Storage state.
- Enumerator:
-
| stateOpened |
The storage file is opened. |
| stateReadOnly |
The storage file is opened as read-only. |
| stateAutoClose |
The storage file will be closed when the storage is closed. |
| stateExisting |
The storage file existed before opening. |
| stateSegmented |
The current archive is segmented. |
| stateSplit |
The current archive is split. |
| stateBinarySplit |
The current archive is binary split. |
| stateSpan |
The current archive is spanned. |
Member Function Documentation
| ZIP_SIZE_TYPE CZipStorage::AssureFree |
( |
ZIP_SIZE_TYPE |
uNeeded |
) |
|
Ensures than in a segmented archive, there is enough free space on the current volume.
- Parameters:
-
| uNeeded | The size of the required free space in bytes. |
- Returns:
- The number of free bytes on the current volume.
| void CZipStorage::CallCallback |
( |
ZIP_SIZE_TYPE |
uNeeded, |
|
|
int |
iCode, |
|
|
CZipString |
szTemp | |
|
) |
| | [protected] |
Calls the segmented callback object. Throws an exception if the callback method returns false.
- Parameters:
-
| uNeeded | The minimum number of free bytes required on the disk. |
| iCode | The code to be passed to the callback method. |
| szTemp | The string to be used as a filename (as an argument in the CZipException::Throw method) when an exception must be thrown. |
- See also:
- CZipArchive::SetSegmCallback
| CZipString CZipStorage::ChangeSpannedRead |
( |
|
) |
[protected] |
Changes a disk when processing a spanned archive.
| CZipString CZipStorage::ChangeSplitRead |
( |
|
) |
[protected] |
Changes a file when processing a split archive.
| void CZipStorage::ChangeVolume |
( |
|
) |
[inline] |
Changes the current volume to the next volume during extract operations.
| void CZipStorage::ChangeVolume |
( |
ZIP_VOLUME_TYPE |
uNumber |
) |
|
Changes the volume during extract operations.
- Parameters:
-
| uNumber | A zero-based number of the requested volume. |
| void CZipStorage::ChangeVolumeDec |
( |
|
) |
[inline] |
Changes the current volume to the previous volume during extract operations.
| CZipString CZipStorage::Close |
( |
bool |
bWrite, |
|
|
bool |
bGetLastVolumeName | |
|
) |
| | |
Closes the storage.
- Parameters:
-
| bWrite | Set to false, if the storage should not perform any write operations. |
| bGetLastVolumeName | Set to true, if the storage should return the path. |
- Returns:
- The file path of the archive or of the last volume in the archive. Only if bGetLastVolumeName is set to
true.
| void CZipStorage::EmptyWriteBuffer |
( |
|
) |
[inline, protected] |
Flushes without writing. It can be used only on not segmented archives.
| void CZipStorage::FinalizeSegm |
( |
|
) |
|
Closes a segmented archive in creation and reopens it as an existing segmented archive. No modifications are allowed afterwards. The archive may also turn out to be a not segmented archive.
| void CZipStorage::Flush |
( |
|
) |
|
Flushes the data from the read buffer to the disk.
| void CZipStorage::FlushFile |
( |
|
) |
[inline] |
Forces any data remaining in the file buffer to be written to the disk.
| ZIP_VOLUME_TYPE CZipStorage::GetCurrentVolume |
( |
|
) |
const [inline] |
Returns a zero-based number of the current volume.
| DWORD CZipStorage::GetFreeInBuffer |
( |
|
) |
const [inline, protected] |
Returns the free space left in the write buffer.
- Returns:
- The free space in bytes.
| ZIP_SIZE_TYPE CZipStorage::GetFreeVolumeSpace |
( |
|
) |
const [protected] |
Returns the free space size on the current removable disk.
- Returns:
- The free space in bytes.
| ZIP_SIZE_TYPE CZipStorage::GetLastDataOffset |
( |
|
) |
[inline, protected] |
Returns the file offset after the last data byte in the archive.
- Returns:
- The file offset after the last data byte in the archive.
| ZIP_SIZE_TYPE CZipStorage::GetOccupiedSpace |
( |
|
) |
const [inline] |
Returns the total size currently occupied by the archive.
- Returns:
- The length of the current archive file increased by the number of bytes in the write buffer.
| ZIP_SIZE_TYPE CZipStorage::GetPosition |
( |
|
) |
const [inline] |
Returns the position in the file, taking into account the number of bytes in the write buffer and the number of bytes before the archive.
- Returns:
- The position in the file.
- Note:
- For binary split archives, it returns the position from the beginning of the first part.
Returns the current split names handler (const).
- Returns:
- The current split names handler.
- See also:
- CZipSplitNamesHandler
Returns the current split names handler.
- Returns:
- The current split names handler.
- See also:
- CZipSplitNamesHandler
| bool CZipStorage::IsBinarySplit |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is a binary split archive.
- Returns:
true, if the archive is a binary split archive; false otherwise.
| bool CZipStorage::IsClosed |
( |
bool |
bArchive |
) |
const [inline] |
| bool CZipStorage::IsExisting |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is an existing archive.
- Returns:
true, if the archive is an existing archive; false, if the archive is a new archive.
| bool CZipStorage::IsExistingSegmented |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is an existing segmented archive.
- Returns:
true, if the archive is an existing segmented archive; false otherwise.
| bool CZipStorage::IsNewSegmented |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is a new segmented archive.
- Returns:
true, if the archive is a new segmented archive; false otherwise.
| bool CZipStorage::IsReadOnly |
( |
|
) |
const [inline] |
| bool CZipStorage::IsRegularSplit |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is a regular split archive (not binary).
- Returns:
true, if the archive is a regular split archive; false otherwise.
| bool CZipStorage::IsSegmented |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is a segmented archive.
- Returns:
true, if the archive is a segmented archive; false otherwise.
| bool CZipStorage::IsSpanned |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is a spanned archive.
- Returns:
true, if the archive is a spanned archive; false otherwise.
| bool CZipStorage::IsSplit |
( |
|
) |
const [inline] |
Returns the value indicating whether the archive is a split archive (binary or regular).
- Returns:
true, if the archive is a split archive; false otherwise.
| ZIP_FILE_USIZE CZipStorage::LocateSignature |
( |
char * |
szSignature, |
|
|
ZIP_SIZE_TYPE |
uMaxDepth | |
|
) |
| | [protected] |
Reverse-finds the location of the given signature starting from the current position in file.
- Parameters:
-
| szSignature | The signature to locate. |
| uMaxDepth | The maximum number of bytes to search for szSignature. |
- Returns:
- The location of the signature.
| void CZipStorage::NextVolume |
( |
ZIP_SIZE_TYPE |
uNeeded |
) |
|
Changes volumes during writing to a segmented archive.
- Parameters:
-
| uNeeded | The number of bytes needed in the volume. |
| void CZipStorage::Open |
( |
LPCTSTR |
lpszPathName, |
|
|
int |
iMode, |
|
|
ZIP_SIZE_TYPE |
uVolumeSize | |
|
) |
| | |
| void CZipStorage::Open |
( |
CZipAbstractFile & |
af, |
|
|
int |
iMode, |
|
|
bool |
bAutoClose | |
|
) |
| | |
| bool CZipStorage::OpenFile |
( |
LPCTSTR |
lpszName, |
|
|
UINT |
uFlags, |
|
|
bool |
bThrow = true | |
|
) |
| | [protected] |
Opens a physical file.
- Parameters:
-
| lpszName | The name of the file to open. |
| uFlags | The file open flags. |
| bThrow | If true, throw an exception in case of failure. |
- Returns:
true if successful; false otherwise.
| DWORD CZipStorage::Read |
( |
void * |
pBuf, |
|
|
DWORD |
iSize, |
|
|
bool |
bAtOnce | |
|
) |
| | |
Reads a chunk of data from the archive.
- Parameters:
-
| pBuf | The buffer to receive the data. |
| iSize | The number of bytes to read. |
| bAtOnce | If true, no volume change is allowed during reading. If the requested number of bytes cannot be read from a single volume, an exception is thrown. |
| CZipString CZipStorage::RenameLastFileInSplitArchive |
( |
|
) |
[protected] |
Renames the last segment file in a split archive when finalizing the archive.
- Returns:
- The name of the last segment.
| ULONGLONG CZipStorage::Seek |
( |
ULONGLONG |
lOff, |
|
|
SeekType |
iSeekType = seekFromBeginning | |
|
) |
| | |
Performs the seeking operation on the m_pFile.
- Parameters:
-
| lOff | The new position in the file. |
| iSeekType | The direction of the seek operation. It can be one of the SeekType values. |
| void CZipStorage::SeekInBinary |
( |
ZIP_FILE_SIZE |
lOff, |
|
|
bool |
bSeekToBegin = false | |
|
) |
| | |
Performs the seeking operation in a binary split archive.
- Parameters:
-
| lOff | The offset to move the file pointer. |
| bSeekToBegin | If true, the file pointer is moved to the beginning before seeking. If false, the file pointer is moved relatively to the current position. |
| void CZipStorage::UpdateSegmMode |
( |
ZIP_VOLUME_TYPE |
uLastVolume |
) |
|
Called only by CZipCentralDir::Read when opening an existing archive.
- Parameters:
-
| uLastVolume | The number of the volume the central directory is on. |
| ZIP_SIZE_TYPE CZipStorage::VolumeLeft |
( |
|
) |
const |
Returns the number of free bytes on the current volume.
- Returns:
- The number of free bytes on the current volume.
| void CZipStorage::Write |
( |
const void * |
pBuf, |
|
|
DWORD |
iSize, |
|
|
bool |
bAtOnce | |
|
) |
| | |
Writes a chunk of data to the archive.
- Parameters:
-
| pBuf | The buffer with data. |
| iSize | The number of bytes to write. |
| bAtOnce | If true, the whole chunk must fit in the current volume. If there is not enough free space, a volume change is performed. |
| void CZipStorage::WriteInternalBuffer |
( |
const char * |
pBuf, |
|
|
DWORD |
uSize | |
|
) |
| | [protected] |
Writes data to the internal buffer.
- Parameters:
-
| *pBuf | The buffer to copy the data from. |
| uSize | The number of bytes to write. |
Member Data Documentation
The signature of the extended header.
Represents the physical storage for the archive (or the current archive segment in segmented archives).
The write buffer caching data.
The number of bytes available in the write buffer.
Stores the number of bytes that have been written physically to the current segment. Used only when processing a segmented archive in creation.
The value it holds depends on the segmentation mode:
- A split archive: the total size of the current volume.
- A spanned archive: the free space on the current volume.
The current volume number in a segmented archive. The value is zero-based.
The value it holds, depends on the current mode:
- An opened existing split archive: the number of the last volume ( usually the one with the "zip" extension).
- A split archive in creation: the size of the volume.
This method is used only when processing split archives.
The documentation for this class was generated from the following file: