2016-11-10 18:13:26 -08:00
|
|
|
#include "task_table.h"
|
|
|
|
#include "redis.h"
|
|
|
|
|
|
|
|
#define NUM_DB_REQUESTS 2
|
|
|
|
|
2017-02-26 00:32:43 -08:00
|
|
|
void task_table_get_task(DBHandle *db_handle,
|
|
|
|
TaskID task_id,
|
|
|
|
RetryInfo *retry,
|
2017-03-01 01:17:24 -08:00
|
|
|
task_table_get_callback get_callback,
|
2016-11-10 18:13:26 -08:00
|
|
|
void *user_context) {
|
2017-12-08 11:48:21 -08:00
|
|
|
init_table_callback(
|
|
|
|
db_handle, task_id, __func__, new CommonCallbackData(NULL), retry,
|
|
|
|
(void *) get_callback, redis_task_table_get_task, user_context);
|
2016-11-10 18:13:26 -08:00
|
|
|
}
|
|
|
|
|
2017-02-26 00:32:43 -08:00
|
|
|
void task_table_add_task(DBHandle *db_handle,
|
|
|
|
OWNER Task *task,
|
|
|
|
RetryInfo *retry,
|
2016-11-10 18:13:26 -08:00
|
|
|
task_table_done_callback done_callback,
|
|
|
|
void *user_context) {
|
2017-12-08 11:48:21 -08:00
|
|
|
init_table_callback(db_handle, Task_task_id(task), __func__,
|
|
|
|
new TaskCallbackData(task), retry,
|
2017-03-01 01:17:24 -08:00
|
|
|
(table_done_callback) done_callback,
|
|
|
|
redis_task_table_add_task, user_context);
|
2016-11-10 18:13:26 -08:00
|
|
|
}
|
|
|
|
|
2017-02-26 00:32:43 -08:00
|
|
|
void task_table_update(DBHandle *db_handle,
|
|
|
|
OWNER Task *task,
|
|
|
|
RetryInfo *retry,
|
2016-11-10 18:13:26 -08:00
|
|
|
task_table_done_callback done_callback,
|
|
|
|
void *user_context) {
|
2017-12-08 11:48:21 -08:00
|
|
|
init_table_callback(db_handle, Task_task_id(task), __func__,
|
|
|
|
new TaskCallbackData(task), retry,
|
2017-03-01 01:17:24 -08:00
|
|
|
(table_done_callback) done_callback,
|
|
|
|
redis_task_table_update, user_context);
|
2016-11-10 18:13:26 -08:00
|
|
|
}
|
|
|
|
|
2017-03-21 00:16:48 -07:00
|
|
|
void task_table_test_and_update(
|
|
|
|
DBHandle *db_handle,
|
|
|
|
TaskID task_id,
|
2017-11-10 11:29:24 -08:00
|
|
|
DBClientID test_local_scheduler_id,
|
2017-03-21 00:16:48 -07:00
|
|
|
int test_state_bitmask,
|
|
|
|
int update_state,
|
|
|
|
RetryInfo *retry,
|
|
|
|
task_table_test_and_update_callback done_callback,
|
|
|
|
void *user_context) {
|
2017-02-26 00:32:43 -08:00
|
|
|
TaskTableTestAndUpdateData *update_data =
|
2017-03-01 01:17:24 -08:00
|
|
|
(TaskTableTestAndUpdateData *) malloc(sizeof(TaskTableTestAndUpdateData));
|
2017-11-10 11:29:24 -08:00
|
|
|
update_data->test_local_scheduler_id = test_local_scheduler_id;
|
2017-02-25 20:19:36 -08:00
|
|
|
update_data->test_state_bitmask = test_state_bitmask;
|
2017-02-01 19:18:46 -08:00
|
|
|
update_data->update_state = update_state;
|
|
|
|
/* Update the task entry's local scheduler with this client's ID. */
|
|
|
|
update_data->local_scheduler_id = db_handle->client;
|
2017-12-08 11:48:21 -08:00
|
|
|
init_table_callback(db_handle, task_id, __func__,
|
|
|
|
new CommonCallbackData(update_data), retry,
|
2017-03-01 01:17:24 -08:00
|
|
|
(table_done_callback) done_callback,
|
|
|
|
redis_task_table_test_and_update, user_context);
|
2017-02-01 19:18:46 -08:00
|
|
|
}
|
|
|
|
|
2016-11-10 18:13:26 -08:00
|
|
|
/* TODO(swang): A corresponding task_table_unsubscribe. */
|
2017-02-26 00:32:43 -08:00
|
|
|
void task_table_subscribe(DBHandle *db_handle,
|
|
|
|
DBClientID local_scheduler_id,
|
2017-02-05 14:52:28 -08:00
|
|
|
int state_filter,
|
2016-11-10 18:13:26 -08:00
|
|
|
task_table_subscribe_callback subscribe_callback,
|
|
|
|
void *subscribe_context,
|
2017-02-26 00:32:43 -08:00
|
|
|
RetryInfo *retry,
|
2016-11-10 18:13:26 -08:00
|
|
|
task_table_done_callback done_callback,
|
|
|
|
void *user_context) {
|
2017-03-01 01:17:24 -08:00
|
|
|
TaskTableSubscribeData *sub_data =
|
|
|
|
(TaskTableSubscribeData *) malloc(sizeof(TaskTableSubscribeData));
|
2016-12-25 23:57:05 -08:00
|
|
|
sub_data->local_scheduler_id = local_scheduler_id;
|
2016-11-10 18:13:26 -08:00
|
|
|
sub_data->state_filter = state_filter;
|
|
|
|
sub_data->subscribe_callback = subscribe_callback;
|
|
|
|
sub_data->subscribe_context = subscribe_context;
|
|
|
|
|
2017-12-08 11:48:21 -08:00
|
|
|
init_table_callback(db_handle, local_scheduler_id, __func__,
|
|
|
|
new CommonCallbackData(sub_data), retry,
|
2017-03-01 01:17:24 -08:00
|
|
|
(table_done_callback) done_callback,
|
|
|
|
redis_task_table_subscribe, user_context);
|
2016-11-10 18:13:26 -08:00
|
|
|
}
|