Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/actor.hfa

    rb065dbb re39cfb9  
    4646enum allocation { Nodelete, Delete, Destroy, Finished }; // allocation status
    4747
    48 typedef allocation (*__receive_fn)(actor &, message &, actor **, message **);
     48typedef allocation (*__receive_fn)(actor &, message &);
    4949struct request {
     50    actor * base_receiver;
    5051    actor * receiver;
     52    message * base_msg;
    5153    message * msg;
    5254    __receive_fn fn;
     
    5759};
    5860static inline void ?{}( request & this ) {}
    59 static inline void ?{}( request & this, actor * receiver, message * msg, __receive_fn fn ) {
     61static inline void ?{}( request & this, actor * base_receiver, actor * receiver, message * base_msg, message * msg, __receive_fn fn ) {
     62    this.base_receiver = base_receiver;
    6063    this.receiver = receiver;
     64    this.base_msg = base_msg;
    6165    this.msg = msg;
    6266    this.fn = fn;
     
    456460static inline void deliver_request( request & this ) {
    457461    DEBUG_ABORT( this.receiver->ticket == (unsigned long int)MAX, "Attempted to send message to deleted/dead actor\n" );
    458     actor * base_actor;
    459     message * base_msg;
    460     allocation temp = this.fn( *this.receiver, *this.msg, &base_actor, &base_msg );
    461     base_actor->allocation_ = temp;
    462     check_message( *base_msg );
    463     check_actor( *base_actor );
     462    this.base_receiver->allocation_ = this.fn( *this.receiver, *this.msg );
     463    check_message( *this.base_msg );
     464    check_actor( *this.base_receiver );
    464465}
    465466
Note: See TracChangeset for help on using the changeset viewer.