def initComponents(self): sub = SubscribeTo("DISCO_FEAT") self.link((sub, 'outbox'), (self, 'inbox')) self.addChildren(sub) sub.activate() return 1
def initComponents(self): sub = SubscribeTo("JID.%s" % self.session_id) self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() return 1
def initComponents(self): # We subscribe to the JID backplane component # that will inform us when the server has # returned the per-session jid sub = SubscribeTo("JID") self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() return 1
def initComponents(self): sub = SubscribeTo("JID") self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() sub = SubscribeTo("CONSOLE") self.link((sub, 'outbox'), (self, 'inbox')) self.addChildren(sub) sub.activate() return 1
def initComponents(self): sub = SubscribeTo("JID.%s" % self.session_id) self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() client = SimpleHTTPClient() self.addChildren(client) self.link((self, '_request'), (client, 'inbox')) self.link((client, 'outbox'), (self, '_response')) client.activate() return 1
def initComponents(self): sub = SubscribeTo("JID") self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() pub = PublishTo("DISCO_FEAT") self.link((self, 'features-announce'), (pub, 'inbox')) self.addChildren(pub) pub.activate() sub = SubscribeTo("BOUND") self.link((sub, 'outbox'), (self, 'initiate')) self.addChildren(sub) sub.activate() return 1
def initComponents(self): sub = SubscribeTo("JID.%s" % self.session_id) self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() feedreader = FeedReaderComponent(use_etags=False) self.addChildren(feedreader) feedreader.activate() client = SimpleHTTPClient() self.addChildren(client) self.link((self, '_feedrequest'), (client, 'inbox')) self.link((client, 'outbox'), (feedreader, 'inbox')) self.link((feedreader, 'outbox'), (self, '_feedresponse')) client.activate() client = SimpleHTTPClient() self.addChildren(client) self.link((self, '_delrequest'), (client, 'inbox')) self.link((client, 'outbox'), (self, '_delresponse')) client.activate() return 1
def setup(self): # Backplanes are like a global entry points that # can be accessible both for publishing and # recieving data. # In other words, a component interested # in advertising to many other components that # something happened may link one of its outbox # to a PublishTo component's inbox. # A component wishing to receive that piece of # information will link one of its inbox # to the SubscribeTo component's outbox. # This helps greatly to make components more # loosely connected but also allows for some data # to be dispatched at once to many (such as when # the server returns the per-session JID that # is of interest for most other components). Backplane("CONSOLE").activate() Backplane("JID").activate() # Used to inform components that the session is now active Backplane("BOUND").activate() # Used to inform components of the supported features Backplane("DISCO_FEAT").activate() sub = SubscribeTo("JID") self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() # We pipe everything typed into the console # directly to the console backplane so that # every components subscribed to the console # backplane inbox will get the typed data and # will decide it it's of concern or not. Pipeline(ConsoleReader(), PublishTo('CONSOLE')).activate() # Add two outboxes ro the ClientSteam to support specific extensions. ClientStream.Outboxes["%s.query" % XMPP_IBR_NS] = "Registration" ClientStream.Outboxes["%s.query" % XMPP_LAST_NS] = "Activity" ClientStream.Outboxes["%s.query" % XMPP_DISCO_INFO_NS] = "Discovery" self.client = ClientStream(self.jid, self.passwordLookup, use_tls=self.usetls) self.graph = Graphline(client = self, console = SubscribeTo('CONSOLE'), logger = Logger(path=None, stdout=True), tcp = TCPClient(self.server, self.port), xmlparser = XMLIncrParser(), xmpp = self.client, streamerr = StreamError(), saslerr = SaslError(), discohandler = DiscoHandler(self.jid, self.domain), activityhandler = ActivityHandler(), rosterhandler = RosterHandler(self.jid), registerhandler = RegistrationHandler(self.username, self.password), msgdummyhandler = DummyMessageHandler(), presencehandler = PresenceHandler(), presencedisp = PresenceDispatcher(), rosterdisp = RosterDispatcher(), msgdisp = MessageDispatcher(), discodisp = DiscoveryDispatcher(), activitydisp = ActivityDispatcher(), registerdisp = RegisterDispatcher(), pjid = PublishTo("JID"), pbound = PublishTo("BOUND"), linkages = {('xmpp', 'terminated'): ('client', 'inbox'), ('console', 'outbox'): ('client', 'control'), ('client', 'forward'): ('xmpp', 'forward'), ('client', 'outbox'): ('tcp', 'inbox'), ('client', 'signal'): ('tcp', 'control'), ("tcp", "outbox") : ("xmlparser", "inbox"), ("xmpp", "starttls") : ("tcp", "makessl"), ("tcp", "sslready") : ("xmpp", "tlssuccess"), ("xmlparser", "outbox") : ("xmpp" , "inbox"), ("xmpp", "outbox") : ("tcp" , "inbox"), ("xmpp", "reset"): ("xmlparser", "reset"), ("client", "log"): ("logger", "inbox"), ("xmpp", "log"): ("logger", "inbox"), ("xmpp", "jid"): ("pjid", "inbox"), ("xmpp", "bound"): ("pbound", "inbox"), ("xmpp", "features"): ("client", "streamfeat"), ("client", "doauth"): ("xmpp", "auth"), # Registration ("xmpp", "%s.query" % XMPP_IBR_NS): ("registerdisp", "inbox"), ("registerdisp", "log"): ('logger', "inbox"), ("registerdisp", "xmpp.error"): ("registerhandler", "error"), ("registerdisp", "xmpp.result"): ("registerhandler", "inbox"), ("registerhandler", "outbox"): ("registerdisp", "forward"), ("client", "doregistration"): ("registerdisp", "forward"), ("registerdisp", "outbox"): ("xmpp", "forward"), # Presence ("xmpp", "%s.presence" % XMPP_CLIENT_NS): ("presencedisp", "inbox"), ("presencedisp", "log"): ('logger', "inbox"), ("presencedisp", "xmpp.subscribe"): ("presencehandler", "subscribe"), ("presencedisp", "xmpp.unsubscribe"): ("presencehandler", "unsubscribe"), ("presencehandler", "outbox"): ("presencedisp", "forward"), ("presencehandler", "roster"): ("rosterdisp", "forward"), ("presencedisp", "outbox"): ("xmpp", "forward"), # Roster ("xmpp", "%s.query" % XMPP_ROSTER_NS): ("rosterdisp", "inbox"), ("rosterdisp", "log"): ('logger', "inbox"), ('rosterdisp', 'xmpp.set'): ('rosterhandler', 'pushed'), ('rosterdisp', 'xmpp.result'): ('rosterhandler', 'inbox'), ('rosterhandler', 'result'): ('rosterdisp', 'forward'), ("rosterdisp", "outbox"): ("xmpp", "forward"), # Discovery ("xmpp", "%s.query" % XMPP_DISCO_INFO_NS): ("discodisp", "features.inbox"), ("discodisp", "log"): ('logger', "inbox"), ("discohandler", "features-disco"): ('discodisp', "features.forward"), ("discodisp", "out.features.result"): ('discohandler', "features.result"), ("discodisp", "outbox"): ("xmpp", "forward"), # Message ("xmpp", "%s.message" % XMPP_CLIENT_NS): ("msgdisp", "inbox"), ("msgdisp", "log"): ('logger', "inbox"), ("msgdisp", "xmpp.chat"): ('msgdummyhandler', 'inbox'), ("msgdummyhandler", "outbox"): ('msgdisp', 'forward'), ("msgdisp", "outbox"): ("xmpp", "forward"), # Activity ("xmpp", "%s.query" % XMPP_LAST_NS): ("activitydisp", "inbox"), ("activitydisp", "log"): ('logger', "inbox"), ("activitydisp", "outbox"): ("xmpp", "forward"), ("activityhandler", 'activity-supported'): ('rosterhandler', 'ask-activity'), ("rosterhandler", 'activity'): ('activitydisp', 'forward'), } ) self.addChildren(self.graph) self.graph.activate() return 1
class Logger(component): """ This component is used to write messages to file. Upon instantiation, the a backplane is registered with the name LOG_ + logname, so that a log named 'foo.bar' would be registered under 'LOG_foo.bar'. Please note that the Logger will not be shut down automatically. It must be sent a shutdown message via its control box. Typically this component is to be used by a Chassis or some other Parent component to provide a log for its children. """ Inboxes = { 'inbox' : 'Receive a tuple containing the filename and message to log', 'control' : 'Receive shutdown messages',} Outboxes = {'outbox' : 'NOT USED', 'signal' : 'Send shutdown messages',} def __init__(self, logname, wrapper = wrapMessage): """ Initializes a new Logger. -logname - the name of the log to write to -wrapper - a method that takes a message as an argument and returns a formatted string to put in the log. """ super(Logger, self).__init__() self.logname = logname self.bplane = Backplane('LOG_' + logname) self.subscriber = SubscribeTo('LOG_' + logname) self.wrapper = wrapper #add the components as children self.addChildren(self.subscriber, self.bplane) self.link((self.subscriber, 'outbox'), (self, 'inbox')) self.link((self, 'signal'), (self.bplane, 'control')) def main(self): self.bplane.activate() self.subscriber.activate() self.first_run = False not_done = True while not_done: if self.dataReady('inbox'): file = open(self.logname, 'a') while self.dataReady('inbox'): msg = self.recv('inbox') file.write(self.wrapper(msg)) file.close() while self.dataReady('control'): msg = self.recv('control') if isinstance(msg, (shutdownMicroprocess)): not_done = False self.shutdown(msg) if not_done: self.pause() yield 1 def shutdown(self, msg): """ Sends shutdown message to signal box and removes children. """ self.send(msg, 'signal') self.removeChild(self.bplane) self.removeChild(self.subscriber)
def setup(self): # Backplanes are like a global entry points that # can be accessible both for publishing and # recieving data. # In other words, a component interested # in advertising to many other components that # something happened may link one of its outbox # to a PublishTo component's inbox. # A component wishing to receive that piece of # information will link one of its inbox # to the SubscribeTo component's outbox. # This helps greatly to make components more # loosely connected but also allows for some data # to be dispatched at once to many (such as when # the server returns the per-session JID that # is of interest for most other components). Backplane("CONSOLE").activate() Backplane("JID").activate() # Used to inform components that the session is now active Backplane("BOUND").activate() # Used to inform components of the supported features Backplane("DISCO_FEAT").activate() sub = SubscribeTo("JID") self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() log = Logger(path=None, stdout=True, name='XmppLogger') Backplane('LOG_' + self.log_location).activate() Pipeline(SubscribeTo('LOG_' + self.log_location), log).activate() log_writable = WsgiLogWritable(self.log_location) log.activate() log_writable.activate() # We pipe everything typed into the console # directly to the console backplane so that # every components subscribed to the console # backplane inbox will get the typed data and # will decide it it's of concern or not. Pipeline(ConsoleReader(), PublishTo('CONSOLE')).activate() # Add two outboxes ro the ClientSteam to support specific extensions. ClientStream.Outboxes["%s.query" % XMPP_IBR_NS] = "Registration" ClientStream.Outboxes["%s.query" % XMPP_LAST_NS] = "Activity" ClientStream.Outboxes["%s.query" % XMPP_DISCO_INFO_NS] = "Discovery" self.client = ClientStream(self.jid, self.passwordLookup, use_tls=self.usetls) WsgiConfig ={ 'server_software' : "Example WSGI Web Server", 'server_admin' : "Jason Baker", 'wsgi_ver' : (1,0), } routing = [ ["/", SimpleWsgiFactory(log_writable, WsgiConfig, simple_app, '/simple')], ] #routing = [ ['/', Echoer]] self.graph = Graphline(client = self, console = SubscribeTo('CONSOLE'), logger = PublishTo('LOG_' + self.log_location), tcp = TCPClient(self.server, self.port), xmlparser = XMLIncrParser(), xmpp = self.client, streamerr = StreamError(), saslerr = SaslError(), discohandler = DiscoHandler(self.jid, self.domain), activityhandler = ActivityHandler(), rosterhandler = RosterHandler(self.jid), registerhandler = RegistrationHandler(self.username, self.password), msgdummyhandler = WebMessageHandler(), presencehandler = PresenceHandler(), presencedisp = PresenceDispatcher(), rosterdisp = RosterDispatcher(), msgdisp = MessageDispatcher(), discodisp = DiscoveryDispatcher(), activitydisp = ActivityDispatcher(), registerdisp = RegisterDispatcher(), pjid = PublishTo("JID"), pbound = PublishTo("BOUND"), proto_man = ProtocolManager(Protocol=HTTPProtocol(routing)), linkages = {('xmpp', 'terminated'): ('client', 'inbox'), ('console', 'outbox'): ('client', 'control'), ('client', 'forward'): ('xmpp', 'forward'), ('client', 'outbox'): ('tcp', 'inbox'), ('client', 'signal'): ('tcp', 'control'), ("tcp", "outbox") : ("xmlparser", "inbox"), ("xmpp", "starttls") : ("tcp", "makessl"), ("tcp", "sslready") : ("xmpp", "tlssuccess"), ("xmlparser", "outbox") : ("xmpp" , "inbox"), ("xmpp", "outbox") : ("tcp" , "inbox"), ("xmpp", "reset"): ("xmlparser", "reset"), ("client", "log"): ("logger", "inbox"), ("xmpp", "log"): ("logger", "inbox"), ("xmpp", "jid"): ("pjid", "inbox"), ("xmpp", "bound"): ("pbound", "inbox"), ("xmpp", "features"): ("client", "streamfeat"), ("client", "doauth"): ("xmpp", "auth"), # Registration ("xmpp", "%s.query" % XMPP_IBR_NS): ("registerdisp", "inbox"), ("registerdisp", "log"): ('logger', "inbox"), ("registerdisp", "xmpp.error"): ("registerhandler", "error"), ("registerdisp", "xmpp.result"): ("registerhandler", "inbox"), ("registerhandler", "outbox"): ("registerdisp", "forward"), ("client", "doregistration"): ("registerdisp", "forward"), ("registerdisp", "outbox"): ("xmpp", "forward"), # Presence ("xmpp", "%s.presence" % XMPP_CLIENT_NS): ("presencedisp", "inbox"), ("presencedisp", "log"): ('logger', "inbox"), ("presencedisp", "xmpp.subscribe"): ("presencehandler", "subscribe"), ("presencedisp", "xmpp.unsubscribe"): ("presencehandler", "unsubscribe"), ("presencehandler", "outbox"): ("presencedisp", "forward"), ("presencehandler", "roster"): ("rosterdisp", "forward"), ("presencedisp", "outbox"): ("xmpp", "forward"), # Roster ("xmpp", "%s.query" % XMPP_ROSTER_NS): ("rosterdisp", "inbox"), ("rosterdisp", "log"): ('logger', "inbox"), ('rosterdisp', 'xmpp.set'): ('rosterhandler', 'pushed'), ('rosterdisp', 'xmpp.result'): ('rosterhandler', 'inbox'), ('rosterhandler', 'result'): ('rosterdisp', 'forward'), ("rosterdisp", "outbox"): ("xmpp", "forward"), # Discovery ("xmpp", "%s.query" % XMPP_DISCO_INFO_NS): ("discodisp", "features.inbox"), ("discodisp", "log"): ('logger', "inbox"), ("discohandler", "features-disco"): ('discodisp', "features.forward"), ("discodisp", "out.features.result"): ('discohandler', "features.result"), ("discodisp", "outbox"): ("xmpp", "forward"), # Message ("xmpp", "%s.message" % XMPP_CLIENT_NS): ("msgdisp", "inbox"), ("msgdisp", "log"): ('logger', "inbox"), ("msgdisp", "xmpp.chat"): ('msgdummyhandler', 'inbox'), ("msgdummyhandler", "outbox"): ('msgdisp', 'forward'), ("msgdisp", "outbox"): ("xmpp", "forward"), ('msgdummyhandler', 'proto') : ('proto_man' , 'inbox'), ('proto_man', 'outbox') : ('msgdummyhandler', 'inbox'), # Activity ("xmpp", "%s.query" % XMPP_LAST_NS): ("activitydisp", "inbox"), ("activitydisp", "log"): ('logger', "inbox"), ("activitydisp", "outbox"): ("xmpp", "forward"), ("activityhandler", 'activity-supported'): ('rosterhandler', 'ask-activity'), ("rosterhandler", 'activity'): ('activitydisp', 'forward'), } ) self.addChildren(self.graph) self.graph.activate() return 1
def setup(self): self.running = True # Backplanes are like a global entry points that # can be accessible both for publishing and # recieving data. # In other words, a component interested # in advertising to many other components that # something happened may link one of its outbox # to a PublishTo component's inbox. # A component wishing to receive that piece of # information will link one of its inbox # to the SubscribeTo component's outbox. # This helps greatly to make components more # loosely connected but also allows for some data # to be dispatched at once to many (such as when # the server returns the per-session JID that # is of interest for most other components). self.backplanes.append(Backplane("JID.%s" % self.session_id).activate()) # Used to inform components that the session is now active self.backplanes.append(Backplane("BOUND.%s" % self.session_id).activate()) # Used to inform components of the supported features self.backplanes.append(Backplane("DISCO_FEAT.%s" % self.session_id).activate()) sub = SubscribeTo("JID.%s" % self.session_id) self.link((sub, 'outbox'), (self, 'jid')) self.addChildren(sub) sub.activate() sub = SubscribeTo("BOUND.%s" % self.session_id) self.link((sub, 'outbox'), (self, 'connected')) self.addChildren(sub) sub.activate() # Add two outboxes ro the ClientSteam to support specific extensions. ClientStream.Outboxes["%s.query" % XMPP_IBR_NS] = "Registration" ClientStream.Outboxes["%s.query" % XMPP_LAST_NS] = "Activity" ClientStream.Outboxes["%s.query" % XMPP_DISCO_INFO_NS] = "Discovery" ClientStream.Outboxes["%s.query" % XMPP_DISCO_ITEMS_NS] = "PubSub Discovery of Nodes" ClientStream.Outboxes["%s.subscribe" % XMPP_PUBSUB_NS] = "Pubsub subscription handler" ClientStream.Outboxes["%s.unsubscribe" % XMPP_PUBSUB_NS] = "Pubsub unsubscription handler" ClientStream.Outboxes["%s.subscriptions" % XMPP_PUBSUB_NS] = "Pubsub subscriptions handler" ClientStream.Outboxes["%s.affiliations" % XMPP_PUBSUB_NS] = "Pubsub affiliations handler" ClientStream.Outboxes["%s.create" % XMPP_PUBSUB_NS] = "Pubsub node creation handler" ClientStream.Outboxes["%s.purge" % XMPP_PUBSUB_OWNER_NS] = "Pubsub node purge handler" ClientStream.Outboxes["%s.delete" % XMPP_PUBSUB_OWNER_NS] = "Pubsub node delete handler" ClientStream.Outboxes["%s.publish" % XMPP_PUBSUB_NS] = "Pubsub item publication handler" ClientStream.Outboxes["%s.retract" % XMPP_PUBSUB_NS] = "Pubsub item deletion handler" ClientStream.Outboxes["%s.x" % XMPP_PUBSUB_EVENT_NS] = "" ClientStream.Outboxes["%s.event" % XMPP_PUBSUB_EVENT_NS] = "" self.client = ClientStream(self.jid, self.passwordLookup, use_tls=self.usetls) self.addChildren(self.client) self.client.activate() self.graph = Graphline(client = self, logger = Logger(path='./logs/%s.log' % self.username, stdout=True, name=self.session_id), tcp = TCPClient(self.server, self.port), xmlparser = XMLIncrParser(), xmpp = self.client, streamerr = StreamError(), saslerr = SaslError(), discohandler = DiscoHandler(self.jid, self.atompub, self.domain, session_id=self.session_id, profile=self.profile), activityhandler = ActivityHandler(session_id=self.session_id), rosterhandler = RosterHandler(self.jid, session_id=self.session_id), registerhandler = RegistrationHandler(self.username, self.password, self.session_id, profile=self.profile), msgdummyhandler = DummyMessageHandler(session_id=self.session_id, profile=self.profile), presencehandler = PresenceHandler(session_id=self.session_id), itemshandler = ItemsHandler(self.jid, self.atompub, self.domain, session_id=self.session_id, profile=self.profile), pubsubmsgeventhandler = MessageHandler(self.jid, self.atompub, self.domain, session_id=self.session_id, profile=self.profile), presencedisp = PresenceDispatcher(), rosterdisp = RosterDispatcher(), msgdisp = MessageDispatcher(), discodisp = DiscoveryDispatcher(), activitydisp = ActivityDispatcher(), registerdisp = RegisterDispatcher(), pubsubdisp = PubSubDispatcher(), pjid = PublishTo("JID.%s" % self.session_id), pbound = PublishTo("BOUND.%s" % self.session_id), linkages = {('xmpp', 'terminated'): ('client', 'inbox'), ('client', 'forward'): ('xmpp', 'forward'), ('client', 'outbox'): ('tcp', 'inbox'), ('client', 'signal'): ('tcp', 'control'), ("tcp", "outbox") : ("xmlparser", "inbox"), ("xmpp", "starttls") : ("tcp", "makessl"), ("tcp", "sslready") : ("xmpp", "tlssuccess"), ("xmlparser", "outbox") : ("xmpp" , "inbox"), ("xmpp", "outbox") : ("tcp" , "inbox"), ("xmpp", "reset"): ("xmlparser", "reset"), ("client", "log"): ("logger", "inbox"), ("xmpp", "log"): ("logger", "inbox"), ("xmpp", "jid"): ("pjid", "inbox"), ("xmpp", "bound"): ("pbound", "inbox"), ("xmpp", "features"): ("client", "streamfeat"), ("xmpp", "unhandled"): ("client", "unhandled"), ("client", "doauth"): ("xmpp", "auth"), # Registration ("xmpp", "%s.query" % XMPP_IBR_NS): ("registerdisp", "inbox"), ("registerdisp", "log"): ('logger', "inbox"), ("registerdisp", "xmpp.error"): ("registerhandler", "error"), ("registerdisp", "xmpp.result"): ("registerhandler", "inbox"), ("registerhandler", "outbox"): ("registerdisp", "forward"), ("client", "doregistration"): ("registerdisp", "forward"), ("registerdisp", "outbox"): ("xmpp", "forward"), # Presence ("xmpp", "%s.presence" % XMPP_CLIENT_NS): ("presencedisp", "inbox"), ("presencedisp", "log"): ('logger', "inbox"), ("presencedisp", "xmpp.subscribe"): ("presencehandler", "subscribe"), ("presencedisp", "xmpp.unsubscribe"): ("presencehandler", "unsubscribe"), ("presencehandler", "outbox"): ("presencedisp", "forward"), ("presencehandler", "roster"): ("rosterdisp", "forward"), ("presencedisp", "outbox"): ("xmpp", "forward"), # Roster ("xmpp", "%s.query" % XMPP_ROSTER_NS): ("rosterdisp", "inbox"), ("rosterdisp", "log"): ('logger', "inbox"), ('rosterdisp', 'xmpp.set'): ('rosterhandler', 'pushed'), ('rosterdisp', 'xmpp.result'): ('rosterhandler', 'inbox'), ('rosterhandler', 'result'): ('rosterdisp', 'forward'), ('rosterhandler', 'roster-updated'): ('msgdummyhandler', 'roster-received'), ("rosterdisp", "outbox"): ("xmpp", "forward"), # Discovery ("xmpp", "%s.query" % XMPP_DISCO_INFO_NS): ("discodisp", "features.inbox"), ("xmpp", "%s.query" % XMPP_DISCO_ITEMS_NS): ("discodisp", "items.inbox"), ("xmpp", "%s.affiliations" % XMPP_PUBSUB_NS): ("discodisp", "affiliation.inbox"), ("xmpp", "%s.subscriptions" % XMPP_PUBSUB_NS): ("discodisp", "subscription.inbox"), ("discodisp", "log"): ('logger', "inbox"), ("discohandler", "features-disco"): ('discodisp', "features.forward"), ('discohandler', 'items-disco'): ('discodisp', 'items.forward'), ('discohandler', 'subscriptions-disco'): ('discodisp', 'subscription.forward'), ('discohandler', 'affiliations-disco'): ('discodisp', 'affiliation.forward'), ("discodisp", "out.features.result"): ('discohandler', "features.result"), ("discodisp",'subscription.outbox'):('xmpp','forward'), ("discodisp",'affiliation.outbox'):('xmpp','forward'), ("discodisp",'out.subscription.result'): ('discohandler','subscriptions.result'), ("discodisp",'out.affiliation.result'): ('discohandler','affiliations.result'), ("discodisp", 'out.items.result'): ('discohandler', 'items.result'), ("discodisp", 'out.items.error'): ('discohandler', 'items.error'), ("discodisp", "outbox"): ("xmpp", "forward"), # Message ("xmpp", "%s.message" % XMPP_CLIENT_NS): ("msgdisp", "inbox"), ("msgdisp", "log"): ('logger', "inbox"), ("msgdisp", "xmpp.chat"): ('msgdummyhandler', 'inbox'), ("msgdummyhandler", "outbox"): ('msgdisp', 'forward'), ("msgdisp", "outbox"): ("xmpp", "forward"), # Activity ("xmpp", "%s.query" % XMPP_LAST_NS): ("activitydisp", "inbox"), ("activitydisp", "log"): ('logger', "inbox"), ("activitydisp", "outbox"): ("xmpp", "forward"), ("activityhandler", 'activity-supported'): ('rosterhandler', 'ask-activity'), ("rosterhandler", 'activity'): ('activitydisp', 'forward'), # Pubsub ("xmpp", "%s.create" % XMPP_PUBSUB_NS): ("pubsubdisp", "create.inbox"), ("xmpp", "%s.delete" % XMPP_PUBSUB_OWNER_NS): ("pubsubdisp", "delete.inbox"), ("xmpp", "%s.purge" % XMPP_PUBSUB_OWNER_NS): ("pubsubdisp", "purge.inbox"), ("xmpp", "%s.subscribe" % XMPP_PUBSUB_NS): ("pubsubdisp", "subscribe.inbox"), ("xmpp", "%s.unsubscribe" % XMPP_PUBSUB_NS):("pubsubdisp", "unsubscribe.inbox"), ("xmpp", "%s.publish" % XMPP_PUBSUB_NS): ("pubsubdisp", "publish.inbox"), ("xmpp", "%s.retract" % XMPP_PUBSUB_NS): ("pubsubdisp", "retract.inbox"), ("xmpp", "%s.x" % XMPP_PUBSUB_EVENT_NS): ("pubsubdisp", "message.inbox"), ("xmpp", "%s.event" % XMPP_PUBSUB_EVENT_NS): ("pubsubdisp", "message.inbox"), ("pubsubdisp", "log"): ('logger', "inbox"), ("discohandler", "create-node"): ("pubsubdisp", "create.forward"), ("discohandler", "delete-node"): ("pubsubdisp", "delete.forward"), ("discohandler", "subscribe-node"): ("pubsubdisp", "subscribe.forward"), ("discohandler", "unsubscribe-node"): ("pubsubdisp", "unsubscribe.forward"), ("pubsubdisp", "create.outbox"): ("xmpp", "forward"), ("pubsubdisp", "delete.outbox"): ("xmpp", "forward"), ("pubsubdisp", "purge.outbox"): ("xmpp", "forward"), ("pubsubdisp", "subscribe.outbox"): ("xmpp", "forward"), ("pubsubdisp", "unsubscribe.outbox"): ("xmpp", "forward"), ("pubsubdisp", "publish.outbox"): ("xmpp", "forward"), ("pubsubdisp", "retract.outbox"): ("xmpp", "forward"), ("pubsubdisp", "out.create.result"): ("discohandler", "created"), ("pubsubdisp", "out.subscribe.result"): ("discohandler", "subscribed"), ("pubsubdisp", "out.delete.result"): ("discohandler", "deleted"), ("pubsubdisp", "out.create.error"): ("discohandler", "error"), ("pubsubdisp", "out.delete.error"): ("discohandler", "error"), ("pubsubdisp", "out.publish.error"): ("itemshandler", "publish.error"), ("pubsubdisp", "out.retract.error"): ("itemshandler", "retract.error"), ("pubsubdisp", "out.publish.result"): ("itemshandler", "published"), ("pubsubdisp", "out.message"): ('pubsubmsgeventhandler', 'inbox'), ('itemshandler', 'publish'): ('pubsubdisp', 'publish.forward'), ('itemshandler', 'delete'): ('pubsubdisp', 'retract.forward'), ('itemshandler', 'purge'): ('pubsubdisp', 'purge.forward'), ("msgdummyhandler", "PI"): ('itemshandler', 'topublish'), ("msgdummyhandler", "GEO"): ('itemshandler', 'topublish'), ("msgdummyhandler", "DI"): ('itemshandler', 'todelete'), ("msgdummyhandler", "PN"): ('itemshandler', 'topurge'), ("msgdummyhandler", "CN"): ('discohandler', 'docreate'), ("msgdummyhandler", "DN"): ('discohandler', 'dodelete'), ("msgdummyhandler", "SN"): ('discohandler', 'dosubscribe'), ("msgdummyhandler", "UN"): ('discohandler', 'dounsubscribe'), ('pubsubmsgeventhandler', 'items-disco'): ('discodisp', 'items.forward'), } ) self.addChildren(self.graph) self.graph.activate() return 1