#include <mftp_snd.h>
Inheritance diagram for MFTPSndAgent:


Public Member Functions | |
| MFTPSndAgent () | |
| virtual | ~MFTPSndAgent () |
| int | command (int argc, const char *const *argv) |
| void | recv (Packet *p, Handler *h) |
| virtual void | recv (Packet *p, const char *s) |
| void | recvOnly (Packet *) |
| void | send (Packet *p, Handler *h) |
| virtual void | send (int sz, AppData *data) |
| virtual void | send (int nbytes) |
| virtual void | timeout (int tno) |
| virtual void | sendmsg (int sz, AppData *, const char *flags=0) |
| virtual void | sendmsg (int nbytes, const char *flags=0) |
| virtual void | sendto (int sz, AppData *, const char *flags, nsaddr_t dst) |
| virtual void | sendto (int nbytes, const char *flags, nsaddr_t dst) |
| virtual void | connect (nsaddr_t dst) |
| virtual void | close () |
| virtual void | listen () |
| virtual void | attachApp (Application *app) |
| virtual int & | size () |
| nsaddr_t & | addr () |
| nsaddr_t & | port () |
| nsaddr_t & | daddr () |
| nsaddr_t & | dport () |
| void | set_pkttype (packet_t pkttype) |
| packet_t | get_pkttype () |
| NsObject * | target () |
| virtual void | drop (Packet *p) |
| int | isdebug () const |
| virtual void | debug (const char *fmt,...) |
Protected Member Functions | |
| void | fill_read_ahead_buf () |
| void | init_user_file (unsigned long readAheadBufsize) |
| int | send_data () |
| void | send_status_request (unsigned long pass_nb, unsigned long block_lo, unsigned long block_hi, double txStatusDelay) |
| void | process_nak (hdr_mftp::Spec::Nak &nak, unsigned char *nak_bitmap, unsigned long currentPass) |
| int | init () |
| unsigned long | nb_blocks () const |
| unsigned long | get_dtus_per_group (unsigned long group_nb) const |
| virtual void | delay_bind_init_all () |
| virtual int | delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer) |
| virtual void | recvBytes (int bytes) |
| virtual void | idle () |
| Packet * | allocpkt () const |
| Packet * | allocpkt (int) const |
| void | initpkt (Packet *) const |
| virtual void | trace (TracedVar *v) |
| void | deleteAgentTrace () |
| void | addAgentTrace (const char *name) |
| void | monitorAgentTrace () |
| OldValue * | lookupOldValue (TracedVar *v) |
| void | insertOldValue (TracedVar *v, const char *value) |
| void | dumpTracedVars () |
| virtual void | trace_event (char *eventtype) |
| virtual void | drop (Packet *p, const char *s) |
| virtual void | reset () |
| void | handle (Event *) |
Protected Attributes | |
| int | readAheadBufsize_ |
| double | txStatusDelay_ |
| int | nakCount_ |
| unsigned char * | naks |
| unsigned char * | retx |
| unsigned long | fseek_offset |
| unsigned long | read_ahead_bufsize |
| unsigned long | CurrentPass |
| unsigned long | CurrentGroup |
| CW_PATTERN_t | CwPat |
| unsigned long | MinGroupNbInBuf |
| unsigned long | NbGroupsInBuf |
| Codeword | iterator |
| int | dtuSize_ |
| int | fileSize_ |
| int | dtusPerBlock_ |
| int | dtusPerGroup_ |
| int | seekCount_ |
| unsigned long | FileSize |
| unsigned long | FileDGrams |
| unsigned long | dtu_size |
| unsigned long | dtus_per_block |
| unsigned long | dtus_per_group |
| unsigned long | nb_groups |
| ns_addr_t | here_ |
| ns_addr_t | dst_ |
| int | size_ |
| packet_t | type_ |
| int | fid_ |
| int | prio_ |
| int | flags_ |
| int | defttl_ |
| Tcl_Channel | channel_ |
| char * | traceName_ |
| OldValue * | oldValueList_ |
| Application * | app_ |
| EventTrace * | et_ |
| NsObject * | target_ |
| NsObject * | drop_ |
| int | debug_ |
Static Protected Attributes | |
| int | uidcnt_ |
|
|
Definition at line 64 of file mftp_snd.cc. References nakCount_, readAheadBufsize_, and txStatusDelay_.
00065 : MFTPAgent(), 00066 naks(0), 00067 retx(0), 00068 fseek_offset(0), 00069 read_ahead_bufsize(0), 00070 CurrentPass(0), 00071 CurrentGroup(0), 00072 CwPat(0), 00073 MinGroupNbInBuf(0), 00074 NbGroupsInBuf(0) 00075 { 00076 bind("readAheadBufsize_", &readAheadBufsize_); 00077 bind_time("txStatusDelay_", &txStatusDelay_); 00078 bind("nakCount_", &nakCount_); 00079 } |
|
|
Definition at line 81 of file mftp_snd.cc.
|
|
|
Definition at line 326 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::dst_, Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command().
00327 {
00328 char wrk[256];
00329 int n;
00330 double curTime = (&Scheduler::instance() == NULL ? 0 :
00331 Scheduler::instance().clock());
00332
00333 sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s",
00334 curTime, here_.addr_, dst_.addr_, name);
00335 n = strlen(wrk);
00336 wrk[n] = '\n';
00337 wrk[n+1] = 0;
00338 if (channel_)
00339 (void)Tcl_Write(channel_, wrk, n+1);
00340 // keep agent trace name
00341 if (traceName_ != NULL)
00342 delete[] traceName_;
00343 traceName_ = new char[strlen(name)+1];
00344 strcpy(traceName_, name);
00345 }
|
Here is the call graph for this function:

|
|
|
Definition at line 517 of file agent.cc. References Packet::allocdata(), and Agent::allocpkt().
|
Here is the call graph for this function:

|
Here is the call graph for this function:

