qpid_messaging 0.34.1 → 1.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/cqpid/cqpid.cpp +53 -79
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27e25e910934b6d144367158db2263b4e22165ce
|
4
|
+
data.tar.gz: 82f1ae4b8a1ffefa8b16532d942e2e1d9c9a7b95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 550fe9e5d6ba812d3170a2fb99260b940e8b6d396481b2d7e00f1094e6d65d77c26b3e8048e46b1d9ba5a7baad1912ed4a67fad3221b0e3d1f0727202992be73
|
7
|
+
data.tar.gz: a5d435eb9c8cb87507dbc0f67ade7109f75e7d6e6fd78ce277f80537072c5998e751bdcd3ad28d9d1aea2b45a539d4613b3c13634d044d9c225ec9a7d1ba509e
|
data/ext/cqpid/cqpid.cpp
CHANGED
@@ -1194,6 +1194,11 @@ void Ruby_Format_OverloadedError(
|
|
1194
1194
|
extern "C" {
|
1195
1195
|
#endif
|
1196
1196
|
|
1197
|
+
#if !defined(ST_DATA_T_DEFINED)
|
1198
|
+
/* Needs to be explicitly included for Ruby 1.8 and earlier */
|
1199
|
+
#include <st.h>
|
1200
|
+
#endif
|
1201
|
+
|
1197
1202
|
/* Ruby 1.8 actually assumes the first case. */
|
1198
1203
|
#if SIZEOF_VOIDP == SIZEOF_LONG
|
1199
1204
|
# define SWIG2NUM(v) LONG2NUM((unsigned long)v)
|
@@ -1205,19 +1210,19 @@ extern "C" {
|
|
1205
1210
|
# error sizeof(void*) is not the same as long or long long
|
1206
1211
|
#endif
|
1207
1212
|
|
1208
|
-
|
1209
|
-
/* Global Ruby hash table to store Trackings from C/C++
|
1213
|
+
/* Global hash table to store Trackings from C/C++
|
1210
1214
|
structs to Ruby Objects.
|
1211
1215
|
*/
|
1212
|
-
static
|
1216
|
+
static st_table* swig_ruby_trackings = NULL;
|
1217
|
+
|
1218
|
+
static VALUE swig_ruby_trackings_count(ANYARGS) {
|
1219
|
+
return SWIG2NUM(swig_ruby_trackings->num_entries);
|
1220
|
+
}
|
1213
1221
|
|
1214
|
-
/* Global variable that stores a reference to the ruby
|
1215
|
-
hash table delete function. */
|
1216
|
-
static ID swig_ruby_hash_delete;
|
1217
1222
|
|
1218
|
-
/* Setup a
|
1223
|
+
/* Setup a hash table to store Trackings */
|
1219
1224
|
SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
|
1220
|
-
/* Create a
|
1225
|
+
/* Create a hash table to store Trackings from C++
|
1221
1226
|
objects to Ruby objects. */
|
1222
1227
|
|
1223
1228
|
/* Try to see if some other .so has already created a
|
@@ -1226,88 +1231,46 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
|
|
1226
1231
|
This is done to allow multiple DSOs to share the same
|
1227
1232
|
tracking table.
|
1228
1233
|
*/
|
1229
|
-
|
1234
|
+
VALUE trackings_value = Qnil;
|
1235
|
+
/* change the variable name so that we can mix modules
|
1236
|
+
compiled with older SWIG's - this used to be called "@__trackings__" */
|
1237
|
+
ID trackings_id = rb_intern( "@__safetrackings__" );
|
1230
1238
|
VALUE verbose = rb_gv_get("VERBOSE");
|
1231
1239
|
rb_gv_set("VERBOSE", Qfalse);
|
1232
|
-
|
1240
|
+
trackings_value = rb_ivar_get( _mSWIG, trackings_id );
|
1233
1241
|
rb_gv_set("VERBOSE", verbose);
|
1234
1242
|
|
1235
|
-
/*
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
}
|
1246
|
-
|
1247
|
-
/* Get a Ruby number to reference a pointer */
|
1248
|
-
SWIGRUNTIME VALUE SWIG_RubyPtrToReference(void* ptr) {
|
1249
|
-
/* We cast the pointer to an unsigned long
|
1250
|
-
and then store a reference to it using
|
1251
|
-
a Ruby number object. */
|
1252
|
-
|
1253
|
-
/* Convert the pointer to a Ruby number */
|
1254
|
-
return SWIG2NUM(ptr);
|
1255
|
-
}
|
1256
|
-
|
1257
|
-
/* Get a Ruby number to reference an object */
|
1258
|
-
SWIGRUNTIME VALUE SWIG_RubyObjectToReference(VALUE object) {
|
1259
|
-
/* We cast the object to an unsigned long
|
1260
|
-
and then store a reference to it using
|
1261
|
-
a Ruby number object. */
|
1262
|
-
|
1263
|
-
/* Convert the Object to a Ruby number */
|
1264
|
-
return SWIG2NUM(object);
|
1265
|
-
}
|
1266
|
-
|
1267
|
-
/* Get a Ruby object from a previously stored reference */
|
1268
|
-
SWIGRUNTIME VALUE SWIG_RubyReferenceToObject(VALUE reference) {
|
1269
|
-
/* The provided Ruby number object is a reference
|
1270
|
-
to the Ruby object we want.*/
|
1243
|
+
/* The trick here is that we have to store the hash table
|
1244
|
+
pointer in a Ruby variable. We do not want Ruby's GC to
|
1245
|
+
treat this pointer as a Ruby object, so we convert it to
|
1246
|
+
a Ruby numeric value. */
|
1247
|
+
if (trackings_value == Qnil) {
|
1248
|
+
/* No, it hasn't. Create one ourselves */
|
1249
|
+
swig_ruby_trackings = st_init_numtable();
|
1250
|
+
rb_ivar_set( _mSWIG, trackings_id, SWIG2NUM(swig_ruby_trackings) );
|
1251
|
+
} else {
|
1252
|
+
swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value);
|
1253
|
+
}
|
1271
1254
|
|
1272
|
-
|
1273
|
-
return NUM2SWIG(reference);
|
1255
|
+
rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", swig_ruby_trackings_count, NULL);
|
1274
1256
|
}
|
1275
1257
|
|
1276
1258
|
/* Add a Tracking from a C/C++ struct to a Ruby object */
|
1277
1259
|
SWIGRUNTIME void SWIG_RubyAddTracking(void* ptr, VALUE object) {
|
1278
|
-
/* In a Ruby hash table we store the pointer and
|
1279
|
-
the associated Ruby object. The trick here is
|
1280
|
-
that we cannot store the Ruby object directly - if
|
1281
|
-
we do then it cannot be garbage collected. So
|
1282
|
-
instead we typecast it as a unsigned long and
|
1283
|
-
convert it to a Ruby number object.*/
|
1284
|
-
|
1285
|
-
/* Get a reference to the pointer as a Ruby number */
|
1286
|
-
VALUE key = SWIG_RubyPtrToReference(ptr);
|
1287
|
-
|
1288
|
-
/* Get a reference to the Ruby object as a Ruby number */
|
1289
|
-
VALUE value = SWIG_RubyObjectToReference(object);
|
1290
|
-
|
1291
1260
|
/* Store the mapping to the global hash table. */
|
1292
|
-
|
1261
|
+
st_insert(swig_ruby_trackings, (st_data_t)ptr, object);
|
1293
1262
|
}
|
1294
1263
|
|
1295
1264
|
/* Get the Ruby object that owns the specified C/C++ struct */
|
1296
1265
|
SWIGRUNTIME VALUE SWIG_RubyInstanceFor(void* ptr) {
|
1297
|
-
/* Get a reference to the pointer as a Ruby number */
|
1298
|
-
VALUE key = SWIG_RubyPtrToReference(ptr);
|
1299
|
-
|
1300
1266
|
/* Now lookup the value stored in the global hash table */
|
1301
|
-
VALUE value
|
1302
|
-
|
1303
|
-
if (
|
1304
|
-
|
1267
|
+
VALUE value;
|
1268
|
+
|
1269
|
+
if (st_lookup(swig_ruby_trackings, (st_data_t)ptr, &value)) {
|
1270
|
+
return value;
|
1271
|
+
} else {
|
1305
1272
|
return Qnil;
|
1306
1273
|
}
|
1307
|
-
else {
|
1308
|
-
/* Convert this value to Ruby object */
|
1309
|
-
return SWIG_RubyReferenceToObject(value);
|
1310
|
-
}
|
1311
1274
|
}
|
1312
1275
|
|
1313
1276
|
/* Remove a Tracking from a C/C++ struct to a Ruby object. It
|
@@ -1315,12 +1278,8 @@ SWIGRUNTIME VALUE SWIG_RubyInstanceFor(void* ptr) {
|
|
1315
1278
|
since the same memory address may be reused later to create
|
1316
1279
|
a new object. */
|
1317
1280
|
SWIGRUNTIME void SWIG_RubyRemoveTracking(void* ptr) {
|
1318
|
-
/*
|
1319
|
-
|
1320
|
-
|
1321
|
-
/* Delete the object from the hash table by calling Ruby's
|
1322
|
-
do this we need to call the Hash.delete method.*/
|
1323
|
-
rb_funcall(swig_ruby_trackings, swig_ruby_hash_delete, 1, key);
|
1281
|
+
/* Delete the object from the hash table */
|
1282
|
+
st_delete(swig_ruby_trackings, (st_data_t *)&ptr, NULL);
|
1324
1283
|
}
|
1325
1284
|
|
1326
1285
|
/* This is a helper method that unlinks a Ruby object from its
|
@@ -1330,10 +1289,25 @@ SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
|
|
1330
1289
|
VALUE object = SWIG_RubyInstanceFor(ptr);
|
1331
1290
|
|
1332
1291
|
if (object != Qnil) {
|
1292
|
+
if (TYPE(object) != T_DATA)
|
1293
|
+
abort();
|
1333
1294
|
DATA_PTR(object) = 0;
|
1334
1295
|
}
|
1335
1296
|
}
|
1336
1297
|
|
1298
|
+
/* This is a helper method that iterates over all the trackings
|
1299
|
+
passing the C++ object pointer and its related Ruby object
|
1300
|
+
to the passed callback function. */
|
1301
|
+
|
1302
|
+
/* Proxy method to abstract the internal trackings datatype */
|
1303
|
+
static int swig_ruby_internal_iterate_callback(void* ptr, VALUE obj, void(*meth)(void* ptr, VALUE obj)) {
|
1304
|
+
(*meth)(ptr, obj);
|
1305
|
+
return ST_CONTINUE;
|
1306
|
+
}
|
1307
|
+
|
1308
|
+
SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) {
|
1309
|
+
st_foreach(swig_ruby_trackings, (int (*)(ANYARGS))&swig_ruby_internal_iterate_callback, (st_data_t)meth);
|
1310
|
+
}
|
1337
1311
|
|
1338
1312
|
#ifdef __cplusplus
|
1339
1313
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qpid_messaging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Apache Qpid Project
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Qpid is an enterprise messaging framework.
|
14
14
|
email: dev@qpid.apache.org
|