示例#1
0
    def __init__(self, fabnet_host, security_provider, parallel_put_count=3, \
            parallel_get_count=3, cache_dir='/tmp', cache_size=None):
        if not isinstance(security_provider, AbstractSecurityManager):
            raise Exception('Invalid security provider type!')
        self.__parallel_put_count = parallel_put_count
        self.__parallel_get_count = parallel_get_count
        self.security_provider = security_provider
        self.fabnet_gateway = FabnetGateway(fabnet_host, security_provider)

        prikey = self.security_provider.get_prikey()
        self.metadata_key = hashlib.sha1(str(prikey)).hexdigest()
        self.metadata_f_name = 'md-%s.bin' % self.metadata_key
        self.db_cache = DataBlockCache(cache_dir, cache_size,
                                       self.metadata_key)

        self.journal = None
        self.metadata = None
        self.transactions_manager = None
        self.put_manager = None
        self.get_manager = None
        self.delete_manager = None

        DataBlock.SECURITY_MANAGER = self.security_provider
        DataBlock.LOCK_MANAGER = DBLocksManager()

        self.journal = Journal(self.metadata_key, \
                self.db_cache.get_static_cache_path('journal.bin'), self.fabnet_gateway)