summaryrefslogtreecommitdiff
path: root/qpid/tools/src/py/qlslibs/err.py
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/tools/src/py/qlslibs/err.py')
-rw-r--r--qpid/tools/src/py/qlslibs/err.py261
1 files changed, 261 insertions, 0 deletions
diff --git a/qpid/tools/src/py/qlslibs/err.py b/qpid/tools/src/py/qlslibs/err.py
new file mode 100644
index 0000000000..f47632ce6a
--- /dev/null
+++ b/qpid/tools/src/py/qlslibs/err.py
@@ -0,0 +1,261 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+"""
+Module: qlslibs.err
+
+Contains error classes.
+"""
+
+# --- Parent classes
+
+class QlsError(Exception):
+ """Base error class for QLS errors and exceptions"""
+ def __init__(self):
+ Exception.__init__(self)
+ def __str__(self):
+ return ''
+
+class QlsRecordError(QlsError):
+ """Base error class for individual records"""
+ def __init__(self, file_header, record):
+ QlsError.__init__(self)
+ self.file_header = file_header
+ self.record = record
+ def get_expected_fro(self):
+ return self.file_header.first_record_offset
+ def get_file_number(self):
+ return self.file_header.file_num
+ def get_queue_name(self):
+ return self.file_header.queue_name
+ def get_record_id(self):
+ return self.record.record_id
+ def get_record_offset(self):
+ return self.record.file_offset
+ def __str__(self):
+ return 'queue="%s" file_id=0x%x record_offset=0x%x record_id=0x%x' % \
+ (self.file_header.queue_name, self.file_header.file_num, self.record.file_offset, self.record.record_id)
+
+# --- Error classes
+
+class AlreadyLockedError(QlsRecordError):
+ """Transactional record to be locked is already locked"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'Transactional operation already locked in TransactionMap: ' + QlsRecordError.__str__(self)
+
+class DataSizeError(QlsError):
+ """Error class for Data size mismatch"""
+ def __init__(self, expected_size, actual_size, data_str):
+ QlsError.__init__(self)
+ self.expected_size = expected_size
+ self.actual_size = actual_size
+ self.xid_str = data_str
+ def __str__(self):
+ return 'Inconsistent data size: expected:%d; actual:%d; data="%s"' % \
+ (self.expected_size, self.actual_size, self.data_str)
+
+class DuplicateRecordIdError(QlsRecordError):
+ """Duplicate Record Id in Enqueue Map"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'Duplicate Record Id in enqueue map: ' + QlsRecordError.__str__(self)
+
+class EnqueueCountUnderflowError(QlsRecordError):
+ """Attempted to decrement enqueue count past 0"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'Enqueue record count underflow: ' + QlsRecordError.__str__(self)
+
+class ExternalDataError(QlsRecordError):
+ """Data present in Enqueue record when external data flag is set"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'Data present in external data record: ' + QlsRecordError.__str__(self)
+
+class FirstRecordOffsetMismatchError(QlsRecordError):
+ """First Record Offset (FRO) does not match file header"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'First record offset mismatch: ' + QlsRecordError.__str__(self) + ' expected_offset=0x%x' % \
+ self.file_header.first_record_offset
+
+class InsufficientSpaceOnDiskError(QlsError):
+ """Insufficient space on disk"""
+ def __init__(self, directory, space_avail, space_requried):
+ QlsError.__init__(self)
+ self.directory = directory
+ self.space_avail = space_avail
+ self.space_required = space_requried
+ def __str__(self):
+ return 'Insufficient space on disk: directory=%s; avail_space=%d required_space=%d' % \
+ (self.directory, self.space_avail, self.space_required)
+
+class InvalidClassError(QlsError):
+ """Invalid class name or type"""
+ def __init__(self, class_name):
+ QlsError.__init__(self)
+ self.class_name = class_name
+ def __str__(self):
+ return 'Invalid class name "%s"' % self.class_name
+
+class InvalidEfpDirectoryNameError(QlsError):
+ """Invalid EFP directory name - should be NNNNk, where NNNN is a number (of any length)"""
+ def __init__(self, directory_name):
+ QlsError.__init__(self)
+ self.directory_name = directory_name
+ def __str__(self):
+ return 'Invalid EFP directory name "%s"' % self.directory_name
+
+#class InvalidFileSizeString(QlsError):
+# """Invalid file size string"""
+# def __init__(self, file_size_string):
+# QlsError.__init__(self)
+# self.file_size_string = file_size_string
+# def __str__(self):
+# return 'Invalid file size string "%s"' % self.file_size_string
+
+class InvalidPartitionDirectoryNameError(QlsError):
+ """Invalid EFP partition name - should be pNNN, where NNN is a 3-digit partition number"""
+ def __init__(self, directory_name):
+ QlsError.__init__(self)
+ self.directory_name = directory_name
+ def __str__(self):
+ return 'Invalid partition directory name "%s"' % self.directory_name
+
+class InvalidQlsDirectoryNameError(QlsError):
+ """Invalid QLS directory name"""
+ def __init__(self, directory_name):
+ QlsError.__init__(self)
+ self.directory_name = directory_name
+ def __str__(self):
+ return 'Invalid QLS directory name "%s"' % self.directory_name
+
+class InvalidRecordTypeError(QlsRecordError):
+ """Error class for any operation using an invalid record type"""
+ def __init__(self, file_header, record, error_msg):
+ QlsRecordError.__init__(self, file_header, record)
+ self.error_msg = error_msg
+ def __str__(self):
+ return 'Invalid record type: ' + QlsRecordError.__str__(self) + ':' + self.error_msg
+
+class InvalidRecordVersionError(QlsRecordError):
+ """Invalid record version"""
+ def __init__(self, file_header, record, expected_version):
+ QlsRecordError.__init__(self, file_header, record)
+ self.expected_version = expected_version
+ def __str__(self):
+ return 'Invalid record version: queue="%s" ' + QlsRecordError.__str__(self) + \
+ ' ver_found=0x%x ver_expected=0x%x' % (self.record_header.version, self.expected_version)
+
+class NoMoreFilesInJournalError(QlsError):
+ """Raised when trying to obtain the next file in the journal and there are no more files"""
+ def __init__(self, queue_name):
+ QlsError.__init__(self)
+ self.queue_name = queue_name
+ def __str__(self):
+ return 'No more journal files in queue "%s"' % self.queue_name
+
+class NonTransactionalRecordError(QlsRecordError):
+ """Transactional operation on non-transactional record"""
+ def __init__(self, file_header, record, operation):
+ QlsRecordError.__init__(self, file_header, record)
+ self.operation = operation
+ def __str__(self):
+ return 'Transactional operation on non-transactional record: ' + QlsRecordError.__str__() + \
+ ' operation=%s' % self.operation
+
+class PartitionDoesNotExistError(QlsError):
+ """Partition name does not exist on disk"""
+ def __init__(self, partition_directory):
+ QlsError.__init__(self)
+ self.partition_directory = partition_directory
+ def __str__(self):
+ return 'Partition %s does not exist' % self.partition_directory
+
+class PoolDirectoryAlreadyExistsError(QlsError):
+ """Pool directory already exists"""
+ def __init__(self, pool_directory):
+ QlsError.__init__(self)
+ self.pool_directory = pool_directory
+ def __str__(self):
+ return 'Pool directory %s already exists' % self.pool_directory
+
+class PoolDirectoryDoesNotExistError(QlsError):
+ """Pool directory does not exist"""
+ def __init__(self, pool_directory):
+ QlsError.__init__(self)
+ self.pool_directory = pool_directory
+ def __str__(self):
+ return 'Pool directory %s does not exist' % self.pool_directory
+
+class RecordIdNotFoundError(QlsRecordError):
+ """Record Id not found in enqueue map"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'Record Id not found in enqueue map: ' + QlsRecordError.__str__()
+
+class RecordNotLockedError(QlsRecordError):
+ """Record in enqueue map is not locked"""
+ def __init__(self, file_header, record):
+ QlsRecordError.__init__(self, file_header, record)
+ def __str__(self):
+ return 'Record in enqueue map is not locked: ' + QlsRecordError.__str__()
+
+class UnexpectedEndOfFileError(QlsError):
+ """The bytes read from a file is less than that expected"""
+ def __init__(self, size_read, size_expected, file_offset, file_name):
+ QlsError.__init__(self)
+ self.size_read = size_read
+ self.size_expected = size_expected
+ self.file_offset = file_offset
+ self.file_name = file_name
+ def __str__(self):
+ return 'Tried to read %d at offset %d in file "%s"; only read %d' % \
+ (self.size_read, self.file_offset, self.file_name, self.size_expected)
+
+class WritePermissionError(QlsError):
+ """No write permission"""
+ def __init__(self, directory):
+ QlsError.__init__(self)
+ self.directory = directory
+ def __str__(self):
+ return 'No write permission in directory %s' % self.directory
+
+class XidSizeError(QlsError):
+ """Error class for Xid size mismatch"""
+ def __init__(self, expected_size, actual_size, xid_str):
+ QlsError.__init__(self)
+ self.expected_size = expected_size
+ self.actual_size = actual_size
+ self.xid_str = xid_str
+ def __str__(self):
+ return 'Inconsistent xid size: expected:%d; actual:%d; xid="%s"' % \
+ (self.expected_size, self.actual_size, self.xid_str)
+
+# =============================================================================
+
+if __name__ == "__main__":
+ print "This is a library, and cannot be executed."