Exemple #1
0
 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
Exemple #2
0
 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
Exemple #3
0
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) 
Exemple #4
0
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())