polardbxengine/plugin/polarx_rpc/polarx_rpc.h

64 lines
1.4 KiB
C++

//
// Created by zzy on 2022/7/5.
//
#pragma once
#include <atomic>
#include <memory>
#include <mutex>
#include "global_defines.h"
#ifndef MYSQL8
#include "sql_plugin.h"
#include <my_global.h>
#endif
#include <mysql.h>
#include <mysql/plugin.h>
#include <mysql/service_my_plugin_log.h>
#include "sql/log.h"
#define POLARX_RPC_PLUGIN_NAME "polarx_rpc"
namespace polarx_rpc {
class Cserver;
class CrequestCache;
}
struct polarx_rpc_info_t final {
st_mysql_daemon daemon{MYSQL_DAEMON_INTERFACE_VERSION};
/// server
std::mutex mutex;
MYSQL_PLUGIN plugin_info = nullptr;
std::unique_ptr<polarx_rpc::Cserver> server;
/// cache
std::unique_ptr<polarx_rpc::CrequestCache> cache;
/// status
std::atomic<bool> inited = {false};
std::atomic<int64> tcp_connections = {0};
std::atomic<int64> tcp_closing = {0};
//// session count use polarx_rpc::g_session_count;
std::atomic<int64> total_sessions = {0}; /// include internal session
std::atomic<int64> threads = {0}; /// working threads(without watchdog)
std::atomic<int64> sql_hit = {0};
std::atomic<int64> sql_miss = {0};
std::atomic<int64> sql_evict = {0};
std::atomic<int64> plan_hit = {0};
std::atomic<int64> plan_miss = {0};
std::atomic<int64> plan_evict = {0};
};
extern polarx_rpc_info_t plugin_info;
#define POLARX_RPC_DBG 0
#if POLARX_RPC_DBG
# define DBG_LOG(_x_) sql_print_information _x_
#else
# define DBG_LOG(_x_)
#endif
#define POLARX_RPC_PKT_DBG 0