A modded EditSaber for making beat saber maps.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

42 lines
1.6 KiB

#pragma once
#include "Object.h"
#include "ZipOperation.generated.h"
class SevenZipCallbackHandler;
/**
* Used to track a zip/unzip operation on the WFULambdaRunnable ThreadPool and allows the ability to terminate the
* operation early.
*/
UCLASS(BlueprintType)
class ZIPUTILITY_API UZipOperation : public UObject
{
GENERATED_BODY()
public:
UZipOperation();
// Stops this zip/unzip if it is still valid. This stop event can occur in two places:
// 1. The ThreadPool queue, if it can be stopped here then the operation has not yet started.
// 2. The SevenZip layer, once the operation has started, it can be canceled while still running.
// Note that calling this carries no guarantees of a successful stop, the end result might be one of:
// * The file still got extracted (you were too late)
// * The file was never extracted (caught it on time)
// * The file was created but is of zero size (oops)
// * The file was created, is of non-zero size but is not all there (cut off in the middle)
// So, it could be a good idea to do some file housekeeping afterward.
UFUNCTION(BlueprintCallable, Category = "Zip Operation")
void StopOperation();
// Set the callback handler
void SetCallbackHandler(SevenZipCallbackHandler* Handler);
// Set the queued work
void SetThreadPoolWorker(IQueuedWork* Work);
private:
// A pointer to the callback for this operation. Once the operation completes, this
// pointer will become invalid.
SevenZipCallbackHandler* CallbackHandler;
// The work that was queued on the async threadpool in WFULambdaRunnable
IQueuedWork* ThreadPoolWork;
};