summaryrefslogtreecommitdiff
path: root/src/pgm_receiver.cpp
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2012-02-16 10:05:01 +0900
committerMartin Sustrik <sustrik@250bpm.com>2012-02-16 10:05:01 +0900
commit2df873a435ff139cf9d1b10b666d75e6dc6da442 (patch)
tree042b0a349ca84919041fb37df7e5a3b7195d065d /src/pgm_receiver.cpp
parentb67f88a7d6322a293ac3e3be9d6df9f358509221 (diff)
Timers identified by dynamically generated handles
Timers are not longer identified by hard-wired IDs. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'src/pgm_receiver.cpp')
-rw-r--r--src/pgm_receiver.cpp34
1 files changed, 16 insertions, 18 deletions
diff --git a/src/pgm_receiver.cpp b/src/pgm_receiver.cpp
index c8aec2d..b2cc513 100644
--- a/src/pgm_receiver.cpp
+++ b/src/pgm_receiver.cpp
@@ -40,12 +40,12 @@
xs::pgm_receiver_t::pgm_receiver_t (class io_thread_t *parent_,
const options_t &options_) :
io_object_t (parent_),
- has_rx_timer (false),
pgm_socket (true, options_),
options (options_),
session (NULL),
mru_decoder (NULL),
- pending_bytes (0)
+ pending_bytes (0),
+ rx_timer (NULL)
{
}
@@ -90,9 +90,9 @@ void xs::pgm_receiver_t::unplug ()
mru_decoder = NULL;
pending_bytes = 0;
- if (has_rx_timer) {
- rm_timer (rx_timer_id);
- has_rx_timer = false;
+ if (rx_timer) {
+ rm_timer (rx_timer);
+ rx_timer = NULL;
}
rm_fd (socket_handle);
@@ -157,9 +157,9 @@ void xs::pgm_receiver_t::in_event (fd_t fd_)
if (pending_bytes > 0)
return;
- if (has_rx_timer) {
- rm_timer (rx_timer_id);
- has_rx_timer = false;
+ if (rx_timer) {
+ rm_timer (rx_timer);
+ rx_timer = NULL;
}
// TODO: This loop can effectively block other engines in the same I/O
@@ -177,8 +177,8 @@ void xs::pgm_receiver_t::in_event (fd_t fd_)
if (received == 0) {
if (errno == ENOMEM || errno == EBUSY) {
const long timeout = pgm_socket.get_rx_timeout ();
- add_timer (timeout, rx_timer_id);
- has_rx_timer = true;
+ xs_assert (!rx_timer);
+ rx_timer = add_timer (timeout);
}
break;
}
@@ -250,9 +250,9 @@ void xs::pgm_receiver_t::in_event (fd_t fd_)
reset_pollin (socket_handle);
// Reset outstanding timer.
- if (has_rx_timer) {
- rm_timer (rx_timer_id);
- has_rx_timer = false;
+ if (rx_timer) {
+ rm_timer (rx_timer);
+ rx_timer = NULL;
}
break;
@@ -263,12 +263,10 @@ void xs::pgm_receiver_t::in_event (fd_t fd_)
session->flush ();
}
-void xs::pgm_receiver_t::timer_event (int token)
+void xs::pgm_receiver_t::timer_event (handle_t handle_)
{
- xs_assert (token == rx_timer_id);
-
- // Timer cancels on return by poller_base.
- has_rx_timer = false;
+ xs_assert (handle_ == rx_timer);
+ rx_timer = NULL;
in_event (retired_fd);
}