diff options
Diffstat (limited to 'python/src/tcf/errors.py')
-rw-r--r-- | python/src/tcf/errors.py | 138 |
1 files changed, 122 insertions, 16 deletions
diff --git a/python/src/tcf/errors.py b/python/src/tcf/errors.py index 9085e29b6..d37323c45 100644 --- a/python/src/tcf/errors.py +++ b/python/src/tcf/errors.py @@ -14,76 +14,166 @@ import time import types # Error report attribute names -ERROR_CODE = "Code" # integer -ERROR_TIME = "Time" # integer -ERROR_SERVICE = "Service" # string -ERROR_FORMAT = "Format" # string -ERROR_PARAMS = "Params" # array -ERROR_SEVERITY = "Severity" # integer -ERROR_ALT_CODE = "AltCode" # integer -ERROR_ALT_ORG = "AltOrg" # string -ERROR_CAUSED_BY = "CausedBy" # object + +ERROR_CODE = "Code" +"""Integer : error code value""" + +ERROR_TIME = "Time" +"""Integer : error time""" + +ERROR_SERVICE = "Service" +"""String : name of the service the error occured in""" + +ERROR_FORMAT = "Format" +"""String : error format""" + +ERROR_PARAMS = "Params" +"""List : a list of parameters for the given error""" + +ERROR_SEVERITY = "Severity" +"""Integer : error severity""" + +ERROR_ALT_CODE = "AltCode" +"""Integer : error alternative code value""" + +ERROR_ALT_ORG = "AltOrg" +"""Integer : error alternative org???""" + +ERROR_CAUSED_BY = "CausedBy" +"""Object : the cause of the error""" # Error severity codes SEVERITY_ERROR = 0 +"""Error""" + SEVERITY_WARNING = 1 +"""Warning""" + SEVERITY_FATAL = 2 +"""Fatal error""" # Error code ranges -# Standard TCF code range */ +# Standard TCF code range CODE_STD_MIN = 0 +"""Minimum error code value""" CODE_STD_MAX = 0xffff +"""Maximum error code value""" -# Service specific codes. Decoding requires service ID. */ +# Service specific codes. Decoding requires service ID. CODE_SERVICE_SPECIFIC_MIN = 0x10000 +"""Service specific minimum error code value""" CODE_SERVICE_SPECIFIC_MAX = 0x1ffff +"""Service specific maximum error code value""" -# Reserved codes - will never be used by the TCF standard */ +# Reserved codes - will never be used by the TCF standard CODE_RESERVED_MIN = 0x20000 +"""Service specific reserved minimum error code value""" CODE_RESERVED_MAX = 0x2ffff +"""Service specific reserved maximum error code value""" # Standard TCF error codes TCF_ERROR_OTHER = 1 +"""Other TCF errors""" + TCF_ERROR_JSON_SYNTAX = 2 +"""JSON syntax error""" + TCF_ERROR_PROTOCOL = 3 +"""Protocol error""" + TCF_ERROR_BUFFER_OVERFLOW = 4 +"""Buffer overflow""" + TCF_ERROR_CHANNEL_CLOSED = 5 +"""Channel closed""" + TCF_ERROR_COMMAND_CANCELLED = 6 +"""Command canceled""" + TCF_ERROR_UNKNOWN_PEER = 7 +"""Unknown peer""" + TCF_ERROR_BASE64 = 8 +"""Base64 error""" + TCF_ERROR_EOF = 9 +"""End of file""" + TCF_ERROR_ALREADY_STOPPED = 10 +"""Already stopped""" + TCF_ERROR_ALREADY_EXITED = 11 +"""Already exited""" + TCF_ERROR_ALREADY_RUNNING = 12 +"""Already running""" + TCF_ERROR_ALREADY_ATTACHED = 13 +"""Already attached""" + TCF_ERROR_IS_RUNNING = 14 +"""Is running""" + TCF_ERROR_INV_DATA_SIZE = 15 +"""Invalid data size""" + TCF_ERROR_INV_CONTEXT = 16 +"""Invalid context""" + TCF_ERROR_INV_ADDRESS = 17 +"""Invalid address""" + TCF_ERROR_INV_EXPRESSION = 18 +"""Invalid expression""" + TCF_ERROR_INV_FORMAT = 19 +"""Invalid format""" + TCF_ERROR_INV_NUMBER = 20 +"""Invalid number""" + TCF_ERROR_INV_DWARF = 21 +"""Invalid dwarf""" + TCF_ERROR_SYM_NOT_FOUND = 22 +"""Symbol not found""" + TCF_ERROR_UNSUPPORTED = 23 +"""Unsupported""" + TCF_ERROR_INV_DATA_TYPE = 24 +"""Invalid data type""" + TCF_ERROR_INV_COMMAND = 25 +"""Invalid command""" + TCF_ERROR_INV_TRANSPORT = 26 +"""Invalid transport""" + TCF_ERROR_CACHE_MISS = 27 +"""Cache miss""" + TCF_ERROR_NOT_ACTIVE = 28 +"""Not active""" _timestamp_format = "%Y-%m-%d %H:%M:%S" class ErrorReport(Exception): + """TCF error report class. + + :param msg: error report message + :param attrs: TCF error report attributes to initialise this error report + with. See **ERROR_***. + """ def __init__(self, msg, attrs): super(ErrorReport, self).__init__(msg) if type(attrs) is types.IntType: attrs = { - ERROR_CODE : attrs, - ERROR_TIME : int(time.time() * 1000), - ERROR_FORMAT : msg, - ERROR_SEVERITY : SEVERITY_ERROR + ERROR_CODE: attrs, + ERROR_TIME: int(time.time() * 1000), + ERROR_FORMAT: msg, + ERROR_SEVERITY: SEVERITY_ERROR } self.attrs = attrs caused_by = attrs.get(ERROR_CAUSED_BY) @@ -96,15 +186,31 @@ class ErrorReport(Exception): self.caused_by = ErrorReport(bf.getvalue(), errMap) def getErrorCode(self): + """Get this exception error code. + + :returns: This error report error code, or **0** + """ return self.attrs.get(ERROR_CODE) or 0 def getAltCode(self): + """Get this exception alternative error code. + + :returns: This error report alternative error code, or **0** + """ return self.attrs.get(ERROR_ALT_CODE) or 0 def getAltOrg(self): + """Get this exception alternative org ??? + + :returns: This error report alernative org???, or **None** + """ return self.attrs.get(ERROR_ALT_ORG) def getAttributes(self): + """Get this error attribute. + + :returns: a :class:`dict` of this error attributes + """ return self.attrs |