A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
ApexWebSocket.h
Go to the documentation of this file.
1// Copyright 2023 PixoVR Corp. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "ApexSDKDefines.h"
7#include "ApexJSON.h"
8#include "ApexWebSocket.generated.h"
9
10class IWebSocket;
11
16
17USTRUCT(BlueprintType)
18struct APEXSDK_API FAPEXAuthenticationCode : public FJsonable
19{
22 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Apex|Authentication Code")
23 FString AuthCode;
24
26 {
27 // Create a default
28 AuthCode = "XXX-XXX";
29 }
31 virtual void FromJsonObject(const TSharedPtr<FJsonObject>& JObject) override
32 {
33 if (JObject->HasField("auth_code"))
34 AuthCode = JObject->GetStringField("auth_code");
35 }
36};
37
39{
40public:
41
44
45 DECLARE_EVENT_OneParam(ApexWebSocket, FApexSocketAuthCodeRetrieved, FString AuthenticationCode);
46 FApexSocketAuthCodeRetrieved& OnApexAuthCodeRetrieved() { return ApexAuthCodeRetrievedEvent; }
47
48 DECLARE_EVENT_OneParam(ApexWebSocket, FApexSocketAuthenticateComplete, class UVaRestJsonObject* LoginJsonObject);
49 FApexSocketAuthenticateComplete& OnApexAuthenticateComplete() { return ApexAuthenticateCompleteEvent; }
50
51 DECLARE_EVENT(ApexWebSocket, FApexSocketConnected);
52 FApexSocketConnected& OnApexWebSocketConnected() { return ApexConnectedEvent; }
54 DECLARE_EVENT_OneParam(ApexWebSocket, FApexSocketConnectFailed, const FString&);
55 FApexSocketConnectFailed& OnApexWebSocketConnectFailed() { return ApexConnectFailedEvent; }
57 DECLARE_EVENT_ThreeParams(ApexWebSocket, FApexSocketDisconnected, int32 StatusCode, const FString& Reason, bool bWasClean);
58 FApexSocketDisconnected& OnApexWebSocketDisconnected() { return ApexDisconnectedEvent; }
60 bool AttemptConnect(FString Uri, FString Protocol = "wss");
63
64private:
65 void SetupSocket(TSharedPtr<IWebSocket>& Socket, FString Uri, FString Protocol);
66 void ProcessNextRequest();
67 void CleanUpRequests();
68
69 void SendData(FString Data);
70
73
74private:
75 TSharedPtr<IWebSocket> WebSocket;
76 TArray<ApexWebSocketRequestType> PendingWebsocketRequests;
77
78 FApexSocketAuthCodeRetrieved ApexAuthCodeRetrievedEvent;
79 FApexSocketAuthenticateComplete ApexAuthenticateCompleteEvent;
80 FApexSocketConnected ApexConnectedEvent;
81 FApexSocketConnectFailed ApexConnectFailedEvent;
82 FApexSocketDisconnected ApexDisconnectedEvent;
83};
ApexWebSocketRequestType
@ AuthorizationCode
bool IsWebsocketConnected()
void SetupSocket(TSharedPtr< IWebSocket > &Socket, FString Uri, FString Protocol)
void SendData(FString Data)
void RequestAuthorizationCode()
DECLARE_EVENT(ApexWebSocket, FApexSocketConnected)
DECLARE_EVENT_OneParam(ApexWebSocket, FApexSocketAuthCodeRetrieved, FString AuthenticationCode)
DECLARE_EVENT_OneParam(ApexWebSocket, FApexSocketAuthenticateComplete, class UVaRestJsonObject *LoginJsonObject)
FApexSocketAuthCodeRetrieved & OnApexAuthCodeRetrieved()
DECLARE_EVENT_OneParam(ApexWebSocket, FApexSocketConnectFailed, const FString &)
FApexSocketConnectFailed ApexConnectFailedEvent
void HandleAuthenticateComplete(UVaRestJsonObject *JsonObject)
FApexSocketConnectFailed & OnApexWebSocketConnectFailed()
bool AttemptConnect(FString Uri, FString Protocol="wss")
DECLARE_EVENT_ThreeParams(ApexWebSocket, FApexSocketDisconnected, int32 StatusCode, const FString &Reason, bool bWasClean)
void HandleAuthCodeReceived(UVaRestJsonObject *JsonObject)
FApexSocketDisconnected & OnApexWebSocketDisconnected()
FApexSocketAuthCodeRetrieved ApexAuthCodeRetrievedEvent
TSharedPtr< IWebSocket > WebSocket
FApexSocketConnected & OnApexWebSocketConnected()
FApexSocketConnected ApexConnectedEvent
FApexSocketDisconnected ApexDisconnectedEvent
FApexSocketAuthenticateComplete ApexAuthenticateCompleteEvent
FApexSocketAuthenticateComplete & OnApexAuthenticateComplete()
TArray< ApexWebSocketRequestType > PendingWebsocketRequests
void ProcessNextRequest()
UCLASS(BlueprintType, Blueprintable)
USTRUCT(BlueprintType)
virtual void FromJsonObject(const TSharedPtr< FJsonObject > &JObject) override
FString AuthCode
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Apex|Authentication Code")
USTRUCT()
Definition ApexJSON.h:13
virtual void FromJsonObject(const TSharedPtr< FJsonObject > &JObject)
Definition ApexJSON.h:18