1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#ifndef _FGEXC_H
#define _FGEXC_H
// fgexc.h
//
// Header file for exception class
#ifndef _FGSTRING_H
#include "fgstring.h"
#endif
class FGException {
public:
// Enumerated exception types
enum EFGExceptions {
// Connection failures
kHostResolveFail = 0,
kHostResolveRetryableFail,
kConnectResourceAllocFail,
kConnectRefused,
kConnectHostUncontactable,
kConnectMiscFail,
kConnectLost,
// FTP protocol parse failures
kResponseTooLong,
kResponseMalformed,
kResponseUnexpected,
// FTP server doesn't like us failures
kAccessDenied,
kServerFull,
// When we can't find stuff we expect
kNoSuchDir,
kNoSuchFile,
// Local file handling issues
kLocalNoSuchDir,
kLocalNoSuchFile,
kLocalPermissionDenied,
// Timeout d/loading file
kDownloadTimeout,
// Config file parse failures
kConfigFileNotFound,
kConfigMissingColon,
kDuplicateToken,
kUnexpectedEndOfConfig,
// Misc. filesystem stuff
kFileCreateFailed,
kConcurrentGrabs,
kUnlinkFailed,
kWriteFailed,
// Log file failures
kLogFileOpenFailed,
// Failures parsing filenames/components
kParseEndOfString,
kParseUnexpectedChar,
kUnrecognizedComponent,
// Duff user supplied regular expression
kInvalidRegexp,
// Problems reading file from network
kNetworkReadError,
kFileTooShort,
};
// Constructor - pass in reason for throwing exception
// plus additional details message
FGException(EFGExceptions reason, const FGString& details);
// Constructor where no additional details available
FGException(EFGExceptions reason);
EFGExceptions GetReason(void) const;
// Methods to analyze severity of exception/what went wrong etc.
bool IsConditionRetryable(void) const;
// Severity is 0-10
int GetSeverity(void) const;
FGString GetFullDetails(void) const;
private:
// Internal storage details
EFGExceptions mWhat;
FGString mDetails;
};
#endif // _FGEXC_H
|