e NEC to handle jingle-connected events

This commit is contained in:
Yann Leboulanger 2010-10-27 19:37:14 +02:00
parent 457156cc0e
commit 8dcbf3e73e
4 changed files with 27 additions and 21 deletions

View file

@ -1114,8 +1114,18 @@ class AnonymousAuthEvent(nec.NetworkIncomingEvent):
name = 'anonymous-auth' name = 'anonymous-auth'
base_network_events = [] base_network_events = []
class JingleReceivedEvent(nec.NetworkIncomingEvent): class JingleRequestReceivedEvent(nec.NetworkIncomingEvent):
name = 'jingle-received' name = 'jingle-request-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
class JingleConnectedReceivedEvent(nec.NetworkIncomingEvent):
name = 'jingle-connected-received'
base_network_events = [] base_network_events = []
def generate(self): def generate(self):

View file

@ -145,8 +145,6 @@ class ConnectionJingle(object):
else: else:
return None return None
elif media: elif media:
if media not in ('audio', 'video'):
return None
for session in self._sessions.values(): for session in self._sessions.values():
if session.peerjid == jid and session.get_content(media): if session.peerjid == jid and session.get_content(media):
return session return session

View file

@ -30,7 +30,7 @@ import gajim #Get rid of that?
import xmpp import xmpp
from jingle_transport import get_jingle_transport from jingle_transport import get_jingle_transport
from jingle_content import get_jingle_content, JingleContentSetupException from jingle_content import get_jingle_content, JingleContentSetupException
from common.connection_handlers_events import JingleReceivedEvent from common.connection_handlers_events import *
# FIXME: Move it to JingleSession.States? # FIXME: Move it to JingleSession.States?
class JingleStates(object): class JingleStates(object):
@ -408,7 +408,7 @@ class JingleSession(object):
self.__content_reject(content) self.__content_reject(content)
self.contents[(content.creator, content.name)].destroy() self.contents[(content.creator, content.name)].destroy()
gajim.nec.push_incoming_event(JingleReceivedEvent(None, gajim.nec.push_incoming_event(JingleRequestReceivedEvent(None,
conn=self.connection, jingle_session=self, contents=contents)) conn=self.connection, jingle_session=self, contents=contents))
def __on_session_initiate(self, stanza, jingle, error, action): def __on_session_initiate(self, stanza, jingle, error, action):
@ -454,7 +454,7 @@ class JingleSession(object):
self.state = JingleStates.pending self.state = JingleStates.pending
# Send event about starting a session # Send event about starting a session
gajim.nec.push_incoming_event(JingleReceivedEvent(None, gajim.nec.push_incoming_event(JingleRequestReceivedEvent(None,
conn=self.connection, jingle_session=self, contents=contents)) conn=self.connection, jingle_session=self, contents=contents))
def __broadcast(self, stanza, jingle, error, action): def __broadcast(self, stanza, jingle, error, action):
@ -675,5 +675,5 @@ class JingleSession(object):
(self.peerjid, self.sid, content.media, 'removed')) (self.peerjid, self.sid, content.media, 'removed'))
def content_negotiated(self, media): def content_negotiated(self, media):
self.connection.dispatch('JINGLE_CONNECTED', (self.peerjid, self.sid, gajim.nec.push_incoming_event(JingleConnectedReceivedEvent(None,
media)) conn=self.connection, jingle_session=self, media=media))

View file

@ -1543,19 +1543,17 @@ class Interface:
notify.popup(event_type, obj.fjid, account, 'jingle-incoming', notify.popup(event_type, obj.fjid, account, 'jingle-incoming',
path_to_image=path, title=event_type, text=txt) path_to_image=path, title=event_type, text=txt)
def handle_event_jingle_connected(self, account, data): def handle_event_jingle_connected(self, obj):
# ('JINGLE_CONNECTED', account, (peerjid, sid, media)) # ('JINGLE_CONNECTED', account, (peerjid, sid, media))
peerjid, sid, media = data if obj.media in ('audio', 'video'):
if media in ('audio', 'video'): account = obj.conn.name
jid = gajim.get_jid_without_resource(peerjid) ctrl = (self.msg_win_mgr.get_control(obj.fjid, account)
resource = gajim.get_resource_from_jid(peerjid) or self.msg_win_mgr.get_control(obj.jid, account))
ctrl = (self.msg_win_mgr.get_control(peerjid, account)
or self.msg_win_mgr.get_control(jid, account))
if ctrl: if ctrl:
if media == 'audio': if obj.media == 'audio':
ctrl.set_audio_state('connected', sid) ctrl.set_audio_state('connected', obj.sid)
else: else:
ctrl.set_video_state('connected', sid) ctrl.set_video_state('connected', obj.sid)
def handle_event_jingle_disconnected(self, account, data): def handle_event_jingle_disconnected(self, account, data):
# ('JINGLE_DISCONNECTED', account, (peerjid, sid, reason)) # ('JINGLE_DISCONNECTED', account, (peerjid, sid, reason))
@ -1892,7 +1890,6 @@ class Interface:
'INSECURE_SSL_CONNECTION': \ 'INSECURE_SSL_CONNECTION': \
[self.handle_event_insecure_ssl_connection], [self.handle_event_insecure_ssl_connection],
'INSECURE_PASSWORD': [self.handle_event_insecure_password], 'INSECURE_PASSWORD': [self.handle_event_insecure_password],
'JINGLE_CONNECTED': [self.handle_event_jingle_connected],
'JINGLE_DISCONNECTED': [self.handle_event_jingle_disconnected], 'JINGLE_DISCONNECTED': [self.handle_event_jingle_disconnected],
'JINGLE_ERROR': [self.handle_event_jingle_error], 'JINGLE_ERROR': [self.handle_event_jingle_error],
'PEP_RECEIVED': [self.handle_event_pep_received], 'PEP_RECEIVED': [self.handle_event_pep_received],
@ -1905,7 +1902,8 @@ class Interface:
'gmail-notify': [self.handle_event_gmail_notify], 'gmail-notify': [self.handle_event_gmail_notify],
'http-auth-received': [self.handle_event_http_auth], 'http-auth-received': [self.handle_event_http_auth],
'iq-error-received': [self.handle_event_iq_error], 'iq-error-received': [self.handle_event_iq_error],
'jingle-received': [self.handle_event_jingle_incoming], 'jingle-connected-received': [self.handle_event_jingle_connected],
'jingle-request-received': [self.handle_event_jingle_incoming],
'last-result-received': [self.handle_event_last_status_time], 'last-result-received': [self.handle_event_last_status_time],
'muc-admin-received': [self.handle_event_gc_affiliation], 'muc-admin-received': [self.handle_event_gc_affiliation],
'muc-owner-received': [self.handle_event_gc_config], 'muc-owner-received': [self.handle_event_gc_config],