From a2252de2bcecb672f09c8a5d0013cce23d1d404f Mon Sep 17 00:00:00 2001
From: Martin Sustrik <sustrik@250bpm.com>
Date: Thu, 24 Mar 2011 14:36:40 +0100
Subject: ZMQ_RECOVERY_IVL and ZMQ_RECOVERY_IVL_MSEC reconciled

There's only one option now -- ZMQ_RECOVRY_IVL --
and it's measured in milliseconds.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
---
 src/options.cpp    | 22 ++--------------------
 src/options.hpp    |  4 +---
 src/pgm_socket.cpp | 23 ++++-------------------
 3 files changed, 7 insertions(+), 42 deletions(-)

(limited to 'src')

diff --git a/src/options.cpp b/src/options.cpp
index 9916475..a053048 100644
--- a/src/options.cpp
+++ b/src/options.cpp
@@ -29,8 +29,7 @@ zmq::options_t::options_t () :
     hwm (0),
     affinity (0),
     rate (100),
-    recovery_ivl (10),
-    recovery_ivl_msec (-1),
+    recovery_ivl (10000),
     sndbuf (0),
     rcvbuf (0),
     type (-1),
@@ -80,7 +79,7 @@ int zmq::options_t::setsockopt (int option_, const void *optval_,
         return 0;
 
     case ZMQ_RATE:
-        if (optvallen_ != sizeof (int64_t) || *((int64_t*) optval_) < 0) {
+        if (optvallen_ != sizeof (int64_t) || *((int64_t*) optval_) <= 0) {
             errno = EINVAL;
             return -1;
         }
@@ -95,14 +94,6 @@ int zmq::options_t::setsockopt (int option_, const void *optval_,
         recovery_ivl = (uint32_t) *((int64_t*) optval_);
         return 0;
 
-    case ZMQ_RECOVERY_IVL_MSEC:
-        if (optvallen_ != sizeof (int64_t)  || *((int64_t*) optval_) < 0) {
-            errno = EINVAL;
-            return -1;
-        }
-        recovery_ivl_msec = (int32_t) *((int64_t*) optval_);
-        return 0;
-
     case ZMQ_SNDBUF:
         if (optvallen_ != sizeof (uint64_t)) {
             errno = EINVAL;
@@ -223,15 +214,6 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_)
         *optvallen_ = sizeof (int64_t);
         return 0;
 
-    case ZMQ_RECOVERY_IVL_MSEC:
-        if (*optvallen_ < sizeof (int64_t)) {
-            errno = EINVAL;
-            return -1;
-        }
-        *((int64_t*) optval_) = recovery_ivl_msec;
-        *optvallen_ = sizeof (int64_t);
-        return 0;
-
     case ZMQ_SNDBUF:
         if (*optvallen_ < sizeof (uint64_t)) {
             errno = EINVAL;
diff --git a/src/options.hpp b/src/options.hpp
index a1f9f33..8b5864e 100644
--- a/src/options.hpp
+++ b/src/options.hpp
@@ -42,10 +42,8 @@ namespace zmq
         //  Maximum tranfer rate [kb/s]. Default 100kb/s.
         uint32_t rate;
 
-        //  Reliability time interval [s]. Default 10s.
+        //  Reliability time interval [ms]. Default 10 seconds.
         uint32_t recovery_ivl;
-        //  Reliability time interval [ms]. Default -1 = not used.
-        int32_t recovery_ivl_msec;
 
         uint64_t sndbuf;
         uint64_t rcvbuf;
diff --git a/src/pgm_socket.cpp b/src/pgm_socket.cpp
index 89cdcea..10d8f39 100644
--- a/src/pgm_socket.cpp
+++ b/src/pgm_socket.cpp
@@ -83,19 +83,9 @@ int zmq::pgm_socket_t::init (bool udp_encapsulation_, const char *network_)
     }
     memset (network, '\0', sizeof (network));
     memcpy (network, network_, port_delim - network_);
-   
-    //  Validate socket options 
-    //  Data rate is in [B/s]. options.rate is in [kb/s].
-    if (options.rate <= 0) {
-        errno = EINVAL;
-        return -1;
-    }
-    //  Recovery interval [s] or [ms] - based on the user's call 
-    if ((options.recovery_ivl <= 0) && (options.recovery_ivl_msec <= 0)) {
-        errno = EINVAL;
-        return -1;
-    }
 
+    zmq_assert (options.rate > 0);
+   
     //  Zero counter used in msgrecv.
     nbytes_rec = 0;
     nbytes_processed = 0;
@@ -679,19 +669,14 @@ int zmq::pgm_socket_t::compute_sqns (int tpdu_)
 {
     //  Convert rate into B/ms.
     uint64_t rate = ((uint64_t) options.rate) / 8;
-
-    //  Get recovery interval in milliseconds.
-    uint64_t interval = options.recovery_ivl_msec >= 0 ?
-        options.recovery_ivl_msec :
-        options.recovery_ivl * 1000;
         
     //  Compute the size of the buffer in bytes.
-    uint64_t size = interval * rate;
+    uint64_t size = options.recovery_ivl * rate;
 
     //  Translate the size into number of packets.
     uint64_t sqns = size / tpdu_;
 
-    //  Buffer should be able to contain at least one packet.
+    //  Buffer should be able to hold at least one packet.
     if (sqns == 0)
         sqns = 1;
 
-- 
cgit v1.2.3