jetbrains/rd-host/PeerBase.h (36 lines of code) (raw):
#ifndef JETBRAINS_RENDERDOC_PEER_BASE_H
#define JETBRAINS_RENDERDOC_PEER_BASE_H
#include "lifetime/LifetimeDefinition.h"
#include "protocol/Protocol.h"
#include "scheduler/SimpleScheduler.h"
#include "wire/SocketWire.h"
namespace jetbrains
{
namespace renderdoc
{
template <class TWire>
class PeerBase
{
protected:
using printer_t = std::vector<std::string>;
rd::SimpleScheduler scheduler{};
rd::LifetimeDefinition definition{false};
rd::Lifetime model_lifetime = definition.lifetime;
rd::LifetimeDefinition socket_definition{false};
rd::Lifetime socket_lifetime = definition.lifetime;
std::shared_ptr<TWire> wire;
std::unique_ptr<rd::IProtocol> protocol;
public:
PeerBase() = default;
virtual ~PeerBase() = default;
protected:
virtual int run() = 0;
void terminate()
{
socket_definition.terminate();
definition.terminate();
}
};
} // namespace renderdoc
} // namespace jetbrains
#endif // JETBRAINS_RENDERDOC_PEER_BASE_H