Files
UE_SpaceStudio/InteractiveControl/Plugins/SimpleUDPTCPSocketClient/Source/SocketClient/Private/SocketClientAsyncNodes.cpp
T

82 lines
3.3 KiB
C++

// Copyright 2022 David Romanski(Socke). All Rights Reserved.
#include "SocketClientAsyncNodes.h"
/*--- TCP -------------------------------------------------------------------------------------------------------------*/
UTCPConnectAsyncNode* UTCPConnectAsyncNode::socketClientTCPConnectionAsyncNode(FString domainOrI, ESocketClientIPType ipType, int32 port,
EReceiveFilterClient receiveFilters, ESocketClientTCPSeparator messageWrapping, FString optionalCustomConnectionID, bool disableNaglesAlgorithm) {
UTCPConnectAsyncNode* instance = NewObject<UTCPConnectAsyncNode>();
instance->domainOrIP = domainOrI;
instance->ipType = ipType;
instance->port = port;
instance->receiveFilters = receiveFilters;
instance->messageWrapping = messageWrapping;
instance->optionalCustomConnectionID = optionalCustomConnectionID;
instance->disableNaglesAlgorithm = disableNaglesAlgorithm;
instance->AddToRoot();
//The node is only visible in Blueprints if the function is declared in a UBlueprintAsyncActionBase class.
//Therefore an instance of itself is created here.
return instance;
}
void UTCPConnectAsyncNode::Activate() {
USocketClientBPLibrary::getSocketClientTarget()->connectSocketClientTCPNonStatic(domainOrIP, ipType, port, receiveFilters,
messageWrapping,optionalCustomConnectionID, connectionID, this, disableNaglesAlgorithm);
}
void UTCPConnectAsyncNode::triggerConnectionEvent(bool success, FString clientConnectionID, FString serverMessage){
if (success) {
OnConnect.Broadcast(serverMessage, clientConnectionID, "", TArray<uint8>());
}
else {
OnDisconnect.Broadcast(serverMessage, clientConnectionID, "", TArray<uint8>());
}
}
void UTCPConnectAsyncNode::triggerMessageEvent(TArray<uint8> byteDataArray, FString clientConnectionID, FString serverMessage){
OnServerMessage.Broadcast("",clientConnectionID,serverMessage,byteDataArray);
}
/*--- UDP -------------------------------------------------------------------------------------------------------------*/
UUDPInitAsyncNode* UUDPInitAsyncNode::socketClientInitUDPReceiverAsyncNode(FString domainOrIP,ESocketClientIPType ipType, int32 port,
EReceiveFilterClient receiveFilter, int32 maxPacketSize) {
UUDPInitAsyncNode* instance = NewObject<UUDPInitAsyncNode>();
instance->domainOrIP = domainOrIP;
instance->ipType = ipType;
instance->port = port;
instance->receiveFilter = receiveFilter;
instance->maxPacketSize = maxPacketSize;
instance->AddToRoot();
//The node is only visible in Blueprints if the function is declared in a UBlueprintAsyncActionBase class.
//Therefore an instance of itself is created here.
return instance;
}
void UUDPInitAsyncNode::Activate() {
USocketClientBPLibrary::getSocketClientTarget()->socketClientInitUDPReceiverNonStatic(connectionID, this,domainOrIP, ipType, port,
receiveFilter, maxPacketSize);
}
void UUDPInitAsyncNode::triggerInitEvent(bool success, FString clientConnectionID, FString serverMessage) {
if (success) {
OnSuccess.Broadcast(serverMessage, clientConnectionID,"",0, "", TArray<uint8>());
}
else {
OnFail.Broadcast(serverMessage, clientConnectionID, "",0,"", TArray<uint8>());
}
}
void UUDPInitAsyncNode::triggerMessageEvent(TArray<uint8> byteDataArray, FString clientConnectionID, FString serverMessage, FString peerIP, int32 peerPort) {
OnServerMessage.Broadcast("", clientConnectionID,peerIP, peerPort, serverMessage, byteDataArray);
}