00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 #include "fsm.h"
00067 #include <assert.h>
00068
00069
00070 #ifndef MAX
00071 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
00072 #endif
00073 #ifndef MIN
00074 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
00075 #endif
00076
00077
00078 FSM* FSM::instance_;
00079 TahoeAckFSM* TahoeAckFSM::instance_;
00080 RenoAckFSM* RenoAckFSM::instance_;
00081 TahoeDelAckFSM* TahoeDelAckFSM::instance_;
00082 RenoDelAckFSM* RenoDelAckFSM::instance_;
00083
00084
00085
00086 void
00087 FSMState::number_all()
00088 {
00089 if (processed())
00090 return;
00091 static int next_i = 0;
00092 print_i_ = ++next_i;
00093
00094 int i;
00095 for (i = 0; i < 17; i++)
00096 if (drop_[i])
00097 drop_[i]->number_all();
00098 }
00099
00100 void
00101 FSMState::reset_all_processed()
00102 {
00103 if (print_i_ == 0)
00104 number_all();
00105
00106 if (!processed())
00107 return;
00108 print_i_ = -print_i_;
00109 int i;
00110 for (i = 0; i < 17; i++)
00111 if (drop_[i])
00112 drop_[i]->reset_all_processed();
00113 }
00114
00115 void
00116 FSMState::print_all(int level)
00117 {
00118 if (processed())
00119 return;
00120
00121 const int SPACES_PER_LEVEL = 2;
00122 printf("#%-2d %*s %d:\n", print_i_, level * SPACES_PER_LEVEL + 1, " ", batch_size_);
00123 int i;
00124 for (i = 0; i <= batch_size_; i++) {
00125 static char *delay_names[] = {"done", "error", "RTT", "timeout" };
00126 assert(transition_[i] >= -1 && transition_[i] <= TIMEOUT);
00127 printf(" %*s %d %s -> #%d\n", level * SPACES_PER_LEVEL + 3, " ",
00128 i,
00129 delay_names[transition_[i]+1],
00130 drop_[i] ? drop_[i]->print_i_ : 0);
00131 if (drop_[i])
00132 drop_[i]->print_all(level + 1);
00133 };
00134 }
00135
00136 static void
00137 report_stat_terminus(int desired_pkts,
00138 int pkts,
00139 int rtts,
00140 int timeouts,
00141 int ps,
00142 int qs,
00143 int num_states,
00144 int num_state_names,
00145 FSMState **states,
00146 char *state_names)
00147 {
00148
00149 printf("%s: p^%d*q^%d, %d rtt, %d timeouts, %d states:",
00150 (pkts > desired_pkts ? "exceeded-pkts" :
00151 (pkts == desired_pkts ? "desired_pkts" : "unimplemented-qs")),
00152 ps, qs,
00153 rtts, timeouts,
00154 num_states);
00155 char ch = ' ';
00156 int i;
00157 for (i = 0; i < num_states; i++) {
00158 printf ("%c#%d", ch, states[i]->print_i_);
00159 ch = ',';
00160 };
00161 printf(" [%.*s]\n", num_state_names, state_names);
00162 }
00163
00164
00165
00166
00167
00168
00169
00170
00171 void
00172 FSMState::print_all_stats(int desired_pkts_total,
00173 int pkts,
00174 int rtts,
00175 int timeouts,
00176 int ps,
00177 int qs,
00178 int num_states,
00179 int num_state_names)
00180 {
00181 int i;
00182 #define LARGER_NUMBER_OF_STATES 31 // was 17
00183 static FSMState *states[LARGER_NUMBER_OF_STATES];
00184 static char state_names[LARGER_NUMBER_OF_STATES*4];
00185
00186 if (pkts >= desired_pkts_total || qs > 5) {
00187
00188
00189
00190 report_stat_terminus(desired_pkts_total, pkts, rtts, timeouts, ps, qs, num_states, num_state_names, states, state_names);
00191 return;
00192 };
00193
00194
00195 states[num_states] = this;
00196 num_states++;
00197
00198
00199
00200
00201
00202
00203
00204 int desired_pkts_remaining = desired_pkts_total - pkts;
00205 int desired_pkts_this_round = MIN(desired_pkts_remaining, batch_size_);
00206 for (i = 0; i< desired_pkts_this_round; i++)
00207 state_names[num_state_names + i] = 's';
00208 if (desired_pkts_remaining > desired_pkts_this_round) {
00209
00210 state_names[num_state_names + desired_pkts_this_round] = '.';
00211 drop_[0]->print_all_stats(desired_pkts_total,
00212 pkts + desired_pkts_this_round,
00213 rtts + 1, timeouts,
00214 ps + desired_pkts_this_round, qs,
00215 num_states,
00216 num_state_names + desired_pkts_this_round + 1);
00217 } else {
00218
00219 report_stat_terminus(desired_pkts_total,
00220 pkts + desired_pkts_this_round,
00221 rtts, timeouts,
00222 ps + desired_pkts_this_round, qs,
00223 num_states,
00224 num_state_names + desired_pkts_this_round,
00225 states,
00226 state_names);
00227 };
00228
00229
00230
00231
00232 int desired_pkts_with_loss = MAX(desired_pkts_this_round - 1, 0);
00233
00234
00235 for (i = 1; i <= desired_pkts_this_round; i++) {
00236
00237 if (i > 1)
00238 state_names[num_state_names + i - 2] = 's';
00239 state_names[num_state_names + i - 1] = 'd';
00240 state_names[num_state_names + desired_pkts_this_round] = (transition_[i] == RTT ? '.' : '-');
00241
00242 if (qs) {
00243
00244 report_stat_terminus(desired_pkts_total,
00245 pkts + i - 1,
00246 rtts, timeouts,
00247 ps + i - 1, qs + 1,
00248 num_states,
00249 num_state_names + i,
00250 states,
00251 state_names);
00252 } else {
00253
00254 drop_[i]->print_all_stats(desired_pkts_total, pkts + desired_pkts_with_loss,
00255 rtts + (transition_[i] == RTT ? 1 : 0),
00256 timeouts + (transition_[i] == TIMEOUT ? 1 : 0),
00257 ps + desired_pkts_with_loss, qs + 1,
00258 num_states,
00259 num_state_names + desired_pkts_this_round + 1);
00260
00261 int remaining_pkts_this_round = desired_pkts_this_round - i;
00262 if (qs == 0 && remaining_pkts_this_round > 0) {
00263
00264 int j;
00265 for (j = i+1; j <= desired_pkts_this_round; j++) {
00266 if (j > i+1)
00267 state_names[num_state_names + j - 1] = 's';
00268 state_names[num_state_names + j] = 'd';
00269 report_stat_terminus(desired_pkts_total,
00270 pkts + j - 2,
00271 rtts, timeouts,
00272 ps + j - 2, qs + 2,
00273 num_states,
00274 num_state_names + j,
00275 states,
00276 state_names);
00277 };
00278 };
00279 };
00280 };
00281 }
00282
00283
00284 void
00285 FSM::print_FSM(FSMState* state)
00286 {
00287 #if 0
00288 int i;
00289
00290 if (state != NULL) {
00291 for (i=0; i<17; i++) {
00292 if (state->drop_[i] != NULL) {
00293 if (i==0)
00294 printf("%d->(%d) ", state->transition_[i], state->drop_[i]->batch_size_);
00295 else
00296 printf("\n%d->(%d) ", state->transition_[i], state->drop_[i]->batch_size_);
00297 print_FSM(state->drop_[i]);
00298 }
00299 }
00300 }
00301 #else
00302 state->reset_all_processed();
00303 state->print_all(0);
00304 #endif
00305 }
00306
00307 void
00308 FSM::print_FSM_stats(FSMState* state, int n)
00309 {
00310 state->reset_all_processed();
00311 state->print_all_stats(n);
00312 fflush(stdout);
00313 }
00314
00315 static class TahoeAckFSMClass : public TclClass {
00316 public:
00317 TahoeAckFSMClass() : TclClass("FSM/TahoeAck") {}
00318 TclObject* create(int , const char*const*) {
00319 return (new TahoeAckFSM);
00320 }
00321 } class_tahoeackfsm;
00322
00323 static class RenoAckFSMClass : public TclClass {
00324 public:
00325 RenoAckFSMClass() : TclClass("FSM/RenoAck") {}
00326 TclObject* create(int , const char*const*) {
00327 return (new RenoAckFSM);
00328 }
00329 } class_renoackfsm;
00330
00331 static class TahoeDelAckFSMClass : public TclClass {
00332 public:
00333 TahoeDelAckFSMClass() : TclClass("FSM/TahoeDelAck") {}
00334 TclObject* create(int , const char*const*) {
00335 return (new TahoeDelAckFSM);
00336 }
00337 } class_tahoedelackfsm;
00338
00339 static class RenoDelAckFSMClass : public TclClass {
00340 public:
00341 RenoDelAckFSMClass() : TclClass("FSM/RenoDelAck") {}
00342 TclObject* create(int , const char*const*) {
00343 return (new RenoDelAckFSM);
00344 }
00345 } class_renodelackfsm;
00346
00347
00348
00349
00350
00351 TahoeAckFSM::TahoeAckFSM() : FSM(), start_state_(NULL)
00352 {
00353 int i;
00354 FSMState* tmp;
00355
00356
00357 instance_ = this;
00358
00359 start_state_ = new FSMState;
00360
00361 for (i=0; i<17; i++) {
00362 start_state_->drop_[i] = NULL;
00363 start_state_->transition_[i] = -1;
00364 }
00365 start_state_->batch_size_ = 1;
00366
00367
00368 tmp = new FSMState;
00369 for (i=0; i<17; i++) {
00370 tmp->drop_[i] = NULL;
00371 tmp->transition_[i] = -1;
00372 }
00373 tmp->batch_size_ = 2;
00374 start_state_->drop_[0] = tmp;
00375 start_state_->transition_[0] = RTT;
00376
00377 tmp = new FSMState;
00378 for (i=0; i<17; i++) {
00379 tmp->drop_[i] = NULL;
00380 tmp->transition_[i] = -1;
00381 }
00382 tmp->batch_size_ = 2;
00383 start_state_->drop_[0]->drop_[2] = tmp;
00384 start_state_->drop_[0]->transition_[2] = RTT;
00385
00386
00387 tmp = new FSMState;
00388 for (i=0; i<17; i++) {
00389 tmp->drop_[i] = NULL;
00390 tmp->transition_[i] = -1;
00391 }
00392 tmp->batch_size_ = 4;
00393 start_state_->drop_[0]->drop_[0] = tmp;
00394 start_state_->drop_[0]->transition_[0] = RTT;
00395
00396 tmp = new FSMState;
00397 for (i=0; i<17; i++) {
00398 tmp->drop_[i] = NULL;
00399 tmp->transition_[i] = -1;
00400 }
00401 tmp->batch_size_ = 2;
00402 start_state_->drop_[0]->drop_[0]->drop_[2] = tmp;
00403 start_state_->drop_[0]->drop_[0]->transition_[2] = RTT;
00404
00405 tmp = new FSMState;
00406 for (i=0; i<17; i++) {
00407 tmp->drop_[i] = NULL;
00408 tmp->transition_[i] = -1;
00409 }
00410 tmp->batch_size_ = 4;
00411 start_state_->drop_[0]->drop_[0]->drop_[3] = tmp;
00412 start_state_->drop_[0]->drop_[0]->transition_[3] = RTT;
00413
00414 tmp = new FSMState;
00415 for (i=0; i<17; i++) {
00416 tmp->drop_[i] = NULL;
00417 tmp->transition_[i] = -1;
00418 }
00419 tmp->batch_size_ = 6;
00420 start_state_->drop_[0]->drop_[0]->drop_[4] = tmp;
00421 start_state_->drop_[0]->drop_[0]->transition_[4] = RTT;
00422
00423
00424 tmp = new FSMState;
00425 for (i=0; i<17; i++) {
00426 tmp->drop_[i] = NULL;
00427 tmp->transition_[i] = -1;
00428 }
00429 tmp->batch_size_ = 8;
00430 start_state_->drop_[0]->drop_[0]->drop_[0] = tmp;
00431 start_state_->drop_[0]->drop_[0]->transition_[0] = RTT;
00432
00433 tmp = new FSMState;
00434 for (i=0; i<17; i++) {
00435 tmp->drop_[i] = NULL;
00436 tmp->transition_[i] = -1;
00437 }
00438 tmp->batch_size_ = 2;
00439 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2] = tmp;
00440 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[2] = RTT;
00441
00442 tmp = new FSMState;
00443 for (i=0; i<17; i++) {
00444 tmp->drop_[i] = NULL;
00445 tmp->transition_[i] = -1;
00446 }
00447 tmp->batch_size_ = 4;
00448 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3] = tmp;
00449 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[3] = RTT;
00450
00451 tmp = new FSMState;
00452 for (i=0; i<17; i++) {
00453 tmp->drop_[i] = NULL;
00454 tmp->transition_[i] = -1;
00455 }
00456 tmp->batch_size_ = 6;
00457 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4] = tmp;
00458 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[4] = RTT;
00459
00460 tmp = new FSMState;
00461 for (i=0; i<17; i++) {
00462 tmp->drop_[i] = NULL;
00463 tmp->transition_[i] = -1;
00464 }
00465 tmp->batch_size_ = 8;
00466 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5] = tmp;
00467 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[5] = RTT;
00468
00469 tmp = new FSMState;
00470 for (i=0; i<17; i++) {
00471 tmp->drop_[i] = NULL;
00472 tmp->transition_[i] = -1;
00473 }
00474 tmp->batch_size_ = 10;
00475 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6] = tmp;
00476 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[6] = RTT;
00477
00478 tmp = new FSMState;
00479 for (i=0; i<17; i++) {
00480 tmp->drop_[i] = NULL;
00481 tmp->transition_[i] = -1;
00482 }
00483 tmp->batch_size_ = 12;
00484 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7] = tmp;
00485 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[7] = RTT;
00486
00487 tmp = new FSMState;
00488 for (i=0; i<17; i++) {
00489 tmp->drop_[i] = NULL;
00490 tmp->transition_[i] = -1;
00491 }
00492 tmp->batch_size_ = 14;
00493 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[8] = tmp;
00494 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[8] = RTT;
00495
00496
00497 tmp = new FSMState;
00498 for (i=0; i<17; i++) {
00499 tmp->drop_[i] = NULL;
00500 tmp->transition_[i] = -1;
00501 }
00502 tmp->batch_size_ = 16;
00503 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00504 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00505
00506 tmp = new FSMState;
00507 for (i=0; i<17; i++) {
00508 tmp->drop_[i] = NULL;
00509 tmp->transition_[i] = -1;
00510 }
00511 tmp->batch_size_ = 1;
00512 for (i=1; i<17; i++) start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[i] = tmp;
00513 for (i=1; i<14; i++)
00514 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = RTT;
00515 for (i=14; i<17; i++)
00516 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = TIMEOUT;
00517
00518
00519
00520 tmp = new FSMState;
00521 for (i=0; i<17; i++) {
00522 tmp->drop_[i] = NULL;
00523 tmp->transition_[i] = -1;
00524 }
00525 tmp->batch_size_ = 1;
00526 start_state_->drop_[1] = tmp;
00527 start_state_->transition_[1] = TIMEOUT;
00528 start_state_->drop_[0]->drop_[1] = tmp;
00529 start_state_->drop_[0]->transition_[1] = TIMEOUT;
00530 start_state_->drop_[0]->drop_[2]->drop_[0] = tmp;
00531 start_state_->drop_[0]->drop_[2]->transition_[0] = TIMEOUT;
00532 start_state_->drop_[0]->drop_[0]->drop_[1] = tmp;
00533 start_state_->drop_[0]->drop_[0]->transition_[1] = RTT;
00534 start_state_->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
00535 start_state_->drop_[0]->drop_[0]->drop_[2]->transition_[0] = RTT;
00536
00537
00538 tmp = new FSMState;
00539 for (i=0; i<17; i++) {
00540 tmp->drop_[i] = NULL;
00541 tmp->transition_[i] = -1;
00542 }
00543 tmp->batch_size_ = 2;
00544 start_state_->drop_[1]->drop_[0] = tmp;
00545 start_state_->drop_[1]->transition_[0] = RTT;
00546
00547
00548 tmp = new FSMState;
00549 for (i=0; i<17; i++) {
00550 tmp->drop_[i] = NULL;
00551 tmp->transition_[i] = -1;
00552 }
00553 tmp->batch_size_ = 2;
00554 start_state_->drop_[1]->drop_[0]->drop_[0] = tmp;
00555 start_state_->drop_[1]->drop_[0]->transition_[0] = RTT;
00556
00557
00558 tmp = new FSMState;
00559 for (i=0; i<17; i++) {
00560 tmp->drop_[i] = NULL;
00561 tmp->transition_[i] = -1;
00562 }
00563 tmp->batch_size_ = 3;
00564 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
00565 start_state_->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
00566
00567
00568 tmp = new FSMState;
00569 for (i=0; i<17; i++) {
00570 tmp->drop_[i] = NULL;
00571 tmp->transition_[i] = -1;
00572 }
00573 tmp->batch_size_ = 4;
00574 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00575 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00576
00577
00578 tmp = new FSMState;
00579 for (i=0; i<17; i++) {
00580 tmp->drop_[i] = NULL;
00581 tmp->transition_[i] = -1;
00582 }
00583 tmp->batch_size_ = 5;
00584 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00585 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00586
00587
00588 tmp = new FSMState;
00589 for (i=0; i<17; i++) {
00590 tmp->drop_[i] = NULL;
00591 tmp->transition_[i] = -1;
00592 }
00593 tmp->batch_size_ = 6;
00594 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00595 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00596
00597
00598 tmp = new FSMState;
00599 for (i=0; i<17; i++) {
00600 tmp->drop_[i] = NULL;
00601 tmp->transition_[i] = -1;
00602 }
00603 tmp->batch_size_ = 7;
00604 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00605 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00606
00607
00608 tmp = new FSMState;
00609 for (i=0; i<17; i++) {
00610 tmp->drop_[i] = NULL;
00611 tmp->transition_[i] = -1;
00612 }
00613 tmp->batch_size_ = 7;
00614 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00615 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00616
00617
00618
00619 tmp = new FSMState;
00620 for (i=0; i<17; i++) {
00621 tmp->drop_[i] = NULL;
00622 tmp->transition_[i] = -1;
00623 }
00624 tmp->batch_size_ = 1;
00625 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
00626 start_state_->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
00627 start_state_->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
00628 start_state_->drop_[0]->drop_[0]->drop_[4]->transition_[0] = RTT;
00629
00630 tmp = new FSMState;
00631 for (i=0; i<17; i++) {
00632 tmp->drop_[i] = NULL;
00633 tmp->transition_[i] = -1;
00634 }
00635 tmp->batch_size_ = 2;
00636 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
00637 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
00638
00639 tmp = new FSMState;
00640 for (i=0; i<17; i++) {
00641 tmp->drop_[i] = NULL;
00642 tmp->transition_[i] = -1;
00643 }
00644 tmp->batch_size_ = 3;
00645 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0] = tmp;
00646 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->transition_[0] = RTT;
00647
00648 tmp = new FSMState;
00649 for (i=0; i<17; i++) {
00650 tmp->drop_[i] = NULL;
00651 tmp->transition_[i] = -1;
00652 }
00653 tmp->batch_size_ = 4;
00654 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00655 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00656
00657 tmp = new FSMState;
00658 for (i=0; i<17; i++) {
00659 tmp->drop_[i] = NULL;
00660 tmp->transition_[i] = -1;
00661 }
00662 tmp->batch_size_ = 5;
00663 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00664 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00665
00666 tmp = new FSMState;
00667 for (i=0; i<17; i++) {
00668 tmp->drop_[i] = NULL;
00669 tmp->transition_[i] = -1;
00670 }
00671 tmp->batch_size_ = 5;
00672 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00673 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00674
00675 tmp = new FSMState;
00676 for (i=0; i<17; i++) {
00677 tmp->drop_[i] = NULL;
00678 tmp->transition_[i] = -1;
00679 }
00680 tmp->batch_size_ = 6;
00681 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00682 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00683
00684
00685 tmp = new FSMState;
00686 for (i=0; i<17; i++) {
00687 tmp->drop_[i] = NULL;
00688 tmp->transition_[i] = -1;
00689 }
00690 tmp->batch_size_ = 1;
00691 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1] = tmp;
00692 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[1] = RTT;
00693 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
00694 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->transition_[0] = 0;
00695
00696 tmp = new FSMState;
00697 for (i=0; i<17; i++) {
00698 tmp->drop_[i] = NULL;
00699 tmp->transition_[i] = -1;
00700 }
00701 tmp->batch_size_ = 2;
00702 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0] = tmp;
00703 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->transition_[0] = RTT;
00704
00705
00706 tmp = new FSMState;
00707 for (i=0; i<17; i++) {
00708 tmp->drop_[i] = NULL;
00709 tmp->transition_[i] = -1;
00710 }
00711 tmp->batch_size_ = 4;
00712 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0] = tmp;
00713 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->transition_[0] = RTT;
00714
00715 tmp = new FSMState;
00716 for (i=0; i<17; i++) {
00717 tmp->drop_[i] = NULL;
00718 tmp->transition_[i] = -1;
00719 }
00720 tmp->batch_size_ = 4;
00721 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
00722 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
00723
00724 tmp = new FSMState;
00725 for (i=0; i<17; i++) {
00726 tmp->drop_[i] = NULL;
00727 tmp->transition_[i] = -1;
00728 }
00729 tmp->batch_size_ = 5;
00730 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00731 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00732
00733 tmp = new FSMState;
00734 for (i=0; i<17; i++) {
00735 tmp->drop_[i] = NULL;
00736 tmp->transition_[i] = -1;
00737 }
00738 tmp->batch_size_ = 6;
00739 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00740 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00741
00742
00743 tmp = new FSMState;
00744 for (i=0; i<17; i++) {
00745 tmp->drop_[i] = NULL;
00746 tmp->transition_[i] = -1;
00747 }
00748 tmp->batch_size_ = 1;
00749 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
00750 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->transition_[0] = 0;
00751 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
00752 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->transition_[0] = 0;
00753
00754 tmp = new FSMState;
00755 for (i=0; i<17; i++) {
00756 tmp->drop_[i] = NULL;
00757 tmp->transition_[i] = -1;
00758 }
00759 tmp->batch_size_ = 2;
00760 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
00761 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
00762
00763 tmp = new FSMState;
00764 for (i=0; i<17; i++) {
00765 tmp->drop_[i] = NULL;
00766 tmp->transition_[i] = -1;
00767 }
00768 tmp->batch_size_ = 4;
00769 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0] = tmp;
00770 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->transition_[0] = RTT;
00771
00772 tmp = new FSMState;
00773 for (i=0; i<17; i++) {
00774 tmp->drop_[i] = NULL;
00775 tmp->transition_[i] = -1;
00776 }
00777 tmp->batch_size_ = 5;
00778 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00779 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00780
00781 tmp = new FSMState;
00782 for (i=0; i<17; i++) {
00783 tmp->drop_[i] = NULL;
00784 tmp->transition_[i] = -1;
00785 }
00786 tmp->batch_size_ = 6;
00787 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00788 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00789
00790
00791 tmp = new FSMState;
00792 for (i=0; i<17; i++) {
00793 tmp->drop_[i] = NULL;
00794 tmp->transition_[i] = -1;
00795 }
00796 tmp->batch_size_ = 1;
00797 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0] = tmp;
00798 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->transition_[0] = 0;
00799 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6]->drop_[0] = tmp;
00800 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6]->transition_[0] = RTT;
00801
00802 tmp = new FSMState;
00803 for (i=0; i<17; i++) {
00804 tmp->drop_[i] = NULL;
00805 tmp->transition_[i] = -1;
00806 }
00807 tmp->batch_size_ = 2;
00808 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0] = tmp;
00809 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->transition_[0] = RTT;
00810
00811 tmp = new FSMState;
00812 for (i=0; i<17; i++) {
00813 tmp->drop_[i] = NULL;
00814 tmp->transition_[i] = -1;
00815 }
00816 tmp->batch_size_ = 4;
00817 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0]->drop_[0] = tmp;
00818 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0]->transition_[0] = RTT;
00819
00820 tmp = new FSMState;
00821 for (i=0; i<17; i++) {
00822 tmp->drop_[i] = NULL;
00823 tmp->transition_[i] = -1;
00824 }
00825 tmp->batch_size_ = 6;
00826 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
00827 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
00828
00829
00830 tmp = new FSMState;
00831 for (i=0; i<17; i++) {
00832 tmp->drop_[i] = NULL;
00833 tmp->transition_[i] = -1;
00834 }
00835 tmp->batch_size_ = 1;
00836 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0] = tmp;
00837 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->transition_[0] = RTT;
00838 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[8]->drop_[0] = tmp;
00839 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[8]->transition_[0] = RTT;
00840
00841 tmp = new FSMState;
00842 for (i=0; i<17; i++) {
00843 tmp->drop_[i] = NULL;
00844 tmp->transition_[i] = -1;
00845 }
00846 tmp->batch_size_ = 2;
00847 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0]->drop_[0] = tmp;
00848 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0]->transition_[0] = RTT;
00849
00850 tmp = new FSMState;
00851 for (i=0; i<17; i++) {
00852 tmp->drop_[i] = NULL;
00853 tmp->transition_[i] = -1;
00854 }
00855 tmp->batch_size_ = 4;
00856 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0]->drop_[0]->drop_[0] = tmp;
00857 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0]->drop_[0]->transition_[0] = RTT;
00858
00859
00860
00861 }
00862
00863
00864
00865
00866 RenoAckFSM::RenoAckFSM() : FSM(), start_state_(NULL)
00867 {
00868 int i;
00869 FSMState* tmp;
00870
00871
00872 instance_ = this;
00873
00874 start_state_ = new FSMState;
00875 for (i=0; i<17; i++) {
00876 start_state_->drop_[i] = NULL;
00877 start_state_->transition_[i] = -1;
00878 }
00879 start_state_->batch_size_ = 1;
00880
00881
00882 tmp = new FSMState;
00883 for (i=0; i<17; i++) {
00884 tmp->drop_[i] = NULL;
00885 tmp->transition_[i] = -1;
00886 }
00887 tmp->batch_size_ = 2;
00888 start_state_->drop_[0] = tmp;
00889 start_state_->transition_[0] = RTT;
00890
00891 tmp = new FSMState;
00892 for (i=0; i<17; i++) {
00893 tmp->drop_[i] = NULL;
00894 tmp->transition_[i] = -1;
00895 }
00896 tmp->batch_size_ = 2;
00897 start_state_->drop_[0]->drop_[2] = tmp;
00898 start_state_->drop_[0]->transition_[2] = RTT;
00899
00900
00901 tmp = new FSMState;
00902 for (i=0; i<17; i++) {
00903 tmp->drop_[i] = NULL;
00904 tmp->transition_[i] = -1;
00905 }
00906 tmp->batch_size_ = 4;
00907 start_state_->drop_[0]->drop_[0] = tmp;
00908 start_state_->drop_[0]->transition_[0] = RTT;
00909
00910 tmp = new FSMState;
00911 for (i=0; i<17; i++) {
00912 tmp->drop_[i] = NULL;
00913 tmp->transition_[i] = -1;
00914 }
00915 tmp->batch_size_ = 2;
00916 start_state_->drop_[0]->drop_[0]->drop_[2] = tmp;
00917 start_state_->drop_[0]->drop_[0]->transition_[2] = RTT;
00918
00919 tmp = new FSMState;
00920 for (i=0; i<17; i++) {
00921 tmp->drop_[i] = NULL;
00922 tmp->transition_[i] = -1;
00923 }
00924 tmp->batch_size_ = 4;
00925 start_state_->drop_[0]->drop_[0]->drop_[3] = tmp;
00926 start_state_->drop_[0]->drop_[0]->transition_[3] = RTT;
00927
00928 tmp = new FSMState;
00929 for (i=0; i<17; i++) {
00930 tmp->drop_[i] = NULL;
00931 tmp->transition_[i] = -1;
00932 }
00933 tmp->batch_size_ = 6;
00934 start_state_->drop_[0]->drop_[0]->drop_[4] = tmp;
00935 start_state_->drop_[0]->drop_[0]->transition_[4] = RTT;
00936
00937
00938 tmp = new FSMState;
00939 for (i=0; i<17; i++) {
00940 tmp->drop_[i] = NULL;
00941 tmp->transition_[i] = -1;
00942 }
00943 tmp->batch_size_ = 8;
00944 start_state_->drop_[0]->drop_[0]->drop_[0] = tmp;
00945 start_state_->drop_[0]->drop_[0]->transition_[0] = RTT;
00946
00947 tmp = new FSMState;
00948 for (i=0; i<17; i++) {
00949 tmp->drop_[i] = NULL;
00950 tmp->transition_[i] = -1;
00951 }
00952 tmp->batch_size_ = 4;
00953 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3] = tmp;
00954 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[3] = RTT;
00955
00956 tmp = new FSMState;
00957 for (i=0; i<17; i++) {
00958 tmp->drop_[i] = NULL;
00959 tmp->transition_[i] = -1;
00960 }
00961 tmp->batch_size_ = 6;
00962 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4] = tmp;
00963 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[4] = RTT;
00964
00965 tmp = new FSMState;
00966 for (i=0; i<17; i++) {
00967 tmp->drop_[i] = NULL;
00968 tmp->transition_[i] = -1;
00969 }
00970 tmp->batch_size_ = 8;
00971 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5] = tmp;
00972 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[5] = RTT;
00973
00974 tmp = new FSMState;
00975 for (i=0; i<17; i++) {
00976 tmp->drop_[i] = NULL;
00977 tmp->transition_[i] = -1;
00978 }
00979 tmp->batch_size_ = 10;
00980 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6] = tmp;
00981 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[6] = RTT;
00982
00983
00984 tmp = new FSMState;
00985 for (i=0; i<17; i++) {
00986 tmp->drop_[i] = NULL;
00987 tmp->transition_[i] = -1;
00988 }
00989 tmp->batch_size_ = 6;
00990 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6]->drop_[0] = tmp;
00991 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6]->transition_[0] = RTT;
00992
00993 tmp = new FSMState;
00994 for (i=0; i<17; i++) {
00995 tmp->drop_[i] = NULL;
00996 tmp->transition_[i] = -1;
00997 }
00998 tmp->batch_size_ = 12;
00999 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7] = tmp;
01000 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[7] = RTT;
01001
01002 tmp = new FSMState;
01003 for (i=0; i<17; i++) {
01004 tmp->drop_[i] = NULL;
01005 tmp->transition_[i] = -1;
01006 }
01007 tmp->batch_size_ = 14;
01008 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[8] = tmp;
01009 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[8] = RTT;
01010
01011
01012 tmp = new FSMState;
01013 for (i=0; i<17; i++) {
01014 tmp->drop_[i] = NULL;
01015 tmp->transition_[i] = -1;
01016 }
01017 tmp->batch_size_ = 16;
01018 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01019 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01020
01021 tmp = new FSMState;
01022 for (i=0; i<17; i++) {
01023 tmp->drop_[i] = NULL;
01024 tmp->transition_[i] = -1;
01025 }
01026 tmp->batch_size_ = 1;
01027 for (i=1; i<17; i++) start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[i] = tmp;
01028 for (i=1; i<14; i++)
01029 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = RTT;
01030 for (i=14; i<17; i++)
01031 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = TIMEOUT;
01032
01033
01034 tmp = new FSMState;
01035 for (i=0; i<17; i++) {
01036 tmp->drop_[i] = NULL;
01037 tmp->transition_[i] = -1;
01038 }
01039 tmp->batch_size_ = 1;
01040 start_state_->drop_[1] = tmp;
01041 start_state_->transition_[1] = TIMEOUT;
01042 start_state_->drop_[0]->drop_[1] = tmp;
01043 start_state_->drop_[0]->transition_[1] = TIMEOUT;
01044 start_state_->drop_[0]->drop_[2]->drop_[0] = tmp;
01045 start_state_->drop_[0]->drop_[2]->transition_[0] = TIMEOUT;
01046
01047
01048 tmp = new FSMState;
01049 for (i=0; i<17; i++) {
01050 tmp->drop_[i] = NULL;
01051 tmp->transition_[i] = -1;
01052 }
01053 tmp->batch_size_ = 2;
01054 start_state_->drop_[1]->drop_[0] = tmp;
01055 start_state_->drop_[1]->transition_[0] = RTT;
01056 start_state_->drop_[0]->drop_[0]->drop_[1] = tmp;
01057 start_state_->drop_[0]->drop_[0]->transition_[1] = RTT;
01058 start_state_->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
01059 start_state_->drop_[0]->drop_[0]->drop_[2]->transition_[0] = RTT;
01060
01061
01062 tmp = new FSMState;
01063 for (i=0; i<17; i++) {
01064 tmp->drop_[i] = NULL;
01065 tmp->transition_[i] = -1;
01066 }
01067 tmp->batch_size_ = 2;
01068 start_state_->drop_[1]->drop_[0]->drop_[0] = tmp;
01069 start_state_->drop_[1]->drop_[0]->transition_[0] = RTT;
01070
01071
01072 tmp = new FSMState;
01073 for (i=0; i<17; i++) {
01074 tmp->drop_[i] = NULL;
01075 tmp->transition_[i] = -1;
01076 }
01077 tmp->batch_size_ = 3;
01078 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
01079 start_state_->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
01080
01081
01082 tmp = new FSMState;
01083 for (i=0; i<17; i++) {
01084 tmp->drop_[i] = NULL;
01085 tmp->transition_[i] = -1;
01086 }
01087 tmp->batch_size_ = 4;
01088 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01089 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01090
01091
01092 tmp = new FSMState;
01093 for (i=0; i<17; i++) {
01094 tmp->drop_[i] = NULL;
01095 tmp->transition_[i] = -1;
01096 }
01097 tmp->batch_size_ = 5;
01098 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01099 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01100
01101
01102 tmp = new FSMState;
01103 for (i=0; i<17; i++) {
01104 tmp->drop_[i] = NULL;
01105 tmp->transition_[i] = -1;
01106 }
01107 tmp->batch_size_ = 6;
01108 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01109 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01110
01111
01112 tmp = new FSMState;
01113 for (i=0; i<17; i++) {
01114 tmp->drop_[i] = NULL;
01115 tmp->transition_[i] = -1;
01116 }
01117 tmp->batch_size_ = 7;
01118 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01119 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01120
01121
01122 tmp = new FSMState;
01123 for (i=0; i<17; i++) {
01124 tmp->drop_[i] = NULL;
01125 tmp->transition_[i] = -1;
01126 }
01127 tmp->batch_size_ = 7;
01128 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01129 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01130
01131
01132
01133 tmp = new FSMState;
01134 for (i=0; i<17; i++) {
01135 tmp->drop_[i] = NULL;
01136 tmp->transition_[i] = -1;
01137 }
01138 tmp->batch_size_ = 3;
01139 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01140 start_state_->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
01141 start_state_->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
01142 start_state_->drop_[0]->drop_[0]->drop_[4]->transition_[0] = RTT;
01143
01144 tmp = new FSMState;
01145 for (i=0; i<17; i++) {
01146 tmp->drop_[i] = NULL;
01147 tmp->transition_[i] = -1;
01148 }
01149 tmp->batch_size_ = 3;
01150 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
01151 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
01152
01153 tmp = new FSMState;
01154 for (i=0; i<17; i++) {
01155 tmp->drop_[i] = NULL;
01156 tmp->transition_[i] = -1;
01157 }
01158 tmp->batch_size_ = 4;
01159 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0] = tmp;
01160 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->transition_[0] = RTT;
01161
01162 tmp = new FSMState;
01163 for (i=0; i<17; i++) {
01164 tmp->drop_[i] = NULL;
01165 tmp->transition_[i] = -1;
01166 }
01167 tmp->batch_size_ = 5;
01168 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01169 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01170
01171 tmp = new FSMState;
01172 for (i=0; i<17; i++) {
01173 tmp->drop_[i] = NULL;
01174 tmp->transition_[i] = -1;
01175 }
01176 tmp->batch_size_ = 6;
01177 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01178 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01179
01180
01181
01182
01183 tmp = new FSMState;
01184 for (i=0; i<17; i++) {
01185 tmp->drop_[i] = NULL;
01186 tmp->transition_[i] = -1;
01187 }
01188 tmp->batch_size_ = 4;
01189 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1] = tmp;
01190 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[1] = RTT;
01191 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2] = tmp;
01192 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[2] = RTT;
01193
01194 tmp = new FSMState;
01195 for (i=0; i<17; i++) {
01196 tmp->drop_[i] = NULL;
01197 tmp->transition_[i] = -1;
01198 }
01199 tmp->batch_size_ = 4;
01200 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0] = tmp;
01201 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->transition_[0] = RTT;
01202
01203
01204 tmp = new FSMState;
01205 for (i=0; i<17; i++) {
01206 tmp->drop_[i] = NULL;
01207 tmp->transition_[i] = -1;
01208 }
01209 tmp->batch_size_ = 5;
01210 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0] = tmp;
01211 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->transition_[0] = RTT;
01212
01213 tmp = new FSMState;
01214 for (i=0; i<17; i++) {
01215 tmp->drop_[i] = NULL;
01216 tmp->transition_[i] = -1;
01217 }
01218 tmp->batch_size_ = 6;
01219 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
01220 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
01221
01222
01223
01224 tmp = new FSMState;
01225 for (i=0; i<17; i++) {
01226 tmp->drop_[i] = NULL;
01227 tmp->transition_[i] = -1;
01228 }
01229 tmp->batch_size_ = 1;
01230 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01231 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->transition_[0] = 0;
01232 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
01233 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->transition_[0] = 0;
01234
01235 tmp = new FSMState;
01236 for (i=0; i<17; i++) {
01237 tmp->drop_[i] = NULL;
01238 tmp->transition_[i] = -1;
01239 }
01240 tmp->batch_size_ = 5;
01241 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
01242 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
01243
01244 tmp = new FSMState;
01245 for (i=0; i<17; i++) {
01246 tmp->drop_[i] = NULL;
01247 tmp->transition_[i] = -1;
01248 }
01249 tmp->batch_size_ = 6;
01250 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0] = tmp;
01251 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->transition_[0] = RTT;
01252
01253 tmp = new FSMState;
01254 for (i=0; i<17; i++) {
01255 tmp->drop_[i] = NULL;
01256 tmp->transition_[i] = -1;
01257 }
01258 tmp->batch_size_ = 7;
01259 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01260 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01261
01262
01263 tmp = new FSMState;
01264 for (i=0; i<17; i++) {
01265 tmp->drop_[i] = NULL;
01266 tmp->transition_[i] = -1;
01267 }
01268 tmp->batch_size_ = 1;
01269 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0] = tmp;
01270 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->transition_[0] = 0;
01271
01272 tmp = new FSMState;
01273 for (i=0; i<17; i++) {
01274 tmp->drop_[i] = NULL;
01275 tmp->transition_[i] = -1;
01276 }
01277 tmp->batch_size_ = 6;
01278 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0] = tmp;
01279 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->transition_[0] = RTT;
01280 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6]->drop_[0]->drop_[0] = tmp;
01281 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[6]->drop_[0]->transition_[0] = RTT;
01282
01283 tmp = new FSMState;
01284 for (i=0; i<17; i++) {
01285 tmp->drop_[i] = NULL;
01286 tmp->transition_[i] = -1;
01287 }
01288 tmp->batch_size_ = 7;
01289 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0]->drop_[0] = tmp;
01290 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0]->drop_[0]->transition_[0] = RTT;
01291
01292
01293 tmp = new FSMState;
01294 for (i=0; i<17; i++) {
01295 tmp->drop_[i] = NULL;
01296 tmp->transition_[i] = -1;
01297 }
01298 tmp->batch_size_ = 7;
01299 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0] = tmp;
01300 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[7]->transition_[0] = RTT;
01301 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[8]->drop_[0] = tmp;
01302 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[8]->transition_[0] = RTT;
01303
01304
01305
01306
01307 }
01308
01309
01310
01311
01312 TahoeDelAckFSM::TahoeDelAckFSM() : FSM(), start_state_(NULL)
01313 {
01314 int i;
01315 FSMState* tmp;
01316
01317
01318 instance_ = this;
01319
01320 start_state_ = new FSMState;
01321 for (i=0; i<17; i++) {
01322 start_state_->drop_[i] = NULL;
01323 start_state_->transition_[i] = -1;
01324 }
01325 start_state_->batch_size_ = 1;
01326
01327
01328 tmp = new FSMState;
01329 for (i=0; i<17; i++) {
01330 tmp->drop_[i] = NULL;
01331 tmp->transition_[i] = -1;
01332 }
01333 tmp->batch_size_ = 2;
01334 start_state_->drop_[0] = tmp;
01335 start_state_->transition_[0] = RTT;
01336
01337 tmp = new FSMState;
01338 for (i=0; i<17; i++) {
01339 tmp->drop_[i] = NULL;
01340 tmp->transition_[i] = -1;
01341 }
01342 tmp->batch_size_ = 2;
01343 start_state_->drop_[0]->drop_[2] = tmp;
01344 start_state_->drop_[0]->transition_[2] = RTT;
01345
01346
01347 tmp = new FSMState;
01348 for (i=0; i<17; i++) {
01349 tmp->drop_[i] = NULL;
01350 tmp->transition_[i] = -1;
01351 }
01352 tmp->batch_size_ = 3;
01353 start_state_->drop_[0]->drop_[0] = tmp;
01354 start_state_->drop_[0]->transition_[0] = RTT;
01355
01356 tmp = new FSMState;
01357 for (i=0; i<17; i++) {
01358 tmp->drop_[i] = NULL;
01359 tmp->transition_[i] = -1;
01360 }
01361 tmp->batch_size_ = 2;
01362 start_state_->drop_[0]->drop_[0]->drop_[2] = tmp;
01363 start_state_->drop_[0]->drop_[0]->transition_[2] = RTT;
01364
01365 tmp = new FSMState;
01366 for (i=0; i<17; i++) {
01367 tmp->drop_[i] = NULL;
01368 tmp->transition_[i] = -1;
01369 }
01370 tmp->batch_size_ = 3;
01371 start_state_->drop_[0]->drop_[0]->drop_[3] = tmp;
01372 start_state_->drop_[0]->drop_[0]->transition_[3] = RTT;
01373
01374
01375 tmp = new FSMState;
01376 for (i=0; i<17; i++) {
01377 tmp->drop_[i] = NULL;
01378 tmp->transition_[i] = -1;
01379 }
01380 tmp->batch_size_ = 5;
01381 start_state_->drop_[0]->drop_[0]->drop_[0] = tmp;
01382 start_state_->drop_[0]->drop_[0]->transition_[0] = RTT;
01383
01384 tmp = new FSMState;
01385 for (i=0; i<17; i++) {
01386 tmp->drop_[i] = NULL;
01387 tmp->transition_[i] = -1;
01388 }
01389 tmp->batch_size_ = 2;
01390 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2] = tmp;
01391 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[2] = RTT;
01392
01393 tmp = new FSMState;
01394 for (i=0; i<17; i++) {
01395 tmp->drop_[i] = NULL;
01396 tmp->transition_[i] = -1;
01397 }
01398 tmp->batch_size_ = 3;
01399 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3] = tmp;
01400 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[3] = RTT;
01401
01402 tmp = new FSMState;
01403 for (i=0; i<17; i++) {
01404 tmp->drop_[i] = NULL;
01405 tmp->transition_[i] = -1;
01406 }
01407 tmp->batch_size_ = 5;
01408 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4] = tmp;
01409 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[4] = RTT;
01410
01411 tmp = new FSMState;
01412 for (i=0; i<17; i++) {
01413 tmp->drop_[i] = NULL;
01414 tmp->transition_[i] = -1;
01415 }
01416 tmp->batch_size_ = 6;
01417 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5] = tmp;
01418 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[5] = RTT;
01419
01420
01421 tmp = new FSMState;
01422 for (i=0; i<17; i++) {
01423 tmp->drop_[i] = NULL;
01424 tmp->transition_[i] = -1;
01425 }
01426 tmp->batch_size_ = 8;
01427 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01428 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01429
01430 tmp = new FSMState;
01431 for (i=0; i<17; i++) {
01432 tmp->drop_[i] = NULL;
01433 tmp->transition_[i] = -1;
01434 }
01435 tmp->batch_size_ = 2;
01436 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2] = tmp;
01437 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[2] = RTT;
01438
01439 tmp = new FSMState;
01440 for (i=0; i<17; i++) {
01441 tmp->drop_[i] = NULL;
01442 tmp->transition_[i] = -1;
01443 }
01444 tmp->batch_size_ = 3;
01445 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[3] = tmp;
01446 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[3] = RTT;
01447
01448 tmp = new FSMState;
01449 for (i=0; i<17; i++) {
01450 tmp->drop_[i] = NULL;
01451 tmp->transition_[i] = -1;
01452 }
01453 tmp->batch_size_ = 5;
01454 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4] = tmp;
01455 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[4] = RTT;
01456
01457 tmp = new FSMState;
01458 for (i=0; i<17; i++) {
01459 tmp->drop_[i] = NULL;
01460 tmp->transition_[i] = -1;
01461 }
01462 tmp->batch_size_ = 6;
01463 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[5] = tmp;
01464 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[5] = RTT;
01465
01466 tmp = new FSMState;
01467 for (i=0; i<17; i++) {
01468 tmp->drop_[i] = NULL;
01469 tmp->transition_[i] = -1;
01470 }
01471 tmp->batch_size_ = 8;
01472 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[6] = tmp;
01473 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[6] = RTT;
01474
01475 tmp = new FSMState;
01476 for (i=0; i<17; i++) {
01477 tmp->drop_[i] = NULL;
01478 tmp->transition_[i] = -1;
01479 }
01480 tmp->batch_size_ = 9;
01481 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[7] = tmp;
01482 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[7] = RTT;
01483
01484 tmp = new FSMState;
01485 for (i=0; i<17; i++) {
01486 tmp->drop_[i] = NULL;
01487 tmp->transition_[i] = -1;
01488 }
01489 tmp->batch_size_ = 11;
01490 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8] = tmp;
01491 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[8] = RTT;
01492
01493
01494 tmp = new FSMState;
01495 for (i=0; i<17; i++) {
01496 tmp->drop_[i] = NULL;
01497 tmp->transition_[i] = -1;
01498 }
01499 tmp->batch_size_ = 12;
01500 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01501 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01502
01503 tmp = new FSMState;
01504 for (i=0; i<17; i++) {
01505 tmp->drop_[i] = NULL;
01506 tmp->transition_[i] = -1;
01507 }
01508 tmp->batch_size_ = 1;
01509 for (i=1; i<13; i++) start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[i] = tmp;
01510 for (i=1; i<10; i++)
01511 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = RTT;
01512 for (i=10; i<13; i++)
01513 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = TIMEOUT;
01514
01515
01516
01517 tmp = new FSMState;
01518 for (i=0; i<17; i++) {
01519 tmp->drop_[i] = NULL;
01520 tmp->transition_[i] = -1;
01521 }
01522 tmp->batch_size_ = 1;
01523 start_state_->drop_[1] = tmp;
01524 start_state_->transition_[1] = TIMEOUT;
01525 start_state_->drop_[0]->drop_[1] = tmp;
01526 start_state_->drop_[0]->transition_[1] = TIMEOUT;
01527 start_state_->drop_[0]->drop_[2]->drop_[0] = tmp;
01528 start_state_->drop_[0]->drop_[2]->transition_[0] = TIMEOUT;
01529
01530 start_state_->drop_[0]->drop_[0]->drop_[1] = tmp;
01531 start_state_->drop_[0]->drop_[0]->transition_[1] = TIMEOUT;
01532 start_state_->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
01533 start_state_->drop_[0]->drop_[0]->drop_[2]->transition_[0] = RTT;
01534 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01535 start_state_->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
01536
01537 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1] = tmp;
01538 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[1] = RTT;
01539
01540
01541 tmp = new FSMState;
01542 for (i=0; i<17; i++) {
01543 tmp->drop_[i] = NULL;
01544 tmp->transition_[i] = -1;
01545 }
01546 tmp->batch_size_ = 2;
01547 start_state_->drop_[1]->drop_[0] = tmp;
01548 start_state_->drop_[1]->transition_[0] = RTT;
01549
01550
01551 tmp = new FSMState;
01552 for (i=0; i<17; i++) {
01553 tmp->drop_[i] = NULL;
01554 tmp->transition_[i] = -1;
01555 }
01556 tmp->batch_size_ = 2;
01557 start_state_->drop_[1]->drop_[0]->drop_[0] = tmp;
01558 start_state_->drop_[1]->drop_[0]->transition_[0] = RTT;
01559
01560
01561 tmp = new FSMState;
01562 for (i=0; i<17; i++) {
01563 tmp->drop_[i] = NULL;
01564 tmp->transition_[i] = -1;
01565 }
01566 tmp->batch_size_ = 2;
01567 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
01568 start_state_->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
01569
01570
01571 tmp = new FSMState;
01572 for (i=0; i<17; i++) {
01573 tmp->drop_[i] = NULL;
01574 tmp->transition_[i] = -1;
01575 }
01576 tmp->batch_size_ = 3;
01577 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01578 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01579
01580
01581 tmp = new FSMState;
01582 for (i=0; i<17; i++) {
01583 tmp->drop_[i] = NULL;
01584 tmp->transition_[i] = -1;
01585 }
01586 tmp->batch_size_ = 3;
01587 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01588 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01589
01590
01591 tmp = new FSMState;
01592 for (i=0; i<17; i++) {
01593 tmp->drop_[i] = NULL;
01594 tmp->transition_[i] = -1;
01595 }
01596 tmp->batch_size_ = 4;
01597 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01598 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01599
01600
01601 tmp = new FSMState;
01602 for (i=0; i<17; i++) {
01603 tmp->drop_[i] = NULL;
01604 tmp->transition_[i] = -1;
01605 }
01606 tmp->batch_size_ = 4;
01607 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01608 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01609
01610
01611 tmp = new FSMState;
01612 for (i=0; i<17; i++) {
01613 tmp->drop_[i] = NULL;
01614 tmp->transition_[i] = -1;
01615 }
01616 tmp->batch_size_ = 5;
01617 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01618 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01619
01620
01621 tmp = new FSMState;
01622 for (i=0; i<17; i++) {
01623 tmp->drop_[i] = NULL;
01624 tmp->transition_[i] = -1;
01625 }
01626 tmp->batch_size_ = 6;
01627 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01628 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01629
01630
01631
01632 tmp = new FSMState;
01633 for (i=0; i<17; i++) {
01634 tmp->drop_[i] = NULL;
01635 tmp->transition_[i] = -1;
01636 }
01637 tmp->batch_size_ = 1;
01638 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
01639 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->transition_[0] = RTT;
01640 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01641 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
01642 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
01643 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->transition_[0] = RTT;
01644 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0] = tmp;
01645 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->transition_[0] = RTT;
01646
01647 tmp = new FSMState;
01648 for (i=0; i<17; i++) {
01649 tmp->drop_[i] = NULL;
01650 tmp->transition_[i] = -1;
01651 }
01652 tmp->batch_size_ = 2;
01653 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
01654 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
01655
01656 tmp = new FSMState;
01657 for (i=0; i<17; i++) {
01658 tmp->drop_[i] = NULL;
01659 tmp->transition_[i] = -1;
01660 }
01661 tmp->batch_size_ = 3;
01662 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0] = tmp;
01663 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->transition_[0] = RTT;
01664
01665 tmp = new FSMState;
01666 for (i=0; i<17; i++) {
01667 tmp->drop_[i] = NULL;
01668 tmp->transition_[i] = -1;
01669 }
01670 tmp->batch_size_ = 3;
01671 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01672 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01673
01674 tmp = new FSMState;
01675 for (i=0; i<17; i++) {
01676 tmp->drop_[i] = NULL;
01677 tmp->transition_[i] = -1;
01678 }
01679 tmp->batch_size_ = 4;
01680 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01681 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01682
01683 tmp = new FSMState;
01684 for (i=0; i<17; i++) {
01685 tmp->drop_[i] = NULL;
01686 tmp->transition_[i] = -1;
01687 }
01688 tmp->batch_size_ = 4;
01689 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01690 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01691
01692 tmp = new FSMState;
01693 for (i=0; i<17; i++) {
01694 tmp->drop_[i] = NULL;
01695 tmp->transition_[i] = -1;
01696 }
01697 tmp->batch_size_ = 5;
01698 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01699 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01700
01701
01702 tmp = new FSMState;
01703 for (i=0; i<17; i++) {
01704 tmp->drop_[i] = NULL;
01705 tmp->transition_[i] = -1;
01706 }
01707 tmp->batch_size_ = 1;
01708 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1] = tmp;
01709 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[1] = RTT;
01710 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
01711 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2]->transition_[0] = 0;
01712 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01713 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[3]->transition_[0] = 0;
01714
01715 tmp = new FSMState;
01716 for (i=0; i<17; i++) {
01717 tmp->drop_[i] = NULL;
01718 tmp->transition_[i] = -1;
01719 }
01720 tmp->batch_size_ = 2;
01721 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0] = tmp;
01722 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->transition_[0] = RTT;
01723
01724
01725 tmp = new FSMState;
01726 for (i=0; i<17; i++) {
01727 tmp->drop_[i] = NULL;
01728 tmp->transition_[i] = -1;
01729 }
01730 tmp->batch_size_ = 3;
01731 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0] = tmp;
01732 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->transition_[0] = RTT;
01733
01734 tmp = new FSMState;
01735 for (i=0; i<17; i++) {
01736 tmp->drop_[i] = NULL;
01737 tmp->transition_[i] = -1;
01738 }
01739 tmp->batch_size_ = 4;
01740 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
01741 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
01742
01743 tmp = new FSMState;
01744 for (i=0; i<17; i++) {
01745 tmp->drop_[i] = NULL;
01746 tmp->transition_[i] = -1;
01747 }
01748 tmp->batch_size_ = 4;
01749 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01750 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01751
01752
01753
01754 tmp = new FSMState;
01755 for (i=0; i<17; i++) {
01756 tmp->drop_[i] = NULL;
01757 tmp->transition_[i] = -1;
01758 }
01759 tmp->batch_size_ = 1;
01760 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
01761 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->transition_[0] = 0;
01762 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0] = tmp;
01763 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[5]->transition_[0] = 0;
01764 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[6]->drop_[0] = tmp;
01765 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[6]->transition_[0] = RTT;
01766 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0] = tmp;
01767 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[7]->transition_[0] = RTT;
01768
01769
01770 tmp = new FSMState;
01771 for (i=0; i<17; i++) {
01772 tmp->drop_[i] = NULL;
01773 tmp->transition_[i] = -1;
01774 }
01775 tmp->batch_size_ = 2;
01776 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0] = tmp;
01777 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->transition_[0] = RTT;
01778
01779 tmp = new FSMState;
01780 for (i=0; i<17; i++) {
01781 tmp->drop_[i] = NULL;
01782 tmp->transition_[i] = -1;
01783 }
01784 tmp->batch_size_ = 3;
01785 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0]->drop_[0] = tmp;
01786 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0]->transition_[0] = RTT;
01787
01788 tmp = new FSMState;
01789 for (i=0; i<17; i++) {
01790 tmp->drop_[i] = NULL;
01791 tmp->transition_[i] = -1;
01792 }
01793 tmp->batch_size_ = 5;
01794 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01795 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01796
01797
01798
01799 tmp = new FSMState;
01800 for (i=0; i<17; i++) {
01801 tmp->drop_[i] = NULL;
01802 tmp->transition_[i] = -1;
01803 }
01804 tmp->batch_size_ = 1;
01805 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8]->drop_[0] = tmp;
01806 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8]->transition_[0] = RTT;
01807
01808 tmp = new FSMState;
01809 for (i=0; i<17; i++) {
01810 tmp->drop_[i] = NULL;
01811 tmp->transition_[i] = -1;
01812 }
01813 tmp->batch_size_ = 2;
01814 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8]->drop_[0]->drop_[0] = tmp;
01815 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8]->drop_[0]->transition_[0] = RTT;
01816
01817
01818
01819
01820 }
01821
01822
01823
01824
01825 RenoDelAckFSM::RenoDelAckFSM() : FSM(), start_state_(NULL)
01826 {
01827 int i;
01828 FSMState* tmp;
01829
01830
01831 instance_ = this;
01832
01833 start_state_ = new FSMState;
01834 for (i=0; i<17; i++) {
01835 start_state_->drop_[i] = NULL;
01836 start_state_->transition_[i] = -1;
01837 }
01838 start_state_->batch_size_ = 1;
01839
01840
01841 tmp = new FSMState;
01842 for (i=0; i<17; i++) {
01843 tmp->drop_[i] = NULL;
01844 tmp->transition_[i] = -1;
01845 }
01846 tmp->batch_size_ = 2;
01847 start_state_->drop_[0] = tmp;
01848 start_state_->transition_[0] = RTT;
01849
01850 tmp = new FSMState;
01851 for (i=0; i<17; i++) {
01852 tmp->drop_[i] = NULL;
01853 tmp->transition_[i] = -1;
01854 }
01855 tmp->batch_size_ = 2;
01856 start_state_->drop_[0]->drop_[2] = tmp;
01857 start_state_->drop_[0]->transition_[2] = RTT;
01858
01859
01860 tmp = new FSMState;
01861 for (i=0; i<17; i++) {
01862 tmp->drop_[i] = NULL;
01863 tmp->transition_[i] = -1;
01864 }
01865 tmp->batch_size_ = 3;
01866 start_state_->drop_[0]->drop_[0] = tmp;
01867 start_state_->drop_[0]->transition_[0] = RTT;
01868
01869 tmp = new FSMState;
01870 for (i=0; i<17; i++) {
01871 tmp->drop_[i] = NULL;
01872 tmp->transition_[i] = -1;
01873 }
01874 tmp->batch_size_ = 2;
01875 start_state_->drop_[0]->drop_[0]->drop_[2] = tmp;
01876 start_state_->drop_[0]->drop_[0]->transition_[2] = RTT;
01877
01878 tmp = new FSMState;
01879 for (i=0; i<17; i++) {
01880 tmp->drop_[i] = NULL;
01881 tmp->transition_[i] = -1;
01882 }
01883 tmp->batch_size_ = 3;
01884 start_state_->drop_[0]->drop_[0]->drop_[3] = tmp;
01885 start_state_->drop_[0]->drop_[0]->transition_[3] = RTT;
01886
01887
01888 tmp = new FSMState;
01889 for (i=0; i<17; i++) {
01890 tmp->drop_[i] = NULL;
01891 tmp->transition_[i] = -1;
01892 }
01893 tmp->batch_size_ = 5;
01894 start_state_->drop_[0]->drop_[0]->drop_[0] = tmp;
01895 start_state_->drop_[0]->drop_[0]->transition_[0] = RTT;
01896
01897 tmp = new FSMState;
01898 for (i=0; i<17; i++) {
01899 tmp->drop_[i] = NULL;
01900 tmp->transition_[i] = -1;
01901 }
01902 tmp->batch_size_ = 2;
01903 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2] = tmp;
01904 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[2] = RTT;
01905
01906 tmp = new FSMState;
01907 for (i=0; i<17; i++) {
01908 tmp->drop_[i] = NULL;
01909 tmp->transition_[i] = -1;
01910 }
01911 tmp->batch_size_ = 3;
01912 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3] = tmp;
01913 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[3] = RTT;
01914
01915 tmp = new FSMState;
01916 for (i=0; i<17; i++) {
01917 tmp->drop_[i] = NULL;
01918 tmp->transition_[i] = -1;
01919 }
01920 tmp->batch_size_ = 5;
01921 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4] = tmp;
01922 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[4] = RTT;
01923
01924 tmp = new FSMState;
01925 for (i=0; i<17; i++) {
01926 tmp->drop_[i] = NULL;
01927 tmp->transition_[i] = -1;
01928 }
01929 tmp->batch_size_ = 6;
01930 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5] = tmp;
01931 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[5] = RTT;
01932
01933 tmp = new FSMState;
01934 for (i=0; i<17; i++) {
01935 tmp->drop_[i] = NULL;
01936 tmp->transition_[i] = -1;
01937 }
01938 tmp->batch_size_ = 2;
01939 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
01940 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->transition_[0] = RTT;
01941 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
01942 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[4]->transition_[0] = RTT;
01943
01944 tmp = new FSMState;
01945 for (i=0; i<17; i++) {
01946 tmp->drop_[i] = NULL;
01947 tmp->transition_[i] = -1;
01948 }
01949 tmp->batch_size_ = 3;
01950 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01951 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
01952 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0] = tmp;
01953 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[5]->transition_[0] = RTT;
01954
01955
01956 tmp = new FSMState;
01957 for (i=0; i<17; i++) {
01958 tmp->drop_[i] = NULL;
01959 tmp->transition_[i] = -1;
01960 }
01961 tmp->batch_size_ = 8;
01962 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
01963 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
01964
01965 tmp = new FSMState;
01966 for (i=0; i<17; i++) {
01967 tmp->drop_[i] = NULL;
01968 tmp->transition_[i] = -1;
01969 }
01970 tmp->batch_size_ = 3;
01971 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2] = tmp;
01972 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[2] = RTT;
01973
01974 tmp = new FSMState;
01975 for (i=0; i<17; i++) {
01976 tmp->drop_[i] = NULL;
01977 tmp->transition_[i] = -1;
01978 }
01979 tmp->batch_size_ = 4;
01980 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[3] = tmp;
01981 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[3] = RTT;
01982
01983 tmp = new FSMState;
01984 for (i=0; i<17; i++) {
01985 tmp->drop_[i] = NULL;
01986 tmp->transition_[i] = -1;
01987 }
01988 tmp->batch_size_ = 4;
01989 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
01990 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2]->transition_[0] = RTT;
01991 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
01992 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
01993
01994
01995 tmp = new FSMState;
01996 for (i=0; i<17; i++) {
01997 tmp->drop_[i] = NULL;
01998 tmp->transition_[i] = -1;
01999 }
02000 tmp->batch_size_ = 1;
02001 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4] = tmp;
02002 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[4] = RTT;
02003
02004 tmp = new FSMState;
02005 for (i=0; i<17; i++) {
02006 tmp->drop_[i] = NULL;
02007 tmp->transition_[i] = -1;
02008 }
02009 tmp->batch_size_ = 2;
02010 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[5] = tmp;
02011 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[5] = RTT;
02012
02013 tmp = new FSMState;
02014 for (i=0; i<17; i++) {
02015 tmp->drop_[i] = NULL;
02016 tmp->transition_[i] = -1;
02017 }
02018 tmp->batch_size_ = 8;
02019 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[6] = tmp;
02020 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[6] = RTT;
02021
02022 tmp = new FSMState;
02023 for (i=0; i<17; i++) {
02024 tmp->drop_[i] = NULL;
02025 tmp->transition_[i] = -1;
02026 }
02027 tmp->batch_size_ = 9;
02028 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[7] = tmp;
02029 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[7] = RTT;
02030
02031 tmp = new FSMState;
02032 for (i=0; i<17; i++) {
02033 tmp->drop_[i] = NULL;
02034 tmp->transition_[i] = -1;
02035 }
02036 tmp->batch_size_ = 11;
02037 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8] = tmp;
02038 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[8] = RTT;
02039
02040
02041 tmp = new FSMState;
02042 for (i=0; i<17; i++) {
02043 tmp->drop_[i] = NULL;
02044 tmp->transition_[i] = -1;
02045 }
02046 tmp->batch_size_ = 12;
02047 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02048 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02049
02050 tmp = new FSMState;
02051 for (i=0; i<17; i++) {
02052 tmp->drop_[i] = NULL;
02053 tmp->transition_[i] = -1;
02054 }
02055 tmp->batch_size_ = 1;
02056 for (i=1; i<13; i++) start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[i] = tmp;
02057 for (i=1; i<10; i++)
02058 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = RTT;
02059 for (i=10; i<13; i++)
02060 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[i] = TIMEOUT;
02061
02062
02063
02064 tmp = new FSMState;
02065 for (i=0; i<17; i++) {
02066 tmp->drop_[i] = NULL;
02067 tmp->transition_[i] = -1;
02068 }
02069 tmp->batch_size_ = 1;
02070 start_state_->drop_[1] = tmp;
02071 start_state_->transition_[1] = TIMEOUT;
02072 start_state_->drop_[0]->drop_[1] = tmp;
02073 start_state_->drop_[0]->transition_[1] = TIMEOUT;
02074 start_state_->drop_[0]->drop_[2]->drop_[0] = tmp;
02075 start_state_->drop_[0]->drop_[2]->transition_[0] = TIMEOUT;
02076
02077 start_state_->drop_[0]->drop_[0]->drop_[1] = tmp;
02078 start_state_->drop_[0]->drop_[0]->transition_[1] = TIMEOUT;
02079 start_state_->drop_[0]->drop_[0]->drop_[2]->drop_[0] = tmp;
02080 start_state_->drop_[0]->drop_[0]->drop_[2]->transition_[0] = TIMEOUT;
02081
02082
02083 tmp = new FSMState;
02084 for (i=0; i<17; i++) {
02085 tmp->drop_[i] = NULL;
02086 tmp->transition_[i] = -1;
02087 }
02088 tmp->batch_size_ = 2;
02089 start_state_->drop_[1]->drop_[0] = tmp;
02090 start_state_->drop_[1]->transition_[0] = RTT;
02091
02092
02093 tmp = new FSMState;
02094 for (i=0; i<17; i++) {
02095 tmp->drop_[i] = NULL;
02096 tmp->transition_[i] = -1;
02097 }
02098 tmp->batch_size_ = 2;
02099 start_state_->drop_[1]->drop_[0]->drop_[0] = tmp;
02100 start_state_->drop_[1]->drop_[0]->transition_[0] = RTT;
02101
02102
02103 tmp = new FSMState;
02104 for (i=0; i<17; i++) {
02105 tmp->drop_[i] = NULL;
02106 tmp->transition_[i] = -1;
02107 }
02108 tmp->batch_size_ = 2;
02109 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0] = tmp;
02110 start_state_->drop_[1]->drop_[0]->drop_[0]->transition_[0] = RTT;
02111
02112
02113 tmp = new FSMState;
02114 for (i=0; i<17; i++) {
02115 tmp->drop_[i] = NULL;
02116 tmp->transition_[i] = -1;
02117 }
02118 tmp->batch_size_ = 3;
02119 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02120 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02121
02122
02123 tmp = new FSMState;
02124 for (i=0; i<17; i++) {
02125 tmp->drop_[i] = NULL;
02126 tmp->transition_[i] = -1;
02127 }
02128 tmp->batch_size_ = 3;
02129 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02130 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02131
02132
02133 tmp = new FSMState;
02134 for (i=0; i<17; i++) {
02135 tmp->drop_[i] = NULL;
02136 tmp->transition_[i] = -1;
02137 }
02138 tmp->batch_size_ = 4;
02139 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02140 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02141
02142
02143 tmp = new FSMState;
02144 for (i=0; i<17; i++) {
02145 tmp->drop_[i] = NULL;
02146 tmp->transition_[i] = -1;
02147 }
02148 tmp->batch_size_ = 4;
02149 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02150 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02151
02152
02153 tmp = new FSMState;
02154 for (i=0; i<17; i++) {
02155 tmp->drop_[i] = NULL;
02156 tmp->transition_[i] = -1;
02157 }
02158 tmp->batch_size_ = 5;
02159 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02160 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02161
02162
02163 tmp = new FSMState;
02164 for (i=0; i<17; i++) {
02165 tmp->drop_[i] = NULL;
02166 tmp->transition_[i] = -1;
02167 }
02168 tmp->batch_size_ = 6;
02169 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02170 start_state_->drop_[1]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02171
02172
02173
02174 tmp = new FSMState;
02175 for (i=0; i<17; i++) {
02176 tmp->drop_[i] = NULL;
02177 tmp->transition_[i] = -1;
02178 }
02179 tmp->batch_size_ = 2;
02180 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0] = tmp;
02181 start_state_->drop_[0]->drop_[0]->drop_[3]->transition_[0] = RTT;
02182 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[1] = tmp;
02183 start_state_->drop_[0]->drop_[0]->drop_[0]->transition_[1] = RTT;
02184
02185
02186 tmp = new FSMState;
02187 for (i=0; i<17; i++) {
02188 tmp->drop_[i] = NULL;
02189 tmp->transition_[i] = -1;
02190 }
02191 tmp->batch_size_ = 2;
02192 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
02193 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
02194
02195
02196 tmp = new FSMState;
02197 for (i=0; i<17; i++) {
02198 tmp->drop_[i] = NULL;
02199 tmp->transition_[i] = -1;
02200 }
02201 tmp->batch_size_ = 3;
02202 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0] = tmp;
02203 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->transition_[0] = RTT;
02204
02205
02206 tmp = new FSMState;
02207 for (i=0; i<17; i++) {
02208 tmp->drop_[i] = NULL;
02209 tmp->transition_[i] = -1;
02210 }
02211 tmp->batch_size_ = 4;
02212 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02213 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02214
02215
02216 tmp = new FSMState;
02217 for (i=0; i<17; i++) {
02218 tmp->drop_[i] = NULL;
02219 tmp->transition_[i] = -1;
02220 }
02221 tmp->batch_size_ = 4;
02222 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02223 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02224
02225
02226 tmp = new FSMState;
02227 for (i=0; i<17; i++) {
02228 tmp->drop_[i] = NULL;
02229 tmp->transition_[i] = -1;
02230 }
02231 tmp->batch_size_ = 4;
02232 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02233 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02234
02235
02236 tmp = new FSMState;
02237 for (i=0; i<17; i++) {
02238 tmp->drop_[i] = NULL;
02239 tmp->transition_[i] = -1;
02240 }
02241 tmp->batch_size_ = 5;
02242 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02243 start_state_->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02244
02245
02246
02247 tmp = new FSMState;
02248 for (i=0; i<17; i++) {
02249 tmp->drop_[i] = NULL;
02250 tmp->transition_[i] = -1;
02251 }
02252 tmp->batch_size_ = 3;
02253 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0] = tmp;
02254 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->transition_[0] = RTT;
02255 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->drop_[0] = tmp;
02256 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[3]->drop_[0]->transition_[0] = RTT;
02257
02258 tmp = new FSMState;
02259 for (i=0; i<17; i++) {
02260 tmp->drop_[i] = NULL;
02261 tmp->transition_[i] = -1;
02262 }
02263 tmp->batch_size_ = 4;
02264 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0] = tmp;
02265 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->transition_[0] = RTT;
02266
02267 tmp = new FSMState;
02268 for (i=0; i<17; i++) {
02269 tmp->drop_[i] = NULL;
02270 tmp->transition_[i] = -1;
02271 }
02272 tmp->batch_size_ = 4;
02273 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02274 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02275
02276 tmp = new FSMState;
02277 for (i=0; i<17; i++) {
02278 tmp->drop_[i] = NULL;
02279 tmp->transition_[i] = -1;
02280 }
02281 tmp->batch_size_ = 5;
02282 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02283 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02284
02285 tmp = new FSMState;
02286 for (i=0; i<17; i++) {
02287 tmp->drop_[i] = NULL;
02288 tmp->transition_[i] = -1;
02289 }
02290 tmp->batch_size_ = 5;
02291 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0] = tmp;
02292 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[0] = RTT;
02293
02294
02295 tmp = new FSMState;
02296 for (i=0; i<17; i++) {
02297 tmp->drop_[i] = NULL;
02298 tmp->transition_[i] = -1;
02299 }
02300 tmp->batch_size_ = 4;
02301 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1] = tmp;
02302 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->transition_[1] = RTT;
02303
02304 tmp = new FSMState;
02305 for (i=0; i<17; i++) {
02306 tmp->drop_[i] = NULL;
02307 tmp->transition_[i] = -1;
02308 }
02309 tmp->batch_size_ = 4;
02310 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0] = tmp;
02311 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->transition_[0] = RTT;
02312 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->drop_[0] = tmp;
02313 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[2]->drop_[0]->transition_[0] = RTT;
02314
02315
02316 tmp = new FSMState;
02317 for (i=0; i<17; i++) {
02318 tmp->drop_[i] = NULL;
02319 tmp->transition_[i] = -1;
02320 }
02321 tmp->batch_size_ = 5;
02322 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->drop_[0] = tmp;
02323 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[1]->drop_[0]->transition_[0] = RTT;
02324
02325
02326
02327 tmp = new FSMState;
02328 for (i=0; i<17; i++) {
02329 tmp->drop_[i] = NULL;
02330 tmp->transition_[i] = -1;
02331 }
02332 tmp->batch_size_ = 5;
02333 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0] = tmp;
02334 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->transition_[0] = 0;
02335 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[5]->drop_[0] = tmp;
02336 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[5]->transition_[0] = 0;
02337 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[6]->drop_[0] = tmp;
02338 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[6]->transition_[0] = RTT;
02339 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[7]->drop_[0] = tmp;
02340 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[7]->transition_[0] = RTT;
02341
02342
02343 tmp = new FSMState;
02344 for (i=0; i<17; i++) {
02345 tmp->drop_[i] = NULL;
02346 tmp->transition_[i] = -1;
02347 }
02348 tmp->batch_size_ = 5;
02349 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0] = tmp;
02350 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->transition_[0] = RTT;
02351
02352 tmp = new FSMState;
02353 for (i=0; i<17; i++) {
02354 tmp->drop_[i] = NULL;
02355 tmp->transition_[i] = -1;
02356 }
02357 tmp->batch_size_ = 5;
02358 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0]->drop_[0] = tmp;
02359 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[4]->drop_[0]->drop_[0]->transition_[0] = RTT;
02360
02361
02362 tmp = new FSMState;
02363 for (i=0; i<17; i++) {
02364 tmp->drop_[i] = NULL;
02365 tmp->transition_[i] = -1;
02366 }
02367 tmp->batch_size_ = 6;
02368 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8]->drop_[0] = tmp;
02369 start_state_->drop_[0]->drop_[0]->drop_[0]->drop_[0]->drop_[8]->transition_[0] = RTT;
02370
02371
02372
02373 }
02374