Re: [devel] [PATCH 2/2] ntf: Update TRY_AGAIN error in ntfsend tool [#2961]
Hi Canh, Ack, see minor comment below [Lennart] Thanks Lennart Från: Canh Van Truong Skickat: den 9 januari 2019 10:22 Till: Lennart Lund; Minh Hon Chau Kopia: opensaf-devel@lists.sourceforge.net; Canh Van Truong Ämne: [PATCH 2/2] ntf: Update TRY_AGAIN error in ntfsend tool [#2961] ntfsend is blocked in case TRY_AGAIN error. It should do the retry in limit time. --- src/ntf/tools/ntfclient.c | 75 --- src/ntf/tools/ntfsend.c | 240 +++--- 2 files changed, 120 insertions(+), 195 deletions(-) diff --git a/src/ntf/tools/ntfclient.c b/src/ntf/tools/ntfclient.c index 472be4bc3..ce93bb164 100644 --- a/src/ntf/tools/ntfclient.c +++ b/src/ntf/tools/ntfclient.c @@ -21,10 +21,13 @@ #include #include #include +#include "base/osaf_time.h" #include "ntf/tools/ntfclient.h" #include "ntf/tools/ntfconsumer.h" #include +const uint64_t kWaitTime = 10*1000; // Wait for timeout is 10 seconds + /* help functions for printouts */ void ntfsvtools_exitIfFalse(const char *file, unsigned int line, int expression) { @@ -1097,18 +1100,19 @@ SaAisErrorT ntftool_saNtfInitialize(SaNtfHandleT *ntfHandle, const SaNtfCallbacksT *ntfCallbacks, SaVersionT *version) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; SaVersionT ntf_version = *version; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfInitialize(ntfHandle, ntfCallbacks, _version); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); ntf_version = *version; } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); [Lennart] Why not use a "normal" while loop here? Is easier to read. You can directly on the first line see that this is a timed out loop. Applies to all the loops below return rc; } @@ -1119,16 +1123,17 @@ SaAisErrorT ntftool_saNtfInitialize(SaNtfHandleT *ntfHandle, SaAisErrorT ntftool_saNtfDispatch(SaNtfHandleT ntfHandle, SaDispatchFlagsT dispatchFlags) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfDispatch(ntfHandle, dispatchFlags); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1139,16 +1144,17 @@ SaAisErrorT ntftool_saNtfDispatch(SaNtfHandleT ntfHandle, SaAisErrorT ntftool_saNtfNotificationSend(SaNtfNotificationHandleT notificationHandle) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationSend(notificationHandle); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1160,17 +1166,18 @@ SaAisErrorT ntftool_saNtfNotificationSubscribe( const SaNtfNotificationTypeFilterHandlesT *notificationFilterHandles, SaNtfSubscriptionIdT subscriptionId) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationSubscribe(notificationFilterHandles, subscriptionId); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1181,16 +1188,17 @@ SaAisErrorT ntftool_saNtfNotificationSubscribe( SaAisErrorT ntftool_saNtfNotificationUnsubscribe(SaNtfSubscriptionIdT subscriptionId) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc =
[devel] [PATCH 2/2] ntf: Update TRY_AGAIN error in ntfsend tool [#2961]
ntfsend is blocked in case TRY_AGAIN error. It should do the retry in limit time. --- src/ntf/tools/ntfclient.c | 75 --- src/ntf/tools/ntfsend.c | 240 +++--- 2 files changed, 120 insertions(+), 195 deletions(-) diff --git a/src/ntf/tools/ntfclient.c b/src/ntf/tools/ntfclient.c index 472be4bc3..ce93bb164 100644 --- a/src/ntf/tools/ntfclient.c +++ b/src/ntf/tools/ntfclient.c @@ -21,10 +21,13 @@ #include #include #include +#include "base/osaf_time.h" #include "ntf/tools/ntfclient.h" #include "ntf/tools/ntfconsumer.h" #include +const uint64_t kWaitTime = 10*1000; // Wait for timeout is 10 seconds + /* help functions for printouts */ void ntfsvtools_exitIfFalse(const char *file, unsigned int line, int expression) { @@ -1097,18 +1100,19 @@ SaAisErrorT ntftool_saNtfInitialize(SaNtfHandleT *ntfHandle, const SaNtfCallbacksT *ntfCallbacks, SaVersionT *version) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; SaVersionT ntf_version = *version; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfInitialize(ntfHandle, ntfCallbacks, _version); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); ntf_version = *version; } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1119,16 +1123,17 @@ SaAisErrorT ntftool_saNtfInitialize(SaNtfHandleT *ntfHandle, SaAisErrorT ntftool_saNtfDispatch(SaNtfHandleT ntfHandle, SaDispatchFlagsT dispatchFlags) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfDispatch(ntfHandle, dispatchFlags); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1139,16 +1144,17 @@ SaAisErrorT ntftool_saNtfDispatch(SaNtfHandleT ntfHandle, SaAisErrorT ntftool_saNtfNotificationSend(SaNtfNotificationHandleT notificationHandle) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationSend(notificationHandle); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1160,17 +1166,18 @@ SaAisErrorT ntftool_saNtfNotificationSubscribe( const SaNtfNotificationTypeFilterHandlesT *notificationFilterHandles, SaNtfSubscriptionIdT subscriptionId) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationSubscribe(notificationFilterHandles, subscriptionId); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1181,16 +1188,17 @@ SaAisErrorT ntftool_saNtfNotificationSubscribe( SaAisErrorT ntftool_saNtfNotificationUnsubscribe(SaNtfSubscriptionIdT subscriptionId) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationUnsubscribe(subscriptionId); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1203,17 +1211,18 @@ SaAisErrorT ntftool_saNtfNotificationReadInitialize( const SaNtfNotificationTypeFilterHandlesT *notificationFilterHandles,
[devel] [PATCH 2/2] ntf: Update TRY_AGAIN error in ntfsend tool [#2961]
ntfsend is blocked in case TRY_AGAIN error. It should do the retry in limit time. --- src/ntf/tools/ntfclient.c | 75 --- src/ntf/tools/ntfsend.c | 240 +++--- 2 files changed, 120 insertions(+), 195 deletions(-) diff --git a/src/ntf/tools/ntfclient.c b/src/ntf/tools/ntfclient.c index 472be4bc3..ce93bb164 100644 --- a/src/ntf/tools/ntfclient.c +++ b/src/ntf/tools/ntfclient.c @@ -21,10 +21,13 @@ #include #include #include +#include "base/osaf_time.h" #include "ntf/tools/ntfclient.h" #include "ntf/tools/ntfconsumer.h" #include +const uint64_t kWaitTime = 10*1000; // Wait for timeout is 10 seconds + /* help functions for printouts */ void ntfsvtools_exitIfFalse(const char *file, unsigned int line, int expression) { @@ -1097,18 +1100,19 @@ SaAisErrorT ntftool_saNtfInitialize(SaNtfHandleT *ntfHandle, const SaNtfCallbacksT *ntfCallbacks, SaVersionT *version) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; SaVersionT ntf_version = *version; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfInitialize(ntfHandle, ntfCallbacks, _version); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); ntf_version = *version; } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1119,16 +1123,17 @@ SaAisErrorT ntftool_saNtfInitialize(SaNtfHandleT *ntfHandle, SaAisErrorT ntftool_saNtfDispatch(SaNtfHandleT ntfHandle, SaDispatchFlagsT dispatchFlags) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfDispatch(ntfHandle, dispatchFlags); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1139,16 +1144,17 @@ SaAisErrorT ntftool_saNtfDispatch(SaNtfHandleT ntfHandle, SaAisErrorT ntftool_saNtfNotificationSend(SaNtfNotificationHandleT notificationHandle) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationSend(notificationHandle); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1160,17 +1166,18 @@ SaAisErrorT ntftool_saNtfNotificationSubscribe( const SaNtfNotificationTypeFilterHandlesT *notificationFilterHandles, SaNtfSubscriptionIdT subscriptionId) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationSubscribe(notificationFilterHandles, subscriptionId); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1181,16 +1188,17 @@ SaAisErrorT ntftool_saNtfNotificationSubscribe( SaAisErrorT ntftool_saNtfNotificationUnsubscribe(SaNtfSubscriptionIdT subscriptionId) { - int curRetryTime = 0; SaAisErrorT rc; + struct timespec timeout_time; + + osaf_set_millis_timeout(kWaitTime, _time); do { rc = saNtfNotificationUnsubscribe(subscriptionId); if (rc == SA_AIS_ERR_TRY_AGAIN) { - sleep(gl_apiRetry); - curRetryTime += gl_apiRetry; + osaf_nanosleep(); } else break; - } while (curRetryTime < gl_apiTolerance); + } while (!osaf_is_timeout(_time)); return rc; } @@ -1203,17 +1211,18 @@ SaAisErrorT ntftool_saNtfNotificationReadInitialize( const SaNtfNotificationTypeFilterHandlesT *notificationFilterHandles,