// Uncomment the following line to change the fontsize and font: fontsize=12 // fontfamily=SansSerif //possible: SansSerif,Serif,Monospaced

////////////////////////////////////////////////////////////////////////////////////////////// // Welcome to UMLet! // // Double-click on elements to add them to the diagram, or to copy them // Edit elements by modifying the text in this panel // Hold Ctrl to select multiple elements // Use Ctrl+mouse to select via lasso // // Use +/- or Ctrl+mouse wheel to zoom // Drag a whole relation at its central square icon // // Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word) // Edit the files in the "palettes" directory to create your own element palettes // // Select "Custom Elements > New..." to create new element types //////////////////////////////////////////////////////////////////////////////////////////////

// This text will be stored with each diagram; use it for notes.
10
com.umlet.element.Class 510 0 180 40 _:JniExecutor_ _implements IJNICallback_
com.umlet.element.Relation 570 10 50 4310 lt=. 30;30;30;4290
com.umlet.element.Class 990 10 100 30 _:JNIMiddleWare_
com.umlet.element.Relation 1010 10 50 4310 lt=. 30;30;30;4290
com.umlet.element.custom.SeqObjectActive 590 110 20 80
com.umlet.element.Class 90 10 100 30 _:Test_
com.umlet.element.Relation 110 10 50 4300 lt=. 30;30;30;4280
com.umlet.element.custom.SeqObjectActive 130 90 20 4120
com.umlet.element.Relation 0 40 150 70 lt=<<<<<- test1() 130;50;30;50
com.umlet.element.Relation 120 160 490 70 lt=<<<<<- init() 470;50;30;50
com.umlet.element.Relation 120 630 490 70 lt=<<<<<- setObserver() 470;50;30;50
com.umlet.element.Relation 120 490 490 70 lt=<<<<<- addHostController(hc) 470;50;30;50
com.umlet.element.Relation 120 60 490 70 lt=<<<<<- getInstance() 470;50;30;50
com.umlet.element.Relation 580 80 166 70 lt=<<<<<- constructor 40;50;110;50;110;40;30;40
com.umlet.element.custom.SeqObjectActive 600 130 20 50
com.umlet.element.Relation 120 140 490 70 lt=<. JniExecutor instance 30;50;470;50
com.umlet.element.custom.SeqObjectActive 590 210 20 230
com.umlet.element.custom.SeqObjectActive 590 540 20 20
com.umlet.element.custom.SeqObjectActive 590 580 20 80
com.umlet.element.Relation 120 530 490 70 lt=<<<<<- setConfigFileName() 470;50;30;50
com.umlet.element.Relation 120 530 490 50 lt=<. 30;30;470;30
com.umlet.element.Relation 120 630 490 50 lt=<. 30;30;470;30
com.umlet.element.custom.SeqObjectActive 590 680 20 20
com.umlet.element.Relation 120 670 490 50 lt=<. 30;30;470;30
com.umlet.element.Relation 120 670 490 70 lt=<<<<<- startSession() 470;50;30;50
com.umlet.element.custom.SeqObjectActive 590 720 20 330
com.umlet.element.Relation 580 800 470 70 lt=<<<<<- start_session() 450;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 850 20 190
com.umlet.element.Class 250 0 210 40 _:Test.TestObserver_ _implements IJniExecutorObserver_
com.umlet.element.Relation 320 10 50 4300 lt=. 30;30;30;4280
com.umlet.element.custom.SeqObjectActive 590 1370 20 2820
com.umlet.element.Relation 120 1320 480 70 lt=<<<<<- waitForCompletion() 470;50;30;50
com.umlet.element.Class 1320 10 60 30 _:Thread_
com.umlet.element.Class 1480 10 100 30 _:jninativelib.cc_
com.umlet.element.Class 1870 10 100 30 _:MainController_
com.umlet.element.Relation 1320 10 50 4310 lt=. 30;30;30;4290
com.umlet.element.Relation 1890 10 50 4300 lt=. 30;30;30;4280
com.umlet.element.Relation 1500 10 50 4310 lt=. 30;30;30;4290
com.umlet.element.custom.SeqObjectActive 1520 860 20 170
com.umlet.element.Relation 1020 810 520 70 lt=<<<<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_start_1session() 500;50;30;50
com.umlet.element.Relation 1510 820 420 70 lt=<<<<<- start_session() 400;50;30;50
com.umlet.element.custom.SeqObjectActive 1910 870 20 160
com.umlet.element.custom.SeqObjectActive 1030 150 20 20
com.umlet.element.Relation 590 100 460 70 lt=<<<<<- constructor 440;50;30;50
com.umlet.element.Relation 590 140 460 50 lt=<. 30;30;440;30
com.umlet.element.Relation 1020 310 340 70 lt=<<- new Thread(new EventDispatcher()).start() 320;50;30;50
com.umlet.element.custom.SeqObjectActive 1340 360 20 60
com.umlet.element.Relation 1020 390 340 50 lt=<. 30;30;320;30
com.umlet.element.Class 1100 10 210 30 _:JNIMiddleWare.EventDispatcher_
com.umlet.element.Relation 1180 10 50 3940 lt=. 30;30;30;3920
com.umlet.element.Relation 1190 330 170 70 lt=<<<<<- constructor 30;50;150;50
com.umlet.element.custom.SeqObjectActive 1200 380 20 20
com.umlet.element.Relation 1190 370 170 50 lt=<. 150;30;30;30
com.umlet.element.custom.SeqObjectActive 1200 460 20 3440
com.umlet.element.Relation 1190 410 170 70 lt=<<<<<- run() 30;50;150;50
com.umlet.element.custom.SeqObjectActive 1340 450 20 20
com.umlet.element.Class 1620 10 180 30 _:Jnimw:mctr::UserInterface_
com.umlet.element.Relation 1680 10 50 4310 lt=. 30;30;30;4290
com.umlet.element.Class 720 0 180 40 _:Start HC command_ (anonymous Thread class)
com.umlet.element.Relation 780 10 50 3690 lt=. 30;30;30;3670
com.umlet.element.Relation 580 170 470 70 lt=<<<<<- initialize() 450;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 220 20 210
com.umlet.element.custom.SeqObjectActive 1040 240 20 110
com.umlet.element.Relation 1020 190 116 70 lt=<<<<<- init() 40;50;80;50;80;40;30;40
com.umlet.element.custom.SeqObjectActive 1520 260 20 80
com.umlet.element.Relation 1030 210 510 70 lt=<<<<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_init() 490;50;30;50
com.umlet.element.custom.SeqObjectActive 1700 270 20 20
com.umlet.element.Relation 1510 220 210 70 lt=<<<<<- constructor 190;50;30;50
com.umlet.element.Relation 1510 260 210 50 lt=<. 30;30;190;30
com.umlet.element.custom.SeqObjectActive 1910 310 20 20
com.umlet.element.Relation 1510 260 420 70 lt=<<<<<- initialize() 400;50;30;50
com.umlet.element.Relation 1510 300 420 50 lt=<. 30;30;400;30
com.umlet.element.Relation 1030 290 510 70 lt=<. Ptr to C++ API class (Jnimw) 30;50;490;50
com.umlet.element.Relation 580 400 470 50 lt=<. 30;30;450;30
com.umlet.element.Relation 120 410 490 50 lt=<. 30;30;470;30
com.umlet.element.Relation 580 540 470 70 lt=<<<<<- set_cfg_file() 450;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 590 20 60
com.umlet.element.custom.SeqObjectActive 1520 600 20 40
com.umlet.element.Relation 1020 550 520 70 lt=<<<<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_set_1cfg_1file() 500;50;30;50
com.umlet.element.Class 2420 10 100 30 _:config_data.cc_
com.umlet.element.Relation 1510 560 970 70 lt=<<<<<- process_config_read_file() 950;50;30;50
com.umlet.element.custom.SeqObjectActive 2460 610 20 20
com.umlet.element.Relation 1510 580 970 70 lt=<. Result is stored in Jnimw::mycfg 30;50;950;50
com.umlet.element.Relation 1020 610 520 50 lt=<. 30;30;500;30
com.umlet.element.Relation 580 620 470 50 lt=<. 30;30;450;30
com.umlet.element.Relation 580 680 470 70 lt=<<<<<- get_mc_host() 450;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 730 20 40
com.umlet.element.Relation 580 740 470 70 lt=<<<<<- get_port() 450;50;30;50
com.umlet.element.Relation 1020 690 520 70 lt=<<<<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_get_1mc_1host() 500;50;30;50
com.umlet.element.Relation 1020 750 520 70 lt=<<<<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_get_1port() 500;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 790 20 40
com.umlet.element.custom.SeqObjectActive 1520 740 20 20
com.umlet.element.custom.SeqObjectActive 1520 800 20 20
com.umlet.element.Relation 1020 730 520 50 lt=<. 30;30;500;30
com.umlet.element.Relation 580 740 470 50 lt=<. 30;30;450;30
com.umlet.element.Relation 1020 790 520 50 lt=<. 30;30;500;30
com.umlet.element.Relation 580 800 470 50 lt=<. 30;30;450;30
com.umlet.element.Note 1970 860 190 30 mc_state = MC_LISTENING
com.umlet.element.Relation 1900 850 90 50 30;30;70;30
com.umlet.element.custom.SeqObjectActive 1030 1130 20 20
com.umlet.element.Relation 1020 1080 200 70 lt=<<<<< read_pipe() 30;50;180;50
com.umlet.element.Note 1330 1100 270 40 There is something to read on the pipe, MainController just called status_change()
com.umlet.element.Relation 1190 1100 160 50 30;30;140;30
com.umlet.element.Relation 1020 1100 200 70 lt=<. "S00000" 180;50;30;50
com.umlet.element.custom.SeqObjectActive 1210 1170 20 60
com.umlet.element.Relation 1190 1120 258 70 lt=<- processStatusChangeCallback() 40;50;140;50;140;40;30;40
com.umlet.element.Relation 580 1130 650 70 lt=<- statusChangeCallback() 30;50;630;50
com.umlet.element.custom.SeqObjectActive 590 1180 20 60
com.umlet.element.Relation 580 1150 460 70 lt=<<<<<- get_state() 450;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 1200 20 20
com.umlet.element.Relation 580 1170 460 70 lt=<. MC_LISTENING 30;50;450;50
com.umlet.element.Relation 330 1180 270 70 lt=<- statusChanged( MC_LISTENING ) 30;50;260;50
com.umlet.element.custom.SeqObjectActive 340 1230 20 20
com.umlet.element.custom.SeqObjectActive 590 1270 20 20
com.umlet.element.Relation 120 1220 480 70 lt=<<- startHostControllers() 470;50;30;50
com.umlet.element.Relation 580 1230 780 70 lt=<<- new Thread(){...}.start() 760;50;30;50
com.umlet.element.custom.SeqObjectActive 1340 1280 20 20
com.umlet.element.custom.SeqObjectActive 800 1320 20 2340
com.umlet.element.Relation 790 1270 570 70 lt=<<<<<- run() 30;50;550;50
com.umlet.element.custom.SeqObjectActive 1340 1310 20 30
com.umlet.element.custom.SeqObjectActive 810 1370 20 2280
com.umlet.element.Relation 790 1310 662 80 lt=<<<<<- runCommand( "cd /home/earplov/runtime-EclipseApplication/hw/bin; ./hw 0.0.0.0 41789" ) 40;60;370;60;370;30;30;30
com.umlet.element.Note 900 1380 500 70 The command runs in a separate thread, because this command will move the MainController to MC_HC_CONNECTED state and it blocks the thread until shutdown_session() is called which moves MC to MC_INACTIVE state. So runCommand() function ends right after shutdown_session() is called.
com.umlet.element.Relation 800 1390 110 40 30;30;100;30
com.umlet.element.custom.SeqObjectActive 1910 1400 20 90
com.umlet.element.Relation 1900 1370 520 50 lt=< 30;30;500;30
com.umlet.element.Note 1980 1440 220 30 mc_state = MC_HC_CONNECTED
com.umlet.element.Relation 1900 1420 100 50 30;30;80;30
com.umlet.element.Relation 1690 1410 240 70 lt=<- status_change() 30;50;220;50
com.umlet.element.custom.SeqObjectActive 1700 1460 20 20
com.umlet.element.Relation 330 1420 1390 70 lt=<. statusChanged( MC_HC_CONNECTED ) 30;50;1370;50
com.umlet.element.custom.SeqObjectActive 340 1470 20 280
com.umlet.element.Note 1020 1500 300 80 Simplified call sequence, calling MainController::status_change() results IJniExecutorObserver.statusChange() function call in the same way as shown in the mc_state = MC_LISTENING case.
com.umlet.element.Relation 1100 1440 50 80 30;30;30;60
com.umlet.element.Relation 330 1550 280 70 lt=<<- configure() 270;50;30;50
com.umlet.element.Relation 590 1560 450 70 lt=<<- configure( null ) 440;50;30;50
com.umlet.element.custom.SeqObjectActive 600 1600 20 140
com.umlet.element.custom.SeqObjectActive 1030 1610 20 120
com.umlet.element.custom.SeqObjectActive 1520 1620 20 100
com.umlet.element.Relation 1020 1570 520 70 lt=<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_configure( null ) 500;50;30;50
com.umlet.element.Relation 1510 1580 420 70 lt=<<- configure(Jnimw::mycfg.config_read_buffer) 400;50;30;50
com.umlet.element.custom.SeqObjectActive 1910 1630 20 70
com.umlet.element.Note 1980 1610 210 30 mc_state = MC_CONFIGURING
com.umlet.element.Relation 1900 1610 100 50 30;30;80;30
com.umlet.element.custom.SeqObjectActive 1700 1690 20 20
com.umlet.element.Relation 1690 1640 240 70 lt=< status_change() 30;50;220;50
com.umlet.element.custom.SeqObjectActive 350 1700 20 20
com.umlet.element.Relation 340 1650 1380 70 lt=<. statusChanged( MC_CONFIGURING ) 30;50;1360;50
com.umlet.element.Note 1980 1330 270 50 MainController::dispatch_socket_event() MainController::handle_unknown_data() MainController::process_version()
com.umlet.element.Note 2030 1650 320 60 MainController::configure_host() MainController::send_configure() MainController::send_message( MSG_CONFIGURE )
com.umlet.element.Relation 1900 1630 120 70 lt=<<- 30;50;100;50;100;30;30;30
com.umlet.element.Relation 1970 1640 80 50 30;30;60;30
com.umlet.element.Relation 2090 1350 50 70 30;30;30;50
com.umlet.element.Relation 1140 960 570 180 lt=<. 30;160;550;30
com.umlet.element.Class 2580 10 170 30 _:TTCN_Communication_
com.umlet.element.Relation 2640 10 50 4300 lt=. 30;30;30;4280
com.umlet.element.custom.SeqObjectActive 1710 1930 20 20
com.umlet.element.Relation 1700 1880 250 70 lt=< status_change() 30;50;230;50
com.umlet.element.custom.SeqObjectActive 340 1940 20 240
com.umlet.element.Relation 330 1890 1400 70 lt=<. statusChanged( MC_ACTIVE ) 30;50;1380;50
com.umlet.element.custom.SeqObjectActive 600 1980 20 190
com.umlet.element.Relation 330 1930 280 70 lt=<<- createMTC() 270;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 1990 20 170
com.umlet.element.Relation 590 1940 450 70 lt=<<- create_mtc( 0 ) 440;50;30;50
com.umlet.element.custom.SeqObjectActive 1520 2000 20 150
com.umlet.element.Relation 1020 1950 520 70 lt=<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_create_1mtc( 0 ) 500;50;30;50
com.umlet.element.custom.SeqObjectActive 1910 2010 20 130
com.umlet.element.Relation 1510 1960 420 70 lt=<<- create_mtc( 0 ) 400;50;30;50
com.umlet.element.custom.SeqObjectActive 1700 2130 20 20
com.umlet.element.Relation 1690 2080 240 70 lt=< status_change() 30;50;220;50
com.umlet.element.Relation 340 2090 1380 70 lt=<. statusChanged( MC_CREATING_MTC ) 30;50;1360;50
com.umlet.element.custom.SeqObjectActive 350 2140 20 20
com.umlet.element.custom.SeqObjectActive 1700 2400 20 20
com.umlet.element.Relation 330 2360 1390 70 lt=<. statusChanged( MC_READY ) 30;50;1370;50
com.umlet.element.custom.SeqObjectActive 340 2410 20 190
com.umlet.element.Relation 1140 1330 850 50 lt=<. 830;30;30;30
com.umlet.element.custom.SeqObjectActive 600 2440 20 60
com.umlet.element.Relation 330 2390 280 80 lt=<<- executeTestcase ( module, testcase ) 270;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 2450 20 140
com.umlet.element.Relation 590 2400 450 70 lt=<<- execute_testcase( module, testcase ) 440;50;30;50
com.umlet.element.Relation 1020 2410 520 90 lt=<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_execute_1testcase ( module, testcase ) 500;50;30;50
com.umlet.element.custom.SeqObjectActive 1520 2460 20 120
com.umlet.element.Relation 1510 2420 420 70 lt=<<- execute_testcase( module, testcase ) 400;50;30;50
com.umlet.element.Note 1980 2110 220 30 mc_state = MC_CREATING_MTC
com.umlet.element.Relation 1900 2090 100 50 30;30;80;30
com.umlet.element.Relation 1900 1980 178 80 lt=<<- send_create_mtc() 40;60;100;60;100;40;30;40
com.umlet.element.Relation 340 2520 1380 70 lt=<. statusChanged( MC_EXECUTING_CONTROL ) 30;50;1360;50
com.umlet.element.custom.SeqObjectActive 350 2570 20 20
com.umlet.element.custom.SeqObjectActive 1910 1800 20 160
com.umlet.element.Relation 1900 1750 520 70 lt=< dispatch_socket_event() 30;50;500;50
com.umlet.element.Relation 330 2740 1390 70 lt=<. statusChanged( MC_READY ) 30;50;1370;50
com.umlet.element.custom.SeqObjectActive 340 2790 20 190
com.umlet.element.custom.SeqObjectActive 600 2810 20 160
com.umlet.element.Relation 330 2760 280 70 lt=<<- exitMTC() 270;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 2820 20 140
com.umlet.element.Relation 590 2770 450 70 lt=<<- exit_mtc() 440;50;30;50
com.umlet.element.Relation 1020 2780 520 70 lt=<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_exit_1mtc() 500;50;30;50
com.umlet.element.custom.SeqObjectActive 1520 2830 20 120
com.umlet.element.Relation 1510 2790 420 70 lt=<<- exit_mtc() 400;50;30;50
com.umlet.element.custom.SeqObjectActive 1700 2560 20 20
com.umlet.element.custom.SeqObjectActive 1700 2930 20 20
com.umlet.element.custom.SeqObjectActive 1700 2780 20 20
com.umlet.element.Relation 340 2890 1380 70 lt=<. statusChanged( MC_TERMINATING_MTC ) 30;50;1360;50
com.umlet.element.custom.SeqObjectActive 350 2940 20 20
com.umlet.element.Relation 330 3270 1390 70 lt=<. statusChanged( MC_ACTIVE ) 30;50;1370;50
com.umlet.element.custom.SeqObjectActive 340 3320 20 130
com.umlet.element.custom.SeqObjectActive 600 3340 20 100
com.umlet.element.custom.SeqObjectActive 1030 3350 20 80
com.umlet.element.Relation 590 3300 450 70 lt=<<- shutdown_session() 440;50;30;50
com.umlet.element.Relation 330 3290 280 70 lt=<<- shutdownSession() 270;50;30;50
com.umlet.element.custom.SeqObjectActive 1520 3360 20 60
com.umlet.element.Relation 1020 3310 520 70 lt=<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_shutdown_1session() 500;50;30;50
com.umlet.element.custom.SeqObjectActive 1910 3370 20 60
com.umlet.element.Relation 1510 3320 420 70 lt=<<- shutdown_session() 400;50;30;50
com.umlet.element.Relation 1890 3340 296 70 lt=<<- wakeup_thread( REASON_SHUTDOWN ) 50;50;150;50;150;40;40;40
com.umlet.element.Note 1980 3400 260 20 wakeup_reason = REASON_SHUTDOWN
com.umlet.element.custom.SeqObjectActive 1910 3460 20 60
com.umlet.element.Relation 1860 3450 70 50 50;30;30;30
com.umlet.element.Note 1690 3460 200 20 host->hc_state = HC_EXITING
com.umlet.element.Note 1960 3480 200 30 mc_state = MC_SHUTDOWN
com.umlet.element.Relation 1900 3470 80 50 30;30;60;30
com.umlet.element.Relation 1690 3460 240 70 lt=< status_change() 30;50;220;50
com.umlet.element.custom.SeqObjectActive 1700 3510 20 20
com.umlet.element.Relation 330 3470 1390 70 lt=<. statusChanged( MC_SHUTDOWN ) 30;50;1370;50
com.umlet.element.custom.SeqObjectActive 340 3520 20 20
com.umlet.element.custom.SeqObjectActive 1910 3170 20 160
com.umlet.element.Note 1680 3260 170 30 mc_state = MC_ACTIVE
com.umlet.element.Relation 1820 3250 100 50 80;30;30;30
com.umlet.element.Relation 1690 3260 230 70 lt=< status_change() 30;50;210;50
com.umlet.element.custom.SeqObjectActive 1700 3310 20 20
com.umlet.element.Note 1680 3210 170 40 recv_len == 0 close_connection = TRUE
com.umlet.element.custom.SeqObjectActive 1900 3570 20 150
com.umlet.element.Note 1700 3670 180 20 mc_state = MC_INACTIVE
com.umlet.element.Relation 1850 3650 70 50 50;30;30;30
com.umlet.element.Relation 1690 3660 230 70 lt=< status_change() 30;50;210;50
com.umlet.element.custom.SeqObjectActive 1700 3710 20 20
com.umlet.element.Note 1680 3580 200 40 recv_len == 0 hc->hc_state == HC_EXITING
com.umlet.element.Relation 590 3670 1130 70 lt=<. statusChangeCallback() 30;50;1110;50
com.umlet.element.custom.SeqObjectActive 600 3720 20 500
com.umlet.element.Relation 330 4160 280 70 lt=< statusChanged( MC_INACTIVE ) 30;50;270;50
com.umlet.element.custom.SeqObjectActive 340 4210 20 20
com.umlet.element.custom.SeqObjectActive 610 3760 20 50
com.umlet.element.Relation 590 3700 170 70 lt=<<<<< getState() 40;60;120;60;120;40;30;40
com.umlet.element.Note 740 4160 190 20 mLockCompletion.notifyAll()
com.umlet.element.Relation 600 4140 150 40 30;30;140;30
com.umlet.element.Relation 430 4060 420 120 lt=<. (lock released) 160;110;80;110;80;50;410;50;410;100
com.umlet.element.Relation 120 4160 480 40 lt=<. 30;30;470;30
com.umlet.element.Relation 600 3730 440 70 lt=<<<<<- get_state() 430;50;30;50
com.umlet.element.custom.SeqObjectActive 1030 3780 20 20
com.umlet.element.Relation 600 3750 440 70 lt=<. MC_INACTIVE 30;50;430;50
com.umlet.element.custom.SeqObjectActive 610 3840 20 340
com.umlet.element.Relation 590 3780 210 70 lt=<<<<< continueShutdown() 40;60;130;60;130;40;30;40
com.umlet.element.Relation 600 3810 440 70 lt=<<<<<- terminate_internal() 430;50;30;50
com.umlet.element.Relation 600 4120 440 40 lt=<. 30;30;430;30
com.umlet.element.custom.SeqObjectActive 1030 3860 20 290
com.umlet.element.custom.SeqObjectActive 1040 3940 20 200
com.umlet.element.Relation 1020 3880 136 80 lt=<<<<<- terminate() 40;60;80;60;80;40;30;40
com.umlet.element.custom.SeqObjectActive 1520 3960 20 170
com.umlet.element.Relation 1030 3910 510 70 lt=<<<<<- Java_org_eclipse_titan_executor_jni_JNIMiddleWare_terminate() 490;50;30;50
com.umlet.element.custom.SeqObjectActive 1910 3970 20 150
com.umlet.element.Relation 1510 3920 420 70 lt=<<<<<- terminate() 400;50;30;50
com.umlet.element.Relation 1030 4100 510 50 lt=<. 30;30;490;30
com.umlet.element.Relation 1510 4090 420 50 lt=<. 30;30;400;30
com.umlet.element.Relation 1900 3940 150 80 lt=<<<<<- clean_up() 40;60;100;60;100;40;30;40
com.umlet.element.custom.SeqObjectActive 1920 4000 20 50
com.umlet.element.custom.SeqObjectActive 1920 4090 20 20
com.umlet.element.Relation 1900 4030 192 80 lt=<<<<<- destroy_host_groups() 40;60;100;60;100;40;30;40
com.umlet.element.Relation 1910 3100 1070 150 lt=<. 30;130;1050;30
com.umlet.element.Relation 3090 10 50 3200 lt=. 30;30;30;3180
com.umlet.element.Class 3060 10 120 30 _:Parallel_main.cc_
com.umlet.element.Relation 120 1020 480 40 lt=<. 30;30;470;30
com.umlet.element.Relation 580 990 460 70 lt=<. TCP listen port 30;50;450;50
com.umlet.element.Relation 1020 980 520 70 lt=<. TCP listen port 30;50;500;50
com.umlet.element.Relation 1510 970 420 70 lt=<. TCP listen port 30;50;400;50
com.umlet.element.Relation 1690 970 240 50 lt=<. 220;30;30;30
com.umlet.element.custom.SeqObjectActive 1700 940 20 60
com.umlet.element.Relation 2440 10 50 4310 lt=. 30;30;30;4290
com.umlet.element.Note 1970 1010 300 70 Synchronous call (when the function returns, all the tasks are done and status is changed), but asynchronous callback (statusChanged( MC_LISTENING )) is also called.
com.umlet.element.Relation 1900 990 90 50 30;30;70;30
com.umlet.element.custom.SeqObjectActive 1710 970 20 20
com.umlet.element.Relation 1690 920 226 70 lt=<- write_pipe("S00000") 40;50;140;50;140;40;30;40
com.umlet.element.Relation 1690 890 240 70 lt=<- status_change() 30;50;220;50
com.umlet.element.Note 1970 900 340 30 pthread_create(&thread, &attr, thread_main, NULL)
com.umlet.element.Relation 1900 880 90 50 30;30;70;30
com.umlet.element.Class 2360 1110 100 40 _:MainController_ thread_main()
com.umlet.element.Relation 1930 900 194 330 lt=<. (new thread is started) 30;310;30;60;170;60;170;30
com.umlet.element.Relation 2380 1120 50 2610 lt=. 30;30;30;2590
com.umlet.element.Relation 1930 1170 490 70 lt=<<<<<- thread_main() 470;50;30;50
com.umlet.element.custom.SeqObjectActive 2400 1220 20 2470
com.umlet.element.Relation 1900 3120 520 70 lt=< dispatch_socket_event() 30;50;500;50
com.umlet.element.Relation 1900 3410 520 70 lt=< perform_shutdown() 30;50;500;50
com.umlet.element.custom.SeqDestroyMark 2400 3700 20 20
com.umlet.element.Relation 1910 3650 500 50 lt=<. 480;30;30;30
com.umlet.element.Note 2440 3660 190 30 mc_state == MC_INACTIVE
com.umlet.element.Relation 2390 3650 70 50 30;30;50;30
com.umlet.element.Note 850 3870 160 20 mUserinterfacePtr = -1
com.umlet.element.Relation 980 3860 60 40 50;30;30;30
com.umlet.element.Relation 1030 3860 180 50 lt=<. 160;30;30;30
com.umlet.element.Note 1250 3880 170 20 mUserinterfacePtr == -1
com.umlet.element.custom.SeqDestroyMark 1200 3920 20 20
com.umlet.element.Relation 1190 3860 80 50 30;30;60;30
com.umlet.element.Relation 1900 3490 520 90 lt=< dispatch_socket_ event() 30;50;500;50
com.umlet.element.custom.SeqObjectActive 1910 3540 20 190
com.umlet.element.Relation 1770 3510 160 80 lt=< handle_hc_data() 130;60;80;60;80;40;140;40
com.umlet.element.Relation 1850 3570 70 50 30;30;50;30
com.umlet.element.Note 1700 3630 180 20 close_hc_connection(hc)
com.umlet.element.Relation 1850 3610 70 50 30;30;50;30
com.umlet.element.Relation 810 3610 900 50 lt=<. 30;30;880;30
com.umlet.element.custom.SeqDestroyMark 800 3670 20 20
com.umlet.element.Relation 2300 2290 370 70 lt=<. 30;50;350;30
com.umlet.element.Relation 2150 2030 520 130 lt=<. 500;110;360;110;360;30;30;30
com.umlet.element.Relation 2190 2470 480 160 lt=<. 460;140;370;140;370;30;30;30
com.umlet.element.Relation 2160 2840 510 160 lt=<. 490;140;340;140;340;30;30;30
com.umlet.element.Relation 2260 1760 410 90 lt=<. 30;70;390;30
com.umlet.element.Relation 2330 1660 340 110 lt=<. 320;90;190;90;190;30;30;30
com.umlet.element.Relation 2300 2630 370 110 lt=<. 30;90;350;30
com.umlet.element.Relation 2220 3380 190 80 lt=<. 170;60;30;30
com.umlet.element.custom.SeqObjectActive 1900 3200 20 120
com.umlet.element.Relation 1740 3140 190 80 lt=< handle_tc_data() 160;60;80;60;80;40;170;40
com.umlet.element.Relation 1820 3200 100 50 30;30;80;30
com.umlet.element.Note 2440 3410 280 40 wakeup_reason == REASON_SHUTDOWN wakeup_reason = REASON_NOTHING
com.umlet.element.Relation 2390 3410 70 50 30;30;50;30
com.umlet.element.custom.SeqObjectActive 1920 3390 20 20
com.umlet.element.Relation 1910 3370 90 60 30;30;70;40
com.umlet.element.Class 2920 10 120 50 _:TTCN_Runtime_ hc_main() or mtc_main()
com.umlet.element.Relation 2950 30 50 3140 lt=. 30;30;30;3120
com.umlet.element.Note 2380 2170 240 70 process_create_mtc() TTCN_Runtime::process_create_mtc() fork() executor_state = MTC_INITIAL
com.umlet.element.Relation 1920 1840 232 70 lt=< check_all_hc_configured() 40;50;130;50;130;40;30;40
com.umlet.element.custom.SeqObjectActive 1940 1890 20 30
com.umlet.element.Note 1980 1900 170 30 mc_state = MC_ACTIVE
com.umlet.element.Relation 1930 1880 70 50 30;30;50;30
com.umlet.element.custom.SeqObjectActive 1920 1820 20 130
com.umlet.element.custom.SeqObjectActive 1930 1860 20 80
com.umlet.element.Relation 1900 1770 170 70 lt=< handle_hc_data() 40;50;100;50;100;40;30;40
com.umlet.element.Note 2010 1820 270 20 message_type == MSG_CONFIGURE_ACK
com.umlet.element.Relation 1910 1800 120 50 30;30;100;30
com.umlet.element.Relation 1910 1810 236 70 lt=< process_configure_ack(hc) 40;50;130;50;130;40;30;40
com.umlet.element.Relation 1910 2020 286 80 lt=<<- send_message( MSG_CREATE_MTC ) 40;60;150;60;150;40;30;40
com.umlet.element.custom.SeqObjectActive 1920 2040 20 70
com.umlet.element.custom.SeqObjectActive 1930 2080 20 20
com.umlet.element.custom.SeqObjectActive 1020 2060 20 60
com.umlet.element.custom.SeqObjectActive 1910 2300 20 130
com.umlet.element.Relation 1900 2250 520 70 lt=< dispatch_socket_event() 30;50;500;50
com.umlet.element.Note 2060 2330 260 20 message_type == MSG_MTC_CREATED
com.umlet.element.Relation 1690 2350 260 70 lt=< status_change() 30;50;240;50
com.umlet.element.custom.SeqObjectActive 1920 2330 20 90
com.umlet.element.Note 1980 2380 170 30 mc_state = MC_READY
com.umlet.element.Relation 1920 2360 80 50 30;30;60;30
com.umlet.element.custom.SeqObjectActive 1930 2370 20 40
com.umlet.element.Relation 1910 2320 224 70 lt=< process_mtc_created() 40;50;130;50;130;40;30;40
com.umlet.element.Relation 1900 2280 230 70 lt=< handle_unknown_data() 40;50;140;50;140;40;30;40
com.umlet.element.Relation 1910 2310 170 50 30;30;150;30
com.umlet.element.custom.SeqObjectActive 1910 2680 20 130
com.umlet.element.Relation 1900 2630 520 70 lt=< dispatch_socket_event() 30;50;500;50
com.umlet.element.Note 2060 2710 260 20 message_type == MSG_MTC_READY
com.umlet.element.Relation 1690 2730 260 70 lt=< status_change() 30;50;240;50
com.umlet.element.custom.SeqObjectActive 1920 2710 20 90
com.umlet.element.Note 1980 2760 170 30 mc_state = MC_READY
com.umlet.element.Relation 1920 2740 80 50 30;30;60;30
com.umlet.element.custom.SeqObjectActive 1930 2750 20 40
com.umlet.element.Relation 1910 2700 212 70 lt=< process_mtc_ready() 40;50;130;50;130;40;30;40
com.umlet.element.Relation 1900 2660 218 70 lt=< handle_tc_data() 40;50;140;50;140;40;30;40
com.umlet.element.Relation 1910 2690 170 50 30;30;150;30
com.umlet.element.custom.SeqObjectActive 1910 2840 20 100
com.umlet.element.Note 1980 2910 240 30 mc_state = MC_TERMINATING_MTC
com.umlet.element.Relation 1900 2890 100 50 30;30;80;30
com.umlet.element.Relation 1900 2810 244 70 lt=<<- send_exit_mtc() 40;50;170;50;170;40;30;40
com.umlet.element.Relation 1690 2880 240 70 lt=< status_change() 30;50;220;50
com.umlet.element.Relation 1910 2830 296 70 lt=<<- send_message( MSG_EXIT_MTC ) 40;50;170;50;170;40;30;40
com.umlet.element.custom.SeqObjectActive 1920 2860 20 50
com.umlet.element.custom.SeqObjectActive 1930 2880 20 20
com.umlet.element.Relation 2650 2220 340 70 lt=< send_mtc_created() 30;50;320;50
com.umlet.element.Note 3150 3070 200 40 executor_state == MTC_EXIT mtc_main() finished
com.umlet.element.Relation 2960 3060 200 40 30;30;190;30
com.umlet.element.Relation 2960 2170 170 70 lt=<<<<<- mtc_main() 30;50;150;50
com.umlet.element.custom.SeqObjectActive 3110 1650 20 1500
com.umlet.element.Relation 3000 1600 130 70 lt=<<<<<- main() 110;50;30;50
com.umlet.element.Relation 3100 2180 80 50 30;30;60;30
com.umlet.element.Relation 2960 3100 160 40 lt=<. 150;30;30;30
com.umlet.element.custom.SeqDestroyMark 2970 3140 20 20
com.umlet.element.Relation 2650 2910 330 70 lt=< process_all_messages_tc() 30;50;320;50
com.umlet.element.Relation 2960 2160 170 50 lt=<. 150;30;30;30
com.umlet.element.Relation 2960 1670 170 70 lt=<<<<<- hc_main() 30;50;150;50
com.umlet.element.Relation 2650 1680 340 70 lt=<- process_all_messages_hc() 30;50;320;50
com.umlet.element.Relation 2650 2070 340 70 lt=< process_all_messages_hc() 30;50;320;50
com.umlet.element.Relation 2750 3040 220 60 lt=<. 210;50;30;50;30;30
com.umlet.element.Relation 2600 2100 690 150 lt=<. 670;80;670;30;30;130
com.umlet.element.Relation 2650 2540 340 70 lt=< process_all_messages_tc() 30;50;320;50
com.umlet.element.custom.SeqObjectActive 2970 1720 20 470
com.umlet.element.custom.SeqObjectActive 2970 2220 20 910
com.umlet.element.Note 2770 1770 260 50 process_configure() send_configure_ack() send_message( MSG_CONFIGURE_ACK )
com.umlet.element.custom.SeqObjectActive 2660 1730 20 70
com.umlet.element.Relation 2650 1740 120 70 lt=< 30;50;100;50;100;30;30;30
com.umlet.element.Relation 2720 1750 70 50 30;30;50;30
com.umlet.element.Note 2720 1740 220 20 msg_type == MSG_CONFIGURE
com.umlet.element.Relation 2650 1720 90 50 30;30;70;30
com.umlet.element.custom.SeqObjectActive 2660 2270 20 70
com.umlet.element.custom.SeqObjectActive 2670 2310 20 20
com.umlet.element.Relation 2650 2250 296 80 lt=< send_message( MSG_MTC_CREATED ) 40;60;160;60;160;40;30;40
com.umlet.element.custom.SeqObjectActive 2660 2120 20 70
com.umlet.element.Relation 2650 2130 120 70 lt=< 30;50;100;50;100;30;30;30
com.umlet.element.Note 2720 2130 220 20 msg_type == MSG_CREATE_MTC
com.umlet.element.Relation 2650 2110 90 50 30;30;70;30
com.umlet.element.Note 2710 3040 190 20 executor_state = MTC_EXIT
com.umlet.element.Relation 2660 3020 60 40 30;30;50;30
com.umlet.element.Relation 2650 2970 170 70 lt=< process_exit_mtc() 40;60;100;60;100;40;30;40
com.umlet.element.custom.SeqObjectActive 2660 2960 20 120
com.umlet.element.Note 2710 2970 200 20 msg_type == MSG_EXIT_MTC
com.umlet.element.Relation 2650 2950 70 40 30;30;60;30
com.umlet.element.custom.SeqObjectActive 2670 3030 20 40
com.umlet.element.Relation 2650 2600 120 70 lt=< 40;50;100;50;100;30;30;30
com.umlet.element.custom.SeqObjectActive 2660 2590 20 90
com.umlet.element.Relation 2720 2610 90 50 30;30;70;30
com.umlet.element.Note 2790 2630 230 50 process_execute_testcase() send_mtc_ready() send_message( MSG_MTC_READY )
com.umlet.element.Note 2710 2600 270 20 msg_type == MSG_EXECUTE_TESTCASE
com.umlet.element.Relation 2650 2580 80 50 30;30;60;30
com.umlet.element.custom.SeqObjectActive 2670 2650 20 20
com.umlet.element.Relation 2590 2140 210 90 160;30;190;30;190;70;30;70
com.umlet.element.Note 3160 2190 220 30 executor_state == MTC_INITIAL
com.umlet.element.Note 1960 310 180 20 mc_state = MC_INACTIVE
com.umlet.element.Relation 1900 290 80 50 30;30;60;30
com.umlet.element.custom.SeqObjectActive 1910 2470 20 100
com.umlet.element.Note 1980 2540 260 30 mc_state = MC_EXECUTING_CONTROL
com.umlet.element.Relation 1900 2520 100 50 30;30;80;30
com.umlet.element.Relation 1900 2440 320 70 lt=<<- send_execute_testcase(module, testcase) 40;50;170;50;170;40;30;40
com.umlet.element.Relation 1690 2510 240 70 lt=< status_change() 30;50;220;50
com.umlet.element.Relation 1910 2460 320 70 lt=<<- send_message( MSG_EXECUTE_TESTCASE ) 40;50;170;50;170;40;30;40
com.umlet.element.custom.SeqObjectActive 1920 2490 20 50
com.umlet.element.custom.SeqObjectActive 1930 2510 20 20