Beispiel #1
0
static inline void transport_dump_png24(Transport & trans, const uint8_t * data,
                            const size_t width,
                            const size_t height,
                            const size_t rowsize,
                            const bool bgr)
{
    detail::NoExceptTransport no_except_transport = { &trans, 0 };

    png_struct * ppng = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
    png_set_write_fn(ppng, &no_except_transport, &detail::png_write_data, &detail::png_flush_data);

    png_info * pinfo = png_create_info_struct(ppng);

    detail::dump_png24_impl(
        ppng, pinfo, data, width, height, rowsize, bgr,
        [&]() noexcept {return !no_except_transport.error_id;}
    );

    if (!no_except_transport.error_id) {
        png_write_end(ppng, pinfo);
        trans.flush();
    }

    png_destroy_write_struct(&ppng, &pinfo);
    // commented line below it to create row capture
    // fwrite(this->data, 3, this->width * this->height, fd);
}
std::set<hrbytes> BulkGetKeysOperation::executeOperation(Transport& transport)
{
    hr_scoped_ptr<HeaderParams> params(&(RetryOnFailureOperation<std::set<hrbytes> >::writeHeader(transport, BULK_GET_KEYS_REQUEST)));
    transport.writeVInt(scope);
    transport.flush();
    RetryOnFailureOperation<std::set<hrbytes> >::readHeaderAndValidate(transport, *params);
    std::set<hrbytes> result;
    while (transport.readByte()==1) {
        result.insert(transport.readArray());
    }
    return result;
}
VersionedOperationResponse RemoveIfUnmodifiedOperation::executeOperation(Transport& transport)
{
    // 1) write header
    hr_scoped_ptr<infinispan::hotrod::protocol::HeaderParams> params(
        &(AbstractKeyOperation<VersionedOperationResponse>::writeHeader(
            transport, REMOVE_IF_UNMODIFIED_REQUEST)));

    //2) write message body
    transport.writeArray(key);
    transport.writeLong(version);
    transport.flush();

    return AbstractKeyOperation<VersionedOperationResponse>::returnVersionedOperationResponse(transport, *params);

}
VersionedOperationResponse RemoveIfUnmodifiedOperation::executeOperation(Transport& transport)
{
    TRACE("Execute RemoteIfUnmodified(flags=%u, version=%lld)", flags, version);
    TRACEBYTES("key = ", key);
    // 1) write header
    std::unique_ptr<infinispan::hotrod::protocol::HeaderParams> params(
        &(AbstractKeyOperation<VersionedOperationResponse>::writeHeader(
            transport, REMOVE_IF_UNMODIFIED_REQUEST)));

    //2) write message body
    transport.writeArray(key);
    transport.writeLong(version);
    transport.flush();

    return AbstractKeyOperation<VersionedOperationResponse>::returnVersionedOperationResponse(transport, *params);

}
Beispiel #5
0
std::map<std::string, std::string> StatsOperation::executeOperation(Transport& transport)
{
    TRACE("Executing Stats");
    hr_scoped_ptr<HeaderParams> params(&(RetryOnFailureOperation<std::map<std::string, std::string> >::writeHeader(transport, STATS_REQUEST)));
    transport.flush();
    RetryOnFailureOperation<std::map<std::string, std::string> >::readHeaderAndValidate(transport, *params);

    int nrOfStats = transport.readVInt();
    TRACE("Stats returning map of %d entries:", nrOfStats);
    std::map<std::string, std::string> result;
    for (int i = 0; i < nrOfStats; i++) {
        std::string statName = transport.readString();
        std::string statValue = transport.readString();
        result[statName] = statValue;
        TRACE("%s -> %s", statName.c_str(), statValue.c_str());
    }
    return result;
}
std::set<hrbytes> BulkGetKeysOperation::executeOperation(Transport& transport)
{
    TRACE("Execute BulkGetKeys(flags=%u,scope=%d)", flags, scope);
    hr_scoped_ptr<HeaderParams> params(&(RetryOnFailureOperation<std::set<hrbytes> >::writeHeader(transport, BULK_GET_KEYS_REQUEST)));
    transport.writeVInt(scope);
    transport.flush();
    RetryOnFailureOperation<std::set<hrbytes> >::readHeaderAndValidate(transport, *params);
    std::set<hrbytes> result;
    while (transport.readByte()==1) {
        result.insert(transport.readArray());
    }
    if (logger.isTraceEnabled()) {
        for (std::set<hrbytes>::iterator it = result.begin(); it != result.end(); ++it) {
            TRACEBYTES("return key = ", *it);
        }
        if (result.size() == 0) {
            TRACE("No data in bulk");
        }
    }
    return result;
}