void elist_push( ELIST *volatile *list, ELIST *volatile *node, cexception_t *ex ) { sllist_push( (SLLIST *volatile *)list, (SLLIST *volatile *)node, ex ); }
bool game_buffer_editor_add_mpk_job(game_buffer *game_buffer, game_buffer_editor_job **ptr_to_new_job) { game_buffer_editor_job *job = (game_buffer_editor_job *)memory_pool_allocate(&game_buffer->editor->job_memory_pool); if (!job) { return false; } *job = {}; static uint64 job_id_counter = 0; job->id = job_id_counter; job_id_counter += 1; job->status = game_buffer_editor_job_progress; job->type = game_buffer_editor_job_mpk_import_type; sllist_push(&game_buffer->editor->job_list, job); *ptr_to_new_job = job; return true; }
void mpk_import_add_named_pipe_instance(common_vars *common_vars) { HANDLE named_pipe_handle = CreateNamedPipeA("\\\\.\\pipe\\" m_mpk_import_named_pipe_name, PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE, PIPE_UNLIMITED_INSTANCES, 4096, 4096, 0, nullptr); if (!named_pipe_handle) { m_last_error_str(err); m_die("cannot create mpk import named pipe instance, call to \"CreateNamedPipeA\" failed\nerr: %s", err); } HANDLE io_completion_port = CreateIoCompletionPort(named_pipe_handle, common_vars->io_completion_port, mpk_import_named_pipe_event, 0); if (!io_completion_port) { m_last_error_str(err_str); m_die("cannot connect mpk import named pipe to io completion port, call to \"CreateIoCompletionPort\" failed\nerr: %s", err_str); } mpk_import_named_pipe_instance *new_named_pipe_instance = (mpk_import_named_pipe_instance *)memory_pool_allocate(&common_vars->mpk_import_named_pipe_instance_memory_pool); *new_named_pipe_instance = {}; new_named_pipe_instance->handle = named_pipe_handle; sllist_push(&common_vars->mpk_import_named_pipe_instance_list, new_named_pipe_instance); ConnectNamedPipe(named_pipe_handle, &new_named_pipe_instance->overlapped); }