bool FCheckInLatentCommand::Update() { if(!AsyncHelper.IsDispatched()) { TSharedRef<FCheckIn, ESPMode::ThreadSafe> CheckInOperation = ISourceControlOperation::Create<FCheckIn>(); CheckInOperation->SetDescription(TEXT("[AUTOMATED TEST] Automatic checkin, testing functionality.")); if(!ISourceControlModule::Get().GetProvider().Execute( CheckInOperation, SourceControlHelpers::PackageFilename(AsyncHelper.GetParameter()), EConcurrency::Asynchronous, FSourceControlOperationComplete::CreateRaw( &AsyncHelper, &FAsyncCommandHelper::SourceControlOperationComplete ) )) { return true; } AsyncHelper.SetDispatched(); } if(AsyncHelper.IsDone()) { // check state now we are done TSharedPtr<ISourceControlState, ESPMode::ThreadSafe> SourceControlState = ISourceControlModule::Get().GetProvider().GetState(SourceControlHelpers::PackageFilename(AsyncHelper.GetParameter()), EStateCacheUsage::Use); if(!SourceControlState.IsValid()) { UE_LOG(LogSourceControl, Error, TEXT("Could not retrieve state for file '%s'"), *AsyncHelper.GetParameter()); } else { if(!SourceControlState->IsSourceControlled() || !SourceControlState->CanCheckout()) { UE_LOG(LogSourceControl, Error, TEXT("Unexpected state following Check In operation for file '%s'"), *AsyncHelper.GetParameter()); } } } return AsyncHelper.IsDone(); }
bool FRevertLatentCommand::Update() { if(!AsyncHelper.IsDispatched()) { if(!ISourceControlModule::Get().GetProvider().Execute( ISourceControlOperation::Create<FRevert>(), SourceControlHelpers::PackageFilename(AsyncHelper.GetParameter()), EConcurrency::Asynchronous, FSourceControlOperationComplete::CreateRaw( &AsyncHelper, &FAsyncCommandHelper::SourceControlOperationComplete ) )) { return true; } AsyncHelper.SetDispatched(); } if(AsyncHelper.IsDone()) { // check state now we are done TSharedPtr<ISourceControlState, ESPMode::ThreadSafe> SourceControlState = ISourceControlModule::Get().GetProvider().GetState(SourceControlHelpers::PackageFilename(AsyncHelper.GetParameter()), EStateCacheUsage::Use); if(!SourceControlState.IsValid()) { UE_LOG(LogSourceControl, Error, TEXT("Could not retrieve state for file '%s'"), *AsyncHelper.GetParameter()); } else { if(SourceControlState->IsSourceControlled()) { if(!SourceControlState->CanCheckout()) { UE_LOG(LogSourceControl, Error, TEXT("Unexpected state following Revert operation for file '%s'"), *AsyncHelper.GetParameter()); } } } } return AsyncHelper.IsDone(); }