File connection_sr.c
FileList > connection > connection_sr.c
Go to the source code of this file
#include "config.h"
#include <filesystem>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <assert.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/uio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include "porting.h"
#include "error_manager.h"
#include "connection_globals.h"
#include "filesys.hpp"
#include "filesys_temp.hpp"
#include "memory_alloc.h"
#include "environment_variable.h"
#include "system_parameter.h"
#include "critical_section.h"
#include "log_manager.h"
#include "object_representation.h"
#include "connection_error.h"
#include "log_impl.h"
#include "session.h"
#include "tcp.h"
#include "connection_context.hpp"
#include "connection_worker.hpp"
#include "connection_sr.h"
#include "server_support.h"
#include "thread_manager.hpp"
#include "memory_wrapper.hpp"
Classes
Public Types
Public Attributes
Public Static Attributes
Public Functions
| Type |
Name |
| css_error_code |
css_add_queue_entry (CSS_CONN_ENTRY * conn, CSS_LIST * list, unsigned short request_id, char * buffer, int buffer_size, int rc, int transid, int invalidate_snapshot, int db_error)
|
| CSS_CONN_ENTRY * |
css_connect_to_master_server (int master_port_id, const char * server_name, int name_length)
|
| void |
css_decrement_num_conn (BOOT_CLIENT_TYPE client_type)
|
| void |
css_final_conn_list (void)
|
| CSS_WAIT_QUEUE_ENTRY * |
css_find_and_remove_wait_queue_entry (CSS_LIST * list, unsigned int key)
|
| CSS_CONN_ENTRY * |
css_find_conn_by_tran_index (int tran_index)
|
| CSS_CONN_ENTRY * |
css_find_conn_from_fd (SOCKET fd)
|
| void |
css_free_conn (CSS_CONN_ENTRY * conn)
|
| void |
css_free_user_access_status (void)
|
| void |
css_free_wait_queue_entry (CSS_CONN_ENTRY * conn, CSS_WAIT_QUEUE_ENTRY * entry)
|
| char ** |
css_get_argv (void)
|
| char * |
css_get_exec_path (void)
|
| int |
css_get_num_free_conn (void)
|
| unsigned short |
css_get_request_id (CSS_CONN_ENTRY * conn)
|
| int |
css_get_session_ids_for_active_connections (SESSION_ID ** session_ids, int * count)
|
| void |
css_get_user_access_status (int num_user, LAST_ACCESS_STATUS ** access_status_array)
|
| int |
css_increment_num_conn (BOOT_CLIENT_TYPE client_type)
|
| int |
css_init_conn_list (void)
|
| int |
css_initialize_conn (CSS_CONN_ENTRY * conn, SOCKET fd)
|
| void |
css_insert_into_active_conn_list (CSS_CONN_ENTRY * conn)
|
| bool |
css_is_request_aborted (CSS_CONN_ENTRY * conn, unsigned short request_id)
|
| CSS_CONN_ENTRY * |
css_make_conn (SOCKET fd)
|
| void |
css_prepare_shutdown_conn (CSS_CONN_ENTRY * conn)
|
| void |
css_print_conn_entry_info (CSS_CONN_ENTRY * conn)
|
| void |
css_print_conn_list (void)
|
| void |
css_print_free_conn_list (void)
|
| void |
css_process_abort_packet (CSS_CONN_ENTRY * conn, unsigned short request_id)
|
| int |
css_queue_user_data_buffer (CSS_CONN_ENTRY * conn, unsigned short request_id, int size, char * buffer)
|
| int |
css_read_header (CSS_CONN_ENTRY * conn, const NET_HEADER * local_header)
|
| int |
css_receive_data (CSS_CONN_ENTRY * conn, unsigned short req_id, char ** buffer, int * buffer_size, int timeout)
|
| int |
css_receive_request (CSS_CONN_ENTRY * conn, unsigned short * rid, int * request, int * buffer_size)
|
| void |
css_remove_all_unexpected_packets (CSS_CONN_ENTRY * conn)
|
| void |
css_remove_unexpected_packets (CSS_CONN_ENTRY * conn, unsigned short request_id)
|
| void |
css_request_release_packet (css_conn_entry * conn, void * buffer)
|
| void |
css_request_shutdown_conn (css_conn_entry * conn, uint8_t ignore, bool retry, int wait_time)
|
| unsigned int |
css_return_eid_from_conn (CSS_CONN_ENTRY * conn, unsigned short rid)
|
| int |
css_return_queued_data (CSS_CONN_ENTRY * conn, unsigned short rid, char ** buffer, int * bufsize, int * rc)
|
| int |
css_return_queued_error (CSS_CONN_ENTRY * conn, unsigned short request_id, char ** buffer, int * buffer_size, int * rc)
|
| int |
css_return_queued_request (CSS_CONN_ENTRY * conn, unsigned short * rid, int * request, int * buffer_size)
|
| void |
css_set_argv (char ** argv)
|
| void |
css_set_exec_path (char * exec_path)
|
| void |
css_set_user_access_status (const char * db_user, const char * host, const char * program_name)
|
| void |
css_shutdown_conn (CSS_CONN_ENTRY * conn)
|
| int |
css_shutdown_conn_by_tran_index (int tran_index, int wait_time)
|
| void |
css_wakeup_handler (css_conn_entry * conn)
|
Public Static Functions
| Type |
Name |
| void |
clear_wait_queue_entry_and_free_buffer (THREAD_ENTRY * thrdp, CSS_CONN_ENTRY * conn, unsigned short rid, char ** bufferp, int * sizep)
|
| CSS_WAIT_QUEUE_ENTRY * |
css_add_wait_queue_entry (CSS_CONN_ENTRY * conn, CSS_LIST * list, unsigned short request_id, char ** buffer, int * buffer_size, int * rc)
|
| CSS_QUEUE_ENTRY * |
css_claim_queue_entry (CSS_CONN_ENTRY * conn)
|
| CSS_WAIT_QUEUE_ENTRY * |
css_claim_wait_queue_entry (CSS_CONN_ENTRY * conn)
|
| CSS_CONN_ENTRY * |
css_common_connect (CSS_CONN_ENTRY * conn, unsigned short * rid, const char * host_name, int connect_type, const char * server_name, int server_name_length, int port)
|
| void |
css_dealloc_conn (CSS_CONN_ENTRY * conn)
|
| void |
css_decrement_num_conn_internal (CSS_CONN_RULE_INFO * conn_rule_info)
|
| CSS_QUEUE_ENTRY * |
css_find_and_remove_queue_entry (CSS_LIST * list, unsigned int key)
|
| CSS_QUEUE_ENTRY * |
css_find_queue_entry (CSS_LIST * list, unsigned int key)
|
| int |
css_find_queue_entry_by_key (void * data, void * user)
|
| void |
css_free_queue_entry (CSS_CONN_ENTRY * conn, CSS_QUEUE_ENTRY * entry)
|
| void |
css_free_queue_entry_list (CSS_CONN_ENTRY * conn)
|
| void |
css_free_wait_queue_list (CSS_CONN_ENTRY * conn)
|
| int |
css_get_next_client_id (void)
|
| int |
css_increment_num_conn_internal (CSS_CONN_RULE_INFO * conn_rule_info)
|
| bool |
css_is_valid_request_id (CSS_CONN_ENTRY * conn, unsigned short request_id)
|
| unsigned int |
css_make_eid (unsigned short entry_id, unsigned short rid)
|
| CSS_QUEUE_ENTRY * |
css_make_queue_entry (CSS_CONN_ENTRY * conn, unsigned int key, char * buffer, int size, int rc, int transid, int invalidate_snapshot, int db_error)
|
| CSS_WAIT_QUEUE_ENTRY * |
css_make_wait_queue_entry (CSS_CONN_ENTRY * conn, unsigned int key, char ** buffer, int * size, int * rc)
|
| void |
css_process_close_packet (CSS_CONN_ENTRY * conn)
|
| css_error_code |
css_queue_command_packet (CSS_CONN_ENTRY * conn, unsigned short request_id, const NET_HEADER * header, int size)
|
| void |
css_queue_data_packet (CSS_CONN_ENTRY * conn, unsigned short request_id, const NET_HEADER * header, THREAD_ENTRY ** wait_thrd)
|
| void |
css_queue_error_packet (CSS_CONN_ENTRY * conn, unsigned short request_id, const NET_HEADER * header)
|
| css_error_code |
css_queue_packet (CSS_CONN_ENTRY * conn, int type, unsigned short request_id, const NET_HEADER * header, int size)
|
| int |
css_remove_and_free_queue_entry (void * data, void * arg)
|
| int |
css_remove_and_free_wait_queue_entry (void * data, void * arg)
|
| void |
css_retire_queue_entry (CSS_CONN_ENTRY * conn, CSS_QUEUE_ENTRY * entry)
|
| void |
css_retire_wait_queue_entry (CSS_CONN_ENTRY * conn, CSS_WAIT_QUEUE_ENTRY * entry)
|
| int |
css_return_queued_data_timeout (CSS_CONN_ENTRY * conn, unsigned short rid, char ** buffer, int * bufsize, int * rc, int waitsec)
|
| void |
css_set_proc_register (const char * server_name, int server_name_length, CSS_SERVER_PROC_REGISTER * proc_register)
|
| int |
find_wait_queue_entry_by_key (void * data, void * user)
|
Macros
| Type |
Name |
| define |
CSS_ACTIVE_CONN_ARGS [**css\_Num\_active\_conn**](connection__sr_8c.md#variable-css_num_active_conn), [**CSS\_CONN\_IDX**](connection__sr_8c.md#define-css_conn_idx) ([**css\_Active\_conn\_anchor**](connection__sr_8c.md#variable-css_active_conn_anchor))
|
| define |
CSS_ACTIVE_CONN_MSG "Active count = %d, head = %[**d"**](broker__monitor_8c.md#function-timeout)
|
| define |
CSS_CONN_IDX (conn_arg) (([**conn\_arg**](broker__monitor_8c.md#function-timeout)) - [**css\_Conn\_array**](connection__sr_8c.md#variable-css_conn_array))
|
| define |
CSS_FREE_CONN_ARGS [**css\_Num\_free\_conn**](connection__sr_8c.md#variable-css_num_free_conn), [**CSS\_CONN\_IDX**](connection__sr_8c.md#define-css_conn_idx) ([**css\_Free\_conn\_anchor**](connection__sr_8c.md#variable-css_free_conn_anchor))
|
| define |
CSS_FREE_CONN_MSG "Free count = %d, head = %[**d"**](broker__monitor_8c.md#function-timeout)
|
| define |
NUM_NORMAL_CLIENTS ([**prm\_get\_integer\_value**](system__parameter_8h.md#function-prm_get_integer_value)(PRM\_ID\_CSS\_MAX\_CLIENTS))
|
| define |
RMUTEX_NAME_CONN_ENTRY "CONN\_ENTRY"
|
| define |
TRACE (string, arg)
|
Public Types Documentation
typedef CSS_QUEUE_SEARCH_ARG
typedef struct queue_search_arg CSS_QUEUE_SEARCH_ARG;
typedef CSS_WAIT_QUEUE_SEARCH_ARG
typedef struct wait_queue_search_arg CSS_WAIT_QUEUE_SEARCH_ARG;
Public Attributes Documentation
variable css_Active_conn_anchor
CSS_CONN_ENTRY* css_Active_conn_anchor;
variable css_Conn_array
CSS_CONN_ENTRY* css_Conn_array;
variable css_Num_access_user
variable css_Rwlock_active_conn_anchor
SYNC_RWLOCK css_Rwlock_active_conn_anchor;
variable css_Rwlock_free_conn_anchor
SYNC_RWLOCK css_Rwlock_free_conn_anchor;
Public Static Attributes Documentation
variable CSS_MAX_CLIENT_ID
const int CSS_MAX_CLIENT_ID;
variable css_Access_status_anchor
LAST_ACCESS_STATUS* css_Access_status_anchor;
variable css_Client_id
variable css_Client_id_lock
pthread_mutex_t css_Client_id_lock;
variable css_Conn_rule_lock
pthread_mutex_t css_Conn_rule_lock;
variable css_Free_conn_anchor
CSS_CONN_ENTRY* css_Free_conn_anchor;
variable css_Num_active_conn
variable css_Num_current_client
int css_Num_current_client;
variable css_Num_free_conn
variable css_Num_max_client
variable css_Num_max_conn
variable css_Server_argv
variable css_Server_exec_path
char css_Server_exec_path[PATH_MAX];
Public Functions Documentation
function css_add_queue_entry
css_error_code css_add_queue_entry (
CSS_CONN_ENTRY * conn,
CSS_LIST * list,
unsigned short request_id,
char * buffer,
int buffer_size,
int rc,
int transid,
int invalidate_snapshot,
int db_error
)
function css_connect_to_master_server
CSS_CONN_ENTRY * css_connect_to_master_server (
int master_port_id,
const char * server_name,
int name_length
)
function css_decrement_num_conn
void css_decrement_num_conn (
BOOT_CLIENT_TYPE client_type
)
function css_final_conn_list
void css_final_conn_list (
void
)
function css_find_and_remove_wait_queue_entry
CSS_WAIT_QUEUE_ENTRY * css_find_and_remove_wait_queue_entry (
CSS_LIST * list,
unsigned int key
)
function css_find_conn_by_tran_index
CSS_CONN_ENTRY * css_find_conn_by_tran_index (
int tran_index
)
function css_find_conn_from_fd
CSS_CONN_ENTRY * css_find_conn_from_fd (
SOCKET fd
)
function css_free_conn
void css_free_conn (
CSS_CONN_ENTRY * conn
)
function css_free_user_access_status
void css_free_user_access_status (
void
)
function css_free_wait_queue_entry
void css_free_wait_queue_entry (
CSS_CONN_ENTRY * conn,
CSS_WAIT_QUEUE_ENTRY * entry
)
function css_get_argv
char ** css_get_argv (
void
)
function css_get_exec_path
char * css_get_exec_path (
void
)
function css_get_num_free_conn
int css_get_num_free_conn (
void
)
function css_get_request_id
unsigned short css_get_request_id (
CSS_CONN_ENTRY * conn
)
function css_get_session_ids_for_active_connections
int css_get_session_ids_for_active_connections (
SESSION_ID ** session_ids,
int * count
)
function css_get_user_access_status
void css_get_user_access_status (
int num_user,
LAST_ACCESS_STATUS ** access_status_array
)
function css_increment_num_conn
int css_increment_num_conn (
BOOT_CLIENT_TYPE client_type
)
function css_init_conn_list
int css_init_conn_list (
void
)
function css_initialize_conn
int css_initialize_conn (
CSS_CONN_ENTRY * conn,
SOCKET fd
)
function css_insert_into_active_conn_list
void css_insert_into_active_conn_list (
CSS_CONN_ENTRY * conn
)
function css_is_request_aborted
bool css_is_request_aborted (
CSS_CONN_ENTRY * conn,
unsigned short request_id
)
function css_make_conn
CSS_CONN_ENTRY * css_make_conn (
SOCKET fd
)
function css_prepare_shutdown_conn
void css_prepare_shutdown_conn (
CSS_CONN_ENTRY * conn
)
function css_print_conn_entry_info
void css_print_conn_entry_info (
CSS_CONN_ENTRY * conn
)
function css_print_conn_list
void css_print_conn_list (
void
)
function css_print_free_conn_list
void css_print_free_conn_list (
void
)
function css_process_abort_packet
void css_process_abort_packet (
CSS_CONN_ENTRY * conn,
unsigned short request_id
)
function css_queue_user_data_buffer
int css_queue_user_data_buffer (
CSS_CONN_ENTRY * conn,
unsigned short request_id,
int size,
char * buffer
)
int css_read_header (
CSS_CONN_ENTRY * conn,
const NET_HEADER * local_header
)
function css_receive_data
int css_receive_data (
CSS_CONN_ENTRY * conn,
unsigned short req_id,
char ** buffer,
int * buffer_size,
int timeout
)
function css_receive_request
int css_receive_request (
CSS_CONN_ENTRY * conn,
unsigned short * rid,
int * request,
int * buffer_size
)
function css_remove_all_unexpected_packets
void css_remove_all_unexpected_packets (
CSS_CONN_ENTRY * conn
)
function css_remove_unexpected_packets
void css_remove_unexpected_packets (
CSS_CONN_ENTRY * conn,
unsigned short request_id
)
function css_request_release_packet
void css_request_release_packet (
css_conn_entry * conn,
void * buffer
)
function css_request_shutdown_conn
void css_request_shutdown_conn (
css_conn_entry * conn,
uint8_t ignore,
bool retry,
int wait_time
)
function css_return_eid_from_conn
unsigned int css_return_eid_from_conn (
CSS_CONN_ENTRY * conn,
unsigned short rid
)
function css_return_queued_data
int css_return_queued_data (
CSS_CONN_ENTRY * conn,
unsigned short rid,
char ** buffer,
int * bufsize,
int * rc
)
function css_return_queued_error
int css_return_queued_error (
CSS_CONN_ENTRY * conn,
unsigned short request_id,
char ** buffer,
int * buffer_size,
int * rc
)
function css_return_queued_request
int css_return_queued_request (
CSS_CONN_ENTRY * conn,
unsigned short * rid,
int * request,
int * buffer_size
)
function css_set_argv
void css_set_argv (
char ** argv
)
function css_set_exec_path
void css_set_exec_path (
char * exec_path
)
function css_set_user_access_status
void css_set_user_access_status (
const char * db_user,
const char * host,
const char * program_name
)
function css_shutdown_conn
void css_shutdown_conn (
CSS_CONN_ENTRY * conn
)
function css_shutdown_conn_by_tran_index
int css_shutdown_conn_by_tran_index (
int tran_index,
int wait_time
)
function css_wakeup_handler
void css_wakeup_handler (
css_conn_entry * conn
)
Public Static Functions Documentation
function clear_wait_queue_entry_and_free_buffer
static void clear_wait_queue_entry_and_free_buffer (
THREAD_ENTRY * thrdp,
CSS_CONN_ENTRY * conn,
unsigned short rid,
char ** bufferp,
int * sizep
)
function css_add_wait_queue_entry
static CSS_WAIT_QUEUE_ENTRY * css_add_wait_queue_entry (
CSS_CONN_ENTRY * conn,
CSS_LIST * list,
unsigned short request_id,
char ** buffer,
int * buffer_size,
int * rc
)
function css_claim_queue_entry
static CSS_QUEUE_ENTRY * css_claim_queue_entry (
CSS_CONN_ENTRY * conn
)
function css_claim_wait_queue_entry
static CSS_WAIT_QUEUE_ENTRY * css_claim_wait_queue_entry (
CSS_CONN_ENTRY * conn
)
function css_common_connect
static CSS_CONN_ENTRY * css_common_connect (
CSS_CONN_ENTRY * conn,
unsigned short * rid,
const char * host_name,
int connect_type,
const char * server_name,
int server_name_length,
int port
)
function css_dealloc_conn
static void css_dealloc_conn (
CSS_CONN_ENTRY * conn
)
function css_decrement_num_conn_internal
static void css_decrement_num_conn_internal (
CSS_CONN_RULE_INFO * conn_rule_info
)
function css_find_and_remove_queue_entry
static CSS_QUEUE_ENTRY * css_find_and_remove_queue_entry (
CSS_LIST * list,
unsigned int key
)
function css_find_queue_entry
static CSS_QUEUE_ENTRY * css_find_queue_entry (
CSS_LIST * list,
unsigned int key
)
function css_find_queue_entry_by_key
static int css_find_queue_entry_by_key (
void * data,
void * user
)
function css_free_queue_entry
static void css_free_queue_entry (
CSS_CONN_ENTRY * conn,
CSS_QUEUE_ENTRY * entry
)
function css_free_queue_entry_list
static void css_free_queue_entry_list (
CSS_CONN_ENTRY * conn
)
function css_free_wait_queue_list
static void css_free_wait_queue_list (
CSS_CONN_ENTRY * conn
)
function css_get_next_client_id
static int css_get_next_client_id (
void
)
function css_increment_num_conn_internal
static int css_increment_num_conn_internal (
CSS_CONN_RULE_INFO * conn_rule_info
)
function css_is_valid_request_id
static bool css_is_valid_request_id (
CSS_CONN_ENTRY * conn,
unsigned short request_id
)
function css_make_eid
static unsigned int css_make_eid (
unsigned short entry_id,
unsigned short rid
)
function css_make_queue_entry
static CSS_QUEUE_ENTRY * css_make_queue_entry (
CSS_CONN_ENTRY * conn,
unsigned int key,
char * buffer,
int size,
int rc,
int transid,
int invalidate_snapshot,
int db_error
)
function css_make_wait_queue_entry
static CSS_WAIT_QUEUE_ENTRY * css_make_wait_queue_entry (
CSS_CONN_ENTRY * conn,
unsigned int key,
char ** buffer,
int * size,
int * rc
)
function css_process_close_packet
static void css_process_close_packet (
CSS_CONN_ENTRY * conn
)
function css_queue_command_packet
static css_error_code css_queue_command_packet (
CSS_CONN_ENTRY * conn,
unsigned short request_id,
const NET_HEADER * header,
int size
)
function css_queue_data_packet
static void css_queue_data_packet (
CSS_CONN_ENTRY * conn,
unsigned short request_id,
const NET_HEADER * header,
THREAD_ENTRY ** wait_thrd
)
function css_queue_error_packet
static void css_queue_error_packet (
CSS_CONN_ENTRY * conn,
unsigned short request_id,
const NET_HEADER * header
)
function css_queue_packet
static css_error_code css_queue_packet (
CSS_CONN_ENTRY * conn,
int type,
unsigned short request_id,
const NET_HEADER * header,
int size
)
function css_remove_and_free_queue_entry
static int css_remove_and_free_queue_entry (
void * data,
void * arg
)
function css_remove_and_free_wait_queue_entry
static int css_remove_and_free_wait_queue_entry (
void * data,
void * arg
)
function css_retire_queue_entry
static void css_retire_queue_entry (
CSS_CONN_ENTRY * conn,
CSS_QUEUE_ENTRY * entry
)
function css_retire_wait_queue_entry
static void css_retire_wait_queue_entry (
CSS_CONN_ENTRY * conn,
CSS_WAIT_QUEUE_ENTRY * entry
)
function css_return_queued_data_timeout
static int css_return_queued_data_timeout (
CSS_CONN_ENTRY * conn,
unsigned short rid,
char ** buffer,
int * bufsize,
int * rc,
int waitsec
)
function css_set_proc_register
static void css_set_proc_register (
const char * server_name,
int server_name_length,
CSS_SERVER_PROC_REGISTER * proc_register
)
function find_wait_queue_entry_by_key
static int find_wait_queue_entry_by_key (
void * data,
void * user
)
Macro Definition Documentation
define CSS_ACTIVE_CONN_ARGS
#define CSS_ACTIVE_CONN_ARGS `css_Num_active_conn , CSS_CONN_IDX ( css_Active_conn_anchor )`
define CSS_ACTIVE_CONN_MSG
#define CSS_ACTIVE_CONN_MSG `"Active count = %d, head = % d"`
define CSS_CONN_IDX
#define CSS_CONN_IDX (
conn_arg
) `(( conn_arg ) - css_Conn_array )`
define CSS_FREE_CONN_ARGS
#define CSS_FREE_CONN_ARGS `css_Num_free_conn , CSS_CONN_IDX ( css_Free_conn_anchor )`
define CSS_FREE_CONN_MSG
#define CSS_FREE_CONN_MSG `"Free count = %d, head = % d"`
define NUM_NORMAL_CLIENTS
#define NUM_NORMAL_CLIENTS `( prm_get_integer_value ( PRM_ID_CSS_MAX_CLIENTS ))`
define RMUTEX_NAME_CONN_ENTRY
#define RMUTEX_NAME_CONN_ENTRY `"CONN_ENTRY"`
define TRACE
#define TRACE (
string,
arg
)
The documentation for this class was generated from the following file cubrid/src/connection/connection_sr.c