// 1:
ssc_drva_test.cpp
void da_test_runner::runner(const char *cmd_line_args,
double duration,
sensor_uid suid,
int32_t msg_id)
{
........
ssc_connection ssc_conn([this](const uint8_t *data, size_t size)
{
handle_event(data, size);
});
....
string req_message_encoded;
req_message.SerializeToString(&req_message_encoded);
ssc_conn.send_request( req_message_encoded);
}
看下 这个 ssc_conn
ssc_connection ssc_conn(xxx) : 显示这种应该是个ssc_conn 的 变量
会调用 这个类的构造函数…
这个类的构造函数 的参数 是一个 函数
using ssc_event_cb_ts = std::function<void(const uint8_t *data, size_t size, uint64_t ts)>;
这种是定义了 函数指针,名字是 ssc_event_cb_ts
构造函数的参数 是一个 函数,所以,我们要传入函数指针
看下 ssc_conn 后面这个是什么东西
([this](const uint8_t *data, size_t size)
{
handle_event(data, size);
});
这个是 Lambda 表达式
"this"函数体内可以使用 Lambda所在类中的成员变量
其实 这句话 就是 ssc_conn 变量的创建, c++ 中叫做 类的实例化.
后面一大推 就是 以 lambda 表达式 构成的一个函数, 传递给 ssc_event_cb_ts event_cb
如果 这个函数得到执行,真正有效的 就是这句
handle_event(data, size);