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