Ejemplo n.º 1
0
/**
 * 客户端请求处理函数:这个函数是selector里面的客户端的通信句柄对应的回调函数
 **/
si_t client_request_handler(struct egui_uds* uds_ptr, addr_t arg)
{
	struct queue message_queue;
	si_t ret = 0;
	NOT_USED(arg);

	EGUI_PRINT_INFO("callback client_request_handler() is called");

	queue_init(&message_queue);

	/** 接受request回应respond **/
	ret = comm_recv_request_and_send_respond(uds_ptr, &message_queue, request_handler);
	if(EXIT_NUMBER == ret)
	{
		return SELECTER_RETURN_TYPE_END;
	}

	/** 发送相关消息 **/
	while(!queue_empty(&message_queue))
	{
		union message* message_ptr = (union message*)queue_front(&message_queue);
		if(0 != comm_send_message(uds_ptr, message_ptr))
		{
			EGUI_PRINT_ERROR("failed to send message!");
		}
		queue_pop(&message_queue);
	}

	queue_exit(&message_queue);
	return SELECTER_RETURN_TYPE_CONTINUE;
}
Ejemplo n.º 2
0
static si_t _event_listener_handler(struct egui_uds* uds_ptr, addr_t app_addr)
{
    si_t ret = comm_recv_request_and_send_respond(uds_ptr, app_addr, _server_lib_handler);
    if(-1 == ret)
    {
        EGUI_PRINT_ERROR("failed to recv request or send respond");
        return SELECTER_RETURN_TYPE_CONTINUE;
    }
    return ret;
}