Exemplo n.º 1
0
    virtual void operator() (uint32_t total_length, uint32_t flags,
        const uint8_t * chunk_data, uint32_t chunk_data_length) override {
        LOG(LOG_INFO, "total_length=%u flags=0x%X chunk_data=<%p> chunk_data_length=%u",
            total_length, flags, static_cast<void const *>(chunk_data), chunk_data_length);
        StaticOutStream<8> stream;
        stream.out_uint32_le(total_length);
        stream.out_uint32_le(flags);

        this->transport.send(stream.get_data(), stream.get_offset());
        this->transport.send(chunk_data, chunk_data_length);
    }
Exemplo n.º 2
0
    void send_to_front_channel( const char * const mod_channel_name
                              , uint8_t const * data, size_t length
                              , size_t chunk_size, int flags) {
        constexpr unsigned payload_size = 9;
        StaticOutStream<TRANSPARENT_CHUNK_HEADER_SIZE + payload_size> header;
        uint8_t mod_channel_name_length = strlen(mod_channel_name);

        this->make_chunk_header(header, CHUNK_TYPE_FRONTCHANNEL, payload_size + mod_channel_name_length + length);
        header.out_uint8(mod_channel_name_length);
        header.out_uint16_le(length);
        header.out_uint16_le(chunk_size);
        header.out_uint32_le(flags);

        assert(header.get_offset() == header.get_capacity());
        this->t->send(header.get_data(), header.get_offset());
        this->t->send(mod_channel_name, mod_channel_name_length);
        this->t->send(data, length);
    }