- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/concurrency/actors/static.cfa
r7edf912 r77fd9fe2 9 9 struct derived_actor { inline actor; }; 10 10 struct derived_msg { 11 12 11 inline message; 12 int cnt; 13 13 }; 14 14 15 15 void ?{}( derived_msg & this, int cnt ) { 16 set_allocation( this, Nodelete );17 16 ((message &) this){ Nodelete }; 17 this.cnt = cnt; 18 18 } 19 19 void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; } 20 20 21 21 allocation receive( derived_actor & receiver, derived_msg & msg ) { 22 23 24 25 26 27 28 22 if ( msg.cnt >= Times ) { 23 sout | "Done"; 24 return Finished; 25 } 26 msg.cnt++; 27 receiver | msg; 28 return Nodelete; 29 29 } 30 30 31 31 int main( int argc, char * argv[] ) { 32 32 switch ( argc ) { 33 33 case 2: 34 34 if ( strcmp( argv[1], "d" ) != 0 ) { // default ? 35 Times = ato ( argv[1] );36 if ( Times < 1 ) fallthru default;35 Times = atoi( argv[1] ); 36 if ( Times < 1 ) goto Usage; 37 37 } // if 38 38 case 1: // use defaults 39 39 break; 40 40 default: 41 exit | "Usage: " | argv[0] | " [ times (> 0) ]"; 41 Usage: 42 sout | "Usage: " | argv[0] | " [ times (> 0) ]"; 43 exit( EXIT_FAILURE ); 42 44 } // switch 43 45 44 sout | "starting";46 printf("starting\n"); 45 47 46 47 48 executor e{ 0, 1, 1, false }; 49 start_actor_system( e ); 48 50 49 sout | "started";51 printf("started\n"); 50 52 51 53 derived_msg msg; 52 54 53 55 derived_actor actor; 54 56 55 57 actor | msg; 56 58 57 sout | "stopping";59 printf("stopping\n"); 58 60 59 61 stop_actor_system(); 60 62 61 sout | "stopped"; 63 printf("stopped\n"); 64 65 return 0; 62 66 }
Note: See TracChangeset
for help on using the changeset viewer.