/* event without clients becomes ready */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on signaled event");
/* do it again: it should time out */
rc = handle_wait(_state->hevts, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on created event");
/* open/close the same named event 10000 times */ for (int i = 0; i < 10000; i++) {
rc = event_source_open(&cid, TEST_EVS_NAME1, strlen(TEST_EVS_NAME1) + 1, 0, &_state->hevt1);
ASSERT_EQ(0, rc);
/* wait on signaled event: should return as it is signaled */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client");
/* wait on event source: should timeout as we have not notified */
rc = handle_wait(_state->hevts, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on source");
/* notify that event is handled to put source into handled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source again: should return as event is handled */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* Check handle sets: add both events to handle set */
memset(&_state->hevts_ref, 0, sizeof(_state->hevts_ref));
_state->hevts_ref.handle = _state->hevts;
_state->hevts_ref.emask = ~0U;
_state->hevts_ref.cookie = NULL;
rc = handle_set_attach(_state->hset, &_state->hevts_ref);
ASSERT_EQ(0, rc);
/* open named event again */
rc = event_source_open(&cid, TEST_EVS_NAME1, strlen(TEST_EVS_NAME1) + 1, 0,
&_state->hevt2);
ASSERT_EQ(0, rc);
/* wait on client 1: should be signaled */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* wait on client 2: should timeout as it should not be signaled */
rc = handle_wait(_state->hevt2, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on source");
/* wait on event source: should timeout: event is not handled */
rc = handle_wait(_state->hevts, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on source");
/* notify that event1 is handled: to put it in unsignaled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source again: should return as event is handled */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* signal event again: now both events must ack */
rc = event_source_signal(_state->hevts);
EXPECT_EQ(0, rc, "notify event signaled");
/* wait on client 1: should be signaled */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* wait on client 2: should be signaled */
rc = handle_wait(_state->hevt2, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client2");
/* notify that event1 is handled */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* notify that event2 is handled */
rc = event_client_notify_handled(_state->hevt2);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source again: should be handled */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* signal event again */
rc = event_source_signal(_state->hevts);
EXPECT_EQ(0, rc, "notify event signaled");
/* wait on client 1: should be signaled */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* wait on client 2: should be signaled */
rc = handle_wait(_state->hevt2, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client2");
/* notify that event1 is handled */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* notify that event2 is handled */
rc = event_client_notify_handled(_state->hevt2);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source: should be handled */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* wait on client 1: to put it into notifieed state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* signal event again */
rc = event_source_signal(_state->hevts);
EXPECT_EQ(0, rc, "notify event signaled");
/* notify that event1 is handled: it should enter signaled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on client 2: should be signaled */
rc = handle_wait(_state->hevt2, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client2");
/* notify that event2 is handled to put it into unsignaled state */
rc = event_client_notify_handled(_state->hevt2);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source: should timeout as event1 stil signaled */
rc = handle_wait(_state->hevts, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on source");
/* wait on client 1: should be signaled */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* notify that event1 is handled to put it into unsignaled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source: should be handled */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* wait on client 1: to put it into notified state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* notify that event1 is handled to put it into unsignaled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* signal event again to put event 1 into signaled state */
rc = event_source_signal(_state->hevts);
EXPECT_EQ(0, rc, "notify event signaled");
/* wait on client 2: should be in signaled state */
rc = handle_wait(_state->hevt2, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client2");
/* notify that event2 is handled to put it into unsignaled state */
rc = event_client_notify_handled(_state->hevt2);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source: should timeout as event1 still signaled */
rc = handle_wait(_state->hevts, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on source");
/* wait on client 1: to put it into notified state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* notify that event1 is handled to put it into unsignaled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source: should be in handled */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* close signaled event */
handle_close(_state->hevt1);
_state->hevt1 = NULL;
/* wait on event source: should not block */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* wait on client 1: to put it into notified state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* close client */
handle_close(_state->hevt1);
_state->hevt1 = NULL;
/* wait on event source: should not block */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* wait on client 1: to put it into notified state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* signal event to put it intonotified signaled state */
rc = event_source_signal(_state->hevts);
EXPECT_EQ(0, rc, "notify event signaled");
/* close client */
handle_close(_state->hevt1);
_state->hevt1 = NULL;
/* wait on event source: should not block */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
/* wait on client 1: to put it into notifird state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* notify that event1 is handled: should be OK */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on client 1: should be signaled: enters notified state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* signal event again to put is into notified signaled state */
rc = event_source_signal(_state->hevts);
EXPECT_EQ(0, rc, "notify event signaled");
/* wait on client 1: should timeout as it is in notified signaled state */
rc = handle_wait(_state->hevt1, &uevt, EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(ERR_TIMED_OUT, rc, "wait on client1");
/* wait on client 1: should be signaled as it is in signaled state */
rc = handle_wait(_state->hevt1, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on client1");
/* notify that event1 is handled to put source into handled state */
rc = event_client_notify_handled(_state->hevt1);
EXPECT_EQ(0, rc, "notify event handled");
/* wait on event source: should be in handled state */
rc = handle_wait(_state->hevts, &uevt, NOT_EXPECTED_TO_FAIL_TIMEOUT_MSEC);
EXPECT_EQ(0, rc, "wait on source");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.