// Copyright 2022 David Romanski (Socke). All Rights Reserved. #pragma once #include "SocketClient.h" class SOCKETCLIENT_API FSocketClientUDPSendDataThead : public FRunnable { public: FSocketClientUDPSendDataThead(USocketClientUDP* udpClientP, USocketClientBPLibrary* socketClientP, FString mySocketipP, int32 mySocketportP); ~FSocketClientUDPSendDataThead(); virtual uint32 Run() override; void addData(FString messageP, TArray byteArrayP, FString domainOrIP, int32 port, ESocketClientIPType ipType); void pauseThread(bool pause); void sendBytes(FSocket*& socketP, TArray& byteArray, int32& sent, TSharedRef& addr); private: USocketClientUDP* udpClient = nullptr; USocketClientBPLibrary* socketClient = nullptr; FString mySocketip; int32 mySocketport = 0; FString sendToip; int32 sendToport = 0; FString sendToDomainOrIP = FString(); FRunnableThread* thread = nullptr; bool paused; TQueue messageQueue; TQueue> byteArrayQueue; int32 maxPacketSize = 65507; bool validInternetAdress = false; TSharedRef internetAdress = USocketClientBPLibrary::getSocketSubSystem()->CreateInternetAddr(); int64 lastErrorMessageTime = 0; };