aboutsummaryrefslogtreecommitdiff
path: root/mysql/mysql/service_srv_session_info.h
diff options
context:
space:
mode:
Diffstat (limited to 'mysql/mysql/service_srv_session_info.h')
-rw-r--r--mysql/mysql/service_srv_session_info.h174
1 files changed, 174 insertions, 0 deletions
diff --git a/mysql/mysql/service_srv_session_info.h b/mysql/mysql/service_srv_session_info.h
new file mode 100644
index 0000000..366529d
--- /dev/null
+++ b/mysql/mysql/service_srv_session_info.h
@@ -0,0 +1,174 @@
+#ifndef MYSQL_SERVICE_SRV_SESSION_INFO_INCLUDED
+#define MYSQL_SERVICE_SRV_SESSION_INFO_INCLUDED
+/* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; version 2 of the
+ License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+/**
+ @file
+ Service providing setters and getters for some properties of a session
+*/
+
+
+#include "mysql/service_srv_session.h"
+#ifndef MYSQL_ABI_CHECK
+#include "my_thread.h" /* my_thread_id */
+#include "m_string.h" /* LEX_CSTRING */
+#include "plugin.h" /* MYSQL_THD */
+#include "mysql_com.h" /* Vio for violite.h */
+#include "violite.h" /* enum_vio_type */
+#include <stdint.h> /* uint16_t */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern struct srv_session_info_service_st {
+ MYSQL_THD (*get_thd)(MYSQL_SESSION session);
+
+ my_thread_id (*get_session_id)(MYSQL_SESSION session);
+
+ LEX_CSTRING (*get_current_db)(MYSQL_SESSION session);
+
+ uint16_t (*get_client_port)(MYSQL_SESSION session);
+ int (*set_client_port)(MYSQL_SESSION session, uint16_t port);
+
+ int (*set_connection_type)(MYSQL_SESSION session, enum enum_vio_type type);
+
+ int (*killed)(MYSQL_SESSION session);
+
+ unsigned int (*session_count)();
+ unsigned int (*thread_count)(const void *plugin);
+} *srv_session_info_service;
+
+#ifdef MYSQL_DYNAMIC_PLUGIN
+
+#define srv_session_info_get_thd(session) srv_session_info_service->get_thd((session))
+#define srv_session_info_get_session_id(sess) srv_session_info_service->get_session_id((sess))
+#define srv_session_info_get_current_db(sess) srv_session_info_service->get_current_db((sess))
+#define srv_session_info_get_client_port(sess) srv_session_info_service->get_client_port((sess))
+#define srv_session_info_set_client_port(sess, port) srv_session_info_service->set_client_port((sess), (port))
+#define srv_session_info_set_connection_type(sess, type) srv_session_info_service->set_connection_type((sess), (type))
+#define srv_session_info_killed(sess) srv_session_info_service->killed((sess))
+#define srv_session_info_session_count(sess) srv_session_info_service->session_count(sess)
+#define srv_session_info_thread_count(plugin) srv_session_info_service->thread_count(plugin)
+
+#else
+
+/**
+ Returns the THD of a session.
+
+ @param session Session
+
+ @returns
+ address of the THD
+*/
+MYSQL_THD srv_session_info_get_thd(MYSQL_SESSION session);
+
+/**
+ Returns the ID of a session.
+
+ @param session Session
+*/
+my_thread_id srv_session_info_get_session_id(MYSQL_SESSION session);
+
+/**
+ Returns the current database of a session.
+
+ @note {NULL, 0} is returned case of no current database or session is NULL
+
+
+ @param session Session
+*/
+LEX_CSTRING srv_session_info_get_current_db(MYSQL_SESSION session);
+
+/**
+ Returns the client port of a session.
+
+ @note The client port in SHOW PROCESSLIST, INFORMATION_SCHEMA.PROCESSLIST.
+ This port is NOT shown in PERFORMANCE_SCHEMA.THREADS.
+
+ @param session Session
+*/
+uint16_t srv_session_info_get_client_port(MYSQL_SESSION session);
+
+/**
+ Sets the client port of a session.
+
+ @note The client port in SHOW PROCESSLIST, INFORMATION_SCHEMA.PROCESSLIST.
+ This port is NOT shown in PERFORMANCE_SCHEMA.THREADS.
+
+ @param session Session
+ @param port Port number
+
+ @return
+ 0 success
+ 1 failure
+*/
+int srv_session_info_set_client_port(MYSQL_SESSION session, uint16_t port);
+
+/**
+ Sets the connection type of a session.
+
+ @see enum_vio_type
+
+ @note The type is shown in PERFORMANCE_SCHEMA.THREADS. The value is translated
+ from the enum to a string according to @see vio_type_names array
+ in vio/vio.c
+
+ @note If NO_VIO_TYPE passed as type the call will fail.
+
+ @return
+ 0 success
+ 1 failure
+*/
+int srv_session_info_set_connection_type(MYSQL_SESSION session,
+ enum enum_vio_type type);
+
+/**
+ Returns whether the session was killed
+
+ @param session Session
+
+ @return
+ 0 not killed
+ 1 killed
+*/
+int srv_session_info_killed(MYSQL_SESSION session);
+
+/**
+ Returns the number opened sessions in thread initialized by srv_session
+ service.
+*/
+unsigned int srv_session_info_session_count();
+
+
+/**
+ Returns the number opened sessions in thread initialized by srv_session
+ service.
+
+ @param plugin Pointer to the plugin structure, passed to the plugin over
+ the plugin init function.
+*/
+unsigned int srv_session_info_thread_count(const void *plugin);
+
+#endif /* MYSQL_DYNAMIC_PLUGIN */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* MYSQL_SERVICE_SRV_SESSION_INFO_INCLUDED */