Files
libsst/Include/ZSimulation/ZRemotePeer.hpp
2026-04-03 00:22:39 -05:00

74 lines
1.7 KiB
C++

/*
RemoteClient.hpp
Author: Patrick Baggett <ptbaggett@762studios.com>, James Russell <jcrussell@762studios.com>
Created: 12/2/2013
Purpose:
Network peer as seen by a running simulation. May refer to either a
client or another server instance.
License:
Copyright 2013, 762 Studios.
*/
#ifndef __ZREMOTEPEER_HPP
#define __ZREMOTEPEER_HPP
#include <enet/enet.h>
class ZRemotePeer
{
public:
// the client state
enum PeerState {
AVAILABLE,
JOINING,
CONNECTED,
CONNECTED_LOCAL,
DISCONNECTED
};
// c'tor
ZRemotePeer() : bIsClient(true),
State(AVAILABLE),
Peer(NULL) { }
// getters
cID GetId() const { return Id; }
PeerState GetState() const { return State; }
bool IsClient() const { return bIsClient; }
const char* GetName() const { return Name; }
const char* GetHost() const { return Host; }
ENetPeer* GetPeer() { return Peer; }
// setters
void SetId(cID id) { Id = id; }
void SetState(PeerState cs) { State = cs; }
void SetClient(bool isClient) { bIsClient = isClient; }
void SetName(const char* name) { strcpy(Name, name); }
void SetHostIP(const char* host) { strcpy(Host, host); }
void SetPeer(ENetPeer* newPeer) { Peer = newPeer; }
// resets this peer object (must be called to reuse object and connection id)
void Reset() {
SetPeer(NULL);
SetState(AVAILABLE);
SetName("");
SetHostIP("");
SetClient(true);
}
private:
cID Id; // id of this connection assigned by network service
ENetPeer* Peer; // peer object
PeerState State; // overall state
bool bIsClient; // true if this connects to a client
char Host[ZSIM_NETWORK_MAX_HOST_LENGTH]; // host name in readable format
char Name[ZSIM_NETWORK_MAX_NAME_LENGTH]; // network 'name' (unique among network peers)
};
#endif