Re: [devel] [PATCH 2/2] ntf: Update TRY_AGAIN error in ntfsend tool [#2961]

2019-01-09 Thread Lennart Lund
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]

2019-01-09 Thread Canh Van Truong
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]

2019-01-07 Thread Canh Van Truong
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,