diff options
| author | Martin Sustrik <sustrik@fastmq.commkdir> | 2009-09-02 14:59:53 +0200 | 
|---|---|---|
| committer | Martin Sustrik <sustrik@fastmq.commkdir> | 2009-09-02 14:59:53 +0200 | 
| commit | f92de9b2a9ad73fd7cd966e65b5a06b725e779fc (patch) | |
| tree | 119769a0bf8623e5c266c232eb1ee29cccaaa1af | |
| parent | 702fdbb5dd6a83e7f656e8d1190e695ebb636765 (diff) | |
bug during terminal shutdown fixed
| -rw-r--r-- | perf/c/local_lat.c | 13 | ||||
| -rw-r--r-- | perf/c/local_thr.c | 5 | ||||
| -rw-r--r-- | perf/c/remote_lat.c | 15 | ||||
| -rw-r--r-- | perf/c/remote_thr.c | 3 | ||||
| -rw-r--r-- | perf/cpp/local_thr.cpp | 2 | ||||
| -rw-r--r-- | perf/cpp/remote_lat.cpp | 2 | ||||
| -rw-r--r-- | src/session.cpp | 18 | 
7 files changed, 41 insertions, 17 deletions
diff --git a/perf/c/local_lat.c b/perf/c/local_lat.c index c65d4b3..81a2e0c 100644 --- a/perf/c/local_lat.c +++ b/perf/c/local_lat.c @@ -52,19 +52,24 @@ int main (int argc, char *argv [])      rc = zmq_bind (s, bind_to);      assert (rc == 0); +    rc = zmq_msg_init (&msg); +    assert (rc == 0); +      for (i = 0; i != roundtrip_count; i++) { -        rc = zmq_msg_init (&msg); -        assert (rc == 0);          rc = zmq_recv (s, &msg, 0);          assert (rc == 0);          assert (zmq_msg_size (&msg) == message_size);          rc = zmq_send (s, &msg, 0);          assert (rc == 0); -        rc = zmq_msg_close (&msg); -        assert (rc == 0);      } +    rc = zmq_msg_close (&msg); +    assert (rc == 0); +      sleep (1); +    rc = zmq_term (ctx); +    assert (rc == 0); +      return 0;  } diff --git a/perf/c/local_thr.c b/perf/c/local_thr.c index b58fac3..64c492d 100644 --- a/perf/c/local_thr.c +++ b/perf/c/local_thr.c @@ -90,7 +90,10 @@ int main (int argc, char *argv [])      printf ("message size: %d [B]\n", (int) message_size);      printf ("message count: %d\n", (int) message_count);      printf ("mean throughput: %d [msg/s]\n", (int) throughput); -    printf ("mean throughput: %3f [Mb/s]\n", (double) megabits); +    printf ("mean throughput: %.3f [Mb/s]\n", (double) megabits); + +    rc = zmq_term (ctx); +    assert (rc == 0);      return 0;  } diff --git a/perf/c/remote_lat.c b/perf/c/remote_lat.c index e99da2e..32329b8 100644 --- a/perf/c/remote_lat.c +++ b/perf/c/remote_lat.c @@ -59,18 +59,20 @@ int main (int argc, char *argv [])      rc = gettimeofday (&start, NULL);      assert (rc == 0); +    rc = zmq_msg_init_size (&msg, message_size); +    assert (rc == 0); +      for (i = 0; i != roundtrip_count; i++) { -        rc = zmq_msg_init_size (&msg, message_size); -        assert (rc == 0);          rc = zmq_send (s, &msg, 0);          assert (rc == 0);          rc = zmq_recv (s, &msg, 0);          assert (rc == 0);          assert (zmq_msg_size (&msg) == message_size); -        rc = zmq_msg_close (&msg); -        assert (rc == 0);      } +    rc = zmq_msg_close (&msg); +    assert (rc == 0); +      rc = gettimeofday (&end, NULL);      assert (rc == 0); @@ -83,7 +85,10 @@ int main (int argc, char *argv [])      printf ("message size: %d [B]\n", (int) message_size);      printf ("roundtrip count: %d\n", (int) roundtrip_count); -    printf ("average latency: %3f [us]\n", (double) latency); +    printf ("average latency: %.3f [us]\n", (double) latency); + +    rc = zmq_term (ctx); +    assert (rc == 0);      return 0;  } diff --git a/perf/c/remote_thr.c b/perf/c/remote_thr.c index d542b1e..1010bc9 100644 --- a/perf/c/remote_thr.c +++ b/perf/c/remote_thr.c @@ -63,5 +63,8 @@ int main (int argc, char *argv [])      sleep (10); +    rc = zmq_term (ctx); +    assert (rc == 0); +      return 0;  } diff --git a/perf/cpp/local_thr.cpp b/perf/cpp/local_thr.cpp index e328117..3e961de 100644 --- a/perf/cpp/local_thr.cpp +++ b/perf/cpp/local_thr.cpp @@ -71,7 +71,7 @@ int main (int argc, char *argv [])      printf ("message size: %d [B]\n", (int) message_size);      printf ("message count: %d\n", (int) message_count);      printf ("mean throughput: %d [msg/s]\n", (int) throughput); -    printf ("mean throughput: %3f [Mb/s]\n", (double) megabits); +    printf ("mean throughput: %.3f [Mb/s]\n", (double) megabits);      return 0;  } diff --git a/perf/cpp/remote_lat.cpp b/perf/cpp/remote_lat.cpp index 3472fd8..169ed1e 100644 --- a/perf/cpp/remote_lat.cpp +++ b/perf/cpp/remote_lat.cpp @@ -64,7 +64,7 @@ int main (int argc, char *argv [])      printf ("message size: %d [B]\n", (int) message_size);      printf ("roundtrip count: %d\n", (int) roundtrip_count); -    printf ("average latency: %3f [us]\n", (double) latency); +    printf ("average latency: %.3f [us]\n", (double) latency);      return 0;  } diff --git a/src/session.cpp b/src/session.cpp index ef17d6d..ac2dd12 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -36,11 +36,8 @@ zmq::session_t::session_t (object_t *parent_, socket_base_t *owner_,  zmq::session_t::~session_t ()  { -    //  Ask associated pipes to terminate. -    if (in_pipe) -        in_pipe->term (); -    if (out_pipe) -        out_pipe->term (); +    zmq_assert (!in_pipe); +    zmq_assert (!out_pipe);  }  bool zmq::session_t::read (::zmq_msg_t *msg_) @@ -82,6 +79,7 @@ void zmq::session_t::attach_inpipe (reader_t *pipe_)      active = true;      in_pipe->set_endpoint (this);  } +  void zmq::session_t::attach_outpipe (writer_t *pipe_)  {      zmq_assert (!out_pipe); @@ -141,6 +139,16 @@ void zmq::session_t::process_unplug ()      bool ok = owner->unregister_session (name.c_str ());      zmq_assert (ok); +    //  Ask associated pipes to terminate. +    if (in_pipe) { +        in_pipe->term (); +        in_pipe = NULL; +    } +    if (out_pipe) { +        out_pipe->term (); +        out_pipe = NULL; +    } +      if (engine) {          engine->unplug ();          delete engine;  | 
