Merge pull request #1282 from hintjens/master

Fixed atomic API, which used 'bool'
This commit is contained in:
Joe Eli McIlvain 2014-12-23 09:30:46 -05:00
commit d2bacdf591
11 changed files with 54 additions and 45 deletions

View File

@ -9,7 +9,7 @@ zmq_atomic_counter_dec - decrement an atomic counter
SYNOPSIS SYNOPSIS
-------- --------
*bool zmq_atomic_counter_dec (void *counter);* *int zmq_atomic_counter_dec (void *counter);*
DESCRIPTION DESCRIPTION
@ -21,8 +21,8 @@ operations.
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_atomic_counter_dec()_ function returns true if the counter is The _zmq_atomic_counter_dec()_ function returns 1 if the counter is
greater than zero after decrementing, or false if the counter reached greater than zero after decrementing, or zero if the counter reached
zero. zero.
@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----

View File

@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----

View File

@ -35,13 +35,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----

View File

@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----

View File

@ -35,13 +35,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----

View File

@ -34,13 +34,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----

View File

@ -440,7 +440,7 @@ ZMQ_EXPORT int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key);
ZMQ_EXPORT void *zmq_atomic_counter_new (void); ZMQ_EXPORT void *zmq_atomic_counter_new (void);
ZMQ_EXPORT void zmq_atomic_counter_set (void *counter, int value); ZMQ_EXPORT void zmq_atomic_counter_set (void *counter, int value);
ZMQ_EXPORT int zmq_atomic_counter_inc (void *counter); ZMQ_EXPORT int zmq_atomic_counter_inc (void *counter);
ZMQ_EXPORT bool zmq_atomic_counter_dec (void *counter); ZMQ_EXPORT int zmq_atomic_counter_dec (void *counter);
ZMQ_EXPORT int zmq_atomic_counter_value (void *counter); ZMQ_EXPORT int zmq_atomic_counter_value (void *counter);
ZMQ_EXPORT void zmq_atomic_counter_destroy (void **counter_p); ZMQ_EXPORT void zmq_atomic_counter_destroy (void **counter_p);

View File

@ -232,11 +232,12 @@ int zmq_atomic_counter_inc (void *counter_)
return ((zmq::atomic_counter_t *) counter_)->add (1); return ((zmq::atomic_counter_t *) counter_)->add (1);
} }
// Decrement the atomic counter and return true if still > zero // Decrement the atomic counter and return 1 (if counter >= 1), or
// 0 if counter hit zero.
bool zmq_atomic_counter_dec (void *counter_) int zmq_atomic_counter_dec (void *counter_)
{ {
return ((zmq::atomic_counter_t *) counter_)->sub (1); return ((zmq::atomic_counter_t *) counter_)->sub (1)? 1: 0;
} }
// Return actual value of atomic counter // Return actual value of atomic counter

View File

@ -27,12 +27,12 @@ int main (void)
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0; return 0;
} }

View File

@ -25,8 +25,10 @@ zmq_msg_init(&msg) && printf("zmq_msg_init: %s\n", zmq_strerror(errno)); \
zmq_msg_init_size (&msg, size + 1) && printf("zmq_msg_init_size: %s\n",zmq_strerror(errno)); \ zmq_msg_init_size (&msg, size + 1) && printf("zmq_msg_init_size: %s\n",zmq_strerror(errno)); \
memcpy(zmq_msg_data(&msg), data, size + 1); memcpy(zmq_msg_data(&msg), data, size + 1);
int publicationsReceived = 0; // TODO: this code fails to meet our style guidelines, and needs rewriting
bool isSubscribed = false;
static int publicationsReceived = 0;
static bool isSubscribed = false;
int main(int, char**) { int main(int, char**) {
setup_test_environment(); setup_test_environment();

View File

@ -27,7 +27,7 @@
// This defines the settle time used in tests; raise this if we // This defines the settle time used in tests; raise this if we
// get test failures on slower systems due to binds/connects not // get test failures on slower systems due to binds/connects not
// settled. Tested to work reliably at 1 msec on a fast PC. // settled. Tested to work reliably at 1 msec on a fast PC.
#define SETTLE_TIME 10 // In msec #define SETTLE_TIME 50 // In msec
#undef NDEBUG #undef NDEBUG
#include <time.h> #include <time.h>