trilogy_w_prepared_statements 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +80 -0
- data/Rakefile +22 -0
- data/ext/trilogy-ruby/cast.c +277 -0
- data/ext/trilogy-ruby/cext.c +1048 -0
- data/ext/trilogy-ruby/extconf.rb +17 -0
- data/ext/trilogy-ruby/inc/trilogy/blocking.h +281 -0
- data/ext/trilogy-ruby/inc/trilogy/buffer.h +64 -0
- data/ext/trilogy-ruby/inc/trilogy/builder.h +165 -0
- data/ext/trilogy-ruby/inc/trilogy/charset.h +277 -0
- data/ext/trilogy-ruby/inc/trilogy/client.h +760 -0
- data/ext/trilogy-ruby/inc/trilogy/error.h +44 -0
- data/ext/trilogy-ruby/inc/trilogy/packet_parser.h +34 -0
- data/ext/trilogy-ruby/inc/trilogy/protocol.h +1014 -0
- data/ext/trilogy-ruby/inc/trilogy/reader.h +216 -0
- data/ext/trilogy-ruby/inc/trilogy/socket.h +111 -0
- data/ext/trilogy-ruby/inc/trilogy/vendor/curl_hostcheck.h +29 -0
- data/ext/trilogy-ruby/inc/trilogy/vendor/openssl_hostname_validation.h +51 -0
- data/ext/trilogy-ruby/inc/trilogy.h +8 -0
- data/ext/trilogy-ruby/src/blocking.c +358 -0
- data/ext/trilogy-ruby/src/buffer.c +60 -0
- data/ext/trilogy-ruby/src/builder.c +236 -0
- data/ext/trilogy-ruby/src/charset.c +212 -0
- data/ext/trilogy-ruby/src/client.c +903 -0
- data/ext/trilogy-ruby/src/error.c +17 -0
- data/ext/trilogy-ruby/src/packet_parser.c +140 -0
- data/ext/trilogy-ruby/src/protocol.c +1175 -0
- data/ext/trilogy-ruby/src/reader.c +282 -0
- data/ext/trilogy-ruby/src/socket.c +623 -0
- data/ext/trilogy-ruby/src/vendor/curl_hostcheck.c +206 -0
- data/ext/trilogy-ruby/src/vendor/openssl_hostname_validation.c +175 -0
- data/ext/trilogy-ruby/trilogy-ruby.h +37 -0
- data/lib/trilogy/version.rb +3 -0
- data/lib/trilogy.rb +61 -0
- data/trilogy.gemspec +27 -0
- metadata +107 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
#ifndef TRILOGY_ERROR_H
|
2
|
+
#define TRILOGY_ERROR_H
|
3
|
+
|
4
|
+
#define TRILOGY_ERROR_CODES(XX) \
|
5
|
+
XX(TRILOGY_OK, 0) \
|
6
|
+
XX(TRILOGY_ERR, -1) \
|
7
|
+
XX(TRILOGY_EOF, -2) \
|
8
|
+
XX(TRILOGY_SYSERR, -3) /* check errno */ \
|
9
|
+
XX(TRILOGY_UNEXPECTED_PACKET, -4) \
|
10
|
+
XX(TRILOGY_TRUNCATED_PACKET, -5) \
|
11
|
+
XX(TRILOGY_PROTOCOL_VIOLATION, -6) \
|
12
|
+
XX(TRILOGY_AUTH_PLUGIN_TOO_LONG, -7) \
|
13
|
+
XX(TRILOGY_EXTRA_DATA_IN_PACKET, -8) \
|
14
|
+
XX(TRILOGY_INVALID_CHARSET, -9) \
|
15
|
+
XX(TRILOGY_AGAIN, -10) \
|
16
|
+
XX(TRILOGY_CLOSED_CONNECTION, -11) \
|
17
|
+
XX(TRILOGY_HAVE_RESULTS, -12) \
|
18
|
+
XX(TRILOGY_NULL_VALUE, -13) \
|
19
|
+
XX(TRILOGY_INVALID_SEQUENCE_ID, -14) \
|
20
|
+
XX(TRILOGY_TYPE_OVERFLOW, -15) \
|
21
|
+
XX(TRILOGY_OPENSSL_ERR, -16) /* check ERR_get_error() */ \
|
22
|
+
XX(TRILOGY_UNSUPPORTED, -17) \
|
23
|
+
XX(TRILOGY_DNS_ERR, -18) \
|
24
|
+
XX(TRILOGY_AUTH_SWITCH, -19) \
|
25
|
+
XX(TRILOGY_UNKNOWN_TYPE, -20)
|
26
|
+
|
27
|
+
enum {
|
28
|
+
#define XX(name, code) name = code,
|
29
|
+
TRILOGY_ERROR_CODES(XX)
|
30
|
+
#undef XX
|
31
|
+
};
|
32
|
+
|
33
|
+
/* trilogy_error - Get the string version of an Trilogy error code.
|
34
|
+
*
|
35
|
+
* This can be useful for logging or debugging as printing the error value
|
36
|
+
* integer itself doesn't provide much context.
|
37
|
+
*
|
38
|
+
* error - An Trilogy error code integer.
|
39
|
+
*
|
40
|
+
* Returns an error name constant from TRILOGY_ERROR_CODES as a C-string.
|
41
|
+
*/
|
42
|
+
const char *trilogy_error(int error);
|
43
|
+
|
44
|
+
#endif
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#ifndef TRILOGY_PACKET_PARSER_H
|
2
|
+
#define TRILOGY_PACKET_PARSER_H
|
3
|
+
|
4
|
+
#include <stddef.h>
|
5
|
+
#include <stdint.h>
|
6
|
+
|
7
|
+
// Data between client and server is exchanged in packets of max 16MByte size.
|
8
|
+
#define TRILOGY_MAX_PACKET_LEN 0xffffff
|
9
|
+
|
10
|
+
typedef struct {
|
11
|
+
int (*on_packet_begin)(void *);
|
12
|
+
int (*on_packet_data)(void *, const uint8_t *, size_t);
|
13
|
+
int (*on_packet_end)(void *);
|
14
|
+
} trilogy_packet_parser_callbacks_t;
|
15
|
+
|
16
|
+
typedef struct {
|
17
|
+
void *user_data;
|
18
|
+
const trilogy_packet_parser_callbacks_t *callbacks;
|
19
|
+
|
20
|
+
uint8_t sequence_number;
|
21
|
+
|
22
|
+
// private:
|
23
|
+
unsigned bytes_remaining : 24;
|
24
|
+
|
25
|
+
unsigned state : 3;
|
26
|
+
unsigned fragment : 1;
|
27
|
+
unsigned deferred_end_callback : 1;
|
28
|
+
} trilogy_packet_parser_t;
|
29
|
+
|
30
|
+
void trilogy_packet_parser_init(trilogy_packet_parser_t *parser, const trilogy_packet_parser_callbacks_t *callbacks);
|
31
|
+
|
32
|
+
size_t trilogy_packet_parser_execute(trilogy_packet_parser_t *parser, const uint8_t *buf, size_t len, int *error);
|
33
|
+
|
34
|
+
#endif
|