int TRI_SaveStateReplicationApplier (TRI_vocbase_t* vocbase, TRI_replication_applier_state_t const* state, bool doSync) { TRI_json_t* json; char* filename; int res; json = JsonApplyState(state); if (json == NULL) { return TRI_ERROR_OUT_OF_MEMORY; } filename = GetStateFilename(vocbase); LOG_TRACE("saving replication applier state to file '%s'", filename); if (! TRI_SaveJson(filename, json, doSync)) { res = TRI_errno(); } else { res = TRI_ERROR_NO_ERROR; } TRI_FreeString(TRI_CORE_MEM_ZONE, filename); TRI_FreeJson(TRI_CORE_MEM_ZONE, json); return res; }
void gpuShowPic() { char Text[255]; gzFile f; if (!ShowPic) { unsigned char *pMem; pMem = (unsigned char *) malloc(128*96*3); if (pMem == NULL) return; GetStateFilename(Text, StatesC); GPU_freeze(2, (GPUFreeze_t *)&StatesC); f = gzopen(Text, "rb"); if (f != NULL) { gzseek(f, 32, SEEK_SET); // skip header gzseek(f, sizeof(u32), SEEK_CUR); gzseek(f, sizeof(boolean), SEEK_CUR); gzread(f, pMem, 128*96*3); gzclose(f); } else { memcpy(pMem, NoPic_Image.pixel_data, 128*96*3); DrawNumBorPic(pMem, StatesC+1); } GPU_showScreenPic(pMem); free(pMem); ShowPic = 1; } else { GPU_showScreenPic(NULL); ShowPic = 0; } }
int TRI_SaveStateReplicationApplier (TRI_vocbase_t* vocbase, TRI_replication_applier_state_t const* state, bool doSync) { TRI_json_t* json; char* filename; int res; if (vocbase->_type == TRI_VOCBASE_TYPE_COORDINATOR) { return TRI_ERROR_CLUSTER_UNSUPPORTED; } json = JsonApplyState(state); if (json == nullptr) { return TRI_ERROR_OUT_OF_MEMORY; } filename = GetStateFilename(vocbase); LOG_TRACE("saving replication applier state to file '%s'", filename); if (! TRI_SaveJson(filename, json, doSync)) { res = TRI_errno(); } else { res = TRI_ERROR_NO_ERROR; } TRI_FreeString(TRI_CORE_MEM_ZONE, filename); TRI_FreeJson(TRI_CORE_MEM_ZONE, json); return res; }
int TRI_RemoveStateReplicationApplier (TRI_vocbase_t* vocbase) { char* filename; int res; if (vocbase->_type == TRI_VOCBASE_TYPE_COORDINATOR) { return TRI_ERROR_CLUSTER_UNSUPPORTED; } filename = GetStateFilename(vocbase); if (filename == nullptr) { return TRI_ERROR_OUT_OF_MEMORY; } if (TRI_ExistsFile(filename)) { LOG_TRACE("removing replication state file '%s'", filename); res = TRI_UnlinkFile(filename); } else { res = TRI_ERROR_NO_ERROR; } TRI_FreeString(TRI_CORE_MEM_ZONE, filename); return res; }
int TRI_RemoveStateReplicationApplier (TRI_vocbase_t* vocbase) { char* filename; int res; filename = GetStateFilename(vocbase); if (filename == NULL) { return TRI_ERROR_OUT_OF_MEMORY; } if (TRI_ExistsFile(filename)) { LOG_TRACE("removing replication state file '%s'", filename); res = TRI_UnlinkFile(filename); } else { res = TRI_ERROR_NO_ERROR; } TRI_FreeString(TRI_CORE_MEM_ZONE, filename); return res; }
int TRI_LoadStateReplicationApplier (TRI_vocbase_t* vocbase, TRI_replication_applier_state_t* state) { TRI_json_t* json; TRI_json_t* serverId; char* filename; int res; TRI_InitStateReplicationApplier(state); filename = GetStateFilename(vocbase); if (filename == NULL) { return TRI_ERROR_OUT_OF_MEMORY; } LOG_TRACE("looking for replication state file '%s'", filename); if (! TRI_ExistsFile(filename)) { TRI_FreeString(TRI_CORE_MEM_ZONE, filename); return TRI_ERROR_FILE_NOT_FOUND; } LOG_TRACE("replication state file '%s' found", filename); json = TRI_JsonFile(TRI_CORE_MEM_ZONE, filename, NULL); TRI_FreeString(TRI_CORE_MEM_ZONE, filename); if (! TRI_IsArrayJson(json)) { if (json != NULL) { TRI_FreeJson(TRI_CORE_MEM_ZONE, json); } return TRI_ERROR_REPLICATION_INVALID_APPLIER_STATE; } res = TRI_ERROR_NO_ERROR; // read the server id serverId = TRI_LookupArrayJson(json, "serverId"); if (! TRI_IsStringJson(serverId)) { res = TRI_ERROR_REPLICATION_INVALID_APPLIER_STATE; } else { state->_serverId = TRI_UInt64String2(serverId->_value._string.data, serverId->_value._string.length - 1); } if (res == TRI_ERROR_NO_ERROR) { // read the ticks res |= ReadTick(json, "lastAppliedContinuousTick", &state->_lastAppliedContinuousTick); // set processed = applied state->_lastProcessedContinuousTick = state->_lastAppliedContinuousTick; } TRI_FreeJson(TRI_CORE_MEM_ZONE, json); LOG_TRACE("replication state file read successfully"); return res; }
void PADhandleKey(int key) { char Text[255]; int ret; if (Running == 0) return; switch (key) { case 0: break; case VK_F1: GetStateFilename(Text, StatesC); GPU_freeze(2, (GPUFreeze_t *)&StatesC); ret = SaveState(Text); if (ret == 0) sprintf(Text, _("*PCSXR*: Saved State %d"), StatesC+1); else sprintf(Text, _("*PCSXR*: Error Saving State %d"), StatesC+1); GPU_displayText(Text); if (ShowPic) { ShowPic = 0; gpuShowPic(); } break; case VK_F2: if (StatesC < 8) StatesC++; else StatesC = 0; GPU_freeze(2, (GPUFreeze_t *)&StatesC); if (ShowPic) { ShowPic = 0; gpuShowPic(); } break; case VK_F3: GetStateFilename(Text, StatesC); ret = LoadState(Text); if (ret == 0) sprintf(Text, _("*PCSXR*: Loaded State %d"), StatesC+1); else sprintf(Text, _("*PCSXR*: Error Loading State %d"), StatesC+1); GPU_displayText(Text); break; case VK_F4: gpuShowPic(); break; case VK_F5: Config.SioIrq ^= 0x1; if (Config.SioIrq) sprintf(Text, _("*PCSXR*: Sio Irq Always Enabled")); else sprintf(Text, _("*PCSXR*: Sio Irq Not Always Enabled")); GPU_displayText(Text); break; case VK_F6: Config.Mdec ^= 0x1; if (Config.Mdec) sprintf(Text, _("*PCSXR*: Black&White Mdecs Only Enabled")); else sprintf(Text, _("*PCSXR*: Black&White Mdecs Only Disabled")); GPU_displayText(Text); break; case VK_F7: Config.Xa ^= 0x1; if (Config.Xa == 0) sprintf (Text, _("*PCSXR*: Xa Enabled")); else sprintf (Text, _("*PCSXR*: Xa Disabled")); GPU_displayText(Text); break; case VK_F8: GPU_makeSnapshot(); return; case VK_F9: GPU_displayText(_("*PCSXR*: CdRom Case Opened")); SetCdOpenCaseTime(-1); LidInterrupt(); break; case VK_F10: GPU_displayText(_("*PCSXR*: CdRom Case Closed")); SetCdOpenCaseTime(0); LidInterrupt(); break; case VK_F12: SysPrintf("*PCSXR*: CpuReset\n"); psxReset(); break; case VK_ESCAPE: ShowCursor(TRUE); // we want GUI to have cursor always Running = 0; ClosePlugins(); SysRunGui(); break; } }