libdrizzle Developer Documentation

libdrizzle/structs.h
Go to the documentation of this file.
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   uint16_t error_code;
00029   drizzle_options_t options;
00030   drizzle_verbose_t verbose;
00031   uint32_t con_count;
00032   uint32_t pfds_size;
00033   uint32_t query_count;
00034   uint32_t query_new;
00035   uint32_t query_running;
00036   int last_errno;
00037   int timeout;
00038   drizzle_con_st *con_list;
00039   void *context;
00040   drizzle_context_free_fn *context_free_fn;
00041   drizzle_event_watch_fn *event_watch_fn;
00042   void *event_watch_context;
00043   drizzle_log_fn *log_fn;
00044   void *log_context;
00045   struct pollfd *pfds;
00046   drizzle_query_st *query_list;
00047   char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1];
00048   char last_error[DRIZZLE_MAX_ERROR_SIZE];
00049 };
00050 
00054 struct drizzle_con_tcp_st
00055 {
00056   in_port_t port;
00057   struct addrinfo *addrinfo;
00058   char *host;
00059   char host_buffer[NI_MAXHOST];
00060 };
00061 
00065 struct drizzle_con_uds_st
00066 {
00067   struct addrinfo addrinfo;
00068   struct sockaddr_un sockaddr;
00069 };
00070 
00074 struct drizzle_con_st
00075 {
00076   uint8_t packet_number;
00077   uint8_t protocol_version;
00078   uint8_t state_current;
00079   short events;
00080   short revents;
00081   drizzle_capabilities_t capabilities;
00082   drizzle_charset_t charset;
00083   drizzle_command_t command;
00084   drizzle_con_options_t options;
00085   drizzle_con_socket_t socket_type;
00086   drizzle_con_status_t status;
00087   uint32_t max_packet_size;
00088   uint32_t result_count;
00089   uint32_t thread_id;
00090   int backlog;
00091   int fd;
00092   size_t buffer_size;
00093   size_t command_offset;
00094   size_t command_size;
00095   size_t command_total;
00096   size_t packet_size;
00097   struct addrinfo *addrinfo_next;
00098   uint8_t *buffer_ptr;
00099   uint8_t *command_buffer;
00100   uint8_t *command_data;
00101   void *context;
00102   drizzle_con_context_free_fn *context_free_fn;
00103   drizzle_st *drizzle;
00104   drizzle_con_st *next;
00105   drizzle_con_st *prev;
00106   drizzle_query_st *query;
00107   drizzle_result_st *result;
00108   drizzle_result_st *result_list;
00109   uint8_t *scramble;
00110   union
00111   {
00112     drizzle_con_tcp_st tcp;
00113     drizzle_con_uds_st uds;
00114   } socket;
00115   uint8_t buffer[DRIZZLE_MAX_BUFFER_SIZE];
00116   char db[DRIZZLE_MAX_DB_SIZE];
00117   char password[DRIZZLE_MAX_PASSWORD_SIZE];
00118   uint8_t scramble_buffer[DRIZZLE_MAX_SCRAMBLE_SIZE];
00119   char server_version[DRIZZLE_MAX_SERVER_VERSION_SIZE];
00120   drizzle_state_fn *state_stack[DRIZZLE_STATE_STACK_SIZE];
00121   char user[DRIZZLE_MAX_USER_SIZE];
00122 };
00123 
00127 struct drizzle_query_st
00128 {
00129   drizzle_st *drizzle;
00130   drizzle_query_st *next;
00131   drizzle_query_st *prev;
00132   drizzle_query_options_t options;
00133   drizzle_query_state_t state;
00134   drizzle_con_st *con;
00135   drizzle_result_st *result;
00136   const char *string;
00137   size_t size;
00138   void *context;
00139   drizzle_query_context_free_fn *context_free_fn;
00140 };
00141 
00145 struct drizzle_result_st
00146 {
00147   drizzle_con_st *con;
00148   drizzle_result_st *next;
00149   drizzle_result_st *prev;
00150   drizzle_result_options_t options;
00151 
00152   char info[DRIZZLE_MAX_INFO_SIZE];
00153   uint16_t error_code;
00154   char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1];
00155   uint64_t insert_id;
00156   uint16_t warning_count;
00157   uint64_t affected_rows;
00158 
00159   uint16_t column_count;
00160   uint16_t column_current;
00161   drizzle_column_st *column_list;
00162   drizzle_column_st *column;
00163   drizzle_column_st *column_buffer;
00164 
00165   uint64_t row_count;
00166   uint64_t row_current;
00167 
00168   uint16_t field_current;
00169   size_t field_total;
00170   size_t field_offset;
00171   size_t field_size;
00172   drizzle_field_t field;
00173   drizzle_field_t field_buffer;
00174 
00175   uint64_t row_list_size;
00176   drizzle_row_t row;
00177   drizzle_row_t *row_list;
00178   size_t *field_sizes;
00179   size_t **field_sizes_list;
00180 };
00181 
00185 struct drizzle_column_st
00186 {
00187   drizzle_result_st *result;
00188   drizzle_column_st *next;
00189   drizzle_column_st *prev;
00190   drizzle_column_options_t options;
00191   char catalog[DRIZZLE_MAX_CATALOG_SIZE];
00192   char db[DRIZZLE_MAX_DB_SIZE];
00193   char table[DRIZZLE_MAX_TABLE_SIZE];
00194   char orig_table[DRIZZLE_MAX_TABLE_SIZE];
00195   char name[DRIZZLE_MAX_COLUMN_NAME_SIZE];
00196   char orig_name[DRIZZLE_MAX_COLUMN_NAME_SIZE];
00197   drizzle_charset_t charset;
00198   uint32_t size;
00199   size_t max_size;
00200   drizzle_column_type_t type;
00201   drizzle_column_flags_t flags;
00202   uint8_t decimals;
00203   uint8_t default_value[DRIZZLE_MAX_DEFAULT_VALUE_SIZE];
00204   size_t default_value_size;
00205 };
00206 
00207 #ifdef __cplusplus
00208 }
00209 #endif
00210 
00211 #endif /* __DRIZZLE_STRUCTS_H */