|
|
- #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;
- };
|