|
|
Definition at line 372 of file agent.cc. References Agent::app_. Referenced by HttpMInvalCache::command(), Application::command(), TcpApp::TcpApp(), and TcpApp::~TcpApp().
00373 {
00374 app_ = app;
00375 }
|
|
|
Reimplemented in FullTcpAgent. Definition at line 377 of file agent.cc. Referenced by Agent::command().
00378 {
00379 }
|
|
||||||||||||
|
Reimplemented from Agent. Definition at line 87 of file mftp_snd.cc. References Agent::command(), MFTPAgent::init(), init_user_file(), readAheadBufsize_, send_data(), and send_status_request().
00088 {
00089 Tcl& tcl = Tcl::instance();
00090
00091 if(strcmp(argv[1], "send") == 0) {
00092 if(strcmp(argv[2], "data") == 0) {
00093 return send_data();
00094 } else if(strcmp(argv[2], "statreq") == 0) {
00095 unsigned long pass_nb, block_lo, block_hi;
00096 double rsp_backoff_window=2343.2343;
00097 int nb_scanned = 0;
00098 if(argc == 7) {
00099 nb_scanned += sscanf(argv[3], "%lu", &pass_nb);
00100 nb_scanned += sscanf(argv[4], "%lu", &block_lo);
00101 nb_scanned += sscanf(argv[5], "%lu", &block_hi);
00102 nb_scanned += sscanf(argv[6], "%lf", &rsp_backoff_window);
00103 }
00104 if(nb_scanned != 4) {
00105 tcl.resultf("%s: wrong number of parameters for \"send statreq\"", name_);
00106 return TCL_ERROR;
00107 }
00108 send_status_request(pass_nb, block_lo, block_hi, rsp_backoff_window);
00109 return TCL_OK;
00110 }
00111 }
00112 if(strcmp(argv[1], "start") == 0) {
00113 if(MFTPAgent::init() == TCL_ERROR) {
00114 return TCL_ERROR;
00115 };
00116 init_user_file((unsigned long) readAheadBufsize_);
00117 return TCL_OK;
00118 }
00119 return Agent::command(argc, argv);
00120 }
|
Here is the call graph for this function:

|
|
Definition at line 389 of file agent.cc. Referenced by Agent::command().
00390 {
00391 /*
00392 dst_ = dst;
00393 */
00394 }
|
|
|
||||||||||||
|
Definition at line 102 of file object.cc. References NsObject::debug_.
00103 {
00104 if (!debug_)
00105 return;
00106 va_list ap;
00107 va_start(ap, fmt);
00108 vprintf(fmt, ap);
00109 }
|
|
||||||||||||||||
|
Reimplemented from NsObject. Reimplemented in BayFullTcpAgent, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 93 of file agent.cc. References ns_addr_t::addr_, Agent::defttl_, NsObject::delay_bind_dispatch(), Agent::dst_, Agent::fid_, Agent::flags_, Agent::here_, ns_addr_t::port_, and Agent::prio_. Referenced by TcpAgent::delay_bind_dispatch(), TcpSink::delay_bind_dispatch(), and LDPAgent::delay_bind_dispatch().
00094 {
00095 if (delay_bind(varName, localName, "agent_addr_", (int*)&(here_.addr_), tracer)) return TCL_OK;
00096 if (delay_bind(varName, localName, "agent_port_", (int*)&(here_.port_), tracer)) return TCL_OK;
00097 if (delay_bind(varName, localName, "dst_addr_", (int*)&(dst_.addr_), tracer)) return TCL_OK;
00098 if (delay_bind(varName, localName, "dst_port_", (int*)&(dst_.port_), tracer)) return TCL_OK;
00099 if (delay_bind(varName, localName, "fid_", (int*)&fid_, tracer)) return TCL_OK;
00100 if (delay_bind(varName, localName, "prio_", (int*)&prio_, tracer)) return TCL_OK;
00101 if (delay_bind(varName, localName, "flags_", (int*)&flags_, tracer)) return TCL_OK;
00102 if (delay_bind(varName, localName, "ttl_", &defttl_, tracer)) return TCL_OK;
00103 if (delay_bind(varName, localName, "class_", (int*)&fid_, tracer)) return TCL_OK;
00104 return Connector::delay_bind_dispatch(varName, localName, tracer);
00105 }
|
Here is the call graph for this function:

|
|
Reimplemented from NsObject. Reimplemented in BayFullTcpAgent, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 78 of file agent.cc. References NsObject::delay_bind_init_all(). Referenced by TcpAgent::delay_bind_init_all(), TcpSink::delay_bind_init_all(), and LDPAgent::delay_bind_init_all().
00079 {
00080 delay_bind_init_one("agent_addr_");
00081 delay_bind_init_one("agent_port_");
00082 delay_bind_init_one("dst_addr_");
00083 delay_bind_init_one("dst_port_");
00084 delay_bind_init_one("fid_");
00085 delay_bind_init_one("prio_");
00086 delay_bind_init_one("flags_");
00087 delay_bind_init_one("ttl_");
00088 delay_bind_init_one("class_");
00089 Connector::delay_bind_init_all();
00090 }
|
Here is the call graph for this function:

|
|
Definition at line 222 of file agent.cc. References ns_addr_t::addr_, Agent::dst_, Agent::flushAVar(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command().
00223 {
00224 char wrk[256];
00225
00226 // XXX we don't know InstVar outside of Tcl! Is there any
00227 // tracedvars hidden in InstVar? If so, shall we have a tclclInt.h?
00228 TracedVar* var = tracedvar_;
00229 for ( ; var != 0; var = var->next_)
00230 flushAVar(var);
00231
00232 // we need to flush all var values to trace file,
00233 // so nam can do backtracing
00234 sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s -x",
00235 Scheduler::instance().clock(), here_.addr_,
00236 dst_.addr_, traceName_);
00237 if (traceName_ != NULL)
00238 delete[] traceName_;
00239 traceName_ = NULL;
00240 }
|
Here is the call graph for this function:

|
|
Definition at line 99 of file agent.h. References Agent::dst_, nsaddr_t, and ns_addr_t::port_. Referenced by DSDV_Agent::lost_link(), TcpAsymSink::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().
|
|
||||||||||||
|
Definition at line 114 of file connector.cc. References Connector::drop_, Packet::free(), and NsObject::recv().
00115 {
00116 if (drop_ != 0)
00117 drop_->recv(p, s);
00118 else
00119 Packet::free(p);
00120 }
|
Here is the call graph for this function:

|
Here is the call graph for this function:

