Add iomux_from_timers() function to recover an IOMux from

the associated UCTimers
This commit is contained in:
Nils O. Selåsdal
2014-06-22 23:11:12 +02:00
parent 2c264a76b4
commit 2d1e7efc3e
4 changed files with 16 additions and 1 deletions
+5
View File
@@ -132,6 +132,11 @@ int iomux_update_events(struct IOMux *mux, struct IOMuxFD *fd, unsigned int what
*/
struct UCTimers *iomux_get_timers(struct IOMux *mux);
/** Given an UCTimers associated with an IOMux, return the associated IOMux.
* (the UCTimers must previously been obtained from iomux_get_timers directly,
* or indirectly by the UCTimers provieded in a timer callback handler.
*/
struct IOMux *iomux_from_timers(struct UCTimers *timers);
#ifdef __cplusplus
}
#endif
+5
View File
@@ -168,3 +168,8 @@ struct UCTimers *iomux_get_timers(struct IOMux *mux)
return &mux->timers;
}
struct IOMux *iomux_from_timers(struct UCTimers *timers)
{
return (struct IOMux*)timers; //timers is the 1. member of IOMux
}
+1 -1
View File
@@ -29,7 +29,7 @@ struct IOMuxOps {
};
struct IOMux {
/* TImer instance */
/* TImer instance - must be the 1. member*/
struct UCTimers timers;
/**
+5
View File
@@ -1,5 +1,6 @@
#define DEBUG
#include <getopt.h>
#include <assert.h>
#include <errno.h>
#include <stdlib.h>
#include <time.h>
@@ -76,6 +77,7 @@ void peer_timer_cb(struct UCTimers *timers, struct UCTimer *timer)
struct HBPeer *peer = UC_CONTAINER_OF(timer, struct HBPeer, timer);
struct HBContext *ctx = timer->cookie_ptr;
time_t now;
struct IOMux *mux;
uc_timers_add(timers, timer, PEER_HB_MISS , 0);
now = time(NULL);
@@ -85,6 +87,9 @@ void peer_timer_cb(struct UCTimers *timers, struct UCTimer *timer)
}
peer_send(ctx, peer);
//jsut a small test of iomux_from_timers
mux = iomux_from_timers(timers);
assert(mux == ctx->mux);
}
void peer_add_addr(struct HBContext *ctx, const struct sockaddr_in *addr)