2024-11-14 stan

matchengine svr_on_recv_pkg 学习笔记

1. 功能概述

svr_on_recv_pkg 是 matchengine 的核心请求处理函数,负责处理所有RPC请求。它在服务器初始化时被注册为回调函数,当网络层接收到完整的RPC请求包时会被触发调用。

2. 注册机制

在服务器初始化时注册回调:

    rpc_svr_type type;
    memset(&type, 0, sizeof(type));
    type.on_recv_pkg = svr_on_recv_pkg;
    type.on_new_connection = svr_on_new_connection;
    type.on_connection_close = svr_on_connection_close;

3. 请求处理流程

3.1 请求解析

3.2 命令分发处理

根据pkg->command分发到不同的处理函数:

3.3 错误处理机制

decode_error:
    if (params) {
        json_decref(params);
    }
    sds hex = hexdump(pkg->body, pkg->body_size);
    log_error("connection: %s, cmd: %u decode params fail, params data: \\\\n%s", \\\\
            nw_sock_human_addr(&ses->peer_addr), pkg->command, hex);
    sdsfree(hex);
    rpc_svr_close_clt(svr, ses);

    return;