# Path: debian/elevator/usr/share/pyshared/elevator/db.py
# class DatabaseOptions(dict):
#     def __init__(self, *args, **kwargs):
#         self['create_if_missing'] = True
#         self['error_if_exists'] = False
#         self['paranoid_checks'] = False
#         self['block_cache_size'] = 8 * (2 << 20)
#         self['write_buffer_size'] = 2 * (2 << 20)
#         self['block_size'] = 4096
#         self['max_open_files'] = 1000
# 
#         for key, value in kwargs.iteritems():
#             if key in self:
#                 self[key] = value
# 
# Path: debian/elevator/usr/share/pyshared/elevator/constants.py
# KEY_ERROR = 1
# 
# TYPE_ERROR = 0
# 
# DATABASE_ERROR = 6
# 
# VALUE_ERROR = 2
# 
# RUNTIME_ERROR = 4
# 
# SIGNAL_ERROR = 7
# 
# SUCCESS_STATUS = 1
# 
# FAILURE_STATUS = -1
# 
# WARNING_STATUS = -2
# 
# SIGNAL_BATCH_PUT = 1
# 
# SIGNAL_BATCH_DELETE = 0


import leveldb
import logging
from .db import DatabaseOptions
from .message import ResponseContent, ResponseHeader
from .constants import KEY_ERROR, TYPE_ERROR, DATABASE_ERROR,\
                       VALUE_ERROR, RUNTIME_ERROR, SIGNAL_ERROR,\
                       SUCCESS_STATUS, FAILURE_STATUS, WARNING_STATUS,\
                       SIGNAL_BATCH_PUT, SIGNAL_BATCH_DELETE
from .utils.patterns import destructurate
from .helpers.internals import failure, success
        return success()

    def _gen_response(self, request, cmd_status, cmd_value):
        if cmd_status == FAILURE_STATUS:
            header = ResponseHeader(status=cmd_status, err_code=cmd_value[0], err_msg=cmd_value[1])
            content = ResponseContent(datas=None)
        else:
            if 'compression' in request.meta:
                compression = request.meta['compression']
            else:
                compression = False

            header = ResponseHeader(status=cmd_status, compression=compression)
            content = ResponseContent(datas=cmd_value, compression=compression)

        return header, content

    def command(self, message, *args, **kwargs):
        status = SUCCESS_STATUS
        err_code, err_msg = None, None

        # DB does not exist
        if message.db_uid and (not message.db_uid in self.databases):
            error_msg = "Database %s doesn't exist" % message.db_uid
            errors_logger.error(error_msg)
            status, value = failure(RUNTIME_ERROR, error_msg)
        # Command not recognized
        elif not message.command in self.handlers:
            error_msg = "Command %s not handled" % message.command
            errors_logger.error(error_msg)

# Path: debian/elevator/usr/share/pyshared/elevator/db.py
# class DatabaseOptions(dict):
#     def __init__(self, *args, **kwargs):
#         self['create_if_missing'] = True
#         self['error_if_exists'] = False
#         self['paranoid_checks'] = False
#         self['block_cache_size'] = 8 * (2 << 20)
#         self['write_buffer_size'] = 2 * (2 << 20)
#         self['block_size'] = 4096
#         self['max_open_files'] = 1000
# 
#         for key, value in kwargs.iteritems():
#             if key in self:
#                 self[key] = value
# 
# Path: debian/elevator/usr/share/pyshared/elevator/constants.py
# KEY_ERROR = 1
# 
# TYPE_ERROR = 0
# 
# DATABASE_ERROR = 6
# 
# VALUE_ERROR = 2
# 
# RUNTIME_ERROR = 4
# 
# SIGNAL_ERROR = 7
# 
# SUCCESS_STATUS = 1
# 
# FAILURE_STATUS = -1
# 
# WARNING_STATUS = -2
# 
# SIGNAL_BATCH_PUT = 1
# 
# SIGNAL_BATCH_DELETE = 0


# Path: debian/elevator/usr/share/pyshared/elevator/api.py
import leveldb
import logging
from .db import DatabaseOptions
from .message import ResponseContent, ResponseHeader
from .constants import KEY_ERROR, TYPE_ERROR, DATABASE_ERROR,\
                       VALUE_ERROR, RUNTIME_ERROR, SIGNAL_ERROR,\
                       SUCCESS_STATUS, FAILURE_STATUS, WARNING_STATUS,\
                       SIGNAL_BATCH_PUT, SIGNAL_BATCH_DELETE
from .utils.patterns import destructurate
from .helpers.internals import failure, success

        return success()

    def _gen_response(self, request, cmd_status, cmd_value):
        if cmd_status == FAILURE_STATUS:
            header = ResponseHeader(status=cmd_status, err_code=cmd_value[0], err_msg=cmd_value[1])
            content = ResponseContent(datas=None)
        else:
            if 'compression' in request.meta:
                compression = request.meta['compression']
            else:
                compression = False

            header = ResponseHeader(status=cmd_status, compression=compression)
            content = ResponseContent(datas=cmd_value, compression=compression)

        return header, content

    def command(self, message, *args, **kwargs):
        status = SUCCESS_STATUS
        err_code, err_msg = None, None

        # DB does not exist
        if message.db_uid and (not message.db_uid in self.databases):
            error_msg = "Database %s doesn't exist" % message.db_uid
            errors_logger.error(error_msg)
            status, value = failure(RUNTIME_ERROR, error_msg)
        # Command not recognized
        elif not message.command in self.handlers:
            error_msg = "Command %s not handled" % message.command
            errors_logger.error(error_msg)

            status, value = failure(KEY_ERROR, error_msg)