示例#1
0
class ZookeeperSubscriptionHolder(object):
    def __init__(self, hosts):
        self.zk = ZookeeperClient(hosts)
        self.entity = 'subscriptions'

    def get_currently_subscribed_topics(self):
        subscribers = self.as_dict()
        topics_with_duplicates = map(lambda subscriber: subscriber['topic'],
                                     subscribers)
        unique_topics = set(topics_with_duplicates)
        return unique_topics

    def add(self, id, topic, callback):
        subscription = create_subscription_as_dict(topic, callback)
        self.zk.put(self.entity, id, subscription)
        subscription['id'] = id
        return subscription

    def remove(self, id):
        self.zk.delete(self.entity, id)

    def get(self, topic):
        return [
            subscription for subscription in self.as_dict()
            if subscription['topic'] == topic
        ]

    def __transform_from_zk(self, zk_subscription):
        id, subscription = zk_subscription
        subscription['id'] = id
        return subscription

    def as_dict(self):
        zk_subscriptions = self.zk.list(self.entity)
        return list(map(self.__transform_from_zk, zk_subscriptions))
class ZookeeperSubscriptionHolder(object):

    def __init__(self, hosts):
        self.zk = ZookeeperClient(hosts)
        self.entity = 'subscriptions'

    def get_currently_subscribed_topics(self):
        subscribers = self.as_dict()
        topics_with_duplicates = map(lambda subscriber: subscriber['topic'], subscribers)
        unique_topics = set(topics_with_duplicates)
        return unique_topics

    def add(self, id, topic, callback):
        subscription = create_subscription_as_dict(topic, callback)
        self.zk.put(self.entity, id, subscription)
        subscription['id'] = id
        return subscription

    def remove(self, id):
        self.zk.delete(self.entity, id)

    def get(self, topic):
        return [subscription for subscription in self.as_dict() if subscription['topic'] == topic]

    def __transform_from_zk(self, zk_subscription):
        id, subscription = zk_subscription
        subscription['id'] = id
        return subscription

    def as_dict(self):
        zk_subscriptions = self.zk.list(self.entity)
        return list(map(self.__transform_from_zk, zk_subscriptions))
示例#3
0
 def __init__(self, hosts):
     self.zk = ZookeeperClient(hosts)
     self.entity = 'subscriptions'
 def __init__(self, hosts):
     self.zk = ZookeeperClient(hosts)
     self.entity = 'subscriptions'