151 lines
5.1 KiB
C++
151 lines
5.1 KiB
C++
// Copyright 2017-2020 David Romanski(Socke). All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "WebCommunication.h"
|
|
#include "WebCommunicationRequestCompleteObject.generated.h"
|
|
|
|
class UWebCommunicationBPLibrary;
|
|
class FWebcomThread;
|
|
|
|
enum class EMultiStepType : uint8
|
|
{
|
|
GOOGLE UMETA(DisplayName = "GoogleDrive"),
|
|
GOOGLE_INFO UMETA(DisplayName = "GoogleDriveInfo"),
|
|
ANONFILE UMETA(DisplayName = "Anonfiles")
|
|
};
|
|
|
|
UCLASS(Blueprintable, BlueprintType)
|
|
class WEBCOMMUNICATION_API UWebCommunicationRequestCompleteObject : public UObject
|
|
{
|
|
|
|
GENERATED_UCLASS_BODY()
|
|
~UWebCommunicationRequestCompleteObject();
|
|
|
|
virtual void BeginDestroy() override;
|
|
|
|
public:
|
|
void requestComplete(FHttpRequestPtr Request, FHttpResponsePtr response, bool bWasSuccessful);
|
|
void requestCompleteInternal(FHttpRequestPtr Request, FHttpResponsePtr response, bool bWasSuccessful);
|
|
|
|
void requestCompleteLowRam(FHttpRequestPtr Request, FHttpResponsePtr response, bool bWasSuccessful);
|
|
void requestCompleteLowRamInternal(FHttpRequestPtr Request, FHttpResponsePtr response, bool bWasSuccessful);
|
|
|
|
#if ENGINE_MAJOR_VERSION >= 5 & ENGINE_MINOR_VERSION >= 4
|
|
void requestMultiStepDownload(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressUpload(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressDownload(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressServerSendEvent(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressDownloadLowRam(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
#else
|
|
void requestMultiStepDownload(FHttpRequestPtr request, int32 bytesSent, int32 bytesReceived);
|
|
void requestProgressUpload(FHttpRequestPtr request, int32 bytesSent, int32 bytesReceived);
|
|
void requestProgressDownload(FHttpRequestPtr request, int32 bytesSent, int32 bytesReceived);
|
|
void requestProgressServerSendEvent(FHttpRequestPtr request, int32 bytesSent, int32 bytesReceived);
|
|
void requestProgressDownloadLowRam(FHttpRequestPtr request, int32 bytesSent, int32 bytesReceived);
|
|
#endif
|
|
|
|
|
|
void requestMultiStepDownloadInternal(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressUploadInternal(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressDownloadInternal(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressServerSendEventInternal(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
void requestProgressDownloadLowRamInternal(FHttpRequestPtr request, uint64 bytesSent, uint64 bytesReceived);
|
|
|
|
|
|
void setRequestID(FString requestID, struct FhttpRequest& httpRequest, UWebCommunicationBPLibrary* webCommunicationBPLibrary);
|
|
FString getRequestID();
|
|
|
|
void setRequestStruct(struct FhttpRequest& httpRequest);
|
|
|
|
void setDownloadID(FString downloadID);
|
|
FString getDownloadID();
|
|
|
|
|
|
void setMultiStepDownload(int32 step);
|
|
int32 getMultiStepDownload();
|
|
void setMultiStepDownloadType(EMultiStepType multiStepDownloadType);
|
|
EMultiStepType getMultiStepDownloadType();
|
|
int64 getHTMLFileSize();
|
|
void setHTMLFileSize(int64 htmlfilesize);
|
|
|
|
void requestMultiStepComplete(FHttpRequestPtr Request, FHttpResponsePtr response, bool bWasSuccessful);
|
|
|
|
|
|
|
|
//EHTTPWebComFileDownloadResumeType actionIfFileExists;
|
|
//void setActionIfFileExists(EHTTPWebComFileDownloadResumeType actionIfFileExists);
|
|
//EHTTPWebComFileDownloadResumeType getActionIfFileExists();
|
|
|
|
|
|
int64 fileCancelResumeDownloadByteFullSize = 0;
|
|
void setFileCancelResumeDownloadByteFullSize(int64 size);
|
|
int64 getFileCancelResumeDownloadByteFullSize();
|
|
|
|
int64 fileCancelResumeDownloadBytePartSize = 0;
|
|
void setFileCancelResumeDownloadBytePartSize(int64 size);
|
|
int64 getFileCancelResumeDownloadBytePartSize();
|
|
|
|
int64 fileCancelResumeDownloadByteStart = 0;
|
|
void setFileCancelResumeDownloadByteStart(int64 size);
|
|
int64 getFileCancelResumeDownloadByteStart();
|
|
|
|
FString fileCancelResumeDownloadDir;
|
|
void setFileCancelResumeDownloadDir(FString dir);
|
|
FString getFileCancelResumeDownloadDir();
|
|
|
|
void initWebCom();
|
|
|
|
//void setWebComHttpRequest(struct FhttpRequest httpRequest);
|
|
|
|
FWebcomThread* thread = nullptr;
|
|
|
|
private:
|
|
|
|
struct FhttpRequest httpRequest;
|
|
|
|
FString requestID;
|
|
FString downloadID;
|
|
UWebCommunicationBPLibrary* webCommunicationBPLibrary = nullptr;
|
|
|
|
int32 multiStepDownload;
|
|
EMultiStepType multiStepDownloadType;
|
|
int64 HTMLFileSize;
|
|
|
|
FString generateURLFromHTML(FString html,FString oldURL);
|
|
|
|
int64 bytesCurrent = 0;
|
|
int32 bytesReceivedLastTime = 0;
|
|
float mbit = 0;
|
|
int64 lastTimeTicks = 0;
|
|
|
|
|
|
|
|
TArray<uint8> downloadDataCopy;
|
|
|
|
|
|
};
|
|
|
|
|
|
class WEBCOMMUNICATION_API FWebcomThread : public FRunnable {
|
|
|
|
public:
|
|
|
|
//FWebcomThread(int32 controllerIndexP, USimpleControllerBPLibrary* mainP);
|
|
FWebcomThread(UWebCommunicationRequestCompleteObject* parentObjectP);
|
|
|
|
~FWebcomThread();
|
|
|
|
virtual uint32 Run() override;
|
|
void stopThread();
|
|
void pauseThread(bool pause);
|
|
void addJob(FWebcomTheadJob* job);
|
|
|
|
private:
|
|
|
|
UWebCommunicationRequestCompleteObject* parentObject = nullptr;
|
|
FRunnableThread* thread = nullptr;
|
|
|
|
bool run = true;
|
|
bool paused = false;
|
|
TQueue<FWebcomTheadJob*> jobQueue;
|
|
}; |