Changeset 739

Show
Ignore:
Timestamp:
07/24/08 15:39:02 (4 months ago)
Author:
sylvain
Message:

Fixed purge events

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • oss/headstock/headstock/api/pubsub.py

    r730 r739  
    5252        self.event = eventType 
    5353 
     54    @property 
     55    def name(self): 
     56        return self.id 
     57 
    5458    def __repr__(self): 
    5559        return '<Item "%s" at %s>' % (self.id or '', hex(id(self)),) 
    5660     
     61class Message(Entity): 
     62    def __init__(self, from_jid, to_jid): 
     63        Entity.__init__(self, from_jid, to_jid)  
     64        self.node_name = None 
     65        self.items = [] 
     66        self.event = None 
     67 
     68    @staticmethod 
     69    def from_element(e): 
     70        msg = Message(JID.parse(e.get_attribute_value('from')), 
     71                      JID.parse(e.get_attribute_value('to'))) 
     72 
     73        for c in e.xml_children: 
     74            if c.xml_ns == XMPP_PUBSUB_EVENT_NS: # x or event 
     75                for i in c.xml_children: 
     76                    if i.xml_ns == XMPP_PUBSUB_EVENT_NS: # items 
     77                        msg.node_name = i.get_attribute_value('node') 
     78                        msg.event = i.xml_name 
     79                        if msg.event == 'items': 
     80                            for t in i.xml_children: # item 
     81                                payload = None 
     82                                if t.xml_children: 
     83                                    payload = t.xml_children 
     84                                msg.items.append(Item(id=t.get_attribute_value('id'), 
     85                                                      payload=payload, eventType=t.xml_name)) 
     86 
     87        return msg 
    5788 
    5889class Node(Entity): 
     
    142173 
    143174        for i in e.xml_children: 
    144             if i.xml_ns in [XMPP_PUBSUB_NS]: 
    145                 for p in i.xml_children: 
    146                     if p.xml_ns in [XMPP_PUBSUB_NS]: 
    147                         if p.xml_name == 'create': 
    148                             node.node_name = p.get_attribute_value('node') 
     175            if i.xml_ns in [XMPP_PUBSUB_OWNER_NS]: 
     176                for p in i.xml_children: 
     177                    if p.xml_ns in [XMPP_PUBSUB_OWNER_NS]: 
     178                        if p.xml_name == 'purge': 
     179                            node.node_name = p.get_attribute_value('node')                                  
    149180            elif i.xml_ns == XMPP_CLIENT_NS and i.xml_name == 'error': 
    150181                node.error = Error.from_element(i) 
     
    316347         
    317348     
    318 class Message(Entity): 
    319     def __init__(self, from_jid, to_jid): 
    320         Entity.__init__(self, from_jid, to_jid)  
    321         self.node_name = None 
    322         self.items = [] 
    323  
    324     @staticmethod 
    325     def from_element(e): 
    326         msg = Message(JID.parse(e.get_attribute_value('from')), 
    327                       JID.parse(e.get_attribute_value('to'))) 
    328  
    329         for c in e.xml_children: 
    330             if c.xml_ns == XMPP_PUBSUB_EVENT_NS: # x or event 
    331                 for i in c.xml_children: 
    332                     if i.xml_ns == XMPP_PUBSUB_EVENT_NS: # items 
    333                         msg.node_name = i.get_attribute_value('node') 
    334                         for t in i.xml_children: # item 
    335                             payload = None 
    336                             if t.xml_children: 
    337                                 payload = t.xml_children[0] 
    338                             msg.items.append(Item(id=t.get_attribute_value('id'), 
    339                                                   payload=payload, eventType=t.xml_name)) 
    340  
    341         return msg 
  • oss/headstock/headstock/protocol/extension/discovery.py

    r677 r739  
    9494                mes = self.recv("control") 
    9595                 
    96                 if isinstance(mes, shutdownMicroprocess) or isinstance(mes, producerFinished): 
     96                if isinstance(mes, shutdownMicroprocess) or \ 
     97                        isinstance(mes, producerFinished): 
    9798                    self.send(producerFinished(), "signal") 
    9899                    break 
  • oss/headstock/headstock/protocol/extension/pubsub.py

    r722 r739  
    274274                mes = self.recv("control") 
    275275                 
    276                 if isinstance(mes, shutdownMicroprocess) or isinstance(mes, producerFinished): 
     276                if isinstance(mes, shutdownMicroprocess) or \ 
     277                        isinstance(mes, producerFinished): 
    277278                    self.send(producerFinished(), "signal") 
    278279                    break 
     
    287288                e = a.xml_parent.xml_parent 
    288289                self.send(('INCOMING', e), "log") 
    289                  
     290 
    290291                msg_type = e.get_attribute_value(u'type') or 'get' 
    291292                key = 'xmpp.%s' % unicode(msg_type) 
     
    489490                "unknown"      : "Unknown element that could not be dispatched properly", 
    490491                "xmpp.message" : "Activity requests", 
     492                "xmpp.message.purge" : "Activity requests", 
    491493                } 
    492494     
     
    510512                e = a.xml_parent 
    511513                self.send(('INCOMING', e), "log") 
    512                 self.send(Message.from_element(e), "xmpp.message") 
    513                      
     514 
     515                m = Message.from_element(e) 
     516 
     517                if m.event == 'items': 
     518                    self.send(m, "xmpp.message") 
     519                elif m.event == 'purge': 
     520                    self.send(m, "xmpp.message.purge") 
     521                else: 
     522                    self.send(e, "unknown") 
     523 
    514524            if not self.anyReady(): 
    515525                self.pause() 
     
    617627                "out.retract.result"      : "Retract item responses", 
    618628                "out.retract.error"       : "Retract item response error", 
    619                 "out.message"             : "Retract item requests",} 
     629                "out.message"             : "Retract item requests", 
     630                "out.message.purge"       : "Retract item requests",} 
    620631     
    621632    def __init__(self): 
     
    762773        self.link((self, 'message.inbox'), (msgdisp, 'inbox'), passthrough=1) 
    763774        self.link((msgdisp, 'xmpp.message'), (self, 'out.message'), passthrough=2) 
     775        self.link((msgdisp, 'xmpp.message.purge'), (self, 'out.message.purge'), passthrough=2) 
     776        self.link((msgdisp, 'unknown'), (self, 'unknown'), passthrough=2) 
    764777        self.link((msgdisp, 'log'), (self, 'log'), passthrough=2) 
    765778        self.addChildren(msgdisp)