714dd74636
git-svn-id: svn://10.65.10.50/trunk@5350 c028cbd2-c16b-5b4b-a496-9718f37d4682
209 lines
7.4 KiB
C++
Executable File
209 lines
7.4 KiB
C++
Executable File
/*
|
|
* MONITOR.H
|
|
*
|
|
* Header file for ArchiveLib 2.0
|
|
*
|
|
* Copyright (c) 1994-1996 Greenleaf Software, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This file contains the class declaration for the base class ALMonitor.
|
|
* You can instantiate objects of this class, but they don't do
|
|
* anything. The derived classes are much more interesting.
|
|
*
|
|
* CLASS DEFINITIONS:
|
|
*
|
|
* ALMonitor
|
|
*
|
|
* ENUMERATED TYPES:
|
|
*
|
|
* ALArchiveOperation
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
* February 14, 1996 2.0: New release
|
|
*/
|
|
|
|
#ifndef _MONITOR_H
|
|
#define _MONITOR_H
|
|
|
|
#if defined( __cplusplus )
|
|
|
|
/*
|
|
* Most of our enumerated types are defined in ALDEFS.H so C programs
|
|
* have easy access to them. But C and VB have no use for these
|
|
* values, because they are only used by members of ALMonitor,
|
|
* they can't be passed to C or VB procedures.
|
|
*
|
|
* This type defines the various messages that are passed to
|
|
* ALMonitor::ArchiveOperation() during progress of an
|
|
* archiving operation.
|
|
*/
|
|
|
|
enum ALArchiveOperation { /* Tag public type */
|
|
AL_ARCHIVE_OPEN,
|
|
AL_ARCHIVE_CLOSE,
|
|
AL_EXTRACTION_OPEN,
|
|
AL_EXTRACTION_CLOSE,
|
|
AL_INSERTION_OPEN,
|
|
AL_INSERTION_CLOSE,
|
|
AL_COPY_OPEN,
|
|
AL_COPY_CLOSE,
|
|
AL_START_DIRECTORY_WRITE,
|
|
AL_END_DIRECTORY_WRITE,
|
|
AL_START_DIRECTORY_READ,
|
|
AL_END_DIRECTORY_READ
|
|
};
|
|
|
|
/*
|
|
* A forward declaration.
|
|
*
|
|
*/
|
|
class AL_CLASS_TYPE ALEntry;
|
|
|
|
/*
|
|
* class ALMonitor
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* The ALMonitor class is used primarily for providing user interface
|
|
* information during archiving or other operations. Each ALEntryList
|
|
* object has an ALMonitor attached to it. When the archive operations
|
|
* are performed, the ALMonitor object is called using its two functions,
|
|
* Progress() and ArchiveOperation(). Progress() is used to update
|
|
* progress information, such as byte count or percent complete. The
|
|
* archive operation is functioned at various times, such as when files
|
|
* are opened, archives are opened, files are closed, etc.
|
|
*
|
|
* Good examples of how derived classes do all this stuff can be found in
|
|
* BARGRAPH.CPP and WINMON.CPP.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* mlJobSize : The total size of the job being monitored. If the
|
|
* monitor is in AL_MONITOR_JOBS mode, we care about
|
|
* this. The archive base class has to set up this
|
|
* member before the archiving procedure starts.
|
|
*
|
|
* mlJobSoFar : The total number of bytes that have already been
|
|
* processed so far in this job. This number is
|
|
* updated after each file is completely processed. It
|
|
* does not reflect work done on the current file.
|
|
*
|
|
* mlObjectSize : The size of the current object being processed. This
|
|
* is usually set up by the archive function at the start
|
|
* of processing for the current file. If this number is
|
|
* set to -1, it means we have to check on it, since
|
|
* the archiving program was to lazy to open the file and
|
|
* calculate it.
|
|
*
|
|
* mlObjectStart : The starting offset of the current object in the
|
|
* file being processed. Sometimes the object we are
|
|
* working on might be in an archive, in which case
|
|
* we need to know where it starts.
|
|
*
|
|
* mlByteCount : This private member contains the byte count for all
|
|
* the data processed so far. Derived classes can
|
|
* call Progress() for the base class, and it will
|
|
* calculate this number. The number will be for
|
|
* the entire job when we are in AL_MONITOR_JOB mode,
|
|
* but just for the current object when we are in
|
|
* AL_MONITOR_OBJECTS mode.
|
|
*
|
|
* miRatio : The percentage of processing we have completed, an
|
|
* integer that hopefully ranges from 0 to 100. This
|
|
* number can also be calculated by calling Progress()
|
|
* in the base class. It will differ depending on whether
|
|
* we are in AL_MONITOR_JOB mode or AL_MONITOR_OBJECTS.
|
|
*
|
|
* miMonitorType : Either AL_MONITOR_OBJECT or AL_MONITOR_JOBS, depending
|
|
* on what was specified in the constructor.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALMonitor() : The constructor.
|
|
* ~ALMonitor() : The virtual destructor.
|
|
* operator new() : The memory allocation operator used when the
|
|
* library resides in a DLL.
|
|
* Progress() : The routine called periodically to update progress
|
|
* indicators. The base class version just makes
|
|
* calculations.
|
|
* ArchiveOperation() : The routine called at various points during an
|
|
* archive operation. Does nothing worthwhile in the
|
|
* base class.
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
class AL_CLASS_TYPE ALMonitor /* Tag public class */
|
|
{
|
|
/*
|
|
* Constructors, destructors, friends, declarations
|
|
*/
|
|
friend class AL_CLASS_TYPE ALArchive;
|
|
friend class AL_CLASS_TYPE ALPkArchive;
|
|
friend class AL_CLASS_TYPE ALGlArchive;
|
|
friend class AL_CLASS_TYPE ALStorage;
|
|
|
|
public :
|
|
AL_PROTO ALMonitor( ALMonitorType monitor_type );
|
|
virtual AL_PROTO ~ALMonitor();
|
|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* The copy constructor and assignment operator do not exist.
|
|
*/
|
|
private :
|
|
AL_PROTO ALMonitor( ALMonitor AL_DLL_FAR &);
|
|
ALMonitor AL_DLL_FAR & AL_PROTO operator=( ALMonitor AL_DLL_FAR & );
|
|
/*
|
|
* Member functions
|
|
*/
|
|
protected :
|
|
virtual void AL_PROTO Progress( long mlObjectTell,
|
|
ALStorage AL_DLL_FAR & object );
|
|
virtual void AL_PROTO
|
|
ArchiveOperation( enum ALArchiveOperation operation,
|
|
ALArchive AL_DLL_FAR *archive,
|
|
ALEntry AL_DLL_FAR *job );
|
|
/*
|
|
* Data members, not sure if we should keep these public or not
|
|
*/
|
|
public :
|
|
long mlJobSize;
|
|
long mlJobSoFar;
|
|
long mlObjectSize;
|
|
long mlObjectStart;
|
|
/*
|
|
* Calculated by ALMonitor::Progress()
|
|
*/
|
|
long mlByteCount;
|
|
int miRatio;
|
|
|
|
public :
|
|
const ALMonitorType miMonitorType;
|
|
AL_CLASS_TAG( _ALMonitorTag );
|
|
};
|
|
#else /* #if defined( __cplusplus ) ... */
|
|
|
|
AL_LINKAGE void AL_FUNCTION deleteALMonitor( hALMonitor this_object );
|
|
AL_LINKAGE long AL_FUNCTION ALMonitorSetObjectSize( hALMonitor this_object,
|
|
long object_size );
|
|
AL_LINKAGE long AL_FUNCTION ALMonitorSetObjectStart( hALMonitor this_object,
|
|
long object_start );
|
|
AL_LINKAGE long AL_FUNCTION ALMonitorSetJobSize( hALMonitor this_object,
|
|
long job_size );
|
|
AL_LINKAGE long AL_FUNCTION ALMonitorSetJobSoFar( hALMonitor this_object,
|
|
long job_so_far );
|
|
|
|
#endif /* #if defined( __cplusplus ) ... #else ... */
|
|
|
|
#endif /* #ifndef _MONITOR_H */
|