25 lines
1.4 KiB
C
25 lines
1.4 KiB
C
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "command_queue.h"
|
|
#include "game_lifecycle.h"
|
|
|
|
/* The application task is the sole owner of lifecycle and game mutations. */
|
|
typedef struct { command_queue_t command_queue; game_lifecycle_t lifecycle; } application_t;
|
|
|
|
void application_init(application_t *application, random_source_t random);
|
|
void application_set_bot_scheduler(application_t *application, scheduler_t scheduler);
|
|
bool application_enqueue(application_t *application, const app_command_t *command);
|
|
bool application_take_next_command(application_t *application, app_command_t *command);
|
|
lifecycle_result_t application_join(application_t *application, role_t requested_role, const char *name,
|
|
uint8_t *session_index);
|
|
lifecycle_result_t application_resume(application_t *application,
|
|
const uint8_t token[kSessionTokenBytes], uint8_t *session_index);
|
|
bool application_session_for_token(const application_t *application,
|
|
const uint8_t token[kSessionTokenBytes], uint8_t *session_index);
|
|
lifecycle_result_t application_leave(application_t *application, uint8_t session_index, uint32_t game_id,
|
|
recovery_reason_t reason);
|
|
lifecycle_result_t application_submit(application_t *application, const app_command_t *command);
|
|
bool application_bot_take_turn(application_t *application);
|