def get_storage_idxs(self): KEY = self._key("storage_idxs") if not self.config_db.has_key(KEY): logging.debug("--- Storage manager knows of no storage idxs") return [] idxs_str = self.config_db[KEY] storage_idxs = IE.binary_decode_int_varlen_list(idxs_str) logging.debug("--- Storage manager knows of idxs: %s" % str(storage_idxs)) return storage_idxs
def __init__(self, db_manager, txn_manager): self.db_manager = db_manager self.txn_manager = txn_manager self.block_manager = BlockManager.BlockManager(self.db_manager, self.txn_manager) self.block_sequencer = BlockSequencer.BlockSequencer( self.db_manager, self.txn_manager, self, self.block_manager ) self.report_manager = Reporting.DummyReportManager() self.block_listeners = [] self.config_db = db_manager.get_database_btree("config.db", "storage", txn_manager) logging.debug("Loaded storage manager db") for key, val in self.config_db.iteritems(): logging.debug("Storage manager db: [%s]->[%s]" % (base64.b64encode(key), (base64.b64encode(val)))) self.block_container_db = db_manager.get_database_hash("storage.db", "blocks", txn_manager) logging.debug("********** Loaded storage manager logs") for key, val in self.config_db.iteritems(): logging.debug("Storage manager blocks: [%s]->[%s]" % (base64.b64encode(key), base64.b64encode(val))) # Mapping of storage sequences to indices and vice versa # The storage sequence data consists of storage index and sequence # ID string # In the config_db we store the persistent copy of the information # in the seq_to_index and index_to_seq: # repo.%index.seq = sequence # repo.%index.storage = storage index # repo.next_index = <the next index> self.seq_to_index = {} self.index_to_seq = {} NS_KEY = self._key("next_seq") if self.config_db.has_key(NS_KEY): self.next_seq_idx = int(self.config_db[NS_KEY]) else: self.next_seq_idx = 0 SEQ_PREFIX = self._key("SEQ.") for key, val in self.config_db.iteritems_prefix(SEQ_PREFIX): sequence_id = key[len(SEQ_PREFIX) :] storage_idx, sequence_idx = IE.binary_decode_int_varlen_list(val) self.seq_to_index[sequence_id] = (storage_idx, sequence_idx) self.index_to_seq[sequence_idx] = (storage_idx, sequence_id)