50 static drizzle_command_drizzle_t _command_drizzle_map[]=
52 DRIZZLE_COMMAND_DRIZZLE_END,
53 DRIZZLE_COMMAND_DRIZZLE_QUIT,
54 DRIZZLE_COMMAND_DRIZZLE_INIT_DB,
55 DRIZZLE_COMMAND_DRIZZLE_QUERY,
56 DRIZZLE_COMMAND_DRIZZLE_END,
57 DRIZZLE_COMMAND_DRIZZLE_END,
58 DRIZZLE_COMMAND_DRIZZLE_END,
59 DRIZZLE_COMMAND_DRIZZLE_END,
60 DRIZZLE_COMMAND_DRIZZLE_SHUTDOWN,
61 DRIZZLE_COMMAND_DRIZZLE_END,
62 DRIZZLE_COMMAND_DRIZZLE_END,
63 DRIZZLE_COMMAND_DRIZZLE_END,
64 DRIZZLE_COMMAND_DRIZZLE_KILL,
65 DRIZZLE_COMMAND_DRIZZLE_END,
66 DRIZZLE_COMMAND_DRIZZLE_PING,
67 DRIZZLE_COMMAND_DRIZZLE_END,
68 DRIZZLE_COMMAND_DRIZZLE_END,
69 DRIZZLE_COMMAND_DRIZZLE_END,
70 DRIZZLE_COMMAND_DRIZZLE_END,
71 DRIZZLE_COMMAND_DRIZZLE_END,
72 DRIZZLE_COMMAND_DRIZZLE_END,
73 DRIZZLE_COMMAND_DRIZZLE_END,
74 DRIZZLE_COMMAND_DRIZZLE_END,
75 DRIZZLE_COMMAND_DRIZZLE_END,
76 DRIZZLE_COMMAND_DRIZZLE_END,
77 DRIZZLE_COMMAND_DRIZZLE_END,
78 DRIZZLE_COMMAND_DRIZZLE_END,
79 DRIZZLE_COMMAND_DRIZZLE_END,
80 DRIZZLE_COMMAND_DRIZZLE_END,
81 DRIZZLE_COMMAND_DRIZZLE_END,
82 DRIZZLE_COMMAND_DRIZZLE_END
89 drizzle_return_t drizzle_state_command_read(drizzle_con_st *con)
93 return DRIZZLE_RETURN_INVALID_ARGUMENT;
98 if (con->buffer_size == 0)
101 return DRIZZLE_RETURN_OK;
104 if (con->command_total == 0)
106 con->command= (drizzle_command_t)(con->buffer_ptr[0]);
110 con->command_total= (con->packet_size - 1);
113 if (con->buffer_size < (con->command_total - con->command_offset))
115 con->command_size= con->buffer_size;
116 con->command_offset+= con->command_size;
120 con->command_size= (con->command_total - con->command_offset);
121 con->command_offset= con->command_total;
124 con->command_data= con->buffer_ptr;
125 con->buffer_ptr+= con->command_size;
126 con->buffer_size-= con->command_size;
128 if (con->command_offset == con->command_total)
131 return DRIZZLE_RETURN_PAUSE;
133 return DRIZZLE_RETURN_OK;
136 drizzle_return_t drizzle_state_command_write(drizzle_con_st *con)
141 drizzle_return_t ret;
145 return DRIZZLE_RETURN_INVALID_ARGUMENT;
150 if (con->command_data == NULL && con->command_total != 0 &&
151 con->command != DRIZZLE_COMMAND_CHANGE_USER)
153 return DRIZZLE_RETURN_PAUSE;
156 if (con->buffer_size == 0)
158 con->buffer_ptr= con->buffer;
163 start= con->buffer_ptr + con->buffer_size;
166 if (con->command_offset == 0)
172 + strlen(con->user) + 1
174 + DRIZZLE_MAX_SCRAMBLE_SIZE
175 + strlen(con->db) + 1;
178 free_size= (size_t)DRIZZLE_MAX_BUFFER_SIZE - (
size_t)(start - con->buffer);
179 if (free_size < con->packet_size)
182 return DRIZZLE_RETURN_OK;
186 con->packet_number= 1;
189 if (con->options & DRIZZLE_CON_MYSQL)
191 ptr[4]= (uint8_t)(con->command);
195 ptr[4]= (uint8_t)(_command_drizzle_map[con->command]);
199 if (con->command == DRIZZLE_COMMAND_CHANGE_USER)
202 if (ret != DRIZZLE_RETURN_OK)
205 con->buffer_size+= (4 + con->packet_size);
207 else if (con->command_total == 0)
210 con->buffer_size+= 5;
214 con->packet_size= 1 + con->command_total;
218 if (con->command_size <= free_size)
220 memcpy(ptr, con->command_data, con->command_size);
221 con->command_offset= con->command_size;
222 con->command_data= NULL;
223 con->buffer_size+= 5 + con->command_size;
227 memcpy(ptr, con->command_data, free_size);
228 con->command_offset= free_size;
229 con->command_data+= free_size;
230 con->command_size-= free_size;
231 con->buffer_size+= 5 + free_size;
236 drizzle_set_byte3(start, con->packet_size);
241 con->buffer_ptr= con->command_data;
242 con->buffer_size= con->command_size;
243 con->command_offset+= con->command_size;
244 con->command_data= NULL;
247 if (con->command_offset == con->command_total)
251 if (!(con->options & (DRIZZLE_CON_RAW_PACKET |
252 DRIZZLE_CON_NO_RESULT_READ)) &&
253 con->command != DRIZZLE_COMMAND_FIELD_LIST)
262 return DRIZZLE_RETURN_OK;
static void drizzle_state_pop(drizzle_con_st *con)
static void drizzle_state_push(drizzle_con_st *con, drizzle_state_fn *function)
static void drizzle_log_debug(drizzle_st *drizzle, const char *format,...)
uint8_t * drizzle_pack_auth(drizzle_con_st *con, uint8_t *ptr, drizzle_return_t *ret_ptr)