Migrated task_manager_t to INIT/METHOD macros
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2007 Tobias Brunner
|
* Copyright (C) 2007 Tobias Brunner
|
||||||
* Copyright (C) 2007 Martin Willi
|
* Copyright (C) 2007-2010 Martin Willi
|
||||||
* Hochschule fuer Technik Rapperswil
|
* Hochschule fuer Technik Rapperswil
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
@@ -195,10 +195,8 @@ static bool activate_task(private_task_manager_t *this, task_type_t type)
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, retransmit, status_t,
|
||||||
* Implementation of task_manager_t.retransmit
|
private_task_manager_t *this, u_int32_t message_id)
|
||||||
*/
|
|
||||||
static status_t retransmit(private_task_manager_t *this, u_int32_t message_id)
|
|
||||||
{
|
{
|
||||||
if (message_id == this->initiating.mid)
|
if (message_id == this->initiating.mid)
|
||||||
{
|
{
|
||||||
@@ -281,11 +279,8 @@ static status_t retransmit(private_task_manager_t *this, u_int32_t message_id)
|
|||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, initiate, status_t,
|
||||||
* build a request using the active task list
|
private_task_manager_t *this)
|
||||||
* Implementation of task_manager_t.initiate
|
|
||||||
*/
|
|
||||||
static status_t build_request(private_task_manager_t *this)
|
|
||||||
{
|
{
|
||||||
iterator_t *iterator;
|
iterator_t *iterator;
|
||||||
task_t *task;
|
task_t *task;
|
||||||
@@ -534,7 +529,7 @@ static status_t process_response(private_task_manager_t *this,
|
|||||||
{ /* start all over again if we were reset */
|
{ /* start all over again if we were reset */
|
||||||
this->reset = FALSE;
|
this->reset = FALSE;
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
return build_request(this);
|
return initiate(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
@@ -544,7 +539,7 @@ static status_t process_response(private_task_manager_t *this,
|
|||||||
this->initiating.packet->destroy(this->initiating.packet);
|
this->initiating.packet->destroy(this->initiating.packet);
|
||||||
this->initiating.packet = NULL;
|
this->initiating.packet = NULL;
|
||||||
|
|
||||||
return build_request(this);
|
return initiate(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -883,10 +878,8 @@ static status_t process_request(private_task_manager_t *this,
|
|||||||
return build_response(this, message);
|
return build_response(this, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, process_message, status_t,
|
||||||
* Implementation of task_manager_t.process_message
|
private_task_manager_t *this, message_t *msg)
|
||||||
*/
|
|
||||||
static status_t process_message(private_task_manager_t *this, message_t *msg)
|
|
||||||
{
|
{
|
||||||
u_int32_t mid = msg->get_message_id(msg);
|
u_int32_t mid = msg->get_message_id(msg);
|
||||||
|
|
||||||
@@ -943,10 +936,8 @@ static status_t process_message(private_task_manager_t *this, message_t *msg)
|
|||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, queue_task, void,
|
||||||
* Implementation of task_manager_t.queue_task
|
private_task_manager_t *this, task_t *task)
|
||||||
*/
|
|
||||||
static void queue_task(private_task_manager_t *this, task_t *task)
|
|
||||||
{
|
{
|
||||||
if (task->get_type(task) == IKE_MOBIKE)
|
if (task->get_type(task) == IKE_MOBIKE)
|
||||||
{ /* there is no need to queue more than one mobike task */
|
{ /* there is no need to queue more than one mobike task */
|
||||||
@@ -969,11 +960,10 @@ static void queue_task(private_task_manager_t *this, task_t *task)
|
|||||||
this->queued_tasks->insert_last(this->queued_tasks, task);
|
this->queued_tasks->insert_last(this->queued_tasks, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, adopt_tasks, void,
|
||||||
* Implementation of task_manager_t.adopt_tasks
|
private_task_manager_t *this, task_manager_t *other_public)
|
||||||
*/
|
|
||||||
static void adopt_tasks(private_task_manager_t *this, private_task_manager_t *other)
|
|
||||||
{
|
{
|
||||||
|
private_task_manager_t *other = (private_task_manager_t*)other_public;
|
||||||
task_t *task;
|
task_t *task;
|
||||||
|
|
||||||
/* move queued tasks from other to this */
|
/* move queued tasks from other to this */
|
||||||
@@ -986,19 +976,14 @@ static void adopt_tasks(private_task_manager_t *this, private_task_manager_t *ot
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, busy, bool,
|
||||||
* Implementation of task_manager_t.busy
|
private_task_manager_t *this)
|
||||||
*/
|
|
||||||
static bool busy(private_task_manager_t *this)
|
|
||||||
{
|
{
|
||||||
return (this->active_tasks->get_count(this->active_tasks) > 0);
|
return (this->active_tasks->get_count(this->active_tasks) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, reset, void,
|
||||||
* Implementation of task_manager_t.reset
|
private_task_manager_t *this, u_int32_t initiate, u_int32_t respond)
|
||||||
*/
|
|
||||||
static void reset(private_task_manager_t *this,
|
|
||||||
u_int32_t initiate, u_int32_t respond)
|
|
||||||
{
|
{
|
||||||
task_t *task;
|
task_t *task;
|
||||||
|
|
||||||
@@ -1028,10 +1013,8 @@ static void reset(private_task_manager_t *this,
|
|||||||
this->reset = TRUE;
|
this->reset = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
METHOD(task_manager_t, destroy, void,
|
||||||
* Implementation of task_manager_t.destroy
|
private_task_manager_t *this)
|
||||||
*/
|
|
||||||
static void destroy(private_task_manager_t *this)
|
|
||||||
{
|
{
|
||||||
flush(this);
|
flush(this);
|
||||||
|
|
||||||
@@ -1049,34 +1032,31 @@ static void destroy(private_task_manager_t *this)
|
|||||||
*/
|
*/
|
||||||
task_manager_t *task_manager_create(ike_sa_t *ike_sa)
|
task_manager_t *task_manager_create(ike_sa_t *ike_sa)
|
||||||
{
|
{
|
||||||
private_task_manager_t *this = malloc_thing(private_task_manager_t);
|
private_task_manager_t *this;
|
||||||
|
|
||||||
this->public.process_message = (status_t(*)(task_manager_t*,message_t*))process_message;
|
INIT(this,
|
||||||
this->public.queue_task = (void(*)(task_manager_t*,task_t*))queue_task;
|
.public = {
|
||||||
this->public.initiate = (status_t(*)(task_manager_t*))build_request;
|
.process_message = _process_message,
|
||||||
this->public.retransmit = (status_t(*)(task_manager_t*,u_int32_t))retransmit;
|
.queue_task = _queue_task,
|
||||||
this->public.reset = (void(*)(task_manager_t*,u_int32_t,u_int32_t))reset;
|
.initiate = _initiate,
|
||||||
this->public.adopt_tasks = (void(*)(task_manager_t*,task_manager_t*))adopt_tasks;
|
.retransmit = _retransmit,
|
||||||
this->public.busy = (bool(*)(task_manager_t*))busy;
|
.reset = _reset,
|
||||||
this->public.destroy = (void(*)(task_manager_t*))destroy;
|
.adopt_tasks = _adopt_tasks,
|
||||||
|
.busy = _busy,
|
||||||
this->ike_sa = ike_sa;
|
.destroy = _destroy,
|
||||||
this->responding.packet = NULL;
|
},
|
||||||
this->initiating.packet = NULL;
|
.ike_sa = ike_sa,
|
||||||
this->responding.mid = 0;
|
.initiating.type = EXCHANGE_TYPE_UNDEFINED,
|
||||||
this->initiating.mid = 0;
|
.queued_tasks = linked_list_create(),
|
||||||
this->initiating.type = EXCHANGE_TYPE_UNDEFINED;
|
.active_tasks = linked_list_create(),
|
||||||
this->queued_tasks = linked_list_create();
|
.passive_tasks = linked_list_create(),
|
||||||
this->active_tasks = linked_list_create();
|
.retransmit_tries = lib->settings->get_int(lib->settings,
|
||||||
this->passive_tasks = linked_list_create();
|
"charon.retransmit_tries", RETRANSMIT_TRIES),
|
||||||
this->reset = FALSE;
|
.retransmit_timeout = lib->settings->get_double(lib->settings,
|
||||||
|
"charon.retransmit_timeout", RETRANSMIT_TIMEOUT),
|
||||||
this->retransmit_tries = lib->settings->get_int(lib->settings,
|
.retransmit_base = lib->settings->get_double(lib->settings,
|
||||||
"charon.retransmit_tries", RETRANSMIT_TRIES);
|
"charon.retransmit_base", RETRANSMIT_BASE),
|
||||||
this->retransmit_timeout = lib->settings->get_double(lib->settings,
|
);
|
||||||
"charon.retransmit_timeout", RETRANSMIT_TIMEOUT);
|
|
||||||
this->retransmit_base = lib->settings->get_double(lib->settings,
|
|
||||||
"charon.retransmit_base", RETRANSMIT_BASE);
|
|
||||||
|
|
||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user