Files
integration/Source/Integration/LuprexSockets.h

51 lines
1.4 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "LockedWrapper.h"
#include <string>
// Class FlxSockets
//
// This class is responsible for creating outgoing and incoming
// sockets for the Luprex engine. It then relays data into and out
// of the Luprex engine.
//
// It only has one interesting method: Update(). This one method
// does all the communication for the Luprex engine. Note that
// there aren't any methods where Unreal can query the state
// of the FlxSockets. That's because this class is for
// communication between Luprex and outside servers and clients,
// NOT for communication with Unreal.
//
// The FlxSockets keeps a pointer to the EngineWrapper.
// The EngineWrapper must outlive the FlxSockets.
//
// This class is an abstract base class. A derived class
// implements all the behavior.
//
struct EngineWrapper;
class FlxSockets
{
protected:
FlxSockets() {}
public:
// Create the Luprex socket system.
static FlxSockets* Create(FlxLockedWrapper &w);
// Close all sockets.
virtual void ForceCloseEverything(FlxLockedWrapper& w) = 0;
// The update routine relays data into and out of
// luprex via TCP/IP sockets.
virtual void Update(FlxLockedWrapper& w) = 0;
// Delete the luprex socket system.
// You must call ForceCloseEverything first.
virtual ~FlxSockets() {}
// Obtain any error status report.
virtual std::string GetError() = 0;
};