#ifndef _NS_MGEN_AGENT
#define _NS_MGEN_AGENT
#include "nsProtoSimAgent.h" // from Protolib
#include "mgen.h"
// This class lets us "sink" MGEN messages to a
// generic ns-2 transport "Agent"
class NsMgenSink : public MgenSink
{
public:
NsMgenSink(Agent* theAgent);
~NsMgenSink();
virtual bool SendMgenMessage(const char* txBuffer,
unsigned int len,
const ProtoAddress& dstAddr);
private:
Agent* agent;
}; // end class NsMgenSink
class NsMgenAgent : public NsProtoSimAgent
{
public:
NsMgenAgent();
~NsMgenAgent();
// NsProtoSimAgent base class overrides
virtual bool OnStartup(int argc, const char*const* argv);
virtual bool ProcessCommands(int argc, const char*const* argv);
virtual void OnShutdown();
void SetSink(MgenSink* theSink) {mgen.SetSink(theSink);}
class Mgen* GetMgenInstance() {return &mgen;}
void HandleMgenMessage(char* buffer,
unsigned int len,
const ProtoAddress& srcAddr)
{
mgen.HandleMgenMessage(buffer, len, srcAddr);
}
private:
static bool GetPosition(const void* agentPtr, GPSPosition& gpsPosition);
Mgen mgen; // our MGEN engine
NsMgenSink* ns_sink; // ptr to generic ns-2 sink (if applicable)
}; // end class NsMgenAgent
#endif // _NS_MGEN_AGENT
syntax highlighted by Code2HTML, v. 0.9.1