Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/concurrency/actors/dynamic.cfa

    r7edf912 r77fd9fe2  
    99struct derived_actor { inline actor; };
    1010struct derived_msg {
    11         inline message;
    12         int cnt;
     11    inline message;
     12    int cnt;
    1313};
    1414
    1515void ?{}( derived_msg & this, int cnt ) {
    16         set_allocation( this, Delete );
    17         this.cnt = cnt;
     16    ((message &) this){ Delete };
     17    this.cnt = cnt;
    1818}
    1919void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; }
    2020
    2121allocation receive( derived_actor & receiver, derived_msg & msg ) {
    22         if ( msg.cnt >= Times ) {
    23                 sout | "Done";
    24                 return Delete;
    25         }
    26         derived_msg * d_msg = alloc();
    27         (*d_msg){ msg.cnt + 1 };
    28         derived_actor * d_actor = alloc();
    29         (*d_actor){};
    30         *d_actor | *d_msg;
    31         return Delete;
     22    if ( msg.cnt >= Times ) {
     23        sout | "Done";
     24        return Delete;
     25    }
     26    derived_msg * d_msg = alloc();
     27    (*d_msg){ msg.cnt + 1 };
     28    derived_actor * d_actor = alloc();
     29    (*d_actor){};
     30    *d_actor | *d_msg;
     31    return Delete;
    3232}
    3333
    3434int main( int argc, char * argv[] ) {
    35         switch ( argc ) {
     35    switch ( argc ) {
    3636          case 2:
    3737                if ( strcmp( argv[1], "d" ) != 0 ) {                    // default ?
    38                         Times = ato( argv[1] );
    39                         if ( Times < 1 ) fallthru default;
     38                        Times = atoi( argv[1] );
     39                        if ( Times < 1 ) goto Usage;
    4040                } // if
    4141          case 1:                                                                                       // use defaults
    4242                break;
    4343          default:
    44                 exit | "Usage: " | argv[0] | " [ times (> 0) ]";
     44          Usage:
     45                sout | "Usage: " | argv[0] | " [ times (> 0) ]";
     46                exit( EXIT_FAILURE );
    4547        } // switch
    4648
    47         sout | "starting";
     49    printf("starting\n");
    4850
    49         executor e{ 0, 1, 1, false };
    50         start_actor_system( e );
     51    executor e{ 0, 1, 1, false };
     52    start_actor_system( e );
    5153
    52         sout | "started";
     54    printf("started\n");
    5355
    54         derived_msg * d_msg = alloc();
    55         (*d_msg){};
    56         derived_actor * d_actor = alloc();
    57         (*d_actor){};
    58         *d_actor | *d_msg;
     56    derived_msg * d_msg = alloc();
     57    (*d_msg){};
     58    derived_actor * d_actor = alloc();
     59    (*d_actor){};
     60    *d_actor | *d_msg;
    5961
    60         sout | "stopping";
     62    printf("stopping\n");
    6163
    62         stop_actor_system();
     64    stop_actor_system();
    6365
    64         sout | "stopped";
     66    printf("stopped\n");
     67
     68    return 0;
    6569}
Note: See TracChangeset for help on using the changeset viewer.