00001 /* 00002 * Drizzle Client & Protocol Library 00003 * 00004 * Copyright (C) 2008 Eric Day (eday@oddments.org) 00005 * All rights reserved. 00006 * 00007 * Use and distribution licensed under the BSD license. See 00008 * the COPYING.BSD file in the root source directory for full text. 00009 */ 00010 00016 #ifndef __DRIZZLE_STRUCTS_H 00017 #define __DRIZZLE_STRUCTS_H 00018 00019 #include <sys/types.h> 00020 #include <sys/socket.h> 00021 #include <netdb.h> 00022 #ifndef NI_MAXHOST 00023 # define NI_MAXHOST 1025 00024 #endif 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif 00029 00033 struct drizzle_st 00034 { 00035 uint16_t error_code; 00036 drizzle_options_t options; 00037 drizzle_verbose_t verbose; 00038 uint32_t con_count; 00039 uint32_t pfds_size; 00040 uint32_t query_count; 00041 uint32_t query_new; 00042 uint32_t query_running; 00043 int last_errno; 00044 int timeout; 00045 drizzle_con_st *con_list; 00046 void *context; 00047 drizzle_context_free_fn *context_free_fn; 00048 drizzle_event_watch_fn *event_watch_fn; 00049 void *event_watch_context; 00050 drizzle_log_fn *log_fn; 00051 void *log_context; 00052 struct pollfd *pfds; 00053 drizzle_query_st *query_list; 00054 char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1]; 00055 char last_error[DRIZZLE_MAX_ERROR_SIZE]; 00056 }; 00057 00061 struct drizzle_con_tcp_st 00062 { 00063 in_port_t port; 00064 struct addrinfo *addrinfo; 00065 char *host; 00066 char host_buffer[NI_MAXHOST]; 00067 }; 00068 00072 struct drizzle_con_uds_st 00073 { 00074 struct addrinfo addrinfo; 00075 struct sockaddr_un sockaddr; 00076 }; 00077 00081 struct drizzle_con_st 00082 { 00083 uint8_t packet_number; 00084 uint8_t protocol_version; 00085 uint8_t state_current; 00086 short events; 00087 short revents; 00088 drizzle_capabilities_t capabilities; 00089 drizzle_charset_t charset; 00090 drizzle_command_t command; 00091 drizzle_con_options_t options; 00092 drizzle_con_socket_t socket_type; 00093 drizzle_con_status_t status; 00094 uint32_t max_packet_size; 00095 uint32_t result_count; 00096 uint32_t thread_id; 00097 int backlog; 00098 int fd; 00099 size_t buffer_size; 00100 size_t command_offset; 00101 size_t command_size; 00102 size_t command_total; 00103 size_t packet_size; 00104 struct addrinfo *addrinfo_next; 00105 uint8_t *buffer_ptr; 00106 uint8_t *command_buffer; 00107 uint8_t *command_data; 00108 void *context; 00109 drizzle_con_context_free_fn *context_free_fn; 00110 drizzle_st *drizzle; 00111 drizzle_con_st *next; 00112 drizzle_con_st *prev; 00113 drizzle_query_st *query; 00114 drizzle_result_st *result; 00115 drizzle_result_st *result_list; 00116 uint8_t *scramble; 00117 union 00118 { 00119 drizzle_con_tcp_st tcp; 00120 drizzle_con_uds_st uds; 00121 } socket; 00122 uint8_t buffer[DRIZZLE_MAX_BUFFER_SIZE]; 00123 char db[DRIZZLE_MAX_DB_SIZE]; 00124 char password[DRIZZLE_MAX_PASSWORD_SIZE]; 00125 uint8_t scramble_buffer[DRIZZLE_MAX_SCRAMBLE_SIZE]; 00126 char server_version[DRIZZLE_MAX_SERVER_VERSION_SIZE]; 00127 drizzle_state_fn *state_stack[DRIZZLE_STATE_STACK_SIZE]; 00128 char user[DRIZZLE_MAX_USER_SIZE]; 00129 }; 00130 00134 struct drizzle_query_st 00135 { 00136 drizzle_st *drizzle; 00137 drizzle_query_st *next; 00138 drizzle_query_st *prev; 00139 drizzle_query_options_t options; 00140 drizzle_query_state_t state; 00141 drizzle_con_st *con; 00142 drizzle_result_st *result; 00143 const char *string; 00144 size_t size; 00145 void *context; 00146 drizzle_query_context_free_fn *context_free_fn; 00147 }; 00148 00152 struct drizzle_result_st 00153 { 00154 drizzle_con_st *con; 00155 drizzle_result_st *next; 00156 drizzle_result_st *prev; 00157 drizzle_result_options_t options; 00158 00159 char info[DRIZZLE_MAX_INFO_SIZE]; 00160 uint16_t error_code; 00161 char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1]; 00162 uint64_t insert_id; 00163 uint16_t warning_count; 00164 uint64_t affected_rows; 00165 00166 uint16_t column_count; 00167 uint16_t column_current; 00168 drizzle_column_st *column_list; 00169 drizzle_column_st *column; 00170 drizzle_column_st *column_buffer; 00171 00172 uint64_t row_count; 00173 uint64_t row_current; 00174 00175 uint16_t field_current; 00176 size_t field_total; 00177 size_t field_offset; 00178 size_t field_size; 00179 drizzle_field_t field; 00180 drizzle_field_t field_buffer; 00181 00182 uint64_t row_list_size; 00183 drizzle_row_t row; 00184 drizzle_row_t *row_list; 00185 size_t *field_sizes; 00186 size_t **field_sizes_list; 00187 }; 00188 00192 struct drizzle_column_st 00193 { 00194 drizzle_result_st *result; 00195 drizzle_column_st *next; 00196 drizzle_column_st *prev; 00197 drizzle_column_options_t options; 00198 char catalog[DRIZZLE_MAX_CATALOG_SIZE]; 00199 char db[DRIZZLE_MAX_DB_SIZE]; 00200 char table[DRIZZLE_MAX_TABLE_SIZE]; 00201 char orig_table[DRIZZLE_MAX_TABLE_SIZE]; 00202 char name[DRIZZLE_MAX_COLUMN_NAME_SIZE]; 00203 char orig_name[DRIZZLE_MAX_COLUMN_NAME_SIZE]; 00204 drizzle_charset_t charset; 00205 uint32_t size; 00206 size_t max_size; 00207 drizzle_column_type_t type; 00208 drizzle_column_flags_t flags; 00209 uint8_t decimals; 00210 uint8_t default_value[DRIZZLE_MAX_DEFAULT_VALUE_SIZE]; 00211 size_t default_value_size; 00212 }; 00213 00214 #ifdef __cplusplus 00215 } 00216 #endif 00217 00218 #endif /* __DRIZZLE_STRUCTS_H */
1.7.1