Example #1
0
    def _on_chunk_received(self, transport, chunk):
        self.emit("chunk-transferred", chunk)
        session_id = chunk.header.session_id
        blob_id = chunk.header.blob_id

        if session_id == 0: # signaling blob
            if blob_id in self._signaling_blobs:
                blob = self._signaling_blobs[blob_id]
            else:
                # create an in-memory blob
                blob = MessageBlob(chunk.application_id, "",
                    chunk.header.blob_size,
                    session_id, chunk.header.blob_id)
                self._signaling_blobs[blob_id] = blob
        else: # data blob
            if session_id in self._data_blobs:
                blob = self._data_blobs[session_id]
                if blob.transferred == 0:
                    blob.id = chunk.header.blob_id
            else:
                # create an in-memory blob
                blob = MessageBlob(chunk.application_id, "",
                        chunk.header.blob_size,
                        session_id, chunk.header.blob_id)
                self._data_blobs[session_id] = blob

        blob.append_chunk(chunk)
        if blob.is_complete():
            blob.data.seek(0, 0)
            self.emit("blob-received", blob)
            if session_id == 0:
                del self._signaling_blobs[blob_id]
            else:
                del self._data_blobs[session_id]
Example #2
0
    def _on_chunk_received(self, transport, peer, peer_guid, chunk):
        session_id = chunk.session_id
        blob_id = chunk.blob_id
        key = (peer, peer_guid, session_id)

        if key in self._blacklist:
            return
        if chunk.size == 0 or (chunk.version == 1 and chunk.blob_size == 0):
            return

        if key in self._data_blobs:
            blob = self._data_blobs[key]
            if blob.transferred == 0:
                blob.id = chunk.blob_id
        else:
            # create an in-memory blob
            blob = MessageBlob(chunk.application_id, "", chunk.blob_size,
                               session_id, chunk.blob_id)
            self._data_blobs[key] = blob

        try:
            blob.append_chunk(chunk)
        except AssertionError, err:
            logger.warning(
                "Couldn't append chunk to blob, ignoring it. Reason: %s" % err)
            return
Example #3
0
    def _on_chunk_received(self, transport, chunk):
        self.emit("chunk-transferred", chunk)
        session_id = chunk.header.session_id
        blob_id = chunk.header.blob_id

        if session_id == 0:  # signaling blob
            if blob_id in self._signaling_blobs:
                blob = self._signaling_blobs[blob_id]
            else:
                # create an in-memory blob
                blob = MessageBlob(chunk.application_id, "",
                                   chunk.header.blob_size, session_id,
                                   chunk.header.blob_id)
                self._signaling_blobs[blob_id] = blob
        else:  # data blob
            if session_id in self._data_blobs:
                blob = self._data_blobs[session_id]
                if blob.transferred == 0:
                    blob.id = chunk.header.blob_id
            else:
                # create an in-memory blob
                blob = MessageBlob(chunk.application_id, "",
                                   chunk.header.blob_size, session_id,
                                   chunk.header.blob_id)
                self._data_blobs[session_id] = blob

        blob.append_chunk(chunk)
        if blob.is_complete():
            blob.data.seek(0, 0)
            self.emit("blob-received", blob)
            if session_id == 0:
                del self._signaling_blobs[blob_id]
            else:
                del self._data_blobs[session_id]
Example #4
0
    def _on_chunk_received(self, transport, peer, peer_guid, chunk):
        session_id = chunk.session_id
        blob_id = chunk.blob_id
        key = (peer, peer_guid, session_id)

        if key in self._blacklist:
            return
        if chunk.size == 0 or (chunk.version == 1 and chunk.blob_size == 0):
            return

        if key in self._data_blobs:
            blob = self._data_blobs[key]
            if blob.transferred == 0:
                blob.id = chunk.blob_id
        else:
            # create an in-memory blob
            blob = MessageBlob(chunk.application_id, "",
                    chunk.blob_size, session_id, chunk.blob_id)
            self._data_blobs[key] = blob

        try:
            blob.append_chunk(chunk)
        except AssertionError, err:
            logger.warning("Couldn't append chunk to blob, ignoring it. Reason: %s" % err )
            return