libnative-utilities/include/raknet/RakNetCommandParser.hpp
2024-08-15 18:40:30 +08:00

71 lines
2.7 KiB
C++

/*
* Copyright (c) 2014, Oculus VR, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
/// \file
/// \brief Contains RakNetCommandParser , used to send commands to an instance of RakPeer
///
#include "NativeFeatureIncludes.hpp"
#if _RAKNET_SUPPORT_RakNetCommandParser==1
#ifndef __RAKNET_COMMAND_PARSER
#define __RAKNET_COMMAND_PARSER
#include "CommandParserInterface.hpp"
#include "Export.hpp"
namespace RakNet
{
class RakPeerInterface;
/// \brief This allows a console client to call most of the functions in RakPeer
class RAK_DLL_EXPORT RakNetCommandParser : public CommandParserInterface
{
public:
// GetInstance() and DestroyInstance(instance*)
STATIC_FACTORY_DECLARATIONS(RakNetCommandParser)
RakNetCommandParser();
~RakNetCommandParser();
/// Given \a command with parameters \a parameterList , do whatever processing you wish.
/// \param[in] command The command to process
/// \param[in] numParameters How many parameters were passed along with the command
/// \param[in] parameterList The list of parameters. parameterList[0] is the first parameter and so on.
/// \param[in] transport The transport interface we can use to write to
/// \param[in] systemAddress The player that sent this command.
/// \param[in] originalString The string that was actually sent over the network, in case you want to do your own parsing
bool OnCommand(const char *command, unsigned numParameters, char **parameterList, TransportInterface *transport, const SystemAddress &systemAddress, const char *originalString);
/// You are responsible for overriding this function and returning a static string, which will identifier your parser.
/// This should return a static string
/// \return The name that you return.
const char *GetName(void) const;
/// A callback for when you are expected to send a brief description of your parser to \a systemAddress
/// \param[in] transport The transport interface we can use to write to
/// \param[in] systemAddress The player that requested help.
void SendHelp(TransportInterface *transport, const SystemAddress &systemAddress);
/// Records the instance of RakPeer to perform the desired commands on
/// \param[in] rakPeer The RakPeer instance, or a derived class (e.g. RakPeer or RakPeer)
void SetRakPeerInterface(RakNet::RakPeerInterface *rakPeer);
protected:
/// Which instance of RakPeer we are working on. Set from SetRakPeerInterface()
RakPeerInterface *peer;
};
} // namespace RakNet
#endif
#endif // _RAKNET_SUPPORT_*