X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffiles.c;h=fa1c14f8cadc7491f6a6b1f53ee27c1cc5ba8da2;hb=721b2961c414daaa4ff380a8c1b83c2d65b00d79;hp=fc45f7731b298cf7f3ff9d1d2c496c0ed0e85b15;hpb=ab3d5a2937d41e04be3ae8884d9295d59ff346cd;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index fc45f773..fa1c14f8 100644 --- a/src/files.c +++ b/src/files.c @@ -9074,11 +9074,34 @@ struct ApiGetScoreThreadData char *score_cache_filename; }; -static void ApiGetScoreExt(struct HttpRequest *request, - struct HttpResponse *response, - int level_nr, - char *score_cache_filename) +static void *CreateThreadData_ApiGetScore(int nr) { + struct ApiGetScoreThreadData *data = + checked_malloc(sizeof(struct ApiGetScoreThreadData)); + char *score_cache_filename = getScoreCacheFilename(nr); + + data->level_nr = nr; + data->score_cache_filename = getStringCopy(score_cache_filename); + + return data; +} + +static void FreeThreadData_ApiGetScore(void *data_raw) +{ + struct ApiGetScoreThreadData *data = data_raw; + + checked_free(data->score_cache_filename); + checked_free(data); +} + +static void ApiGetScore_HttpRequest(struct HttpRequest *request, + struct HttpResponse *response, + void *data_raw) +{ + struct ApiGetScoreThreadData *data = data_raw; + int level_nr = data->level_nr; + char *score_cache_filename = data->score_cache_filename; + request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; request->method = API_SERVER_METHOD; @@ -9148,39 +9171,24 @@ static void ApiGetScoreExt(struct HttpRequest *request, server_scores.updated = TRUE; } -static void ApiGetScore(int level_nr, char *score_cache_filename) +static int ApiGetScoreThread(void *data_raw) { struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest)); struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse)); - ApiGetScoreExt(request, response, - level_nr, score_cache_filename); + ApiGetScore_HttpRequest(request, response, data_raw); + + FreeThreadData_ApiGetScore(data_raw); checked_free(request); checked_free(response); -} - -static int ApiGetScoreThread(void *data_raw) -{ - struct ApiGetScoreThreadData *data = data_raw; - - ApiGetScore(data->level_nr, - data->score_cache_filename); - - checked_free(data->score_cache_filename); - checked_free(data); return 0; } static void ApiGetScoreAsThread(int nr) { - struct ApiGetScoreThreadData *data = - checked_malloc(sizeof(struct ApiGetScoreThreadData)); - char *score_cache_filename = getScoreCacheFilename(nr); - - data->level_nr = nr; - data->score_cache_filename = getStringCopy(score_cache_filename); + struct ApiGetScoreThreadData *data = CreateThreadData_ApiGetScore(nr); ExecuteAsThread(ApiGetScoreThread, "ApiGetScore", data, @@ -9334,12 +9342,39 @@ struct ApiAddScoreThreadData struct ScoreEntry score_entry; }; -static void ApiAddScoreExt(struct HttpRequest *request, - struct HttpResponse *response, - int level_nr, - char *score_tape_filename, - struct ScoreEntry *score_entry) +static void *CreateThreadData_ApiAddScore(int nr, char *score_tape_filename) { + struct ApiAddScoreThreadData *data = + checked_malloc(sizeof(struct ApiAddScoreThreadData)); + struct ScoreEntry *score_entry = &scores.entry[scores.last_added]; + + if (score_tape_filename == NULL) + score_tape_filename = getScoreTapeFilename(score_entry->tape_basename, nr); + + data->level_nr = nr; + data->score_entry = *score_entry; + data->score_tape_filename = getStringCopy(score_tape_filename); + + return data; +} + +static void FreeThreadData_ApiAddScore(void *data_raw) +{ + struct ApiAddScoreThreadData *data = data_raw; + + checked_free(data->score_tape_filename); + checked_free(data); +} + +static void ApiAddScore_HttpRequest(struct HttpRequest *request, + struct HttpResponse *response, + void *data_raw) +{ + struct ApiAddScoreThreadData *data = data_raw; + int level_nr = data->level_nr; + char *score_tape_filename = data->score_tape_filename; + struct ScoreEntry *score_entry = &data->score_entry; + request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; request->method = API_SERVER_METHOD; @@ -9444,29 +9479,17 @@ static void ApiAddScoreExt(struct HttpRequest *request, server_scores.uploaded = TRUE; } -static void ApiAddScore(int level_nr, char *score_tape_filename, - struct ScoreEntry *score_entry) +static int ApiAddScoreThread(void *data_raw) { struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest)); struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse)); - ApiAddScoreExt(request, response, - level_nr, score_tape_filename, score_entry); + ApiAddScore_HttpRequest(request, response, data_raw); + + FreeThreadData_ApiAddScore(data_raw); checked_free(request); checked_free(response); -} - -static int ApiAddScoreThread(void *data_raw) -{ - struct ApiAddScoreThreadData *data = data_raw; - - ApiAddScore(data->level_nr, - data->score_tape_filename, - &data->score_entry); - - checked_free(data->score_tape_filename); - checked_free(data); return 0; } @@ -9474,15 +9497,7 @@ static int ApiAddScoreThread(void *data_raw) static void ApiAddScoreAsThread(int nr, char *score_tape_filename) { struct ApiAddScoreThreadData *data = - checked_malloc(sizeof(struct ApiAddScoreThreadData)); - struct ScoreEntry *score_entry = &scores.entry[scores.last_added]; - - if (score_tape_filename == NULL) - score_tape_filename = getScoreTapeFilename(score_entry->tape_basename, nr); - - data->level_nr = nr; - data->score_entry = *score_entry; - data->score_tape_filename = getStringCopy(score_tape_filename); + CreateThreadData_ApiAddScore(nr, score_tape_filename); ExecuteAsThread(ApiAddScoreThread, "ApiAddScore", data,