C12Adapter Opensource C++ Interface
|
Exception which is thrown in case the ANSI C12 meter responded with an error defined by the protocol. More...
Public Types | |
enum | ResponseCodeEnum { RESPONSE_OK = 0x00, RESPONSE_ERR = 0x01, RESPONSE_SNS = 0x02, RESPONSE_ISC = 0x03, RESPONSE_ONP = 0x04, RESPONSE_IAR = 0x05, RESPONSE_BSY = 0x06, RESPONSE_DNR = 0x07, RESPONSE_DLK = 0x08, RESPONSE_RNO = 0x09, RESPONSE_ISSS = 0x0A, RESPONSE_SME = 0x0B, RESPONSE_UAT = 0x0C, RESPONSE_NETT = 0x0D, RESPONSE_NETR = 0x0E, RESPONSE_RQTL = 0x0F, RESPONSE_RSTL = 0x10, RESPONSE_SGNP = 0x11, RESPONSE_SGERR = 0x12, RESPONSE_NRY = 0x1E } |
Known response codes defined by a family of C12 protocols. More... | |
![]() | |
enum | KindType { ErrorNone = 0, ErrorInformation = 1, ErrorWarning = 2, Error = 3, ErrorFatal = 4, ErrorCommunication = 5, ErrorSystem = 6, ErrorSocket = 7, ErrorConfiguration = 8, ErrorSecurity = 9, ErrorMeter = 10, ErrorSoftware = 15, ErrorUser = 20 } |
Enumeration that stands for the kind of the exception. More... | |
enum | { MaximumVisibleParameterLength = 64 } |
Public Member Functions | |
MEC12NokResponse (Muint8 responseCode) | |
Constructor that takes the specific response code defined by the ANSI protocol. More... | |
MEC12NokResponse (Muint8 responseCode, const MByteString &extraPerameters) | |
Constructor that takes the specific response code defined by the ANSI protocol, and an extra parameter. More... | |
MEC12NokResponse (const MEC12NokResponse &) | |
Copy constructor. | |
virtual | ~MEC12NokResponse () |
Destructor. | |
MEC12NokResponse & | operator= (const MEC12NokResponse &ex) |
Assignment operator. More... | |
virtual MException * | NewClone () const |
Clone the exception, so the new exception has the same final type. More... | |
virtual M_NORETURN_FUNC void | Rethrow () |
Rethrows this exception. More... | |
ResponseCodeEnum | GetResponseCode () const |
void | SetResponseCode (ResponseCodeEnum code) |
const MByteString & | GetExtraParameters () const |
void | SetExtraParameters (const MByteString &extraParameters) |
![]() | |
MCOMException (MErrorEnum::Type code, MConstLocalChars str,...) | |
Constructor that takes the message code and the arguments that correspond to the message code. More... | |
MCOMException (const MCOMException &ex) | |
Copy constructor. | |
virtual | ~MCOMException () |
Destructor. | |
MCOMException & | operator= (const MCOMException &ex) |
Assignment operator. More... | |
![]() | |
MException () | |
Object constructor. More... | |
MException (const MStdString &message, MErrorEnum::Type code=MErrorEnum::ClientApplicationError, KindType kind=MException::ErrorUser) | |
Object constructor with code, kind and variable number of parameters. More... | |
MException (const MException &ex) | |
Object copy constructor. More... | |
virtual | ~MException () |
Object destructor. | |
void | InitAll (MException::KindType kind, MErrorEnum::Type code, const MStdString &message) |
Initialize all exception fields with the exact given data. | |
MException & | operator= (const MException &ex) |
Assignment operator. More... | |
virtual MStdString | AsSimplifiedString () const |
Return a possibly simplified string that specifies information about exception. More... | |
virtual MStdString | AsString () const |
Return the string that specifies extended information about exception. More... | |
MStdString | GetMessageString () const |
Returns the message that is stored in this exception object. More... | |
void | SetMessageString (const MStdString &msg) |
Sets the new message to exception. More... | |
MStdString | GetKindAsString () const |
Return a string that represents the exception error kind. More... | |
MStdString | GetFileName () const |
Get the file name where the error took place, if this information is available. | |
unsigned | GetFileLineNumber () const |
Get the line number within file where the error took place. | |
void | UpdateFileNameAndLineNumber (MFileNameAndLineNumber fl) |
Set file name and line number where the compile error took place, if the exception does not have this information already. | |
void | UpdateFileAndLine (const MStdString &file, unsigned line) |
If not set already, set file name and line number associated with this exception. More... | |
void | AddFileAndLineToStack (const MStdString &file, unsigned line) |
Add file name and line number context associated with this exception into stack. More... | |
void | AddFileNameAndLineNumberToStack (MFileNameAndLineNumber fl) |
Add file name and line number context associated with this exception into stack. More... | |
const MFileNameAndLineNumber::VectorType & | GetStack () const |
Get the stack of file names and line numbers. | |
MStdStringVector | GetCallStack () const |
Get the stack of file names and line numbers as collection of strings. | |
void | Append (const MStdString &) |
Append the specified string to the end of the exception string. More... | |
void | Prepend (const MStdString &) |
Prepend the specified string before the beginning of the exception string. More... | |
MErrorEnum::Type | GetCode () const |
void | SetCode (MErrorEnum::Type code) |
KindType | GetKind () const |
void | SetKind (KindType kind) |
void | Init (KindType kind, MErrorEnum::Type code, MConstLocalChars str,...) |
Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More... | |
void | Init (KindType kind, MErrorEnum::Type code, const char *str,...) |
Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More... | |
void | Init (MErrorEnum::Type code, MConstLocalChars str,...) |
Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More... | |
void | Init (MErrorEnum::Type code, const char *str,...) |
Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More... | |
void | InitVA (KindType kind, MErrorEnum::Type code, MConstLocalChars str, va_list va) |
Initialize the exception with the given message code from the VA list argument. More... | |
void | InitVA (KindType kind, MErrorEnum::Type code, const char *str, va_list va) |
Initialize the exception with the given message code from the VA list argument. More... | |
void | InitVA (MErrorEnum::Type code, MConstLocalChars str, va_list va) |
Initialize the exception with the given message code from the VA list argument. More... | |
void | InitVA (MErrorEnum::Type code, const char *str, va_list va) |
Initialize the exception with the given message code from the VA list argument. More... | |
MFileNameAndLineNumber | GetFileNameAndLineNumber () const |
void | SetFileNameAndLineNumber (MFileNameAndLineNumber fl) |
void | AppendToString (MConstLocalChars str,...) |
void | AppendToString (const char *str,...) |
void | PrependBeforeString (MConstLocalChars str,...) |
void | PrependBeforeString (const char *str,...) |
![]() | |
virtual | ~MObject () |
Object destructor. | |
virtual const MClass * | GetClass () const =0 |
Get the final class of the object. More... | |
virtual unsigned | GetEmbeddedSizeof () const |
For embedded object types, return the size of the class. More... | |
bool | IsEmbeddedObject () const |
Tell if the object is of embedded kind. More... | |
SHOW_INTERNAL MVariant | Call (const MStdString &name, const MVariant ¶ms) |
Call the object service with parameters, given as variant. More... | |
MVariant | Call0 (const MStdString &name) |
Call the object service with no parameters. More... | |
MVariant | Call1 (const MStdString &name, const MVariant &p1) |
Call the object service with one parameter. More... | |
MVariant | Call2 (const MStdString &name, const MVariant &p1, const MVariant &p2) |
Call the object service with two parameter. More... | |
MVariant | Call3 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3) |
Call the object service with three parameter. More... | |
MVariant | Call4 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4) |
Call the object service with four parameter. More... | |
MVariant | Call5 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5) |
Call the object service with five parameter. More... | |
MVariant | Call6 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5, const MVariant &p6) |
Call the object service with six parameter. More... | |
virtual MVariant | CallV (const MStdString &name, const MVariant::VariantVector ¶ms) |
Call the object service with parameters, given as variant vector. More... | |
virtual bool | IsPropertyPresent (const MStdString &name) const |
Tell if the property with the given name exists. | |
virtual bool | IsServicePresent (const MStdString &name) const |
Tell if the service with the given name exists. | |
virtual MVariant | GetProperty (const MStdString &name) const |
Get the property value using name of the property. More... | |
virtual void | SetProperty (const MStdString &name, const MVariant &value) |
Set the property using name of the property, and value. More... | |
virtual MStdStringVector | GetAllPropertyNames () const |
Return the list of publicly available properties, persistent or not. More... | |
virtual MStdStringVector | GetAllPersistentPropertyNames () const |
Return the list of persistent properties. More... | |
virtual void | SetPersistentPropertiesToDefault () |
Set the persistent properties of the object to their default values. More... | |
virtual MVariant | GetPersistentPropertyDefaultValue (const MStdString &name) const |
Get the default value of persistent property with the name given. More... | |
virtual void | SetPersistentPropertyToDefault (const MStdString &name) |
Set the persistent property with the name given to default value. More... | |
virtual const char * | GetType () const |
Get the name of the type for the object (could be the same as class name). | |
virtual void | SetType (const MStdString &) |
Intentionally, it will set the name of the type for the object, but the service will not allow setting the name to anything other than the current name. More... | |
virtual void | Validate () |
Validate internal structures of the object. More... | |
Static Public Member Functions | |
static MEC12NokResponse * | New () |
Create a new exception of this type, all parameters are clear. | |
static M_NORETURN_FUNC void | Throw (Muint8 responseCode) |
Throws exception MEC12NokResponse with the response code given. More... | |
static M_NORETURN_FUNC void | ThrowWithParameters (Muint8 responseCode, const MByteString &extraParameters) |
Throws exception MEC12NokResponse with the response code and extra parameters given. More... | |
![]() | |
static MCOMException * | New () |
Create a new exception of this type, all parameters are clear. | |
static M_NORETURN_FUNC void | ThrowInvalidOperationInForeground () |
Throws this exception with the parameters that signify the the operation is invalid due to background work. | |
static void | CheckIfExpectedDataSizeDifferent (unsigned receivedLength, unsigned expectedLength) |
If the given two values are different then throw an error. More... | |
static M_NORETURN_FUNC void | Throw (MErrorEnum::Type code, MConstLocalChars str,...) |
static M_NORETURN_FUNC void | Throw (MErrorEnum::Type code, const char *str,...) |
static M_NORETURN_FUNC void | Throw (MException::KindType kind, MErrorEnum::Type code, MConstLocalChars str,...) |
static M_NORETURN_FUNC void | Throw (MException::KindType kind, MErrorEnum::Type code, const char *str,...) |
![]() | |
static MException * | New () |
Create a new exception of this type, all parameters are clear. | |
static M_NORETURN_FUNC void | ThrowUnknownError () |
Throws this exception as unknown error. More... | |
static M_NORETURN_FUNC void | ThrowCannotIndexItem (MConstChars itemName=NULL) |
Throws this exception as error that signifies the item cannot be indexed. | |
static M_NORETURN_FUNC void | ThrowNotSupportedForThisType () |
Throws this exception as error that signifies the operation is not supported for such type. | |
static M_NORETURN_FUNC void | ThrowNoValue () |
Throws this exception as error that signifies the value is absent. | |
static M_NORETURN_FUNC void | ThrowNoValue (MFileNameAndLineNumber fl) |
Throws this exception as error that signifies the value given in file and line is absent. | |
static M_NORETURN_FUNC void | ThrowBadTimeValue (MConstChars str=NULL) |
Throws this exception as error that signifies the time value is bad. | |
static M_NORETURN_FUNC void | ThrowDivisionByZero () |
Throws this exception as division by zero. | |
static M_NORETURN_FUNC void | ThrowCallOutOfSequence () |
Throws an error that the call is made out of sequence. | |
static M_NORETURN_FUNC void | ThrowBadFileFormat (const MStdString &fileName) |
Throws file has bad format. | |
static M_NORETURN_FUNC void | ThrowUnexpectedChar (int ch) |
Throws an exception that complains about an unexpected character. More... | |
static M_NORETURN_FUNC void | ThrowStringTooLong (int stringLength, int maximumPossibleLength) |
Throws an exception that tells that the string is bigger than the maximum length. More... | |
static M_NORETURN_FUNC void | ThrowUnsupportedType (int typetag) |
Throws an error that the given variant type is not supported. | |
static M_NORETURN_FUNC void | Throw (const MStdString &message, MErrorEnum::Type code=MErrorEnum::ClientApplicationError) |
Throw this exception with the user message given as parameter. More... | |
static MStdString | SimplifyMessageString (const MStdString &message) |
Attempt to simplify the error message string given. More... | |
static MStdString | GetKindAsStringStatic (KindType kind) |
Return a string that represents the exception error kind using kind as parameter. More... | |
static MStdString | VisualizeParameter (const MVariant &v) |
Make the given variant suitable for showing in error message. More... | |
static char * | VisualizeVariantParameter (char *buff, const MVariant &v) |
Make the given variant parameter suitable for showing in error message. More... | |
static char * | VisualizeStringParameter (char *buff, const MStdString &v) |
Make the given string parameter suitable for showing in error message. More... | |
static char * | VisualizeCharsParameter (char *buff, const char *v) |
Make the given zero terminated string parameter suitable for showing in error message. More... | |
static char * | VisualizeCharsParameter (char *buff, const char *v, unsigned len) |
Make the given not zero terminated character parameter suitable for showing in error message. More... | |
static M_NORETURN_FUNC void | ThrowSyntaxError (MConstChars offendingString) |
static M_NORETURN_FUNC void | ThrowSyntaxError (MConstChars offendingString, size_t offendingStringLength) |
static M_NORETURN_FUNC void | ThrowUnknownItem (MException::KindType kind, MConstChars name) |
static M_NORETURN_FUNC void | ThrowUnknownItem (MConstChars name) |
static M_NORETURN_FUNC void | ThrowUnknownItem (MException::KindType kind, const MStdString &name) |
static M_NORETURN_FUNC void | ThrowUnknownItem (const MStdString &name) |
static M_NORETURN_FUNC void | Throw (MErrorEnum::Type code, MConstLocalChars str,...) |
static M_NORETURN_FUNC void | Throw (MErrorEnum::Type code, const char *str,...) |
static M_NORETURN_FUNC void | Throw (KindType kind, MErrorEnum::Type code, MConstLocalChars str,...) |
static M_NORETURN_FUNC void | Throw (KindType kind, MErrorEnum::Type code, const char *str,...) |
![]() | |
static const MClass * | GetStaticClass () |
Get the declared class of this particular object. More... | |
static bool | IsClassPresent (const MStdString &name) |
Tells if the given class name is available. More... | |
Additional Inherited Members | |
![]() | |
static const char | s_itemIsUnknownErrorString [] |
Constant string "Item '%s' is unknown", shared through many libraries. | |
![]() | |
static const MClass | s_class |
Class of MObject. | |
![]() | |
MObject () | |
Object constructor, protected as the class is abstract. | |
void | DoSetPersistentPropertiesToDefault (const MClass *staticClass) |
Set the persistent properties to their default values for one object provided the class for that object. More... | |
![]() | |
MErrorEnum::Type | m_code |
Message code for this exception. | |
KindType | m_kind |
The kind type for this exception. | |
MStdString | m_message |
Message string that represents this exception. | |
MFileNameAndLineNumber | m_fileNameAndLineNumber |
File name and line number where the compile error took place. More... | |
MFileNameAndLineNumber::VectorType | m_stack |
Stack of file names and line numbers. | |
Exception which is thrown in case the ANSI C12 meter responded with an error defined by the protocol.
This is an application-level protocol error.
Known response codes defined by a family of C12 protocols.
Enumerator | |
---|---|
RESPONSE_OK |
Okay. No error, never seen in the exception Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseOK |
RESPONSE_ERR |
Generic error, no reason provided. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseERR |
RESPONSE_SNS |
Service Not Supported. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseSNS |
RESPONSE_ISC |
Insufficient Security Clearance. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseISC |
RESPONSE_ONP |
Operation Not Possible. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseONP |
RESPONSE_IAR |
Inappropriate Action Requested. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseIAR |
RESPONSE_BSY |
Device Busy, ran out of retries. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseBSY |
RESPONSE_DNR |
Data Not Ready, ran out of retries. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseDNR |
RESPONSE_DLK |
Data Locked. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseDLK |
RESPONSE_RNO |
Renegotiate. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseRNO |
RESPONSE_ISSS |
Invalid Service Sequence State. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseISSS |
RESPONSE_SME |
Security mechanism error detected. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseSME |
RESPONSE_UAT |
Unknown or invalid Called APTitle is received. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseUAT |
RESPONSE_NETT |
Network timeout detected. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseNETT |
RESPONSE_NETR |
Node is not reachable. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseNETR |
RESPONSE_RQTL |
Request is too large. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseRQTL Parameter is sent with this exception, UINT24, maximum request size. |
RESPONSE_RSTL |
Response is too large (parameter is UINT24, maximum request size) Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseRSTL |
RESPONSE_SGNP |
Segmentation required, but not possible. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseSGNP |
RESPONSE_SGERR |
Segmentation error. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseSGERR Two parameters are sent with this exception: offset and size. They are both of the same size, from UINT8 to UINT24. |
RESPONSE_NRY |
Not registered to you, code not defined in C12 standard, specific to Elster. Corresponds to MException::GetCode value MErrorEnum::C12ServiceResponseNRY |
MEC12NokResponse::MEC12NokResponse | ( | Muint8 | responseCode | ) |
Constructor that takes the specific response code defined by the ANSI protocol.
The given message code determines the result message.
responseCode | One-byte response code, normally in range 0 .. 0x1F, as defined by ANSI. |
MEC12NokResponse::MEC12NokResponse | ( | Muint8 | responseCode, |
const MByteString & | extraPerameters | ||
) |
Constructor that takes the specific response code defined by the ANSI protocol, and an extra parameter.
The given message code determines the result message. The extraParameters, if not an empty byte string, will be added to message. Handling of extraParameters depends on the message code like the following:
responseCode | One-byte response code, normally in range 0 .. 0x1F, as defined by ANSI. Some response codes have known parameters that get handled using the information given as extraParameter. |
extraPerameters | Byte string to represent extra parameters. |
|
inline |
Extra parameters of C12 protocol error.
|
inline |
Response error code of the C12 protocol, as defined by the standard.
See the enumeration MEC12NokResponse::ResponseCodeEnum for possible defined values returned by this service. Note that the response code is not necessarily within the range defined by this enumeration.
|
virtual |
Clone the exception, so the new exception has the same final type.
Reimplemented from MCOMException.
|
inline |
Assignment operator.
Be careful while using the assignment operator when dealing with children of this class, as the properties of a child might not be copied correctly.
ex | Exception from which to copy this exception. |
|
virtual |
Rethrows this exception.
This polymorphic call is necessary if a generic exception is caught by its base, and had to be saved for future throwing. Simple "throw *ex" will not work in this case, as it will call the copy constructor of the declared exception, not the final class copy constructor.
Reimplemented from MCOMException.
|
inline |
Extra parameters of C12 protocol error.
|
inline |
Response error code of the C12 protocol, as defined by the standard.
See the enumeration MEC12NokResponse::ResponseCodeEnum for possible defined values returned by this service. Note that the response code is not necessarily within the range defined by this enumeration.
|
static |
Throws exception MEC12NokResponse with the response code given.
Analog of the following code:
but saves memory, if there are many throws in the source code. The following is the usage:
|
static |
Throws exception MEC12NokResponse with the response code and extra parameters given.
Analog of the following code:
but saves memory, if there are many throws in the source code. The following is the usage: