00001
00002
00003
00004
00005
00006
00007
00008 #ifndef ns_udp_mm_h
00009 #define ns_udp_mm_h
00010
00011 #include "udp.h"
00012 #include "ip.h"
00013
00014
00015 struct hdr_mm {
00016 int ack;
00017 int seq;
00018 int nbytes;
00019 double time;
00020 int scale;
00021
00022
00023 static int offset_;
00024 inline static int& offset() { return offset_; }
00025 inline static hdr_mm* access(const Packet* p) {
00026 return (hdr_mm*) p->access(offset_);
00027 }
00028 };
00029
00030
00031
00032 struct asm_mm {
00033 int seq;
00034 int rbytes;
00035 int tbytes;
00036 };
00037
00038
00039
00040 class UdpMmAgent : public UdpAgent {
00041 public:
00042 UdpMmAgent();
00043 UdpMmAgent(packet_t);
00044 virtual int supportMM() { return 1; }
00045 virtual void enableMM() { support_mm_ = 1; }
00046 virtual void sendmsg(int nbytes, const char *flags = 0);
00047 void recv(Packet*, Handler*);
00048 protected:
00049 int support_mm_;
00050 private:
00051 asm_mm asm_info;
00052 };
00053
00054 #endif