~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/structs.h

  • Committer: Monty Taylor
  • Date: 2010-08-20 15:05:54 UTC
  • mfrom: (1720.1.7 build)
  • Revision ID: mordred@inaugust.com-20100820150554-fuwf8zs8qpzhpx6y
Added libdrizzle to the tree.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Drizzle Client & Protocol Library
 
3
 *
 
4
 * Copyright (C) 2008 Eric Day (eday@oddments.org)
 
5
 * All rights reserved.
 
6
 *
 
7
 * Use and distribution licensed under the BSD license.  See
 
8
 * the COPYING file in this directory for full text.
 
9
 */
 
10
 
 
11
/**
 
12
 * @file
 
13
 * @brief Struct Definitions
 
14
 */
 
15
 
 
16
#ifndef __DRIZZLE_STRUCTS_H
 
17
#define __DRIZZLE_STRUCTS_H
 
18
 
 
19
#include <netdb.h>
 
20
 
 
21
#ifdef __cplusplus
 
22
extern "C" {
 
23
#endif
 
24
 
 
25
/**
 
26
 * @ingroup drizzle
 
27
 */
 
28
struct drizzle_st
 
29
{
 
30
  uint16_t error_code;
 
31
  drizzle_options_t options;
 
32
  drizzle_verbose_t verbose;
 
33
  uint32_t con_count;
 
34
  uint32_t pfds_size;
 
35
  uint32_t query_count;
 
36
  uint32_t query_new;
 
37
  uint32_t query_running;
 
38
  int last_errno;
 
39
  int timeout;
 
40
  drizzle_con_st *con_list;
 
41
  void *context;
 
42
  drizzle_context_free_fn *context_free_fn;
 
43
  drizzle_event_watch_fn *event_watch_fn;
 
44
  void *event_watch_context;
 
45
  drizzle_log_fn *log_fn;
 
46
  void *log_context;
 
47
  struct pollfd *pfds;
 
48
  drizzle_query_st *query_list;
 
49
  char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1];
 
50
  char last_error[DRIZZLE_MAX_ERROR_SIZE];
 
51
};
 
52
 
 
53
/**
 
54
 * @ingroup drizzle_con
 
55
 */
 
56
struct drizzle_con_tcp_st
 
57
{
 
58
  in_port_t port;
 
59
  struct addrinfo *addrinfo;
 
60
  char *host;
 
61
  char host_buffer[NI_MAXHOST];
 
62
};
 
63
 
 
64
/**
 
65
 * @ingroup drizzle_con
 
66
 */
 
67
struct drizzle_con_uds_st
 
68
{
 
69
  struct addrinfo addrinfo;
 
70
  struct sockaddr_un sockaddr;
 
71
};
 
72
 
 
73
/**
 
74
 * @ingroup drizzle_con
 
75
 */
 
76
struct drizzle_con_st
 
77
{
 
78
  uint8_t packet_number;
 
79
  uint8_t protocol_version;
 
80
  uint8_t state_current;
 
81
  short events;
 
82
  short revents;
 
83
  drizzle_capabilities_t capabilities;
 
84
  drizzle_charset_t charset;
 
85
  drizzle_command_t command;
 
86
  drizzle_con_options_t options;
 
87
  drizzle_con_socket_t socket_type;
 
88
  drizzle_con_status_t status;
 
89
  uint32_t max_packet_size;
 
90
  uint32_t result_count;
 
91
  uint32_t thread_id;
 
92
  int backlog;
 
93
  int fd;
 
94
  size_t buffer_size;
 
95
  size_t command_offset;
 
96
  size_t command_size;
 
97
  size_t command_total;
 
98
  size_t packet_size;
 
99
  struct addrinfo *addrinfo_next;
 
100
  uint8_t *buffer_ptr;
 
101
  uint8_t *command_buffer;
 
102
  uint8_t *command_data;
 
103
  void *context;
 
104
  drizzle_con_context_free_fn *context_free_fn;
 
105
  drizzle_st *drizzle;
 
106
  drizzle_con_st *next;
 
107
  drizzle_con_st *prev;
 
108
  drizzle_query_st *query;
 
109
  drizzle_result_st *result;
 
110
  drizzle_result_st *result_list;
 
111
  uint8_t *scramble;
 
112
  union
 
113
  {
 
114
    drizzle_con_tcp_st tcp;
 
115
    drizzle_con_uds_st uds;
 
116
  } socket;
 
117
  uint8_t buffer[DRIZZLE_MAX_BUFFER_SIZE];
 
118
  char db[DRIZZLE_MAX_DB_SIZE];
 
119
  char password[DRIZZLE_MAX_PASSWORD_SIZE];
 
120
  uint8_t scramble_buffer[DRIZZLE_MAX_SCRAMBLE_SIZE];
 
121
  char server_version[DRIZZLE_MAX_SERVER_VERSION_SIZE];
 
122
  drizzle_state_fn *state_stack[DRIZZLE_STATE_STACK_SIZE];
 
123
  char user[DRIZZLE_MAX_USER_SIZE];
 
124
};
 
