struct IOTimerDescriptor *iotimer_create(struct timeval *timeout) {
struct IOTimerDescriptor *descriptor = calloc(1, sizeof(*descriptor));
- if(!descriptor) {
- iolog_trigger(IOLOG_ERROR, "could not allocate memory for IOTimerDescriptor in %s:%d", __FILE__, __LINE__);
- return NULL;
- }
+ if(!descriptor) {
+ iolog_trigger(IOLOG_ERROR, "could not allocate memory for IOTimerDescriptor in %s:%d", __FILE__, __LINE__);
+ return NULL;
+ }
struct _IOTimerDescriptor *timer = _create_timer(timeout);
if(!timer) {
free(descriptor);
}
}
+void iotimer_set_timeout(struct IOTimerDescriptor *descriptor, struct timeval *timeout) {
+ struct _IOTimerDescriptor *timer = descriptor->iotimer;
+ if(timer == NULL) {
+ iolog_trigger(IOLOG_WARNING, "called iotimer_set_timeout for destroyed IOTimerDescriptor in %s:%d", __FILE__, __LINE__);
+ return;
+ }
+ if(!timeout) {
+ iolog_trigger(IOLOG_WARNING, "called iotimer_set_timeout without timeout given in %s:%d", __FILE__, __LINE__);
+ return;
+ }
+ timer->timeout = *timeout;
+ _rearrange_timer(timer);
+}
+
void iotimer_set_callback(struct IOTimerDescriptor *descriptor, iotimer_callback *callback) {
descriptor->callback = callback;
}
struct _IOTimerDescriptor *_create_timer(struct timeval *timeout) {
struct _IOTimerDescriptor *timer = calloc(1, sizeof(*timer));
- if(!timer) {
- iolog_trigger(IOLOG_ERROR, "could not allocate memory for _IOTimerDescriptor in %s:%d", __FILE__, __LINE__);
- return NULL;
- }
+ if(!timer) {
+ iolog_trigger(IOLOG_ERROR, "could not allocate memory for _IOTimerDescriptor in %s:%d", __FILE__, __LINE__);
+ return NULL;
+ }
if(timeout) {
timer->timeout = *timeout;
_rearrange_timer(timer);