예제 #1
0
파일: p2p.py 프로젝트: Kjir/papyon
    def _handle_message(self, peer, message):
        session = MSNObjectSession(self._client._p2p_session_manager, peer, message.body.application_id, message)

        handle_id = session.connect("completed", self._incoming_session_transfer_completed)
        self._incoming_sessions[session] = handle_id
        try:
            msn_object = MSNObject.parse(self._client, session._context)
        except ParseError:
            session.reject()
            return
        for obj in self._published_objects:
            if obj._data_sha == msn_object._data_sha:
                session.accept(obj._data)
                return session
        session.reject()
예제 #2
0
파일: p2p.py 프로젝트: lppedd/papyon
    def _handle_message(self, peer, message):
        session = MSNObjectSession(self._client._p2p_session_manager, peer,
                                   message.body.application_id, message)

        handle_id = session.connect("completed",
                                    self._incoming_session_transfer_completed)
        self._incoming_sessions[session] = handle_id
        try:
            msn_object = MSNObject.parse(self._client, session._context)
        except ParseError:
            session.reject()
            return
        for obj in self._published_objects:
            if obj._data_sha == msn_object._data_sha:
                session.accept(obj._data)
                return session
        session.reject()
예제 #3
0
파일: p2p.py 프로젝트: snowpunk/papyon
    def request(self, msn_object, callback, errback=None):
        if msn_object._data is not None:
            callback[0](msn_object, *callback[1:])

        if msn_object._type == MSNObjectType.CUSTOM_EMOTICON:
            application_id = ApplicationID.CUSTOM_EMOTICON_TRANSFER
        elif msn_object._type == MSNObjectType.DISPLAY_PICTURE:
            application_id = ApplicationID.DISPLAY_PICTURE_TRANSFER
        else:
            raise NotImplementedError

        session = MSNObjectSession(self._client._p2p_session_manager,
                msn_object._creator, application_id)
        handle_id = session.connect("transfer-completed",
                self._outgoing_session_transfer_completed)
        self._outgoing_sessions[session] = \
                (handle_id, callback, errback, msn_object)
        session.invite(msn_object)
예제 #4
0
파일: p2p.py 프로젝트: lppedd/papyon
    def request(self, msn_object, callback, errback=None, peer=None):
        if msn_object._data is not None:
            callback[0](msn_object, *callback[1:])

        if peer is None:
            peer = self._client.address_book.search_contact(
                msn_object._creator, NetworkID.MSN)

        if msn_object._type == MSNObjectType.CUSTOM_EMOTICON:
            application_id = ApplicationID.CUSTOM_EMOTICON_TRANSFER
        elif msn_object._type == MSNObjectType.DISPLAY_PICTURE:
            application_id = ApplicationID.DISPLAY_PICTURE_TRANSFER
        else:
            raise NotImplementedError

        session = MSNObjectSession(self._client._p2p_session_manager, peer,
                                   application_id)
        handle_id = session.connect("completed",
                                    self._outgoing_session_transfer_completed)
        self._outgoing_sessions[session] = \
                (handle_id, callback, errback, msn_object)
        session.invite(repr(msn_object))