|
|
|
|
|
Definition at line 266 of file mftp_snd.cc. References bitcount(), CurrentGroup, CwPat, MFTPAgent::dtu_size, MFTPAgent::dtus_per_group, MFTPAgent::FileSize, fseek_offset, IS_BIT_CLEARED, len, min, minbit(), MinGroupNbInBuf, naks, MFTPAgent::nb_groups, NbGroupsInBuf, read_ahead_bufsize, and MFTPAgent::seekCount_. Referenced by send_data().
00267 {
00268 unsigned int dtu_pos; // loops over [0..dtus_per_group)
00269 unsigned long seek_offset; // where to position the head for disk seeks
00270 unsigned long buf_pos = 0; // position where data is written (into main memory) when
00271 // read from disk, relative to the start of read_ahead_buf
00272 CW_PATTERN_t cw_pat_tmp = CwPat;
00273 unsigned long i;
00274 unsigned long len;
00275
00276 // switch to next group that must be read:
00277 MinGroupNbInBuf = CurrentGroup;
00278 NbGroupsInBuf = min(read_ahead_bufsize / (bitcount(CwPat) * dtu_size),
00279 nb_groups - MinGroupNbInBuf);
00280 while(cw_pat_tmp != 0) {
00281 dtu_pos = minbit(cw_pat_tmp);
00282 assert(0 <= dtu_pos && dtu_pos < dtus_per_group);
00283 assert(MinGroupNbInBuf + NbGroupsInBuf <= nb_groups);
00284
00285 cw_pat_tmp &= ~((CW_PATTERN_t) 1 << dtu_pos); // clear bit at position "dtu_pos"
00286
00287 for(i = MinGroupNbInBuf;
00288 i < MinGroupNbInBuf + NbGroupsInBuf; ++i) {
00289
00290 // continue with for-loop if group i was not NACKed by anyone
00291 if(IS_BIT_CLEARED(naks, i)) {
00292 buf_pos += dtu_size;
00293 continue;
00294 }
00295
00296 // Note: there is never data accessed "outside" the file as the while-loop
00297 // is left as soon as the last (possibly partial) DTU has been read.
00298 seek_offset = (dtu_pos * nb_groups + i) * dtu_size;
00299 if(seek_offset >= FileSize) {
00300 // we can get there if the last group(s) have fewer than
00301 // dtus_per_group packets. If we get here, we are ready.
00302 return; // OK
00303 }
00304
00305 if (fseek_offset != seek_offset) {
00306 // do the fseek here (omitted)
00307 seekCount_++;
00308 fseek_offset = seek_offset;
00309 }
00310
00311 // determine number of bytes to read
00312 len = min(dtu_size, FileSize - fseek_offset);
00313
00314 // read len bytes from file here (omitted)
00315 fseek_offset += len;
00316
00317 buf_pos += len;
00318 if(len < dtu_size) {
00319 // we get here if the last dtu is smaller than dtu_size and if
00320 // we have just read that last dtu
00321
00322 assert(fseek_offset == FileSize); // we must be at EOF
00323
00324 // clear rest of read-ahead-buffer here (omitted)
00325 buf_pos = bitcount(CwPat) * NbGroupsInBuf * dtu_size;
00326 return; // that's it, no more packets to process
00327 }
00328 assert(len == dtu_size);
00329 assert(buf_pos <= bitcount(CwPat) * NbGroupsInBuf * dtu_size);
00330 } // for
00331 } // while
00332 // we get here only if no group was read with less than dtus_per_group packets and
00333 // the if not the last packet was read (in case it is too short)
00334 assert(buf_pos == bitcount(CwPat) * NbGroupsInBuf * dtu_size);
00335 }
|
Here is the call graph for this function:

|
|
Definition at line 104 of file mftp.h. References MFTPAgent::dtus_per_group, MFTPAgent::FileDGrams, and MFTPAgent::nb_groups. Referenced by MFTPRcvAgent::is_group_full(), MFTPRcvAgent::process_packet(), and send_data().
00105 {
00106 assert(0 <= group_nb && group_nb < nb_groups);
00107 assert(nb_groups > 0);
00108
00109 unsigned long res = FileDGrams / nb_groups;
00110
00111 if(group_nb < FileDGrams % nb_groups) {
00112 res++;
00113 }
00114 assert(0 <= res && res <= dtus_per_group);
00115 assert(res == 0 || FileDGrams > 0);
00116 return res;
00117 }
|
|
|
Definition at line 101 of file agent.h. References packet_t, and Agent::type_. Referenced by CBR_Traffic::init().
00101 { return type_; }
|
|
|
Implements Handler. Reimplemented in LinkDelay, LL, AckRecons, and Snoop. Definition at line 91 of file object.cc. References NsObject::recv().
|
Here is the call graph for this function:

|
|
Definition at line 363 of file agent.cc. References Agent::app_, and Application::resume(). Referenced by FullTcpAgent::foutput(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), BayFullTcpAgent::output(), UdpAgent::sendmsg(), SA_Agent::sendmsg(), and RTPAgent::sendmsg().
|
Here is the call graph for this function:

