MCPcopy Create free account
hub / github.com/Netis/cloud-probe / build_full_task_set

Function build_full_task_set

cpworker/src/task.c:1184–1262  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1182}
1183
1184static int build_full_task_set(Config *config, struct TaskList *current_tasks,
1185 task_stats_summary_t *current_stats_summary, build_task_set_result_t *result)
1186{
1187 struct TaskList *tasks = malloc(sizeof(struct TaskList));
1188 if (!tasks)
1189 {
1190 log_error("malloc failed");
1191 return -1;
1192 }
1193 struct TaskErrorList *errors = malloc(sizeof(struct TaskErrorList));
1194 if (errors == NULL)
1195 {
1196 log_error("malloc failed");
1197 free(tasks);
1198 return -1;
1199 }
1200 TAILQ_INIT(tasks);
1201 TAILQ_INIT(errors);
1202
1203 task_t *item;
1204 task_t *titem;
1205
1206 char errbuf[ERROR_BUFFER_SIZE];
1207 TaskConfig *task_config;
1208 for (int i = 0; i < config->tasks_cfg->num_tasks; ++i)
1209 {
1210 task_config = config->tasks_cfg->tasks[i];
1211 task_t *existing_task = find_task_by_fingerprint(task_config->fingerprint, current_tasks);
1212 if (existing_task)
1213 {
1214 // reuse existing task
1215 task_t *task = task_wrapper_new(i, task_config->fingerprint, existing_task->task);
1216 if (!task)
1217 goto error;
1218 TAILQ_INSERT_TAIL(tasks, task, next);
1219 log_info("existing task-%d, fingerprint=%s", i, task_config->fingerprint);
1220 continue;
1221 }
1222
1223 // create new task
1224 capture_task_t *cap_task = capture_task_new(config->tasks_cfg, task_config, current_stats_summary, errbuf);
1225 if (!cap_task)
1226 {
1227 log_error("new task-%d error: %s", i, errbuf);
1228 task_error_t *error = task_error_new(i, task_config->fingerprint, errbuf);
1229 if (!error)
1230 goto error;
1231 TAILQ_INSERT_TAIL(errors, error, next);
1232 continue;
1233 }
1234
1235 task_t *task = task_wrapper_new(i, task_config->fingerprint, cap_task);
1236 if (!task)
1237 {
1238 capture_task_destroy(cap_task);
1239 goto error;
1240 }
1241 log_info("create task-%d success", i);

Callers 1

reload_do_buildFunction · 0.85

Calls 7

find_task_by_fingerprintFunction · 0.85
task_wrapper_newFunction · 0.85
capture_task_newFunction · 0.85
task_error_newFunction · 0.85
capture_task_destroyFunction · 0.85
destroy_task_error_listFunction · 0.85
free_taskFunction · 0.70

Tested by

no test coverage detected