hub_client.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 #
00003 # License: BSD
00004 #   https://raw.github.com/robotics-in-concert/rocon_multimaster/master/rocon_hub_client/LICENSE
00005 #
00006 ##############################################################################
00007 # Imports
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     # HubConnector provide
00020     #    connect(hub_uri)
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 #        self._redis_keys['index'] = createHubKey('index')
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  # ~HubClient.ConnectionError
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends


rocon_hub_client
Author(s): Jihoon
autogenerated on Tue Jan 15 2013 17:44:00