#include <fsm.h>
Inheritance diagram for TahoeAckFSM:


Public Member Functions | |
| TahoeAckFSM () | |
| FSMState * | start_state () |
Static Public Member Functions | |
| TahoeAckFSM & | instance () |
| void | print_FSM (FSMState *state) |
| void | print_FSM_stats (FSMState *state, int n) |
Protected Attributes | |
| FSMState * | start_state_ |
Static Protected Attributes | |
| TahoeAckFSM * | instance_ |
|
|
Definition at line 322 of file fsm.cc. References FSMState::batch_size_, FSMState::drop_, instance_, RTT, start_state_, TIMEOUT, and FSMState::transition_.
00322 : FSM(), start_state_(NULL) 00323 { 00324 int i; 00325 FSMState* tmp; 00326 00327 00328 instance_ = this; 00329 // (wnd, ssh) == (1, 20) 00330 start_state_ = new FSMState; 00331 //printf("creating Tahoe Ack FSM\n"); 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 // (wnd, ssh) == (2, 20) 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 // (wnd, ssh) == (4, 20) 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 //(wnd, ssh) == (8, 20) 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 //(wnd, ssh) == (16, 20) 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 //(wnd, ssh) == (1, 2), timeout 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 //(wnd, ssh) == (2, 2) 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 //(wnd, ssh) == (2.5, 2) 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 //(wnd, ssh) == (3, 2) 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 //(wnd, ssh) == (4, 2) 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 //(wnd, ssh) == (5, 2) 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 //(wnd, ssh) == (6, 2) 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 //(wnd, ssh) == (7, 2) 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 //(wnd, ssh) == (7, 2) 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 //(wnd, ssh) == (1, 3) 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 //(wnd, ssh) == (1, 4) 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 //(wnd, ssh) == (1, 5) 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 //(wnd, ssh) == (1, 6) 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 //(wnd, ssh) == (1, 7) 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 //print_FSM(start_state_); 00831 //printf("\n"); 00832 } |
|
|
Reimplemented from FSM. Definition at line 78 of file fsm.h. Referenced by AbsTcpTahoeAckAgent::AbsTcpTahoeAckAgent().
00078 {
00079 return (*instance_); // general access to TahoeAckFSM
00080 }
|
|
|
Definition at line 256 of file fsm.cc. References FSMState::batch_size_, FSMState::drop_, FSMState::print_all(), FSMState::reset_all_processed(), and FSMState::transition_. Referenced by AbsTcpAgent::command().
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 /* ! 0 */
00273 state->reset_all_processed();
00274 state->print_all(0);
00275 #endif /* 0 */
00276 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 279 of file fsm.cc. References FSMState::print_all_stats(), and FSMState::reset_all_processed(). Referenced by AbsTcpAgent::command().
00280 {
00281 state->reset_all_processed();
00282 state->print_all_stats(n);
00283 fflush(stdout);
00284 }
|
Here is the call graph for this function:

|
|
Reimplemented from FSM. Definition at line 75 of file fsm.h. References start_state_. Referenced by AbsTcpTahoeAckAgent::AbsTcpTahoeAckAgent().
00075 { // starting state
00076 return (start_state_);
00077 }
|
|
|
Reimplemented from FSM. Definition at line 50 of file fsm.cc. Referenced by TahoeAckFSM(). |
|
|
Reimplemented from FSM. Definition at line 82 of file fsm.h. Referenced by start_state(), and TahoeAckFSM(). |
1.3.3