def make_dbm():
    """
    Creates a DBM queue store, pulling config values from the CoilMQ configuration.
    """
    try:
        data_dir = config.get('coilmq', 'qstore.dbm.data_dir')
        cp_ops = config.getint('coilmq', 'qstore.dbm.checkpoint_operations')
        cp_timeout = config.getint('coilmq', 'qstore.dbm.checkpoint_timeout')
    except ConfigParser.NoOptionError as e:
        raise ConfigError('Missing configuration parameter: %s' % e)

    if not os.path.exists(data_dir):
        raise ConfigError('DBM directory does not exist: %s' % data_dir)
    # FIXME: how do these get applied? Is OR appropriate?
    if not os.access(data_dir, os.W_OK | os.R_OK):
        raise ConfigError('Cannot read and write DBM directory: %s' % data_dir)

    store = DbmQueue(data_dir, checkpoint_operations=cp_ops,
                     checkpoint_timeout=cp_timeout)
    return store
Creates a DBM queue store, pulling config values from the CoilMQ configuration.