#include "tnlMethodDispatch.h"
#include "tnlNetEvent.h"
Namespaces | |
namespace | TNL |
Defines | |
#define | TNL_IMPLEMENT_RPC(className, name, args, argNames, groupMask, guaranteeType, eventDirection, rpcVersion) |
Macro used to declare the implementation of an RPC method on an EventConnection subclass. | |
#define | TNL_DECLARE_RPC(name, args) void name args; void name##_test args; virtual TNL::NetEvent * name##_construct args; virtual void name##_remote args |
Declares an RPC method within a class declaration. Creates two method prototypes - one for the host side of the RPC call, and one for the receiver, which performs the actual method. | |
#define | TNL_DECLARE_RPC_OVERRIDE(name, args) void name##_remote args |
Declares an override to an RPC method declared in a parent class. | |
#define | TNL_IMPLEMENT_RPC_OVERRIDE(className, name, args) void className::name##_remote args |
Macro used to declare the body of an overridden RPC method. | |
#define | TNL_RPC_CONSTRUCT_NETEVENT(object, rpcMethod, args) (object)->rpcMethod##_construct args |
Constructs a NetEvent that will represent the specified RPC invocation. |
|
Value: class RPC_##className##_##name : public TNL::RPCEvent { \ public: \ TNL::FunctorDecl<void (className::*) args > mFunctorDecl;\ RPC_##className##_##name() : TNL::RPCEvent(guaranteeType, eventDirection), mFunctorDecl(&className::name##_remote) { mFunctor = &mFunctorDecl; } \ TNL_DECLARE_CLASS( RPC_##className##_##name ); \ bool checkClassType(TNL::Object *theObject) { return dynamic_cast<className *>(theObject) != NULL; } }; \ TNL_IMPLEMENT_NETEVENT( RPC_##className##_##name, groupMask, rpcVersion ); \ void className::name args { RPC_##className##_##name *theEvent = new RPC_##className##_##name; theEvent->mFunctorDecl.set argNames ; postNetEvent(theEvent); } \ TNL::NetEvent * className::name##_construct args { RPC_##className##_##name *theEvent = new RPC_##className##_##name; theEvent->mFunctorDecl.set argNames ; return theEvent; } \ void className::name##_test args { RPC_##className##_##name *theEvent = new RPC_##className##_##name; theEvent->mFunctorDecl.set argNames ; TNL::PacketStream ps; theEvent->pack(this, &ps); ps.setBytePosition(0); theEvent->unpack(this, &ps); theEvent->process(this); } \ void className::name##_remote args The macro should be used in place of a member function parameter declaration, with the body code (to be executed on the remote side of the RPC) immediately following the TNL_IMPLEMENT_RPC macro call. |
|
Declares an RPC method within a class declaration. Creates two method prototypes - one for the host side of the RPC call, and one for the receiver, which performs the actual method.
|
|
Declares an override to an RPC method declared in a parent class.
|
|
Macro used to declare the body of an overridden RPC method.
|
|
Constructs a NetEvent that will represent the specified RPC invocation. This macro is used to construct a single RPC that can then be posted to multiple connections, instead of allocating an RPCEvent for each connection. |