def main(self): yield 1 while 1: if self.dataReady("control"): mes = self.recv("control") if isinstance(mes, shutdownMicroprocess) or \ isinstance(mes, producerFinished): self.send(producerFinished(), "signal") break if self.dataReady("forward"): s = self.recv("forward") self.send(Node.to_purge_element(s), "outbox") if self.dataReady("inbox"): handled = False a = self.recv("inbox") e = a.xml_parent.xml_parent self.send(('INCOMING', e), "log") msg_type = e.get_attribute_value(u'type') or 'get' key = 'xmpp.%s' % unicode(msg_type) if key in self.outboxes: self.send(Node.from_purge_element(e), key) handled = True if not handled: self.send(e, "unknown") if not self.anyReady(): self.pause() yield 1 yield 1
def main(self): yield self.initComponents() while 1: if self.dataReady("control"): mes = self.recv("control") if isinstance(mes, shutdownMicroprocess) or isinstance(mes, producerFinished): self.send(producerFinished(), "signal") break if self.dataReady("jid"): self.from_jid = self.recv('jid') self.pubsub_top_level_node = u'home/%s/%s' % (self.xmpphost, self.from_jid.node) if self.dataReady("initiate"): self.recv("initiate") p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=self.pubsub_top_level_node) self.send(p, "create-node") yield 1 #d = FeaturesDiscovery(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost) #self.send(d, "features-disco") d = SubscriptionsDiscovery(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost) self.send(d, "subscriptions-disco") d = AffiliationsDiscovery(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost) self.send(d, "affiliations-disco") n = ItemsDiscovery(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=self.pubsub_top_level_node) self.send(n, "items-disco") # The response to our discovery query # is a a headstock.api.discovery.FeaturesDiscovery instance. # What we immediatly do is to notify all handlers # interested in that event about it. if self.dataReady('features.result'): disco = self.recv('features.result') for feature in disco.features: print " ", feature.var self.send(disco, 'features-announce') if self.dataReady('items.result'): items = self.recv('items.result') print "%s has %d item(s)" % (items.node_name, len(items.items)) #for item in items.items: #n = ItemsDiscovery(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, # node_name=item.node) #self.send(n, "items-disco") if self.dataReady('items.error'): items_disco = self.recv('items.error') print "DISCO ERROR: ", items_disco.node_name, items_disco.error if items_disco.error.condition == 'item-not-found': p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=items_disco.node_name) self.send(p, "create-node") yield 1 if self.dataReady('subscriptions.result'): subscriptions = self.recv('subscriptions.result') for sub in subscriptions.subscriptions: print "Subscription: %s (%s)" % (sub.node, sub.state) if self.dataReady('affiliations.result'): affiliations = self.recv('affiliations.result') for aff in affiliations.affiliations: print "Affiliation: %s %s" % (aff.node, aff.affiliation) if self.dataReady('docreate'): nodeid = self.recv('docreate').strip() p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=nodeid) self.send(p, "create-node") if self.dataReady('docreatecollection'): nodeid = self.recv('docreatecollection').strip() p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=nodeid) p.set_default_collection_conf() self.send(p, "create-node") if self.dataReady('dodelete'): nodeid = self.recv('dodelete').strip() p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=nodeid) self.send(p, "delete-node") if self.dataReady('dosubscribe'): nodeid = self.recv('dosubscribe').strip() p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=nodeid, sub_jid=self.from_jid.nodeid()) self.send(p, "subscribe-node") if self.dataReady('dounsubscribe'): nodeid = self.recv('dounsubscribe').strip() p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=nodeid, sub_jid=self.from_jid.nodeid()) self.send(p, "unsubscribe-node") if self.dataReady('created'): node = self.recv('created') print "Node created: %s" % node.node_name p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, node_name=node.node_name, sub_jid=self.from_jid.nodeid()) self.send(p, "subscribe-node") if self.dataReady('subscribed'): node = self.recv('subscribed') print "Node subscribed: %s" % node.node_name if self.dataReady('deleted'): node = self.recv('deleted') print "Node deleted: %s" % node.node_name if self.dataReady('error'): node = self.recv('error') print node.error if not self.anyReady(): self.pause() yield 1