|
|
Reimplemented in MFTPRcvAgent. Definition at line 41 of file mftp.cc. References MFTPAgent::dtu_size, MFTPAgent::dtus_per_block, MFTPAgent::dtus_per_group, MFTPAgent::dtuSize_, MFTPAgent::dtusPerBlock_, MFTPAgent::dtusPerGroup_, MFTPAgent::FileDGrams, MFTPAgent::FileSize, MFTPAgent::fileSize_, MFTPAgent::nb_groups, and MFTPAgent::seekCount_. Referenced by command(), and MFTPRcvAgent::init().
00042 {
00043 if(dtusPerBlock_ % 8 != 0) {
00044 Tcl& tcl = Tcl::instance();
00045 tcl.resultf("%s: dtusPerBlock_ must be a multiple of 8", name_);
00046 return TCL_ERROR;
00047 }
00048 dtu_size = dtuSize_;
00049 FileSize = fileSize_;
00050 dtus_per_block = dtusPerBlock_;
00051 dtus_per_group = dtusPerGroup_;
00052 seekCount_ = 0;
00053
00054 FileDGrams = (FileSize + dtu_size - 1) / dtu_size;
00055 nb_groups = (FileDGrams + dtus_per_group - 1) / dtus_per_group;
00056
00057 return TCL_OK;
00058 }
|
|
|
Definition at line 234 of file mftp_snd.cc. References CurrentGroup, CurrentPass, CwPat, MFTPAgent::dtus_per_group, fseek_offset, Codeword::getNextCwPat(), iterator, MinGroupNbInBuf, naks, MFTPAgent::nb_groups, NbGroupsInBuf, read_ahead_bufsize, RESET_ALL_BITS(), retx, SET_ALL_BITS(), and Codeword::setSourceWordLen(). Referenced by command().
00235 {
00236 read_ahead_bufsize = readAheadBufsize;
00237 fseek_offset = 0;
00238
00239 // initialize codeword pattern
00240 iterator.setSourceWordLen(dtus_per_group);
00241 CwPat = iterator.getNextCwPat();
00242 // free arrays from a possible previous transmission (no effect on NULL pointers)
00243 delete [] naks;
00244 delete [] retx;
00245
00246 // allocate naks bitmap init'd to all nak'd:
00247 naks = new unsigned char[(nb_groups + 7) / 8];
00248 assert(naks != NULL); // or else we ran out of memory
00249 SET_ALL_BITS(naks, nb_groups);
00250
00251 // allocate retransmission bitmap init'd to none retransmitted:
00252 retx = new unsigned char[(nb_groups + 7) / 8];
00253 assert(retx != NULL); // or else we ran out of memory
00254 RESET_ALL_BITS(retx, nb_groups);
00255
00256 CurrentPass = CurrentGroup = MinGroupNbInBuf = NbGroupsInBuf = 0;
00257 }
|
Here is the call graph for this function:

|
|
Definition at line 446 of file agent.cc. References hdr_nv::access(), hdr_flags::access(), hdr_ip::access(), hdr_cmn::access(), ns_addr_t::addr_, Scheduler::clock(), hdr_flags::cong_action_, hdr_ip::daddr(), Agent::defttl_, hdr_cmn::direction(), hdr_ip::dport(), Agent::dst_, hdr_flags::ecn_, hdr_flags::ecn_capable_, hdr_flags::ecn_to_echo_, hdr_flags::eln_, hdr_cmn::error(), Agent::fid_, hdr_ip::flowid(), hdr_flags::fs_, NixNode::GetNixVector(), NixNode::GetNodeObject(), hdr_nv::h_used, Agent::here_, hdr_cmn::iface(), Scheduler::instance(), hdr_flags::no_ts_, hdr_cmn::NONE, hdr_nv::nv(), hdr_ip::offset(), hdr_nv::offset(), ns_addr_t::port_, hdr_flags::pri_, hdr_ip::prio(), Agent::prio_, hdr_cmn::ptype(), NixVec::Reset(), hdr_ip::saddr(), hdr_cmn::size(), Agent::size_, hdr_ip::sport(), hdr_cmn::timestamp(), hdr_ip::ttl(), Agent::type_, hdr_cmn::uid(), and Agent::uidcnt_. Referenced by Agent::allocpkt(), and PingResponder::recv().
00447 {
00448 hdr_cmn* ch = hdr_cmn::access(p);
00449 ch->uid() = uidcnt_++;
00450 ch->ptype() = type_;
00451 ch->size() = size_;
00452 ch->timestamp() = Scheduler::instance().clock();
00453 ch->iface() = UNKN_IFACE.value(); // from packet.h (agent is local)
00454 ch->direction() = hdr_cmn::NONE;
00455
00456 ch->error() = 0; /* pkt not corrupt to start with */
00457
00458 hdr_ip* iph = hdr_ip::access(p);
00459 iph->saddr() = here_.addr_;
00460 iph->sport() = here_.port_;
00461 iph->daddr() = dst_.addr_;
00462 iph->dport() = dst_.port_;
00463
00464 //DEBUG
00465 //if (dst_ != -1)
00466 // printf("pl break\n");
00467
00468 iph->flowid() = fid_;
00469 iph->prio() = prio_;
00470 iph->ttl() = defttl_;
00471
00472 hdr_flags* hf = hdr_flags::access(p);
00473 hf->ecn_capable_ = 0;
00474 hf->ecn_ = 0;
00475 hf->eln_ = 0;
00476 hf->ecn_to_echo_ = 0;
00477 hf->fs_ = 0;
00478 hf->no_ts_ = 0;
00479 hf->pri_ = 0;
00480 hf->cong_action_ = 0;
00481 #ifdef HAVE_STL
00482
00483 hdr_nv* nv = hdr_nv::access(p);
00484 if (0)
00485 printf("Off hdr_nv %d, ip_hdr %d myaddr %ld\n",
00486 hdr_nv::offset(), hdr_ip::offset(), here_.addr_);
00487 NixNode* pNixNode = NixNode::GetNodeObject(here_.addr_);
00488 if (0)
00489 printf("Node Object %p\n", pNixNode);
00490 if (pNixNode) {
00491 // If we get non-null, indicates nixvector routing in use
00492 // Delete any left over nv in the packet
00493 // Get a nixvector to the target (may create new)
00494 NixVec* pNv = pNixNode->GetNixVector(dst_.addr_);
00495 pNv->Reset();
00496 nv->nv() = pNv; // And set the nixvec in the packet
00497 nv->h_used = 0; // And reset used portion to 0
00498 }
00499 #endif //HAVE_STL
00500 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 250 of file agent.cc. References min, OldValue::next_, Agent::oldValueList_, TRACEVAR_MAXVALUELENGTH, OldValue::val_, and OldValue::var_. Referenced by Agent::trace().
00251 {
00252 OldValue *p = new OldValue;
00253 assert(p != NULL);
00254 strncpy(p->val_, value, min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH));
00255 p->var_ = v;
00256 p->next_ = NULL;
00257 if (oldValueList_ == NULL)
00258 oldValueList_ = p;
00259 else {
00260 p->next_ = oldValueList_;
00261 oldValueList_ = p;
00262 }
00263 }
|
|
|
Definition at line 61 of file object.h. References NsObject::debug_.
00061 { return debug_; }
|
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 381 of file agent.cc. Referenced by Agent::command().
00382 {
00383 }
|
|
|
Definition at line 242 of file agent.cc. References OldValue::next_, Agent::oldValueList_, and OldValue::var_. Referenced by Agent::trace().
00243 {
00244 OldValue *p = oldValueList_;
00245 while ((p != NULL) && (p->var_ != v))
00246 p = p->next_;
00247 return p;
00248 }
|
|
|
Definition at line 310 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command().
00311 {
00312 char wrk[256];
00313 int n;
00314 double curTime = (&Scheduler::instance() == NULL ? 0 :
00315 Scheduler::instance().clock());
00316
00317 sprintf(wrk, "v -t "TIME_FORMAT" -e monitor_agent %d %s",
00318 curTime, here_.addr_, traceName_);
00319 n = strlen(wrk);
00320 wrk[n] = '\n';
00321 wrk[n+1] = 0;
00322 if (channel_)
00323 (void)Tcl_Write(channel_, wrk, n+1);
00324 }
|
Here is the call graph for this function:

