fn put()

in src/codec/thrift_cache.rs [219:302]


    fn put(rng: &mut SmallRng, keyspace: &Keyspace, buf: &mut Session) {
        let key = keyspace.generate_key(rng);
        let mut fields = Vec::new();
        for _ in 0..keyspace.batch_size() {
            fields.push(
                keyspace
                    .generate_inner_key(rng)
                    .unwrap_or_else(|| b"".to_vec()),
            );
        }
        let mut values = Vec::new();
        for _ in 0..keyspace.batch_size() {
            values.push(keyspace.generate_value(rng).unwrap_or_else(|| b"".to_vec()));
        }
        let timeout = None;
        let timestamp = None;
        let ttl = keyspace.ttl();

        let mut buffer = thrift::ThriftBuffer::new();
        buffer.protocol_header();
        buffer.method_name("put");
        buffer.sequence_id(0);

        buffer.write_bytes(&[thrift::LIST]);
        buffer.write_i16(1);
        buffer.write_bytes(&[thrift::STRUCT]);
        buffer.write_i32(1);

        buffer.write_bytes(&[thrift::STRING]);
        buffer.write_i16(1);
        buffer.write_i32(1);
        buffer.write_bytes(b"0");

        buffer.write_bytes(&[thrift::STRING]);
        buffer.write_i16(2);
        buffer.write_i32(key.len() as i32);
        buffer.write_bytes(&key);

        buffer.write_bytes(&[thrift::LIST]);
        buffer.write_i16(3);
        buffer.write_bytes(&[thrift::STRING]);
        buffer.write_i32(fields.len() as i32);

        for field in fields {
            buffer.write_i32(field.len() as i32);
            buffer.write_bytes(&field);
        }

        buffer.write_bytes(&[thrift::LIST]);
        buffer.write_i16(4);
        buffer.write_bytes(&[thrift::STRING]);
        buffer.write_i32(values.len() as i32);

        for value in values {
            buffer.write_i32(value.len() as i32);
            buffer.write_bytes(&value);
        }

        if let Some(timestamp) = timestamp {
            buffer.write_bytes(&[thrift::I64]);
            buffer.write_i16(5);
            buffer.write_i64(timestamp);
        }

        if ttl > 0 {
            buffer.write_bytes(&[thrift::I64]);
            buffer.write_i16(6);
            buffer.write_i64(ttl as i64);
        }

        if let Some(timeout) = timeout {
            buffer.write_bytes(&[thrift::I32]);
            buffer.write_i16(11);
            buffer.write_i32(timeout);
        }

        // stop request struct
        buffer.stop();

        buffer.stop();
        buffer.frame();

        let _ = buf.write(buffer.as_bytes());
    }