trilogy_w_prepared_statements 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +80 -0
  4. data/Rakefile +22 -0
  5. data/ext/trilogy-ruby/cast.c +277 -0
  6. data/ext/trilogy-ruby/cext.c +1048 -0
  7. data/ext/trilogy-ruby/extconf.rb +17 -0
  8. data/ext/trilogy-ruby/inc/trilogy/blocking.h +281 -0
  9. data/ext/trilogy-ruby/inc/trilogy/buffer.h +64 -0
  10. data/ext/trilogy-ruby/inc/trilogy/builder.h +165 -0
  11. data/ext/trilogy-ruby/inc/trilogy/charset.h +277 -0
  12. data/ext/trilogy-ruby/inc/trilogy/client.h +760 -0
  13. data/ext/trilogy-ruby/inc/trilogy/error.h +44 -0
  14. data/ext/trilogy-ruby/inc/trilogy/packet_parser.h +34 -0
  15. data/ext/trilogy-ruby/inc/trilogy/protocol.h +1014 -0
  16. data/ext/trilogy-ruby/inc/trilogy/reader.h +216 -0
  17. data/ext/trilogy-ruby/inc/trilogy/socket.h +111 -0
  18. data/ext/trilogy-ruby/inc/trilogy/vendor/curl_hostcheck.h +29 -0
  19. data/ext/trilogy-ruby/inc/trilogy/vendor/openssl_hostname_validation.h +51 -0
  20. data/ext/trilogy-ruby/inc/trilogy.h +8 -0
  21. data/ext/trilogy-ruby/src/blocking.c +358 -0
  22. data/ext/trilogy-ruby/src/buffer.c +60 -0
  23. data/ext/trilogy-ruby/src/builder.c +236 -0
  24. data/ext/trilogy-ruby/src/charset.c +212 -0
  25. data/ext/trilogy-ruby/src/client.c +903 -0
  26. data/ext/trilogy-ruby/src/error.c +17 -0
  27. data/ext/trilogy-ruby/src/packet_parser.c +140 -0
  28. data/ext/trilogy-ruby/src/protocol.c +1175 -0
  29. data/ext/trilogy-ruby/src/reader.c +282 -0
  30. data/ext/trilogy-ruby/src/socket.c +623 -0
  31. data/ext/trilogy-ruby/src/vendor/curl_hostcheck.c +206 -0
  32. data/ext/trilogy-ruby/src/vendor/openssl_hostname_validation.c +175 -0
  33. data/ext/trilogy-ruby/trilogy-ruby.h +37 -0
  34. data/lib/trilogy/version.rb +3 -0
  35. data/lib/trilogy.rb +61 -0
  36. data/trilogy.gemspec +27 -0
  37. 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