Init
This commit is contained in:
118
Samples/MasterServer/MasterClient.h
Normal file
118
Samples/MasterServer/MasterClient.h
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*/
|
||||
|
||||
// TOPOLOGY
|
||||
// Connect to master server
|
||||
// Stay connected
|
||||
// When an information query comes in, parse it and write out to a bitstream.
|
||||
// When all bitstreams are written, send that back to the master server.
|
||||
|
||||
#ifndef __MASTER_CLIENT_H
|
||||
#define __MASTER_CLIENT_H
|
||||
|
||||
#include "MasterCommon.h"
|
||||
#include "BitStream.h"
|
||||
|
||||
/// \ingroup MasterServer
|
||||
/// \brief implements the master client
|
||||
class MasterClient : public MasterCommon
|
||||
{
|
||||
public:
|
||||
MasterClient();
|
||||
~MasterClient();
|
||||
|
||||
// ---------------------------------------------------
|
||||
// NETWORKING FUNCTIONS
|
||||
// ---------------------------------------------------
|
||||
// We must be connected to call any of the following functions.
|
||||
// Host is the master server IP
|
||||
// masterServerPort is the master server port
|
||||
// masterClientPort is the port the master client should use (must be different than gamePort)
|
||||
// gamePort is the port your game server or game client is using.
|
||||
bool Connect(char* host, int masterServerPort);
|
||||
|
||||
// Disconnect and terminate. Game servers should stay connected to use NAT punch-through. Game clients,
|
||||
// or game servers that do not need NAT punch-through can disconnect.
|
||||
void Disconnect(void);
|
||||
|
||||
// Returns true if connected
|
||||
bool IsConnected(void);
|
||||
|
||||
// This will tell the master server that we are trying to connect to the indicated game server.
|
||||
// The indicated server will then also try to connect to us, bypassing most NATs
|
||||
// and increasing the chance of a successful connection. You should try connecting to the game server
|
||||
// at the same time you call this function.
|
||||
void ConnectionAttemptNotification(char *serverIP, unsigned short serverPort);
|
||||
|
||||
// ---------------------------------------------------
|
||||
// SERVER LISTING FUNCTIONS
|
||||
// ---------------------------------------------------
|
||||
// List the server.
|
||||
void ListServer(void);
|
||||
// Remove our server listing from the master server
|
||||
void DelistServer(void);
|
||||
// Add a rule about our server. Can be done before or after listing
|
||||
void PostRule(char *ruleIdentifier, char *stringData, int intData);
|
||||
// Remove a rule about our server
|
||||
void RemoveRule(char *ruleIdentifier);
|
||||
|
||||
// ---------------------------------------------------
|
||||
// SERVER QUERY FUNCTIONS
|
||||
// ---------------------------------------------------
|
||||
// Adds a rule to look for when we query. This will update existing servers that contain these rules.
|
||||
// Do not query for "Ping", "IP", or "Port" as these are automatically returned.
|
||||
void AddQueryRule(char *ruleIdentifier);
|
||||
// Clears all rules from our query list. This will return all servers.
|
||||
void ClearQueryRules(void);
|
||||
// Query the master server with our rule set. To get all servers, call ClearQueryRules() after
|
||||
// any prior calls to add AddQueryRule to clear the rule set.
|
||||
void QueryMasterServer(void);
|
||||
// Pings all servers on our list.
|
||||
void PingServers(void);
|
||||
|
||||
// ---------------------------------------------------
|
||||
// SEE MasterCommon.h FOR BROWSER FUNCTIONS
|
||||
// ---------------------------------------------------
|
||||
|
||||
// ---------------------------------------------------
|
||||
// OVERRIDABLE EVENTS
|
||||
// ---------------------------------------------------
|
||||
// Event if we lose the connection to the master server
|
||||
void OnLostConnection(void);
|
||||
// Couldn't connect
|
||||
void OnConnectionAttemptFailed(void);
|
||||
// Event if the master server is full when we try to connect
|
||||
void OnMasterServerFull(void);
|
||||
// Event if a packet was tampered with mid-steram
|
||||
void OnModifiedPacket(void);
|
||||
// Event if a server was added to the list
|
||||
void OnGameServerListAddition(GameServer *newServer);
|
||||
// Event if a server has its rules updated (only happens if querying with a rule set)
|
||||
void OnGameServerListRuleUpdate(GameServer *updatedServer);
|
||||
// Event when we complete a query
|
||||
void OnGameServerListQueryComplete(void);
|
||||
// Event when a game client wants to connect to our server
|
||||
// You should call AdvertiseSystem to the passed IP and port from your game instance
|
||||
void OnConnectionRequest(const char *clientIP, unsigned short clientPort);
|
||||
|
||||
protected:
|
||||
|
||||
void Update(RakPeerInterface *peer);
|
||||
bool OnReceive(RakPeerInterface *peer, Packet *packet);
|
||||
|
||||
void HandleServerListResponse(Packet *packet, bool overwriteExisting);
|
||||
void HandleRelayedConnectionNotification(Packet *packet);
|
||||
|
||||
bool listServer, serverListed, localServerModified;
|
||||
GameServer localServer;
|
||||
BitStream ruleIdentifierList;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user