You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2014/09/15 21:19:52 UTC
svn commit: r1625124 - in /qpid/proton/trunk/proton-c: include/proton/
src/engine/ src/messenger/ src/object/ src/posix/ src/tests/ src/transport/
Author: rhs
Date: Mon Sep 15 19:19:52 2014
New Revision: 1625124
URL: http://svn.apache.org/r1625124
Log:
added PN_WEAKREF class and removed options
Modified:
qpid/proton/trunk/proton-c/include/proton/cproton.i
qpid/proton/trunk/proton-c/include/proton/object.h
qpid/proton/trunk/proton-c/src/engine/engine.c
qpid/proton/trunk/proton-c/src/messenger/messenger.c
qpid/proton/trunk/proton-c/src/messenger/store.c
qpid/proton/trunk/proton-c/src/messenger/transform.c
qpid/proton/trunk/proton-c/src/object/list.c
qpid/proton/trunk/proton-c/src/object/map.c
qpid/proton/trunk/proton-c/src/object/object.c
qpid/proton/trunk/proton-c/src/posix/selector.c
qpid/proton/trunk/proton-c/src/tests/object.c
qpid/proton/trunk/proton-c/src/transport/transport.c
Modified: qpid/proton/trunk/proton-c/include/proton/cproton.i
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/cproton.i?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/cproton.i (original)
+++ qpid/proton/trunk/proton-c/include/proton/cproton.i Mon Sep 15 19:19:52 2014
@@ -55,6 +55,7 @@ typedef long long int int64_t;
%ignore pn_string_vaddf;
%immutable PN_OBJECT;
%immutable PN_VOID;
+%immutable PN_WEAKREF;
%include "proton/object.h"
%ignore pn_error_format;
Modified: qpid/proton/trunk/proton-c/include/proton/object.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/object.h?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/object.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/object.h Mon Sep 15 19:19:52 2014
@@ -43,9 +43,6 @@ typedef struct pn_hash_t pn_hash_t;
typedef void *(*pn_iterator_next_t)(void *state);
typedef struct pn_iterator_t pn_iterator_t;
-// XXX: if we factor refcounting stuff into a separate dimension then
-// we could have a weakref class instead of having the options stuff
-
struct pn_class_t {
const char *name;
void *(*newinst)(const pn_class_t *, size_t);
@@ -63,6 +60,7 @@ struct pn_class_t {
extern const pn_class_t *PN_OBJECT;
extern const pn_class_t *PN_VOID;
+extern const pn_class_t *PN_WEAKREF;
#define PN_CLASS(PREFIX) { \
#PREFIX, \
@@ -124,7 +122,7 @@ PN_EXTERN int pn_inspect(void *object, p
#define PN_REFCOUNT (0x1)
-PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity, int options);
+PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity);
PN_EXTERN size_t pn_list_size(pn_list_t *list);
PN_EXTERN void *pn_list_get(pn_list_t *list, int index);
PN_EXTERN void pn_list_set(pn_list_t *list, int index, void *value);
@@ -139,7 +137,7 @@ PN_EXTERN void pn_list_iterator(pn_list_
#define PN_REFCOUNT_VALUE (0x4)
PN_EXTERN pn_map_t *pn_map(const pn_class_t *key, const pn_class_t *value,
- size_t capacity, float load_factor, int options);
+ size_t capacity, float load_factor);
PN_EXTERN size_t pn_map_size(pn_map_t *map);
PN_EXTERN int pn_map_put(pn_map_t *map, void *key, void *value);
PN_EXTERN void *pn_map_get(pn_map_t *map, void *key);
@@ -149,7 +147,7 @@ PN_EXTERN pn_handle_t pn_map_next(pn_map
PN_EXTERN void *pn_map_key(pn_map_t *map, pn_handle_t entry);
PN_EXTERN void *pn_map_value(pn_map_t *map, pn_handle_t entry);
-PN_EXTERN pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor, int options);
+PN_EXTERN pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor);
PN_EXTERN size_t pn_hash_size(pn_hash_t *hash);
PN_EXTERN int pn_hash_put(pn_hash_t *hash, uintptr_t key, void *value);
PN_EXTERN void *pn_hash_get(pn_hash_t *hash, uintptr_t key);
Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Mon Sep 15 19:19:52 2014
@@ -379,7 +379,7 @@ pn_connection_t *pn_connection()
pn_endpoint_init(&conn->endpoint, CONNECTION, conn);
conn->transport_head = NULL;
conn->transport_tail = NULL;
- conn->sessions = pn_list(PN_OBJECT, 0, 0);
+ conn->sessions = pn_list(PN_WEAKREF, 0);
conn->transport = NULL;
conn->work_head = NULL;
conn->work_tail = NULL;
@@ -723,7 +723,7 @@ pn_session_t *pn_session(pn_connection_t
pn_endpoint_init(&ssn->endpoint, SESSION, conn);
pn_add_session(conn, ssn);
- ssn->links = pn_list(PN_OBJECT, 0, 0);
+ ssn->links = pn_list(PN_WEAKREF, 0);
ssn->context = 0;
ssn->incoming_capacity = 1024*1024;
ssn->incoming_bytes = 0;
@@ -737,8 +737,8 @@ pn_session_t *pn_session(pn_connection_t
ssn->state.remote_channel = (uint16_t)-1;
pn_delivery_map_init(&ssn->state.incoming, 0);
pn_delivery_map_init(&ssn->state.outgoing, 0);
- ssn->state.local_handles = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT);
- ssn->state.remote_handles = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT);
+ ssn->state.local_handles = pn_hash(PN_OBJECT, 0, 0.75);
+ ssn->state.remote_handles = pn_hash(PN_OBJECT, 0, 0.75);
// end transport state
pn_collector_put(conn->collector, PN_SESSION_INIT, ssn);
Modified: qpid/proton/trunk/proton-c/src/messenger/messenger.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/messenger.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Mon Sep 15 19:19:52 2014
@@ -596,7 +596,7 @@ pn_messenger_t *pn_messenger(const char
m->blocking = true;
m->passive = false;
m->io = pn_io();
- m->pending = pn_list(PN_OBJECT, 0, 0);
+ m->pending = pn_list(PN_WEAKREF, 0);
m->interruptor = pni_selectable
(pni_interruptor_capacity, pni_interruptor_pending,
pni_interruptor_deadline, pni_interruptor_readable,
@@ -611,8 +611,8 @@ pn_messenger_t *pn_messenger(const char
pn_pipe(m->io, m->ctrl);
pni_selectable_set_fd(m->interruptor, m->ctrl[0]);
pni_selectable_set_context(m->interruptor, m);
- m->listeners = pn_list(PN_OBJECT, 0, 0);
- m->connections = pn_list(PN_OBJECT, 0, 0);
+ m->listeners = pn_list(PN_WEAKREF, 0);
+ m->connections = pn_list(PN_WEAKREF, 0);
m->selector = pn_io_selector(m->io);
m->collector = pn_collector();
m->credit_mode = LINK_CREDIT_EXPLICIT;
@@ -621,13 +621,13 @@ pn_messenger_t *pn_messenger(const char
m->distributed = 0;
m->receivers = 0;
m->draining = 0;
- m->credited = pn_list(PN_OBJECT, 0, 0);
- m->blocked = pn_list(PN_OBJECT, 0, 0);
+ m->credited = pn_list(PN_WEAKREF, 0);
+ m->blocked = pn_list(PN_WEAKREF, 0);
m->next_drain = 0;
m->next_tag = 0;
m->outgoing = pni_store();
m->incoming = pni_store();
- m->subscriptions = pn_list(PN_OBJECT, 0, PN_REFCOUNT);
+ m->subscriptions = pn_list(PN_OBJECT, 0);
m->incoming_subscription = NULL;
m->error = pn_error();
m->routes = pn_transform();
Modified: qpid/proton/trunk/proton-c/src/messenger/store.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/store.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/store.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/store.c Mon Sep 15 19:19:52 2014
@@ -89,7 +89,7 @@ pni_store_t *pni_store()
store->window = 0;
store->lwm = 0;
store->hwm = 0;
- store->tracked = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT);
+ store->tracked = pn_hash(PN_OBJECT, 0, 0.75);
return store;
}
Modified: qpid/proton/trunk/proton-c/src/messenger/transform.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/transform.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/transform.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/transform.c Mon Sep 15 19:19:52 2014
@@ -84,7 +84,7 @@ pn_transform_t *pn_transform()
{
static const pn_class_t clazz = PN_CLASS(pn_transform);
pn_transform_t *transform = (pn_transform_t *) pn_class_new(&clazz, sizeof(pn_transform_t));
- transform->rules = pn_list(PN_OBJECT, 0, PN_REFCOUNT);
+ transform->rules = pn_list(PN_OBJECT, 0);
transform->matched = false;
return transform;
}
Modified: qpid/proton/trunk/proton-c/src/object/list.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/object/list.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/object/list.c (original)
+++ qpid/proton/trunk/proton-c/src/object/list.c Mon Sep 15 19:19:52 2014
@@ -28,7 +28,6 @@ struct pn_list_t {
size_t capacity;
size_t size;
void **elements;
- int options;
};
size_t pn_list_size(pn_list_t *list)
@@ -47,9 +46,9 @@ void pn_list_set(pn_list_t *list, int in
{
assert(list); assert(list->size);
void *old = list->elements[index % list->size];
- if (list->options & PN_REFCOUNT) pn_class_decref(list->clazz, old);
+ pn_class_decref(list->clazz, old);
list->elements[index % list->size] = value;
- if (list->options & PN_REFCOUNT) pn_class_incref(list->clazz, value);
+ pn_class_incref(list->clazz, value);
}
void pn_list_ensure(pn_list_t *list, size_t capacity)
@@ -69,7 +68,7 @@ int pn_list_add(pn_list_t *list, void *v
assert(list);
pn_list_ensure(list, list->size + 1);
list->elements[list->size++] = value;
- if (list->options & PN_REFCOUNT) pn_class_incref(list->clazz, value);
+ pn_class_incref(list->clazz, value);
return 0;
}
@@ -102,10 +101,8 @@ void pn_list_del(pn_list_t *list, int in
assert(list);
index %= list->size;
- if (list->options & PN_REFCOUNT) {
- for (int i = 0; i < n; i++) {
- pn_class_decref(list->clazz, list->elements[index + i]);
- }
+ for (int i = 0; i < n; i++) {
+ pn_class_decref(list->clazz, list->elements[index + i]);
}
size_t slide = list->size - (index + n);
@@ -156,7 +153,7 @@ static void pn_list_finalize(void *objec
assert(object);
pn_list_t *list = (pn_list_t *) object;
for (size_t i = 0; i < list->size; i++) {
- if (list->options & PN_REFCOUNT) pn_class_decref(list->clazz, pn_list_get(list, i));
+ pn_class_decref(list->clazz, pn_list_get(list, i));
}
free(list->elements);
}
@@ -214,7 +211,7 @@ static int pn_list_inspect(void *obj, pn
#define pn_list_initialize NULL
-pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity, int options)
+pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity)
{
static const pn_class_t list_clazz = PN_CLASS(pn_list);
@@ -223,7 +220,6 @@ pn_list_t *pn_list(const pn_class_t *cla
list->capacity = capacity ? capacity : 16;
list->elements = (void **) malloc(list->capacity * sizeof(void *));
list->size = 0;
- list->options = options;
return list;
}
Modified: qpid/proton/trunk/proton-c/src/object/map.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/object/map.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/object/map.c (original)
+++ qpid/proton/trunk/proton-c/src/object/map.c Mon Sep 15 19:19:52 2014
@@ -44,20 +44,16 @@ struct pn_map_t {
uintptr_t (*hashcode)(void *key);
bool (*equals)(void *a, void *b);
float load_factor;
- bool count_keys;
- bool count_values;
};
static void pn_map_finalize(void *object)
{
pn_map_t *map = (pn_map_t *) object;
- if (map->count_keys || map->count_values) {
- for (size_t i = 0; i < map->capacity; i++) {
- if (map->entries[i].state != PNI_ENTRY_FREE) {
- if (map->count_keys) pn_class_decref(map->key, map->entries[i].key);
- if (map->count_values) pn_class_decref(map->value, map->entries[i].value);
- }
+ for (size_t i = 0; i < map->capacity; i++) {
+ if (map->entries[i].state != PNI_ENTRY_FREE) {
+ pn_class_decref(map->key, map->entries[i].key);
+ pn_class_decref(map->value, map->entries[i].value);
}
}
@@ -123,7 +119,7 @@ static int pn_map_inspect(void *obj, pn_
#define pn_map_compare NULL
pn_map_t *pn_map(const pn_class_t *key, const pn_class_t *value,
- size_t capacity, float load_factor, int options)
+ size_t capacity, float load_factor)
{
static const pn_class_t clazz = PN_CLASS(pn_map);
@@ -136,8 +132,6 @@ pn_map_t *pn_map(const pn_class_t *key,
map->load_factor = load_factor;
map->hashcode = pn_hashcode;
map->equals = pn_equals;
- map->count_keys = (options & PN_REFCOUNT) || (options & PN_REFCOUNT_KEY);
- map->count_values = (options & PN_REFCOUNT) || (options & PN_REFCOUNT_VALUE);
pni_map_allocate(map);
return map;
}
@@ -175,8 +169,8 @@ static bool pni_map_ensure(pn_map_t *map
void *key = entries[i].key;
void *value = entries[i].value;
pn_map_put(map, key, value);
- if (map->count_keys) pn_class_decref(map->key, key);
- if (map->count_values) pn_class_decref(map->value, value);
+ pn_class_decref(map->key, key);
+ pn_class_decref(map->value, value);
}
}
@@ -195,7 +189,7 @@ static pni_entry_t *pni_map_entry(pn_map
if (create) {
entry->state = PNI_ENTRY_TAIL;
entry->key = key;
- if (map->count_keys) pn_class_incref(map->key, key);
+ pn_class_incref(map->key, key);
map->size++;
return entry;
} else {
@@ -235,7 +229,7 @@ static pni_entry_t *pni_map_entry(pn_map
entry->state = PNI_ENTRY_LINK;
map->entries[empty].state = PNI_ENTRY_TAIL;
map->entries[empty].key = key;
- if (map->count_keys) pn_class_incref(map->key, key);
+ pn_class_incref(map->key, key);
if (pprev) *pprev = entry;
map->size++;
return &map->entries[empty];
@@ -248,9 +242,9 @@ int pn_map_put(pn_map_t *map, void *key,
{
assert(map);
pni_entry_t *entry = pni_map_entry(map, key, NULL, true);
- if (map->count_values) pn_class_decref(map->value, entry->value);
+ pn_class_decref(map->value, entry->value);
entry->value = value;
- if (map->count_values) pn_class_incref(map->value, value);
+ pn_class_incref(map->value, value);
return 0;
}
@@ -267,8 +261,8 @@ void pn_map_del(pn_map_t *map, void *key
pni_entry_t *prev = NULL;
pni_entry_t *entry = pni_map_entry(map, key, &prev, false);
if (entry) {
- void *dref_key = (map->count_keys) ? entry->key : NULL;
- void *dref_value = (map->count_values) ? entry->value : NULL;
+ void *dref_key = entry->key;
+ void *dref_value = entry->value;
if (prev) {
prev->next = entry->next;
prev->state = entry->state;
@@ -283,8 +277,8 @@ void pn_map_del(pn_map_t *map, void *key
entry->key = NULL;
entry->value = NULL;
map->size--;
- if (dref_key) pn_class_decref(map->key, dref_key);
- if (dref_value) pn_class_decref(map->value, dref_value);
+ pn_class_decref(map->key, dref_key);
+ pn_class_decref(map->value, dref_value);
}
}
@@ -342,16 +336,13 @@ static bool pni_identity_equals(void *a,
extern const pn_class_t *PN_UINTPTR;
-static const pn_class_t *pni_uintptr_reify(void *object) {
- return PN_UINTPTR;
-}
-
+static const pn_class_t *pni_uintptr_reify(void *object) { return PN_UINTPTR; }
#define pni_uintptr_new NULL
#define pni_uintptr_free NULL
#define pni_uintptr_initialize NULL
-#define pni_uintptr_incref NULL
-#define pni_uintptr_decref NULL
-#define pni_uintptr_refcount NULL
+static void pni_uintptr_incref(void *object) {}
+static void pni_uintptr_decref(void *object) {}
+static int pni_uintptr_refcount(void *object) { return -1; }
#define pni_uintptr_finalize NULL
#define pni_uintptr_hashcode NULL
#define pni_uintptr_compare NULL
@@ -360,13 +351,11 @@ static const pn_class_t *pni_uintptr_rei
const pn_class_t PNI_UINTPTR = PN_METACLASS(pni_uintptr);
const pn_class_t *PN_UINTPTR = &PNI_UINTPTR;
-pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor, int options)
+pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor)
{
- pn_hash_t *hash = (pn_hash_t *) pn_map(PN_UINTPTR, clazz, capacity, load_factor, 0);
+ pn_hash_t *hash = (pn_hash_t *) pn_map(PN_UINTPTR, clazz, capacity, load_factor);
hash->map.hashcode = pni_identity_hashcode;
hash->map.equals = pni_identity_equals;
- hash->map.count_keys = false;
- hash->map.count_values = options & PN_REFCOUNT;
return hash;
}
Modified: qpid/proton/trunk/proton-c/src/object/object.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/object/object.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/object/object.c (original)
+++ qpid/proton/trunk/proton-c/src/object/object.c Mon Sep 15 19:19:52 2014
@@ -171,18 +171,12 @@ int pn_class_inspect(const pn_class_t *c
pn_string_set(dst, "");
}
- const char *name;
-
- if (object) {
- if (clazz->inspect) {
- return clazz->inspect(object, dst);
- } else if (clazz->name) {
- name = clazz->name;
- } else {
- name = "<anon>";
- }
+ if (object && clazz->inspect) {
+ return clazz->inspect(object, dst);
}
+ const char *name = clazz->name ? clazz->name : "<anon>";
+
return pn_string_addf(dst, "%s<%p>", name, object);
}
@@ -282,3 +276,27 @@ int pn_inspect(void *object, pn_string_t
{
return pn_class_inspect(PN_OBJECT, object, dst);
}
+
+#define pn_weakref_new NULL
+#define pn_weakref_initialize NULL
+#define pn_weakref_finalize NULL
+#define pn_weakref_free NULL
+
+static void pn_weakref_incref(void *object) {}
+static void pn_weakref_decref(void *object) {}
+static int pn_weakref_refcount(void *object) { return -1; }
+static const pn_class_t *pn_weakref_reify(void *object) {
+ return PN_WEAKREF;
+}
+static uintptr_t pn_weakref_hashcode(void *object) {
+ return pn_hashcode(object);
+}
+static intptr_t pn_weakref_compare(void *a, void *b) {
+ return pn_compare(a, b);
+}
+static int pn_weakref_inspect(void *object, pn_string_t *dst) {
+ return pn_inspect(object, dst);
+}
+
+const pn_class_t PNI_WEAKREF = PN_METACLASS(pn_weakref);
+const pn_class_t *PN_WEAKREF = &PNI_WEAKREF;
Modified: qpid/proton/trunk/proton-c/src/posix/selector.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/posix/selector.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/posix/selector.c (original)
+++ qpid/proton/trunk/proton-c/src/posix/selector.c Mon Sep 15 19:19:52 2014
@@ -45,7 +45,7 @@ void pn_selector_initialize(void *obj)
selector->fds = NULL;
selector->deadlines = NULL;
selector->capacity = 0;
- selector->selectables = pn_list(PN_OBJECT, 0, 0);
+ selector->selectables = pn_list(PN_WEAKREF, 0);
selector->deadline = 0;
selector->current = 0;
selector->awoken = 0;
Modified: qpid/proton/trunk/proton-c/src/tests/object.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/tests/object.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/tests/object.c (original)
+++ qpid/proton/trunk/proton-c/src/tests/object.c Mon Sep 15 19:19:52 2014
@@ -30,12 +30,12 @@
static char mem;
static void *END = &mem;
-static pn_list_t *build_list(size_t capacity, int options, ...)
+static pn_list_t *build_list(size_t capacity, ...)
{
- pn_list_t *result = pn_list(PN_OBJECT, capacity, options);
+ pn_list_t *result = pn_list(PN_OBJECT, capacity);
va_list ap;
- va_start(ap, options);
+ va_start(ap, capacity);
while (true) {
void *arg = va_arg(ap, void *);
if (arg == END) {
@@ -43,23 +43,21 @@ static pn_list_t *build_list(size_t capa
}
pn_list_add(result, arg);
- if (PN_REFCOUNT & options) {
- pn_class_decref(PN_OBJECT, arg);
- }
+ pn_class_decref(PN_OBJECT, arg);
}
va_end(ap);
return result;
}
-static pn_map_t *build_map(size_t capacity, float load_factor, int options, ...)
+static pn_map_t *build_map(size_t capacity, float load_factor, ...)
{
- pn_map_t *result = pn_map(PN_OBJECT, PN_OBJECT, capacity, load_factor, options);
+ pn_map_t *result = pn_map(PN_OBJECT, PN_OBJECT, capacity, load_factor);
va_list ap;
void *prev = NULL;
- va_start(ap, options);
+ va_start(ap, load_factor);
int count = 0;
while (true) {
void *arg = va_arg(ap, void *);
@@ -70,10 +68,8 @@ static pn_map_t *build_map(size_t capaci
if (count % 2) {
pn_map_put(result, prev, arg);
- if (PN_REFCOUNT & options) {
- pn_class_decref(PN_OBJECT, prev);
- pn_class_decref(PN_OBJECT, arg);
- }
+ pn_class_decref(PN_OBJECT, prev);
+ pn_class_decref(PN_OBJECT, arg);
} else {
prev = arg;
}
@@ -257,7 +253,7 @@ static void test_refcounting(int refs)
static void test_list(size_t capacity)
{
- pn_list_t *list = pn_list(PN_OBJECT, 0, 0);
+ pn_list_t *list = pn_list(PN_WEAKREF, 0);
assert(pn_list_size(list) == 0);
assert(!pn_list_add(list, (void *) 0));
assert(!pn_list_add(list, (void *) 1));
@@ -282,7 +278,7 @@ static void test_list_refcount(size_t ca
void *three = pn_class_new(PN_OBJECT, 0);
void *four = pn_class_new(PN_OBJECT, 0);
- pn_list_t *list = pn_list(PN_OBJECT, 0, PN_REFCOUNT);
+ pn_list_t *list = pn_list(PN_OBJECT, 0);
assert(!pn_list_add(list, one));
assert(!pn_list_add(list, two));
assert(!pn_list_add(list, three));
@@ -334,7 +330,7 @@ static void check_list_index(pn_list_t *
static void test_list_index(void)
{
- pn_list_t *l = pn_list(PN_OBJECT, 0, 0);
+ pn_list_t *l = pn_list(PN_WEAKREF, 0);
void *one = pn_string("one");
void *two = pn_string("two");
void *three = pn_string("three");
@@ -377,7 +373,7 @@ static bool pn_strequals(const char *a,
static void test_build_list(void)
{
- pn_list_t *l = build_list(0, PN_REFCOUNT,
+ pn_list_t *l = build_list(0,
pn_string("one"),
pn_string("two"),
pn_string("three"),
@@ -397,7 +393,7 @@ static void test_build_list(void)
static void test_build_map(void)
{
- pn_map_t *m = build_map(0, 0.75, PN_REFCOUNT,
+ pn_map_t *m = build_map(0, 0.75,
pn_string("key"),
pn_string("value"),
pn_string("key2"),
@@ -421,7 +417,7 @@ static void test_build_map(void)
static void test_build_map_odd(void)
{
- pn_map_t *m = build_map(0, 0.75, PN_REFCOUNT,
+ pn_map_t *m = build_map(0, 0.75,
pn_string("key"),
pn_string("value"),
pn_string("key2"),
@@ -452,7 +448,7 @@ static void test_map(void)
void *two = pn_class_new(PN_OBJECT, 0);
void *three = pn_class_new(PN_OBJECT, 0);
- pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 4, 0.75, PN_REFCOUNT);
+ pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 4, 0.75);
assert(pn_map_size(map) == 0);
pn_string_t *key = pn_string("key");
@@ -515,7 +511,7 @@ static void test_hash(void)
void *two = pn_class_new(PN_OBJECT, 0);
void *three = pn_class_new(PN_OBJECT, 0);
- pn_hash_t *hash = pn_hash(PN_OBJECT, 4, 0.75, PN_REFCOUNT);
+ pn_hash_t *hash = pn_hash(PN_OBJECT, 4, 0.75);
pn_hash_put(hash, 0, NULL);
pn_hash_put(hash, 1, one);
pn_hash_put(hash, 2, two);
@@ -579,7 +575,7 @@ static void test_map_links(void)
// test deleting a head, middle link, tail
for (int delete_idx=0; delete_idx < 3; delete_idx++) {
- pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 0, 0.75, 0);
+ pn_map_t *map = pn_map(PN_WEAKREF, PN_WEAKREF, 0, 0.75);
// create a chain of entries that have same head (from identical key hashcode)
for (int i = 0; i < 3; i++) {
pn_map_put(map, keys[i], keys[i]);
@@ -690,7 +686,7 @@ static void test_string_addf(void)
static void test_map_iteration(int n)
{
- pn_list_t *pairs = pn_list(PN_OBJECT, 2*n, PN_REFCOUNT);
+ pn_list_t *pairs = pn_list(PN_OBJECT, 2*n);
for (int i = 0; i < n; i++) {
void *key = pn_class_new(PN_OBJECT, 0);
void *value = pn_class_new(PN_OBJECT, 0);
@@ -700,7 +696,7 @@ static void test_map_iteration(int n)
pn_decref(value);
}
- pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 0, 0.75, PN_REFCOUNT);
+ pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 0, 0.75);
assert(pn_map_head(map) == 0);
@@ -737,22 +733,22 @@ void test_inspect(void *o, const char *e
void test_list_inspect(void)
{
- pn_list_t *l = build_list(0, PN_REFCOUNT, END);
+ pn_list_t *l = build_list(0, END);
test_inspect(l, "[]");
pn_free(l);
- l = build_list(0, PN_REFCOUNT, pn_string("one"), END);
+ l = build_list(0, pn_string("one"), END);
test_inspect(l, "[\"one\"]");
pn_free(l);
- l = build_list(0, PN_REFCOUNT,
+ l = build_list(0,
pn_string("one"),
pn_string("two"),
END);
test_inspect(l, "[\"one\", \"two\"]");
pn_free(l);
- l = build_list(0, PN_REFCOUNT,
+ l = build_list(0,
pn_string("one"),
pn_string("two"),
pn_string("three"),
@@ -766,24 +762,24 @@ void test_map_inspect(void)
// note that when there is more than one entry in a map, the order
// of the entries is dependent on the hashes involved, it will be
// deterministic though
- pn_map_t *m = build_map(0, 0.75, PN_REFCOUNT, END);
+ pn_map_t *m = build_map(0, 0.75, END);
test_inspect(m, "{}");
pn_free(m);
- m = build_map(0, 0.75, PN_REFCOUNT,
+ m = build_map(0, 0.75,
pn_string("key"), pn_string("value"),
END);
test_inspect(m, "{\"key\": \"value\"}");
pn_free(m);
- m = build_map(0, 0.75, PN_REFCOUNT,
+ m = build_map(0, 0.75,
pn_string("k1"), pn_string("v1"),
pn_string("k2"), pn_string("v2"),
END);
test_inspect(m, "{\"k1\": \"v1\", \"k2\": \"v2\"}");
pn_free(m);
- m = build_map(0, 0.75, PN_REFCOUNT,
+ m = build_map(0, 0.75,
pn_string("k1"), pn_string("v1"),
pn_string("k2"), pn_string("v2"),
pn_string("k3"), pn_string("v3"),
@@ -794,8 +790,8 @@ void test_map_inspect(void)
void test_list_compare(void)
{
- pn_list_t *a = pn_list(PN_OBJECT, 0, PN_REFCOUNT);
- pn_list_t *b = pn_list(PN_OBJECT, 0, PN_REFCOUNT);
+ pn_list_t *a = pn_list(PN_OBJECT, 0);
+ pn_list_t *b = pn_list(PN_OBJECT, 0);
assert(pn_equals(a, b));
@@ -838,7 +834,7 @@ static void *pn_it_next(void *state) {
void test_iterator(void)
{
- pn_list_t *list = build_list(0, PN_REFCOUNT,
+ pn_list_t *list = build_list(0,
pn_string("one"),
pn_string("two"),
pn_string("three"),
Modified: qpid/proton/trunk/proton-c/src/transport/transport.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/transport/transport.c?rev=1625124&r1=1625123&r2=1625124&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/transport/transport.c (original)
+++ qpid/proton/trunk/proton-c/src/transport/transport.c Mon Sep 15 19:19:52 2014
@@ -41,7 +41,7 @@ static ssize_t transport_consume(pn_tran
void pn_delivery_map_init(pn_delivery_map_t *db, pn_sequence_t next)
{
- db->deliveries = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT);
+ db->deliveries = pn_hash(PN_OBJECT, 0, 0.75);
db->next = next;
}
@@ -163,8 +163,8 @@ static void pn_transport_initialize(void
transport->disp_data = pn_data(0);
pn_condition_init(&transport->remote_condition);
- transport->local_channels = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT);
- transport->remote_channels = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT);
+ transport->local_channels = pn_hash(PN_OBJECT, 0, 0.75);
+ transport->remote_channels = pn_hash(PN_OBJECT, 0, 0.75);
transport->bytes_input = 0;
transport->bytes_output = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org