125
 
 
126
/**
 
127
 * @ingroup drizzle_query
 
128
 */
 
129
struct drizzle_query_st
 
130
{
 
131
  drizzle_st *drizzle;
 
132
  drizzle_query_st *next;
 
133
  drizzle_query_st *prev;
 
134
  drizzle_query_options_t options;
 
135
  drizzle_query_state_t state;
 
136
  drizzle_con_st *con;
 
137
  drizzle_result_st *result;
 
138
  const char *string;
 
139
  size_t size;
 
140
  void *context;
 
141
  drizzle_query_context_free_fn *context_free_fn;
 
142
};
 
143
 
 
144
/**
 
145
 * @ingroup drizzle_result
 
146
 */
 
147
struct drizzle_result_st
 
148
{
 
149
  drizzle_con_st *con;
 
150
  drizzle_result_st *next;
 
151
  drizzle_result_st *prev;
 
152
  drizzle_result_options_t options;
 
153
 
 
154
  char info[DRIZZLE_MAX_INFO_SIZE];
 
155
  uint16_t error_code;
 
156
  char sqlstate[DRIZZLE_MAX_SQLSTATE_SIZE + 1];
 
157
  uint64_t insert_id;
 
158
  uint16_t warning_count;
 
159
  uint64_t affected_rows;
 
160
 
 
161
  uint16_t column_count;
 
162
  uint16_t column_current;
 
163
  drizzle_column_st *column_list;
 
164
  drizzle_column_st *column;
 
165
  drizzle_column_st *column_buffer;
 
166
 
 
167
  uint64_t row_count;
 
168
  uint64_t row_current;
 
169
 
 
170
  uint16_t field_current;
 
171
  size_t field_total;
 
172
  size_t field_offset;
 
173
  size_t field_size;
 
174
  drizzle_field_t field;
 
175
  drizzle_field_t field_buffer;
 
176
 
 
177
  uint64_t row_list_size;
 
178
  drizzle_row_t row;
 
179
  drizzle_row_t *row_list;
 
180
  size_t *field_sizes;
 
181
  size_t **field_sizes_list;
 
182
};
 
183
 
 
184
/**
 
185
 * @ingroup drizzle_column
 
186
 */
 
187
struct drizzle_column_st
 
188
{
 
189
  drizzle_result_st *result;
 
190
  drizzle_column_st *next;
 
191
  drizzle_column_st *prev;
 
192
  drizzle_column_options_t options;
 
193
  char catalog[DRIZZLE_MAX_CATALOG_SIZE];
 
194
  char db[DRIZZLE_MAX_DB_SIZE];
 
195
  char table[DRIZZLE_MAX_TABLE_SIZE];
 
196
  char orig_table[DRIZZLE_MAX_TABLE_SIZE];
 
197
  char name[DRIZZLE_MAX_COLUMN_NAME_SIZE];
 
198
  char orig_name[DRIZZLE_MAX_COLUMN_NAME_SIZE];
 
199
  drizzle_charset_t charset;
 
200
  uint32_t size;
 
201
  size_t max_size;
 
202
  drizzle_column_type_t type;
 
203
  drizzle_column_flags_t flags;
 
204
  uint8_t decimals;
 
205
  uint8_t default_value[DRIZZLE_MAX_DEFAULT_VALUE_SIZE];
 
206
  size_t default_value_size;
 
207
};
 
208
 
 
209
#ifdef __cplusplus
 
210
}
 
211
#endif
 
212
 
 
213
#endif /* __DRIZZLE_STRUCTS_H */