#pragma once #include "CoreMinimal.h" #include "LockedWrapper.h" #include // 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; };