trilogy 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af92055f653afc0f6a507574ae9d1e0dd41ef2bc17519d01521d64075501187d
4
- data.tar.gz: b056dbc89c70f108d0038019a0da1cd80782f4b6405ffd1eb58b8ed86acaa5b4
3
+ metadata.gz: ff98f0678711dd36bae4c5f8a7e0f399d3391f393816bc8df4c4281dbfd5d53f
4
+ data.tar.gz: 13914f66cde555a81814e4f2b1761895bb1e33b026a2e7d8e3b74888862e9b69
5
5
  SHA512:
6
- metadata.gz: 5482a88724d329914717b423d9fd1d5ae71818a17b4104122c7c5a2f4cabd77df37e12808644a23d9dc58b9b8a728e00c486072de6e36f2d508531361a794185
7
- data.tar.gz: 66e9a9c02a948844d8e806761f1c3993d4e932ebbaa59b31acb686c60044406390f3e46df364860474326bca26f68406cf8abb57bd9fb75f8d95e27c3f54bdc2
6
+ metadata.gz: 8f629502bc41dc22b8ebb65a00fb207d0bd41951d085b7bdd1d9de9956caf2b2c5f9504a533194b6fc5de30883330305482128091f4d417913b576233bf199e6
7
+ data.tar.gz: 2342f373109f087b89e6802a2d7e6c05f4c6c1ed938a820af404b87c961b8ef455dad3c3ec1d8b32270340583a3cbb31bf38251d9ff0a7fa892c13c3f55c8307
@@ -31,10 +31,39 @@ struct trilogy_ctx {
31
31
  unsigned int query_flags;
32
32
  };
33
33
 
34
+ static void free_trilogy(void *ptr)
35
+ {
36
+ struct trilogy_ctx *ctx = ptr;
37
+ if (ctx->conn.socket != NULL) {
38
+ trilogy_free(&ctx->conn);
39
+ }
40
+ xfree(ptr);
41
+ }
42
+
43
+ static size_t trilogy_memsize(const void *ptr) {
44
+ const struct trilogy_ctx *ctx = ptr;
45
+ size_t memsize = sizeof(struct trilogy_ctx);
46
+ if (ctx->conn.socket != NULL) {
47
+ memsize += sizeof(trilogy_sock_t);
48
+ }
49
+ memsize += ctx->conn.packet_buffer.cap;
50
+ return memsize;
51
+ }
52
+
53
+ const rb_data_type_t trilogy_data_type = {
54
+ .wrap_struct_name = "trilogy",
55
+ .function = {
56
+ .dmark = NULL,
57
+ .dfree = free_trilogy,
58
+ .dsize = trilogy_memsize,
59
+ },
60
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
61
+ };
62
+
34
63
  static struct trilogy_ctx *get_ctx(VALUE obj)
35
64
  {
36
65
  struct trilogy_ctx *ctx;
37
- Data_Get_Struct(obj, struct trilogy_ctx, ctx);
66
+ TypedData_Get_Struct(obj, struct trilogy_ctx, &trilogy_data_type, ctx);
38
67
  return ctx;
39
68
  }
40
69
 
@@ -91,20 +120,11 @@ static void handle_trilogy_error(struct trilogy_ctx *ctx, int rc, const char *ms
91
120
  }
92
121
  }
93
122
 
94
- static void free_trilogy(struct trilogy_ctx *ctx)
95
- {
96
- if (ctx->conn.socket != NULL) {
97
- trilogy_free(&ctx->conn);
98
- }
99
- }
100
-
101
123
  static VALUE allocate_trilogy(VALUE klass)
102
124
  {
103
125
  struct trilogy_ctx *ctx;
104
126
 
105
- VALUE obj = Data_Make_Struct(klass, struct trilogy_ctx, NULL, free_trilogy, ctx);
106
-
107
- memset(ctx->server_version, 0, sizeof(ctx->server_version));
127
+ VALUE obj = TypedData_Make_Struct(klass, struct trilogy_ctx, &trilogy_data_type, ctx);
108
128
 
109
129
  ctx->query_flags = TRILOGY_FLAGS_DEFAULT;
110
130
 
@@ -826,6 +846,17 @@ static VALUE rb_trilogy_close(VALUE self)
826
846
  return Qnil;
827
847
  }
828
848
 
849
+ static VALUE rb_trilogy_closed(VALUE self)
850
+ {
851
+ struct trilogy_ctx *ctx = get_ctx(self);
852
+
853
+ if (ctx->conn.socket == NULL) {
854
+ return Qtrue;
855
+ } else {
856
+ return Qfalse;
857
+ }
858
+ }
859
+
829
860
  static VALUE rb_trilogy_last_insert_id(VALUE self) { return ULL2NUM(get_open_ctx(self)->conn.last_insert_id); }
830
861
 
831
862
  static VALUE rb_trilogy_affected_rows(VALUE self) { return ULL2NUM(get_open_ctx(self)->conn.affected_rows); }
@@ -897,6 +928,7 @@ void Init_cext()
897
928
  rb_define_method(Trilogy, "ping", rb_trilogy_ping, 0);
898
929
  rb_define_method(Trilogy, "escape", rb_trilogy_escape, 1);
899
930
  rb_define_method(Trilogy, "close", rb_trilogy_close, 0);
931
+ rb_define_method(Trilogy, "closed?", rb_trilogy_closed, 0);
900
932
  rb_define_method(Trilogy, "last_insert_id", rb_trilogy_last_insert_id, 0);
901
933
  rb_define_method(Trilogy, "affected_rows", rb_trilogy_affected_rows, 0);
902
934
  rb_define_method(Trilogy, "warning_count", rb_trilogy_warning_count, 0);
@@ -1,3 +1,3 @@
1
1
  class Trilogy
2
- VERSION = "2.1.2"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trilogy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2022-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  requirements: []
102
- rubygems_version: 3.3.7
102
+ rubygems_version: 3.3.3
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: A friendly MySQL-compatible library for Ruby, binding to libtrilogy