Skip to content

Commit

Permalink
Replace cv by timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
sashacmc committed Jan 16, 2025
1 parent c314bcb commit 7d43a4d
Showing 1 changed file with 21 additions and 19 deletions.
40 changes: 21 additions & 19 deletions tests/z_api_matching_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,57 +28,59 @@
typedef enum { NONE, MATCH, UNMATCH, DROP } context_state_t;

typedef struct context_t {
z_owned_condvar_t cv;
z_owned_mutex_t m;
// z_owned_condvar_t cv;
// z_owned_mutex_t m;
context_state_t state;
} context_t;

static void _context_init(context_t* c) {
z_condvar_init(&c->cv);
z_mutex_init(&c->m);
// z_condvar_init(&c->cv);
// z_mutex_init(&c->m);
c->state = NONE;
}

static void _context_drop(context_t* c) {
z_condvar_drop(z_condvar_move(&c->cv));
z_mutex_drop(z_mutex_move(&c->m));
(void)c;
// z_condvar_drop(z_condvar_move(&c->cv));
// z_mutex_drop(z_mutex_move(&c->m));
}

static void _context_wait(context_t* c, context_state_t state, int timeout_s) {
z_mutex_lock(z_mutex_loan_mut(&c->m));
(void)timeout_s;
// z_mutex_lock(z_mutex_loan_mut(&c->m));
if (c->state != state) {
printf("Waiting for state %d...\n", state);
#ifdef ZENOH_MACOS
_ZP_UNUSED(timeout_s);
z_condvar_wait(z_condvar_loan_mut(&c->cv), z_mutex_loan_mut(&c->m));
// z_condvar_wait(z_condvar_loan_mut(&c->cv), z_mutex_loan_mut(&c->m));
#else
z_clock_t clock = z_clock_now();
z_clock_advance_s(&clock, timeout_s);
z_result_t res = z_condvar_wait_until(z_condvar_loan_mut(&c->cv), z_mutex_loan_mut(&c->m), &clock);
if (res == Z_ETIMEDOUT) {
fprintf(stderr, "Timeout waiting for state %d\n", state);
assert(false);
}
// z_clock_t clock = z_clock_now();
// z_clock_advance_s(&clock, timeout_s);
// z_result_t res = z_condvar_wait_until(z_condvar_loan_mut(&c->cv), z_mutex_loan_mut(&c->m), &clock);
// if (res == Z_ETIMEDOUT) {
// fprintf(stderr, "Timeout waiting for state %d\n", state);
// assert(false);
// }
#endif
if (c->state != state) {
fprintf(stderr, "Expected state %d, got %d\n", state, c->state);
assert(false);
}
}
c->state = NONE;
z_mutex_unlock(z_mutex_loan_mut(&c->m));
// z_mutex_unlock(z_mutex_loan_mut(&c->m));
}

static void _context_notify(context_t* c, context_state_t state) {
z_mutex_lock(z_mutex_loan_mut(&c->m));
// z_mutex_lock(z_mutex_loan_mut(&c->m));
if (c->state != NONE) {
fprintf(stderr, "State already set %d\n", c->state);
assert(false);
}
c->state = state;
fprintf(stderr, "State recieved %d\n", state);
z_condvar_signal(z_condvar_loan_mut(&c->cv));
z_mutex_unlock(z_mutex_loan_mut(&c->m));
// z_condvar_signal(z_condvar_loan_mut(&c->cv));
// z_mutex_unlock(z_mutex_loan_mut(&c->m));
}

#define assert_ok(x) \
Expand Down

0 comments on commit 7d43a4d

Please sign in to comment.