Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 import rospy
00011 import roslib
00012 roslib.load_manifest('rocon_hub_client')
00013 import redis
00014 from .hub_connector import HubConnector
00015
00016
00017 class HubClient(HubConnector):
00018
00019
00020
00021
00022 ConnectionError = redis.exceptions.ConnectionError
00023
00024 pool = None
00025 server = None
00026 pubsub = None
00027 callback = None
00028 namespace = ''
00029 param = {}
00030
00031 def __init__(self, whitelist, blacklist, is_zeroconf, namespace, name, callbacks):
00032 super(HubClient, self).__init__(whitelist, blacklist, is_zeroconf, self._connectToHub)
00033
00034 self._namespace = namespace
00035 self._name = name
00036 self._unique_name = ''
00037 self._callbacks = callbacks
00038
00039 self._redis_keys = {}
00040
00041 self._redis_channels = {}
00042 self._redis_pubsub_server = None
00043
00044 def _connectToHub(self, ip, portarg):
00045 try:
00046 self.pool = redis.ConnectionPool(host=ip, port=portarg, db=0)
00047 self.server = redis.Redis(connection_pool=self.pool)
00048 rospy.logdebug("HubClient : connected to the hub's redist server.")
00049 self._redis_pubsub_server = self.server.pubsub()
00050 except redis.exceptions.ConnectionError as unused_e:
00051 rospy.logerror("HubClient : failed rule to the hub's redis server.")
00052 return False
00053 raise
00054 return True
00055
00056 def registerKey(self, key, element):
00057 key = self._namespace + ":" + key
00058 element = self._namespace + ":" + element
00059
00060 if self.server.sadd(key, element):
00061 return True
00062 else:
00063 raise Exception("Same concertmaster name exist")
00064 return False
00065
00066 def unregisterKey(self, key, element):
00067 try:
00068 key = self._namespace + ":" + key
00069 element = self._namespace + ":" + element
00070 self.server.srem(key, element)
00071 except redis.exceptions.ConnectionError:
00072 raise
00073
00074 def getValues(self, key):
00075 key = self._namespace + ":" + key
00076 values = self.server.smembers(key)
00077
00078 values = [v[len(self._namespace) + 1:] for v in values]
00079 return values