|
|
Definition at line 99 of file mftp.h. References MFTPAgent::dtus_per_block, and MFTPAgent::nb_groups. Referenced by send_data(), and MFTPRcvAgent::send_nak().
00100 {
00101 return (nb_groups+dtus_per_block-1)/dtus_per_block;
00102 }
|
|
|
Definition at line 97 of file agent.h. References Agent::here_, nsaddr_t, and ns_addr_t::port_. Referenced by LmsAgent::pkt2agent(), TcpAsymSink::recv(), MIPBSAgent::recv(), LmsAgent::recv(), HttpInvalAgent::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), IcmpAgent::sendredirect(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().
|
|
||||||||||||||||
|
Definition at line 172 of file mftp_snd.cc. References hdr_mftp::Spec::Nak::block_nb, MFTPAgent::dtus_per_block, min, hdr_mftp::Spec::Nak::nak_count, nakCount_, naks, MFTPAgent::nb_groups, hdr_mftp::Spec::Nak::pass_nb, and retx. Referenced by recv().
00175 {
00176 assert(1 <= nak.nak_count && nak.nak_count <= nb_groups); // or else some receiver is fooling us.
00177 assert(nak.pass_nb <= currentPass); // pass greater than requested? => a receiver is fooling us.
00178
00179 Tcl& tcl = Tcl::instance();
00180 tcl.evalf("%s recv nak %lu %lu %lu", name_,
00181 (unsigned long) nak.pass_nb,
00182 (unsigned long) nak.block_nb,
00183 (unsigned long) nak.nak_count);
00184
00185 assert(dtus_per_block % 8 == 0); // This property is required for the following
00186
00187 // start_group_nb corresponds to first bit of NAK-bitmap:
00188 const unsigned long start_group_nb = dtus_per_block * nak.block_nb;
00189
00190 // end_group_nb corresponds to last group number of NAK-bitmap plus one
00191 const unsigned long end_group_nb = min(nb_groups, dtus_per_block * (nak.block_nb + 1));
00192
00193 // get starting index into naks-array for this block
00194 const unsigned long nak_index = start_group_nb / 8;
00195
00196 // number of status bytes in pdu
00197 const unsigned long nak_bytes = (end_group_nb - start_group_nb + 7) / 8;
00198
00199 // pointer to location in array at which the received nak bitmap must be
00200 // or'd to the sender-bitmap (the bitmap in which the sender collects the naks)
00201 unsigned char* nak_array = naks + nak_index;
00202
00203 // if this nak pdu is from a previous pass (i.e. a delayed nak), ignore the status
00204 // bits for dtu's that we've just retransmitted in the current pass:
00205 if(nak.pass_nb < currentPass) {
00206 unsigned char* retx_array = retx + nak_index;
00207 for(unsigned long i = 0; i < nak_bytes; i++) {
00208 if(*nak_bitmap) {
00209 // "AND out" bits for already transmitted packets and
00210 // "OR in" the result into newly constructed NAK bitmap
00211 *nak_array |= (*nak_bitmap & (~*retx_array));
00212 }
00213 nak_array++;
00214 retx_array++;
00215 nak_bitmap++;
00216 }
00217 }
00218 else {
00219 assert(nak.pass_nb == currentPass); // this nak belongs to the current pass
00220 for(unsigned long i = 0; i < nak_bytes; i++) {
00221 if(*nak_bitmap) {
00222 // "OR in" NAK byte into newly constructed NAK bitmap
00223 *nak_array |= *nak_bitmap;
00224 }
00225 nak_array++;
00226 nak_bitmap++;
00227 }
00228 }
00229 nakCount_++; // increment total number of received nak-packets
00230 }
|
|
||||||||||||
|
Reimplemented in CMUTrace. Definition at line 96 of file object.cc. References Packet::free().
00097 {
00098 Packet::free(p);
00099 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented from Agent. Definition at line 122 of file mftp_snd.cc. References hdr_mftp::access(), hdr_ip::access(), Packet::accessdata(), CurrentPass, hdr_ip::daddr(), Packet::free(), hdr_mftp::Spec::nak, hdr_mftp::PDU_DATA_TRANSFER, hdr_mftp::PDU_NAK, hdr_mftp::PDU_STATUS_REQUEST, process_nak(), hdr_mftp::spec, and hdr_mftp::type.
00123 {
00124 hdr_ip* ih = hdr_ip::access(p);
00125 hdr_mftp* mh = hdr_mftp::access(p);
00126
00127 if(ih->daddr() == 0) {
00128 assert(false); // Packet from local agent.
00129 } else {
00130 switch(mh->type) {
00131 case hdr_mftp::PDU_DATA_TRANSFER:
00132 case hdr_mftp::PDU_STATUS_REQUEST:
00133 // as the sender is a member of the multicast group as well,
00134 // it receives all data it has sent. So just ignore it.
00135 break;
00136 case hdr_mftp::PDU_NAK:
00137 process_nak(mh->spec.nak, p->accessdata(), CurrentPass-1); // -1 because we have
00138 // incremented the pass-number already in send_data.
00139 break;
00140 default:
00141 assert(false); // unknown packet type (also possible: just ignore packet rather than exit)
00142 }
00143 Packet::free(p);
00144 }
00145 }
|
Here is the call graph for this function:

|
|
Definition at line 354 of file agent.cc. References Agent::app_, and Application::recv(). Referenced by DelAckSink::recv(), TcpSink::recv(), QSTcpSink::recv(), FullTcpAgent::recv(), and TcpAsymSink::recv().
|
Here is the call graph for this function:

|
|
Reimplemented from NsObject. Definition at line 78 of file agent.h.
00078 {};
|
|
|
Reimplemented in BayFullTcpAgent, HashClassifier, IvsSource, dsREDQueue, DiffusionRate, SinkAgent, DiffusionAgent, FloodingAgent, OmniMcastAgent, LinkDelay, CBQueue, DropTail, ErrorModel, PIQueue, Queue< T >, RedPDQueue, REDQueue, REMQueue, RIOQueue, Snoop, FackTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, Sack1TcpAgent, TcpSink, DelAckSink, TcpAgent, VegasTcpAgent, toraAgent, and Queue< T >. Definition at line 70 of file object.cc. Referenced by NsObject::command().
00071 {
00072 }
|
|
|
Reimplemented in SRMAgent. Definition at line 89 of file agent.h. References Agent::sendmsg().
00089 { sendmsg(nbytes); }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented in HttpInvalAgent. Definition at line 84 of file agent.h. References Agent::sendmsg().
00084 { sendmsg(sz, data, 0); }
|
Here is the call graph for this function:

|
||||||||||||
Here is the call graph for this function:

|
|
Definition at line 342 of file mftp_snd.cc. References hdr_cmn::access(), hdr_mftp::access(), Agent::allocpkt(), CurrentGroup, CurrentPass, hdr_mftp::Spec::Data::cw_pat, CwPat, hdr_mftp::Spec::data, MFTPAgent::dtu_size, MFTPAgent::dtus_per_group, fill_read_ahead_buf(), MFTPAgent::get_dtus_per_group(), Codeword::getNextCwPat(), hdr_mftp::Spec::Data::group_nb, IS_BIT_CLEARED, iterator, MinGroupNbInBuf, naks, MFTPAgent::nb_blocks(), MFTPAgent::nb_groups, NbGroupsInBuf, hdr_mftp::Spec::Data::pass_nb, hdr_mftp::PDU_DATA_TRANSFER, ExtraLongUInt::print(), NsObject::recv(), RESET_ALL_BITS(), RESET_BIT, retx, SET_ALL_BITS(), SET_BIT, hdr_cmn::size(), hdr_mftp::spec, Connector::target_, and hdr_mftp::type. Referenced by command().
00343 {
00344 Packet* p = Agent::allocpkt();
00345 hdr_mftp* hdr = hdr_mftp::access(p);
00346 CW_PATTERN_t mask;
00347 Tcl& tcl = Tcl::instance();
00348
00349 assert(0 <= CurrentGroup && CurrentGroup < nb_groups);
00350 assert(NbGroupsInBuf >= 0);
00351 assert(0 <= MinGroupNbInBuf && MinGroupNbInBuf + NbGroupsInBuf <= nb_groups);
00352
00353 // now comes NACK processing: loop until end of file or until
00354 // a nak bit is detected:
00355 while(CurrentGroup < nb_groups && IS_BIT_CLEARED(naks, CurrentGroup)) {
00356 CurrentGroup++; // proceed to next bit of the nak bitmap
00357 }
00358
00359 // do not transmit packet if
00360 // (1) CurrentGroup has reached the total number of groups ("end of pass") or
00361 // (2) CwPat has only bits set that refer to some packets that are cut off in
00362 // the current group (for example, if CurrentGroup has only 5 packets
00363 // with nb_groups=8 and if CwPat=64+32)
00364 if(CurrentGroup != nb_groups &&
00365 ((mask = (~(CW_PATTERN_t) 0) >> (8 * sizeof(CW_PATTERN_t) - get_dtus_per_group(CurrentGroup)))
00366 & CwPat) != 0) {
00367 assert(CurrentGroup < nb_groups);
00368
00369 // see if the read-ahead-buffer is exhausted so that we must load new data
00370 // from file. Only groups with a corresponding NAK-bit are read, that is,
00371 // those that were requested for retransmission
00372 assert(MinGroupNbInBuf <= CurrentGroup);
00373 if(CurrentGroup >= MinGroupNbInBuf + NbGroupsInBuf) { // exhausted?
00374 fill_read_ahead_buf(); // load new data from file
00375 }
00376 assert(MinGroupNbInBuf <= CurrentGroup &&
00377 CurrentGroup < MinGroupNbInBuf + NbGroupsInBuf);
00378
00379 // produce an encoded packet here (omitted)
00380
00381 // generate the header
00382 hdr->type = hdr_mftp::PDU_DATA_TRANSFER;
00383 hdr->spec.data.pass_nb = CurrentPass;
00384 hdr->spec.data.group_nb = CurrentGroup;
00385 hdr->spec.data.cw_pat = CwPat & mask;
00386
00387 char buf[8 * sizeof(CW_PATTERN_t) + 1];
00388 (CwPat & mask).print(buf);
00389 tcl.evalf("%s send notify %lu %lu %s",
00390 name_,
00391 (unsigned long) CurrentPass,
00392 (unsigned long) CurrentGroup,
00393 (char*) buf);
00394
00395 hdr_cmn* ch = hdr_cmn::access(p);
00396 ch->size() = sizeof(hdr_mftp) + dtu_size;
00397
00398 // transmit packet
00399 target_->recv(p);
00400
00401 RESET_BIT(naks, CurrentGroup); // reset the dtu status bit in the nak bitmap
00402 SET_BIT(retx, CurrentGroup); // set the dtus status bit in the retransmission bitmap
00403
00404 CurrentGroup++;
00405 } // if
00406
00407 // if last group of the file:
00408 if(CurrentGroup == nb_groups || !(CwPat & mask)) { // end of pass?
00409 do {
00410 CwPat = iterator.getNextCwPat(); // get next codeword for new pass
00411 } while(!(CwPat & ((~(CW_PATTERN_t) 0) >> (8 * sizeof(CW_PATTERN_t) - get_dtus_per_group(0)))));
00412 // } while(!(CwPat & ((((CW_PATTERN_t) 1) << get_dtus_per_group(0)) - 1)));
00413
00414 // prepare a new pas:
00415 MinGroupNbInBuf = 0;
00416 NbGroupsInBuf = 0;
00417 CurrentGroup = 0;
00418
00419 // reset retransmission bitmap for dealing with of latent naks
00420 RESET_ALL_BITS(retx, nb_groups);
00421
00422 // the first dtus_per_group passes must be transmitted "in full"
00423 if(CurrentPass < dtus_per_group - 1) {
00424 SET_ALL_BITS(naks, nb_groups);
00425 }
00426 tcl.evalf("%s pass-finished %lu %lu", name_,
00427 (unsigned long) CurrentPass,
00428 (unsigned long) nb_blocks());
00429 CurrentPass++;
00430 tcl.result("-1"); // return end-of-pass to the caller
00431
00432 return TCL_OK;
00433 }
00434 tcl.result("0"); // end-of-pass not yet reached
00435 return TCL_OK;
00436 }
|
Here is the call graph for this function:

|
||||||||||||||||||||
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented in SA_Agent, RTPAgent, UdpAgent, LmsSender, SRMAgent, FullTcpAgent, TcpAgent, TfrcAgent, and SimpleTcpAgent. Definition at line 415 of file agent.cc.
00416 {
00417 }
|
|
||||||||||||||||
|
Reimplemented in UdpAgent. Definition at line 400 of file agent.cc. References abort(). Referenced by Agent::command(), Application::send(), Agent::send(), TrafficTrace::timeout(), TelnetApp::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().
00401 {
00402 fprintf(stderr,
00403 "Agent::sendmsg(int, AppData*, const char*) not implemented\n");
00404 abort();
00405 }
|
Here is the call graph for this function:

|
||||||||||||||||
|
|
|
||||||||||||||||||||
|
Definition at line 407 of file agent.cc. References abort(). Referenced by Agent::command().
00409 {
00410 fprintf(stderr,
00411 "Agent::sendmsg(int, AppData*, const char*) not implemented\n");
00412 abort();
00413 }
|
Here is the call graph for this function:

|
|
Definition at line 100 of file agent.h. References Agent::type_. Referenced by Agent::command(), HttpUInvalClass::create(), RA_Traffic::init(), POO_Traffic::init(), EXPOO_Traffic::init(), CBR_Traffic::init(), and CBR_PP_Traffic::init().
00100 { type_ = pkttype; }
|
|
|
Reimplemented in FullTcpAgent. Definition at line 95 of file agent.h. References Agent::size_. Referenced by rtProtoDV::command(), RLM_Sender::command(), imepAgent::getResponseListSize(), LandmarkAgent::makeUpdate(), Agent::recv(), SSMSRMAgent::send_glb_sess(), SSMSRMAgent::send_loc_sess(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), and TelnetApp::timeout().
00095 { return size_; }
|
|
|
Definition at line 48 of file connector.h. References Connector::target_. Referenced by JoBS::assignRateDropsADC(), FQ::deque(), QSAgent::recv(), and MIPMHAgent::reg().
00048 { return target_; }
|
|
|
Reimplemented in SA_Agent, RTPAgent, FtpClientAgent, BayFullTcpAgent, SinkAgent, RLM_Sender, MIPBSAgent, MIPMHAgent, RapAgent, RTCPAgent, TcpAsymSink, FackTcpAgent, FullTcpAgent, QSNewRenoTcpAgent, RBPVegasTcpAgent, RBPRenoTcpAgent, SackRHTcpAgent, Sack1TcpAgent, TcpSessionAgent, DelAckSink, TcpAgent, RenoTcpAgent, VegasTcpAgent, and SimpleTcpAgent. Definition at line 347 of file agent.cc. Referenced by SimpleTimer::expire().
00348 {
00349 }
|
|
|
Reimplemented in TcpAgent. Definition at line 266 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Agent::dst_, Agent::here_, Agent::insertOldValue(), Scheduler::instance(), Agent::lookupOldValue(), min, TIME_FORMAT, Agent::traceName_, TRACEVAR_MAXVALUELENGTH, and OldValue::val_. Referenced by TcpAgent::trace().
00267 {
00268 if (channel_ == 0)
00269 return;
00270 char wrk[256], value[128];
00271 int n;
00272
00273 // XXX we need to keep track of old values. What's the best way?
00274 v->value(value, 128);
00275
00276 // XXX hack: how do I know ns has not started yet?
00277 // if there's nothing in value, return
00278 static int started = 0;
00279 if (!started) {
00280 Tcl::instance().evalc("[Simulator instance] is-started");
00281 if (Tcl::instance().result()[0] == '0')
00282 // Simulator not started, do nothing
00283 return;
00284 // remember for next time (so we don't always have to call to tcl)
00285 started = 1;
00286 };
00287
00288 OldValue *ov = lookupOldValue(v);
00289 if (ov != NULL) {
00290 sprintf(wrk,
00291 "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -o %s -T v",
00292 Scheduler::instance().clock(), here_.addr_,
00293 dst_.addr_, v->name(), traceName_, value, ov->val_);
00294 strncpy(ov->val_,
00295 value,
00296 min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH));
00297 } else {
00298 // if there is value, insert it into old value list
00299 sprintf(wrk, "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -T v",
00300 Scheduler::instance().clock(), here_.addr_,
00301 dst_.addr_, v->name(), traceName_, value);
00302 insertOldValue(v, value);
00303 }
00304 n = strlen(wrk);
00305 wrk[n] = '\n';
00306 wrk[n+1] = 0;
00307 (void)Tcl_Write(channel_, wrk, n+1);
00308 }
|
Here is the call graph for this function:

|
|
Reimplemented in TcpAgent. Definition at line 146 of file agent.h.
00146 {}
|
|
|
Reimplemented in BayFullTcpAgent. Definition at line 134 of file agent.h. Referenced by Agent::attachApp(), Agent::idle(), RapAgent::IpgTimeout(), UdpAgent::recv(), SimpleTcpAgent::recv(), RapAgent::recv(), HttpInvalAgent::recv(), Agent::recv(), and Agent::recvBytes(). |
|
|
Definition at line 130 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::command(), Agent::flushAVar(), Agent::monitorAgentTrace(), TcpAsymSink::recv(), Agent::trace(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar(). |
|
|
Definition at line 68 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), init_user_file(), and send_data(). |
|
|
Definition at line 67 of file mftp_snd.h. Referenced by init_user_file(), recv(), and send_data(). |
|
|
Definition at line 69 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), init_user_file(), and send_data(). |
|
|
Reimplemented in FECModel, FloodAgent, and LandmarkAgent. Definition at line 66 of file object.h. Referenced by REDQueue::command(), RedPDQueue::command(), PushbackQueue::command(), NsObject::debug(), NsObject::delay_bind_dispatch(), RedPDQueue::enque(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), and REDQueue::reset(). |
|
|
Definition at line 121 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 57 of file connector.h. Referenced by Connector::command(), Connector::drop(), and ErrorModel::recv(). |
|
|
Reimplemented in AckRecons. Definition at line 115 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::daddr(), Agent::delay_bind_dispatch(), Agent::deleteAgentTrace(), Agent::dport(), DSRProto::DSRProto(), Agent::flushAVar(), Agent::initpkt(), SRMAgent::recv(), SSMSRMAgent::recv(), NatAgent::recv(), SRMAgent::sendmsg(), PushbackAgent::sendMsg(), and Agent::trace(). |
|
|
Definition at line 90 of file mftp.h. Referenced by fill_read_ahead_buf(), MFTPRcvAgent::findStoreLocation(), MFTPAgent::init(), MFTPRcvAgent::recv_data(), and send_data(). |
|
|
Definition at line 91 of file mftp.h. Referenced by MFTPAgent::init(), MFTPAgent::nb_blocks(), process_nak(), and MFTPRcvAgent::send_nak(). |
|
|
Definition at line 92 of file mftp.h. Referenced by fill_read_ahead_buf(), MFTPAgent::get_dtus_per_group(), MFTPAgent::init(), init_user_file(), and send_data(). |
|
|
Definition at line 81 of file mftp.h. Referenced by MFTPAgent::init(), and MFTPAgent::MFTPAgent(). |
|
|
Definition at line 83 of file mftp.h. Referenced by MFTPRcvAgent::command(), MFTPAgent::init(), and MFTPAgent::MFTPAgent(). |
|
|
Definition at line 84 of file mftp.h. Referenced by MFTPAgent::init(), and MFTPAgent::MFTPAgent(). |
|
|
Definition at line 145 of file agent.h. Referenced by TcpAgent::command(), and TcpAgent::trace_event(). |
|
|
Definition at line 118 of file agent.h. Referenced by Agent::delay_bind_dispatch(), AbsTcpAgent::flowid(), Agent::initpkt(), FullTcpAgent::recv(), CtrMcastEncap::recv(), AbsTcpAgent::send_batch(), Sack1TcpAgent::timeout(), and TcpAgent::trace_event(). |
|
|
Definition at line 89 of file mftp.h. Referenced by MFTPRcvAgent::cw_matrixlines_reset(), MFTPRcvAgent::findStoreLocation(), MFTPAgent::get_dtus_per_group(), MFTPRcvAgent::init(), MFTPAgent::init(), MFTPRcvAgent::recv_data(), MFTPRcvAgent::send_nak(), and send_status_request(). |
|
|
Definition at line 88 of file mftp.h. Referenced by fill_read_ahead_buf(), MFTPRcvAgent::findStoreLocation(), and MFTPAgent::init(). |
|
|
Definition at line 82 of file mftp.h. Referenced by MFTPAgent::init(), and MFTPAgent::MFTPAgent(). |
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 120 of file agent.h. Referenced by Agent::delay_bind_dispatch(). |
|
|
Definition at line 64 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), and init_user_file(). |
|
|
|
Definition at line 74 of file mftp_snd.h. Referenced by init_user_file(), and send_data(). |
|
|
Definition at line 70 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), init_user_file(), and send_data(). |
|
|
Definition at line 59 of file mftp_snd.h. Referenced by MFTPSndAgent(), and process_nak(). |
|
|
Definition at line 62 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), init_user_file(), process_nak(), send_data(), and ~MFTPSndAgent(). |
|
|
Definition at line 93 of file mftp.h. Referenced by fill_read_ahead_buf(), MFTPRcvAgent::findStoreLocation(), MFTPAgent::get_dtus_per_group(), MFTPAgent::init(), init_user_file(), MFTPRcvAgent::is_group_full(), MFTPAgent::nb_blocks(), process_nak(), MFTPRcvAgent::process_packet(), MFTPRcvAgent::recv_data(), send_data(), and MFTPRcvAgent::send_nak(). |
|
|
Definition at line 72 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), init_user_file(), and send_data(). |
|
|
Definition at line 132 of file agent.h. Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent(). |
|
|
Definition at line 119 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 65 of file mftp_snd.h. Referenced by fill_read_ahead_buf(), and init_user_file(). |
|
|
Definition at line 57 of file mftp_snd.h. Referenced by command(), and MFTPSndAgent(). |
|
|
Definition at line 63 of file mftp_snd.h. Referenced by init_user_file(), process_nak(), send_data(), and ~MFTPSndAgent(). |
|
|
Definition at line 85 of file mftp.h. Referenced by fill_read_ahead_buf(), MFTPAgent::init(), MFTPAgent::MFTPAgent(), and MFTPRcvAgent::recv_data(). |
|
|
|
|
Definition at line 131 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::command(), Agent::deleteAgentTrace(), Agent::flushAVar(), Agent::monitorAgentTrace(), and Agent::trace(). |
|
|
Definition at line 58 of file mftp_snd.h. Referenced by MFTPSndAgent(). |
|
|
Definition at line 117 of file agent.h. Referenced by Agent::get_pkttype(), Agent::initpkt(), FullTcpAgent::listen(), BayFullTcpAgent::listen(), RapAgent::SendAck(), SRMAgent::sendmsg(), RapAgent::SendPacket(), and Agent::set_pkttype(). |
|
|
Definition at line 68 of file agent.cc. Referenced by imepAgent::handlerControlTimer(), imepAgent::handlerReXmitTimer(), Agent::initpkt(), imepAgent::sendAck(), imepAgent::sendBeacon(), toraAgent::sendCLR(), imepAgent::sendHello(), toraAgent::sendQRY(), DSRAgent::sendUnknownFlow(), toraAgent::sendUPD(), and DSRAgent::xmitFailed(). |
1.3.3