Memtiter-benchmark源码解析2--shard_connection

接上一篇博客Memtiter-benchmark源码解析1, 通过shard_connection发送请求

shard_connection.h

class shad_connection
在这里插入图片描述
private members

Line 161 行 bufferevent* m_bev;重要的bufferevent_event

在这里插入图片描述

在这里插入图片描述

important methods

setup_event

在这里插入图片描述

shard_connection.cpp

在这里插入图片描述
bufferevent_setcb 设置了 m_bev 的读事件的函数回调,没有设置写事件的函数回调
在这里插入图片描述

send_set_command

在这里插入图片描述
cmd_size = m_protocol->write_command_set(key, key_len, value, value_len,
expiry, offset);

m_protocol->write_command_set 方法见“Memtiter-benchmark源码解析3–protocol“。m_protocol的 write_command_set 和write_command_get 方法分别将请求内容写入到m_protocol的成员变量 m_read_buf 和 m_write_buf 中。 m_read_buf 和 m_write_buf 是 ev_buffer * 类型。

在这里插入图片描述
std::queue<request > m_pipeline;
int m_pending_resp;

request 是在 shard_connection.h 中定义的一个结构体。它封装了一个请求的类型、发送时间和内容大小。但它实际不包括请求内容。

请求类型在line 42 定义,分别几种:get,set,auth,db连接等。
在这里插入图片描述

338 发送完当前请求后,该请求进队

Each shard_connection has a bufferevent called m_bev.

m_bev has two buffers: input and output. For the input buffer, m_bev sets the read callback function for it, which is cluster_client_read_hadler. However, m_bev does not set the write callback function. For other events, cluster_client_event_handler is responsible for them. Furthermore, as a private member of shard_connection, m_protocol leverages the two buffers from m_bev to initialize its m_read_buf and m_write_buf members.

在这里插入图片描述

abstract_protocol* m_protocol;

在这里插入图片描述
在这里插入图片描述

shard_connection.cpp: cluster_client_read_handler would invoke the process_response function.

在这里插入图片描述

line 394 memtiter 收到一个response后,与该response对应的请求就是当前shared_connection 中std::queue<request > m_pipeline 排在队首的request所发送的.
在这里插入图片描述
在这里插入图片描述

m_conns_manager 有若干个子类。client是其中之一
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值