changeset 51027e234f8c in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=51027e234f8c description: use NEC to handle jingle-disconnected events
diffstat:
src/common/connection_handlers_events.py | 10 ++++++++++ src/common/jingle_session.py | 25 +++++++++++++++---------- src/gui_interface.py | 31 +++++++++++++++---------------- 3 files changed, 40 insertions(+), 26 deletions(-)
diffs (142 lines):
diff -r 3fbadfe6bb17 -r 51027e234f8c src/common/connection_handlers_events.py --- a/src/common/connection_handlers_events.py Fri Oct 29 11:51:24 2010 +0200 +++ b/src/common/connection_handlers_events.py Fri Oct 29 16:49:53 2010 +0200 @@ -1132,4 +1132,14 @@ self.fjid = self.jingle_session.peerjid self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.sid = self.jingle_session.sid + return True + +class JingleDisconnectedReceivedEvent(nec.NetworkIncomingEvent): + name = 'jingle-disconnected-received' + base_network_events = [] + + def generate(self): + self.fjid = self.jingle_session.peerjid + self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) + self.sid = self.jingle_session.sid return True \ No newline at end of file diff -r 3fbadfe6bb17 -r 51027e234f8c src/common/jingle_session.py --- a/src/common/jingle_session.py Fri Oct 29 11:51:24 2010 +0200 +++ b/src/common/jingle_session.py Fri Oct 29 16:49:53 2010 +0200 @@ -368,8 +368,9 @@ if (creator, name) in self.contents: content = self.contents[(creator, name)] # TODO: this will fail if content is not an RTP content - self.connection.dispatch('JINGLE_DISCONNECTED', - (self.peerjid, self.sid, content.media, 'removed')) + gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent( + None, conn=self.connection, jingle_session=self, + media=content.media, reason='removed')) content.destroy() if not self.contents: reason = xmpp.Node('reason') @@ -482,8 +483,9 @@ else: # TODO text = reason - self.connection.dispatch('JINGLE_DISCONNECTED', - (self.peerjid, self.sid, None, text)) + gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, + conn=self.connection, jingle_session=self, media=None, + reason=text))
def __broadcast_all(self, stanza, jingle, error, action): """ @@ -634,8 +636,9 @@ else: text = reason self.connection.delete_jingle_session(self.sid) - self.connection.dispatch('JINGLE_DISCONNECTED', - (self.peerjid, self.sid, None, text)) + gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, + conn=self.connection, jingle_session=self, media=None, + reason=text))
def __content_add(self, content): # TODO: test @@ -659,8 +662,9 @@ self.__append_content(jingle, content) self.connection.connection.send(stanza) # TODO: this will fail if content is not an RTP content - self.connection.dispatch('JINGLE_DISCONNECTED', - (self.peerjid, self.sid, content.media, 'rejected')) + gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, + conn=self.connection, jingle_session=self, media=content.media, + reason='rejected'))
def __content_modify(self): assert self.state != JingleStates.ended @@ -671,8 +675,9 @@ self.__append_content(jingle, content) self.connection.connection.send(stanza) # TODO: this will fail if content is not an RTP content - self.connection.dispatch('JINGLE_DISCONNECTED', - (self.peerjid, self.sid, content.media, 'removed')) + gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, + conn=self.connection, jingle_session=self, media=content.media, + reason='removed'))
def content_negotiated(self, media): gajim.nec.push_incoming_event(JingleConnectedReceivedEvent(None, diff -r 3fbadfe6bb17 -r 51027e234f8c src/gui_interface.py --- a/src/gui_interface.py Fri Oct 29 11:51:24 2010 +0200 +++ b/src/gui_interface.py Fri Oct 29 16:49:53 2010 +0200 @@ -1555,26 +1555,24 @@ else: ctrl.set_video_state('connected', obj.sid)
- def handle_event_jingle_disconnected(self, account, data): + def handle_event_jingle_disconnected(self, obj): # ('JINGLE_DISCONNECTED', account, (peerjid, sid, reason)) - peerjid, sid, media, reason = data - jid = gajim.get_jid_without_resource(peerjid) - resource = gajim.get_resource_from_jid(peerjid) - ctrl = (self.msg_win_mgr.get_control(peerjid, account) - or self.msg_win_mgr.get_control(jid, account)) + account = obj.conn.name + ctrl = (self.msg_win_mgr.get_control(obj.fjid, account) + or self.msg_win_mgr.get_control(obj.jid, account)) if ctrl: - if media is None: - ctrl.stop_jingle(sid=sid, reason=reason) - elif media == 'audio': - ctrl.set_audio_state('stop', sid=sid, reason=reason) - elif media == 'video': - ctrl.set_video_state('stop', sid=sid, reason=reason) - dialog = dialogs.VoIPCallReceivedDialog.get_dialog(peerjid, sid) + if obj.media is None: + ctrl.stop_jingle(sid=obj.sid, reason=obj.reason) + elif obj.media == 'audio': + ctrl.set_audio_state('stop', sid=obj.sid, reason=obj.reason) + elif obj.media == 'video': + ctrl.set_video_state('stop', sid=obj.sid, reason=obj.reason) + dialog = dialogs.VoIPCallReceivedDialog.get_dialog(obj.fjid, obj.sid) if dialog: - if media is None: + if obj.media is None: dialog.dialog.destroy() else: - dialog.remove_contents((media, )) + dialog.remove_contents((obj.media, ))
def handle_event_jingle_error(self, account, data): # ('JINGLE_ERROR', account, (peerjid, sid, reason)) @@ -1890,7 +1888,6 @@ 'INSECURE_SSL_CONNECTION': \ [self.handle_event_insecure_ssl_connection], 'INSECURE_PASSWORD': [self.handle_event_insecure_password], - 'JINGLE_DISCONNECTED': [self.handle_event_jingle_disconnected], 'JINGLE_ERROR': [self.handle_event_jingle_error], 'PEP_RECEIVED': [self.handle_event_pep_received], 'CAPS_RECEIVED': [self.handle_event_caps_received], @@ -1903,6 +1900,8 @@ 'http-auth-received': [self.handle_event_http_auth], 'iq-error-received': [self.handle_event_iq_error], 'jingle-connected-received': [self.handle_event_jingle_connected], + 'jingle-disconnected-received': [ + self.handle_event_jingle_disconnected], 'jingle-request-received': [self.handle_event_jingle_incoming], 'last-result-received': [self.handle_event_last_status_time], 'muc-admin-received': [self.handle_event_gc_affiliation],