C12Adapter Opensource C++ Interface
MEC12NokResponse Class Reference

Exception which is thrown in case the ANSI C12 meter responded with an error defined by the protocol. More...

Inheritance diagram for MEC12NokResponse:

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...
 
- Public Types inherited from MException
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.
 
MEC12NokResponseoperator= (const MEC12NokResponse &ex)
 Assignment operator. More...
 
virtual MExceptionNewClone () 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 MByteStringGetExtraParameters () const
 
void SetExtraParameters (const MByteString &extraParameters)
 
- Public Member Functions inherited from MCOMException
 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.
 
MCOMExceptionoperator= (const MCOMException &ex)
 Assignment operator. More...
 
- Public Member Functions inherited from MException
 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.
 
MExceptionoperator= (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::VectorTypeGetStack () 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,...)
 
- Public Member Functions inherited from MObject
virtual ~MObject ()
 Object destructor.
 
virtual const MClassGetClass () 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 &params)
 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 &params)
 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 MEC12NokResponseNew ()
 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 Public Member Functions inherited from MCOMException
static MCOMExceptionNew ()
 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 Public Member Functions inherited from MException
static MExceptionNew ()
 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 Public Member Functions inherited from MObject
static const MClassGetStaticClass ()
 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 Public Attributes inherited from MException
static const char s_itemIsUnknownErrorString []
 Constant string "Item '%s' is unknown", shared through many libraries.
 
- Static Public Attributes inherited from MObject
static const MClass s_class
 Class of MObject.
 
- Protected Member Functions inherited from 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...
 
- Protected Attributes inherited from MException
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.
 

Detailed Description

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.

Member Enumeration Documentation

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

Constructor & Destructor Documentation

MEC12NokResponse::MEC12NokResponse ( Muint8  responseCode)

Constructor that takes the specific response code defined by the ANSI protocol.

The given message code determines the result message.

Parameters
responseCodeOne-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:

  • RESPONSE_RQTL (code 0x0F): request too large parameter expected to be of type UINT24, which will be the maximum request size.
  • RESPONSE_RSTL (code 0x10): response too large parameter expected to be of type UINT24, maximum response size.
  • RESPONSE_SGERR (code 0x12): segmentation error parameters are offset and size, where both are of the same size type UINT8, UINT16, or UINT24.
  • When response code is different from ones mentioned, or when extraParameters parameters do not correspond to the defined ones, extra parameters byte string is added as hex to the message.
Parameters
responseCodeOne-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.
extraPerametersByte string to represent extra parameters.

Member Function Documentation

const MByteString& MEC12NokResponse::GetExtraParameters ( ) const
inline

Extra parameters of C12 protocol error.

ResponseCodeEnum MEC12NokResponse::GetResponseCode ( ) const
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 MException* MEC12NokResponse::NewClone ( ) const
virtual

Clone the exception, so the new exception has the same final type.

Returns
New exception, which is the same as this.
See also
Rethrow() Rethrows the cloned exception with respect to the final exception type.

Reimplemented from MCOMException.

MEC12NokResponse& MEC12NokResponse::operator= ( const MEC12NokResponse ex)
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.

Parameters
exException from which to copy this exception.
Returns
Reference to this object.
virtual M_NORETURN_FUNC void MEC12NokResponse::Rethrow ( )
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.

See also
NewClone() Clones the exception so the new exception has the same final type.

Reimplemented from MCOMException.

void MEC12NokResponse::SetExtraParameters ( const MByteString extraParameters)
inline

Extra parameters of C12 protocol error.

void MEC12NokResponse::SetResponseCode ( ResponseCodeEnum  code)
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 M_NORETURN_FUNC void MEC12NokResponse::Throw ( Muint8  responseCode)
static

Throws exception MEC12NokResponse with the response code given.

Analog of the following code:

throw MEC12NokResponse(responseCode);

but saves memory, if there are many throws in the source code. The following is the usage:

static M_NORETURN_FUNC void MEC12NokResponse::ThrowWithParameters ( Muint8  responseCode,
const MByteString extraParameters 
)
static

Throws exception MEC12NokResponse with the response code and extra parameters given.

Analog of the following code:

throw MEC12NokResponse(responseCode, extraParameters);

but saves memory, if there are many throws in the source code. The following is the usage: