Ejemplo n.º 1
0
def encode_comp_header(h_type, cs_id, time, size, msg_type, ms_id):
    """Serialize any type of chunk header."""

    if h_type == 3:
        # just the "basic header"
        return _encode_basic_header(h_type, cs_id, time)
    elif h_type == 0:
        # delegate
        return encode_full_header(cs_id, time, size, msg_type, ms_id)
    else:
        # check time field overflow
        write_time = time
        if time >= 0xffffff:
            write_time = 0xffffff
            h4 = _s_ulong_b.pack(time)
        else:
            write_time = time
            h4 = ''

        if h_type == 2:
            return (_encode_basic_header(h_type, cs_id) +
                    _s_time.pack((write_time >> 8) & 0xffff,
                                 write_time & 0xff) +
                    h4)

        return (_encode_basic_header(h_type, cs_id) +
                _s_time_size_type.pack((write_time >> 8) & 0xffff,
                                       write_time & 0xff,
                                       (size >> 8) & 0xffff, size & 0xff,
                                       msg_type) +
                h4)
Ejemplo n.º 2
0
Archivo: chunks.py Proyecto: DxCx/twimp
def encode_full_header(cs_id, time, size, msg_type, ms_id):
    """Serialize an absolute (type 0) chunk header."""

    h1 = _encode_basic_header(0, cs_id)

    write_time = time
    if time >= 0xffffff:
        write_time = 0xffffff
        h4 = _s_ulong_b.pack(time)
    else:
        write_time = time
        h4 = ''

    h2 = _s_time_size_type.pack((write_time >> 8) & 0xffff, write_time & 0xff,
                                (size >> 8) & 0xffff, size & 0xff, msg_type)

    h3 = _s_ulong_l.pack(ms_id)

    return h1 + h2 + h3 + h4
Ejemplo n.º 3
0
def encode_full_header(cs_id, time, size, msg_type, ms_id):
    """Serialize an absolute (type 0) chunk header."""

    h1 = _encode_basic_header(0, cs_id)

    write_time = time
    if time >= 0xffffff:
        write_time = 0xffffff
        h4 = _s_ulong_b.pack(time)
    else:
        write_time = time
        h4 = ''

    h2 = _s_time_size_type.pack((write_time >> 8) & 0xffff, write_time & 0xff,
                                (size >> 8) & 0xffff, size & 0xff,
                                msg_type)

    h3 = _s_ulong_l.pack(ms_id)

    return h1 + h2 + h3 + h4
Ejemplo n.º 4
0
            except Exception, e:
                print 'BAH', h_type, time
                h4 = ''
        else:
            write_time = time
            h4 = ''

        if h_type == 2:
            return (_encode_basic_header(h_type, cs_id) +
                    _s_time.pack((write_time >> 8) & 0xffff,
                                 write_time & 0xff) +
                    h4)

        return (_encode_basic_header(h_type, cs_id) +
                _s_time_size_type.pack((write_time >> 8) & 0xffff,
                                       write_time & 0xff,
                                       (size >> 8) & 0xffff, size & 0xff,
                                       msg_type) +
                h4)


DEFAULT_CHUNK_SIZE = 128

class Chunker(object):
    """A class to break messages into chunks."""

    chunk_size = DEFAULT_CHUNK_SIZE

    def set_chunk_size(self, new_chunk_size):
        self.chunk_size = new_chunk_size

    def __call__(self, cs_id, first_header, body, time=None):
Ejemplo n.º 5
0
Archivo: chunks.py Proyecto: DxCx/twimp
                time -= 0xffffffff
            try:
                h4 = _s_ulong_b.pack(time)
            except Exception, e:
                print 'BAH', h_type, time
                h4 = ''
        else:
            write_time = time
            h4 = ''

        if h_type == 2:
            return (_encode_basic_header(h_type, cs_id) + _s_time.pack(
                (write_time >> 8) & 0xffff, write_time & 0xff) + h4)

        return (_encode_basic_header(h_type, cs_id) + _s_time_size_type.pack(
            (write_time >> 8) & 0xffff, write_time & 0xff,
            (size >> 8) & 0xffff, size & 0xff, msg_type) + h4)


DEFAULT_CHUNK_SIZE = 128


class Chunker(object):
    """A class to break messages into chunks."""

    chunk_size = DEFAULT_CHUNK_SIZE

    def set_chunk_size(self, new_chunk_size):
        self.chunk_size = new_chunk_size

    def __call__(self, cs_id, first_header, body, time=None):