/** * @brief 主处理函数 * * @return int * @retval **/ int op_query() { int opret = 0; nshead_t *req_head; nshead_t *res_head; ub_buff_t req_buf; ub_buff_t res_buf; in_addr_t req_ip; req_head = (nshead_t *) ub_server_get_read_buf(); res_head = (nshead_t *) ub_server_get_write_buf(); if(NULL == req_head || NULL == res_head) { UB_LOG_FATAL("get req_head[%ld] || res_head[%ld] failed.", (long)req_head, (long)res_head); return -1; } req_buf.buf = (char *)(req_head + 1); req_buf.size = ub_server_get_read_size() - sizeof(nshead_t); res_buf.buf = (char *)(res_head + 1); res_buf.size = ub_server_get_write_size() - sizeof(nshead_t); //设置一些log需要的字段 char ip_str[20]; ip_str[0] = 0; req_ip = ub_server_get_ip(); inet_ntop(AF_INET, &req_ip, ip_str, sizeof(ip_str)); ub_log_setbasic(UB_LOG_REQIP, "%s", ip_str); ub_log_setbasic(UB_LOG_LOGID, "%u", req_head->log_id); ub_log_setbasic(UB_LOG_REQSVR, "%s", req_head->provider); ub_log_setbasic(UB_LOG_SVRNAME, "%s", g_cfg.svr_query.svr_name); ub_log_pushnotice("req_dlen", "%d", req_head->body_len); *res_head = *req_head; strncpy(res_head->provider, req_head->provider, sizeof(res_head->provider)); res_head->body_len = 0; res_head->reserved = 0; //处理查询 struct timeval total_s,total_e; gettimeofday(&total_s, NULL); opret = process_query(req_head, &req_buf, res_head, &res_buf); if(opret != 0){ UB_LOG_WARNING("[function:op_update]>>>process_query failed! errno:%d", opret); return -1; } gettimeofday(&total_e, NULL); ub_log_setbasic(UB_LOG_PROCTIME, "%luus", TIME_US_DIFF(total_s, total_e)); return opret; }
/** * * @brief srch的命令处理回调函数 * * @return * 0 : 成功 * -1 : 失败,socket将直接关闭,不给client返回错误信息 **/ int srch_cmdproc_callback() { nshead_t *req_head; nshead_t *res_head; ub_buff_t req_buf; ub_buff_t res_buf; int cmd_no = -1; int ret = 0; //获取请求和回复buffer req_head = (nshead_t *) ub_server_get_read_buf(); res_head = (nshead_t *) ub_server_get_write_buf(); if(NULL == req_head || NULL == res_head) { UB_LOG_FATAL("srch process callback get buffer error."); return -1; } //获取请求和回复实际数据 req_buf.buf = (char *) (req_head + 1); req_buf.size = ub_server_get_read_size() - sizeof (nshead_t); res_buf.buf = (char *) (res_head + 1); res_buf.size = ub_server_get_write_size() - sizeof (nshead_t); //取得命令号 cmd_no = ((srch_req_t *) (req_buf.buf))->cmd_no; //ub_server中设置了: UB_LOG_REQIP, UB_LOGID, UB_LOG_PROCTIME, UB_LOG_ERRNO ub_log_setbasic(UB_LOG_REQSVR, "%s", req_head->provider); ub_log_setbasic(UB_LOG_SVRNAME, "%s", g_conf.srch.svr_name); ub_log_setbasic(UB_LOG_CMDNO, "%d", cmd_no); //ret = ub_process_cmdmap(srch_CMD_MAP, cmd_no, req_head, &req_buf, res_head, &res_buf); ret = srch_process(cmd_no, req_head, &req_buf, res_head, &res_buf); return ret; }