- File:
-
- 1 edited
-
libcfa/src/concurrency/actor.hfa (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/actor.hfa
rb065dbb re39cfb9 46 46 enum allocation { Nodelete, Delete, Destroy, Finished }; // allocation status 47 47 48 typedef allocation (*__receive_fn)(actor &, message & , actor **, message **);48 typedef allocation (*__receive_fn)(actor &, message &); 49 49 struct request { 50 actor * base_receiver; 50 51 actor * receiver; 52 message * base_msg; 51 53 message * msg; 52 54 __receive_fn fn; … … 57 59 }; 58 60 static inline void ?{}( request & this ) {} 59 static inline void ?{}( request & this, actor * receiver, message * msg, __receive_fn fn ) { 61 static inline void ?{}( request & this, actor * base_receiver, actor * receiver, message * base_msg, message * msg, __receive_fn fn ) { 62 this.base_receiver = base_receiver; 60 63 this.receiver = receiver; 64 this.base_msg = base_msg; 61 65 this.msg = msg; 62 66 this.fn = fn; … … 456 460 static inline void deliver_request( request & this ) { 457 461 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 ); 464 465 } 465 466
Note:
See TracChangeset
for help on using the changeset viewer.