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 file in this directory for full text. 00009 */ 00010 00016 #ifndef __DRIZZLE_STRUCTS_H 00017 #define __DRIZZLE_STRUCTS_H 00018 00019 #ifdef __cplusplus 00020 extern "C" { 00021 #endif 00022 00026 struct drizzle_st 00027 { 00028 drizzle_options_t options; 00029 uint32_t con_count; 00030 drizzle_con_st *con_list; 00031 drizzle_con_st *con_ready; 00032 drizzle_event_watch_fn *event_watch; 00033 void *event_watch_arg; 00034 struct pollfd *pfds; 00035 uint32_t pfds_size; 00036 uint32_t query_count; 00037 drizzle_query_st *query_list; 00038 uint32_t query_new; 00039 uint32_t query_running; 00040 int last_errno; 00041 uint16_t error_code; 00042 char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1]; 00043 char last_error[DRIZZLE_MAX_ERROR_SIZE]; 00044 }; 00045 00049 struct drizzle_con_st 00050 { 00051 drizzle_st *drizzle; 00052 drizzle_con_st *next; 00053 drizzle_con_st *prev; 00054 drizzle_con_options_t options; 00055 drizzle_result_st *result_list; 00056 uint32_t result_count; 00057 00058 const void *data; 00059 drizzle_con_data_free_fn *data_free_fn; 00060 drizzle_query_st *query; 00061 char user[DRIZZLE_MAX_USER_SIZE]; 00062 char password[DRIZZLE_MAX_PASSWORD_SIZE]; 00063 char db[DRIZZLE_MAX_DB_SIZE]; 00064 char host[NI_MAXHOST]; 00065 in_port_t port; 00066 struct addrinfo *tcp_addrinfo; 00067 struct addrinfo uds_addrinfo; 00068 struct sockaddr_un uds_sockaddr; 00069 struct addrinfo *addrinfo_next; 00070 00071 drizzle_state_fn *state_stack[DRIZZLE_STATE_STACK_SIZE]; 00072 uint8_t state_current; 00073 int fd; 00074 short events; 00075 short revents; 00076 uint8_t buffer[DRIZZLE_MAX_BUFFER_SIZE]; 00077 uint8_t *buffer_ptr; 00078 size_t buffer_size; 00079 00080 size_t packet_size; 00081 uint8_t packet_number; 00082 uint8_t protocol_version; 00083 char server_version[DRIZZLE_MAX_SERVER_VERSION_SIZE]; 00084 uint32_t thread_id; 00085 uint8_t *scramble; 00086 uint8_t scramble_buffer[DRIZZLE_MAX_SCRAMBLE_SIZE]; 00087 drizzle_capabilities_t capabilities; 00088 drizzle_charset_t charset; 00089 drizzle_con_status_t status; 00090 uint32_t max_packet_size; 00091 00092 drizzle_command_t command; 00093 uint8_t *command_data; 00094 uint8_t *command_buffer; 00095 size_t command_size; 00096 size_t command_offset; 00097 size_t command_total; 00098 00099 drizzle_result_st *result; 00100 }; 00101 00105 struct drizzle_query_st 00106 { 00107 drizzle_st *drizzle; 00108 drizzle_query_st *next; 00109 drizzle_query_st *prev; 00110 drizzle_query_options_t options; 00111 drizzle_query_state_t state; 00112 drizzle_con_st *con; 00113 drizzle_result_st *result; 00114 const char *string; 00115 size_t size; 00116 const void *data; 00117 drizzle_query_data_free_fn *data_free_fn; 00118 }; 00119 00123 struct drizzle_result_st 00124 { 00125 drizzle_con_st *con; 00126 drizzle_result_st *next; 00127 drizzle_result_st *prev; 00128 drizzle_result_options_t options; 00129 00130 char info[DRIZZLE_MAX_INFO_SIZE]; 00131 uint16_t error_code; 00132 char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1]; 00133 uint64_t insert_id; 00134 uint16_t warning_count; 00135 uint64_t affected_rows; 00136 00137 uint16_t column_count; 00138 uint16_t column_current; 00139 drizzle_column_st *column_list; 00140 drizzle_column_st *column; 00141 drizzle_column_st *column_buffer; 00142 00143 uint64_t row_count; 00144 uint64_t row_current; 00145 00146 uint16_t field_current; 00147 size_t field_total; 00148 size_t field_offset; 00149 size_t field_size; 00150 drizzle_field_t field; 00151 drizzle_field_t field_buffer; 00152 00153 uint64_t row_list_size; 00154 drizzle_row_t row; 00155 drizzle_row_t *row_list; 00156 size_t *field_sizes; 00157 size_t **field_sizes_list; 00158 }; 00159 00163 struct drizzle_column_st 00164 { 00165 drizzle_result_st *result; 00166 drizzle_column_st *next; 00167 drizzle_column_st *prev; 00168 drizzle_column_options_t options; 00169 char catalog[DRIZZLE_MAX_CATALOG_SIZE]; 00170 char db[DRIZZLE_MAX_DB_SIZE]; 00171 char table[DRIZZLE_MAX_TABLE_SIZE]; 00172 char orig_table[DRIZZLE_MAX_TABLE_SIZE]; 00173 char name[DRIZZLE_MAX_COLUMN_NAME_SIZE]; 00174 char orig_name[DRIZZLE_MAX_COLUMN_NAME_SIZE]; 00175 drizzle_charset_t charset; 00176 uint32_t size; 00177 size_t max_size; 00178 drizzle_column_type_t type; 00179 drizzle_column_flags_t flags; 00180 uint8_t decimals; 00181 uint8_t default_value[DRIZZLE_MAX_DEFAULT_VALUE_SIZE]; 00182 size_t default_value_size; 00183 }; 00184 00185 #ifdef __cplusplus 00186 } 00187 #endif 00188 00189 #endif /* __DRIZZLE_STRUCTS_H */
1.6.1