def __init__(self, config): super(HotRodCacheClient, self).__init__(config["host"], config["port"], config["cache"]) self.config = config if config["hotrod.use_river_string_keys"] in TRUE_STR_VALUES: self.river_keys = RiverStringCodec() else: self.river_keys = None if self.cache_name == DEFAULT_CACHE_NAME: self.cache_name = ""; self.remote_cache = RemoteCache(self.host, int(self.port), self.cache_name) return
class HotRodCacheClient(CacheClient): """HotRod cache client implementation.""" def __init__(self, config): super(HotRodCacheClient, self).__init__(config["host"], config["port"], config["cache"]) self.config = config if config["hotrod.use_river_string_keys"] in TRUE_STR_VALUES: self.river_keys = RiverStringCodec() else: self.river_keys = None if self.cache_name == DEFAULT_CACHE_NAME: self.cache_name = ""; self.remote_cache = RemoteCache(self.host, int(self.port), self.cache_name) return def _optionally_encode_key(self, key_unmarshalled): if self.river_keys == None: return key_unmarshalled; else: return self.river_keys.encode(key_unmarshalled) def put(self, key, value, version=None, lifespan=None, max_idle=None, put_if_absent=False): key = self._optionally_encode_key(key) if lifespan == None: lifespan=0 if max_idle == None: max_idle=0 try: if (version == None): if (put_if_absent): retval = self.remote_cache.put_if_absent(key, value, lifespan, max_idle) if retval: return else: raise ConflictError else: self.remote_cache.put(key, value, lifespan, max_idle) else: numversion = None try: numversion = int(version) except ValueError: self._error("hotrod client only accepts numeric versions") retval = self.remote_cache.replace_with_version(key, value, numversion, lifespan, max_idle) if retval == 1: return elif retval == 0: raise NotFoundError elif retval == -1: raise ConflictError else: self._error("unexpected return value from hotrod client") except RemoteCacheError as e: self._error(e.args) def get(self, key, get_version=False): try: value = None version = None key = self._optionally_encode_key(key) if get_version: version, value = self.remote_cache.get_versioned(key) else: value = self.remote_cache.get(key) if value == None: raise NotFoundError if get_version: return version, value else: return value except RemoteCacheError as e: self._error(e.args) def delete(self, key, version=None): try: key = self._optionally_encode_key(key) if version == None: retval = self.remote_cache.remove(key) if retval: return else: raise NotFoundError else: numversion = None try: numversion = int(version) except ValueError: self._error("hotrod client only accepts numeric versions") retval = self.remote_cache.remove_with_version(key, numversion) if retval == 1: return elif retval == 0: raise NotFoundError elif retval == -1: raise ConflictError else: self._error("unexpected return value from hotrod client") except RemoteCacheError as e: self._error(e.args) def clear(self): self.remote_cache.clear() def exists(self, key): try: key = self._optionally_encode_key(key) if not self.remote_cache.contains_key(key): raise NotFoundError except RemoteCacheError as e: self._error(e.args)
test_codec_simple(m, "c") a256 = "" for i in range(1, 256): a256 += "a" a257 = a256 + "a" a258 = a257 + "a" a65336 = "" a65536 = "" a65537 = "" for i in range(1, 65336): a65336 += "a" for i in range(1, 65536): a65536 += "a" for i in range(1, 65537): a65537 += "a" a65538 = a65537 + "a" test_codec_simple(m, a256) test_codec_simple(m, a257) test_codec_simple(m, a258) test_codec_simple(m, a65336) test_codec_simple(m, a65536) test_codec_simple(m, a65537) test_codec_simple(m, a65538) print "testing RiverString" test_codec(RiverStringCodec()) print "testing RiverByteArray" test_codec(RiverByteArrayCodec())