74 lines
1.7 KiB
C++
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 |