7 "@(#) $Header: /cvsroot/nsnam/ns-2/apps/tskagent.cc,v 1.21 2005/08/26 05:05:28 tomh Exp $ (Xerox)";
24 TclObject*
create(
int,
const char*
const*) {
31 bind(
"packetSize_", &size_);
36 bind(
"packetSize_", &size_);
50 printf(
"Error: sendmsg() for Tsk should not be -1\n");
55 if (data && nbytes > size_) {
56 printf(
"Error: data greater than maximum Tsk packet size\n");
60 double local_time = Scheduler::instance().clock();
63 hdr_cmn::access(p)->size() = size_;
64 hdr_cmn::access(p)->pt_obj_addr() = 0;
65 if (initialseqno ==
seqno_){
67 hdr_cmn::access(p)->pt_obj_addr() = pTaskObj;
69 hdr_rtp* rh = hdr_rtp::access(p);
72 hdr_cmn::access(p)->timestamp() =
74 if (flags && (0 ==strcmp(flags,
"NEW_BURST")))
82 hdr_cmn::access(p)->size() = n;
83 hdr_cmn::access(p)->pt_obj_addr() = 0;
84 if (initialseqno ==
seqno_){
86 hdr_cmn::access(p)->pt_obj_addr() = pTaskObj;
88 hdr_rtp* rh = hdr_rtp::access(p);
91 hdr_cmn::access(p)->timestamp() =
93 if (flags && (0 == strcmp(flags,
"NEW_BURST")))
104 hdr_cmn* h = hdr_cmn::access(pkt);
105 app_->process_data(h->size(), pkt->userdata());
106 }
else if (pkt->userdata() && pkt->userdata()->type() == PACKET_DATA) {
114 PacketData* data = (PacketData*)pkt->userdata();
116 hdr_ip* iph = hdr_ip::access(pkt);
117 Tcl& tcl = Tcl::instance();
118 tcl.evalf(
"%s process_data %d {%s}", name(),
119 iph->src_.addr_ >> Address::instance().NodeShift_[1],
145 return (Agent::command(argc, argv));
virtual void sendmsg(int nbytes, void *pTaskObj, const char *flags=0)
virtual void recv(Packet *pkt, Handler *)
TskComAgentClass class_tsk_comagent
TclObject * create(int, const char *const *)
static const char rcsid[]
virtual int command(int argc, const char *const *argv)