diff options
author | cdgill <cdgill@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-10-07 14:20:35 +0000 |
---|---|---|
committer | cdgill <cdgill@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-10-07 14:20:35 +0000 |
commit | a989c05e953ddd084f84341f1f3ffa1279c2f096 (patch) | |
tree | 58d528eb06c02710df1ebaac932903d10087f358 /examples/Bounded_Packet_Relay | |
parent | 23a476caf01bffd91901be23b0dd3023cbbbf8e9 (diff) | |
download | ATCD-a989c05e953ddd084f84341f1f3ffa1279c2f096.tar.gz |
changed event handlers to use deferred registration and cancellation callbacks
Diffstat (limited to 'examples/Bounded_Packet_Relay')
-rw-r--r-- | examples/Bounded_Packet_Relay/BPR_Drivers.cpp | 107 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/BPR_Drivers.h | 28 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp | 41 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/BPR_Drivers_T.h | 53 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/Makefile | 603 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp | 267 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h | 81 | ||||
-rw-r--r-- | examples/Bounded_Packet_Relay/bpr_thread.cpp | 2 |
8 files changed, 656 insertions, 526 deletions
diff --git a/examples/Bounded_Packet_Relay/BPR_Drivers.cpp b/examples/Bounded_Packet_Relay/BPR_Drivers.cpp index a3f451539e4..58536babbb6 100644 --- a/examples/Bounded_Packet_Relay/BPR_Drivers.cpp +++ b/examples/Bounded_Packet_Relay/BPR_Drivers.cpp @@ -43,13 +43,13 @@ Input_Device_Wrapper_Base::Input_Device_Wrapper_Base (ACE_Thread_Manager *input_ Input_Device_Wrapper_Base::~Input_Device_Wrapper_Base (void) { } - + // Sets send input message command in the input device driver object. int -Input_Device_Wrapper_Base::set_send_input_msg_cmd (Command_Base *send_input_msg_cmd) +Input_Device_Wrapper_Base::set_send_input_msg_cmd (ACE_Command_Base *send_input_msg_cmd) { - // Set the new command. Input device is not responsible + // Set the new command. Input device is not responsible // for deleting the old command, if any. send_input_msg_cmd_ = send_input_msg_cmd; return 0; @@ -57,7 +57,7 @@ Input_Device_Wrapper_Base::set_send_input_msg_cmd (Command_Base *send_input_msg_ // Sets period between when input messages are produced. -int +int Input_Device_Wrapper_Base::set_input_period (u_long input_period) { input_period_ = input_period; @@ -66,7 +66,7 @@ Input_Device_Wrapper_Base::set_input_period (u_long input_period) // Sets count of messages to send. -int +int Input_Device_Wrapper_Base::set_send_count (long count) { send_count_ = count; @@ -77,7 +77,7 @@ Input_Device_Wrapper_Base::set_send_count (long count) // and terminate its thread. Should return 1 if it will do so, 0 // if it has already done so, or -1 if there is a problem doing so. -int +int Input_Device_Wrapper_Base::request_stop (void) { if (is_active_) @@ -91,7 +91,7 @@ Input_Device_Wrapper_Base::request_stop (void) // This method runs the input device loop in the new thread. -int +int Input_Device_Wrapper_Base::svc (void) { ACE_Time_Value timeout; @@ -113,8 +113,8 @@ Input_Device_Wrapper_Base::svc (void) if (is_active_) { is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "Failed to create input message object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "Failed to create input message object"), -1); } @@ -128,8 +128,8 @@ Input_Device_Wrapper_Base::svc (void) if (is_active_) { is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "send message command object not instantiated"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "send message command object not instantiated"), -1); } @@ -143,8 +143,8 @@ Input_Device_Wrapper_Base::svc (void) if (is_active_) { is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "Failed executing send message command object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "Failed executing send message command object"), -1); } @@ -154,7 +154,7 @@ Input_Device_Wrapper_Base::svc (void) // If all went well, decrement count of messages to send, and // run the reactor event loop unti we get a timeout or something // happens in a registered upcall. - if (current_count_ > 0) + if (current_count_ > 0) --current_count_; timeout = ACE_Time_Value (0, input_period_); @@ -170,7 +170,7 @@ Input_Device_Wrapper_Base::svc (void) // underlying input device, by passing a pointer to the message block // to its command execution. -int +int Input_Device_Wrapper_Base::send_input_message (ACE_Message_Block *amb) { if (send_input_msg_cmd_) @@ -178,7 +178,7 @@ Input_Device_Wrapper_Base::send_input_message (ACE_Message_Block *amb) else { if (is_active_) - ACE_ERROR ((LM_ERROR, "%t %p\n", + ACE_ERROR ((LM_ERROR, "%t %p\n", "Input_Device_Wrapper_Base::send_input_message: " "command object not instantiated")); @@ -232,7 +232,7 @@ Bounded_Packet_Relay::send_input (void) // Don't block, return immediately if queue is empty. ACE_Message_Block *item; - // Using a separate (non-const) time value + // Using a separate (non-const) time value // is necessary on some platforms ACE_Time_Value immediate (ACE_Time_Value::zero); @@ -246,7 +246,7 @@ Bounded_Packet_Relay::send_input (void) { if (is_active_) ACE_ERROR ((LM_ERROR, - "%t %p\n", + "%t %p\n", "failed to write to output device object")); return -1; @@ -271,7 +271,7 @@ Bounded_Packet_Relay::start_transmission (u_long packet_count, // If a transmission is already in progress, just return. if (is_active_) return 1; - + // Set transmission in progress flag true. is_active_ = 1; @@ -279,7 +279,7 @@ Bounded_Packet_Relay::start_transmission (u_long packet_count, ++transmission_number_; packets_sent_ = 0; status_ = STARTED; - transmission_start_ = ACE_OS::gettimeofday (); + transmission_start_ = ACE_OS::gettimeofday (); // Reactivate the queue, and then clear it. queue_.activate (); @@ -294,48 +294,48 @@ Bounded_Packet_Relay::start_transmission (u_long packet_count, if (output_wrapper_->modify_device_settings ((void *) &logging_level) < 0) { status_ = ERROR_DETECTED; - transmission_end_ = ACE_OS::gettimeofday (); + transmission_end_ = ACE_OS::gettimeofday (); is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "failed to initialize output device object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "failed to initialize output device object"), -1); } // Initialize the input device. if (input_wrapper_->modify_device_settings ((void *) &logging_level) < 0) { status_ = ERROR_DETECTED; - transmission_end_ = ACE_OS::gettimeofday (); + transmission_end_ = ACE_OS::gettimeofday (); is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "failed to initialize output device object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "failed to initialize output device object"), -1); } else if (input_wrapper_->set_input_period (arrival_period) < 0) { status_ = ERROR_DETECTED; - transmission_end_ = ACE_OS::gettimeofday (); + transmission_end_ = ACE_OS::gettimeofday (); is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "failed to initialize input device object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "failed to initialize input device object"), -1); } else if (input_wrapper_->set_send_count (packet_count) < 0) { status_ = ERROR_DETECTED; - transmission_end_ = ACE_OS::gettimeofday (); + transmission_end_ = ACE_OS::gettimeofday (); is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "failed to initialize input device object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "failed to initialize input device object"), -1); } // Activate the input device. else if (input_wrapper_->activate () < 0) { status_ = ERROR_DETECTED; - transmission_end_ = ACE_OS::gettimeofday (); + transmission_end_ = ACE_OS::gettimeofday (); is_active_ = 0; - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "failed to activate input device object"), + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "failed to activate input device object"), -1); } @@ -358,7 +358,7 @@ Bounded_Packet_Relay::end_transmission (Transmission_Status status) // If a transmission is not already in progress, just return. if (! is_active_) return 1; - + // Set transmission in progress flag false. is_active_ = 0; @@ -366,12 +366,12 @@ Bounded_Packet_Relay::end_transmission (Transmission_Status status) if (input_wrapper_->request_stop () < 0) { status_ = ERROR_DETECTED; - transmission_end_ = ACE_OS::gettimeofday (); - ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", - "failed asking input device thread to stop"), + transmission_end_ = ACE_OS::gettimeofday (); + ACE_ERROR_RETURN ((LM_ERROR, "%t %p\n", + "failed asking input device thread to stop"), -1); } - + // Deactivate the queue, allowing all waiting threads to continue. queue_.deactivate (); @@ -390,7 +390,7 @@ Bounded_Packet_Relay::end_transmission (Transmission_Status status) // If all went well, set passed status, stamp end time, print a // termination message, and return success. status_ = status; - transmission_end_ = ACE_OS::gettimeofday (); + transmission_end_ = ACE_OS::gettimeofday (); ACE_DEBUG ((LM_DEBUG, "\n\nTransmission %u ended with status: %s\n\n", transmission_number_, status_msg ())); @@ -409,7 +409,7 @@ Bounded_Packet_Relay::report_statistics (void) // If a transmission is already in progress, just return. if (is_active_) return 1; - + // Calculate duration of trasmission. ACE_Time_Value duration (transmission_end_); duration -= transmission_start_; @@ -422,7 +422,7 @@ Bounded_Packet_Relay::report_statistics (void) "End time: %d (sec) %d (usec)\n" "Duration: %d (sec) %d (usec)\n" "Packets relayed: %u\n\n", - transmission_number_, status_msg (), + transmission_number_, status_msg (), transmission_start_.sec (), transmission_start_.usec (), transmission_end_.sec (), @@ -440,8 +440,8 @@ Bounded_Packet_Relay::receive_input (void * arg) { if (! arg) { - if (is_active_) - ACE_ERROR ((LM_ERROR, "%t %p\n", + if (is_active_) + ACE_ERROR ((LM_ERROR, "%t %p\n", "Bounded_Packet_Relay::receive_input: " "null argument")); @@ -452,7 +452,7 @@ Bounded_Packet_Relay::receive_input (void * arg) if (queue_.enqueue_tail (message) < 0) { if (is_active_) - ACE_ERROR ((LM_ERROR, "%t %p\n", + ACE_ERROR ((LM_ERROR, "%t %p\n", "Bounded_Packet_Relay::receive_input failed")); return -1; @@ -463,7 +463,7 @@ Bounded_Packet_Relay::receive_input (void * arg) // Get high water mark for relay queue. -ACE_UINT32 +ACE_UINT32 Bounded_Packet_Relay::queue_hwm (void) { return queue_lwm_; @@ -472,7 +472,7 @@ Bounded_Packet_Relay::queue_hwm (void) // Set high water mark for relay queue. -void +void Bounded_Packet_Relay::queue_hwm (ACE_UINT32 hwm) { queue_hwm_ = hwm; @@ -480,7 +480,7 @@ Bounded_Packet_Relay::queue_hwm (ACE_UINT32 hwm) // Get low water mark for relay queue. -ACE_UINT32 +ACE_UINT32 Bounded_Packet_Relay::queue_lwm (void) { return queue_lwm_; @@ -488,7 +488,7 @@ Bounded_Packet_Relay::queue_lwm (void) // Set low water mark for relay queue. -void +void Bounded_Packet_Relay::queue_lwm (ACE_UINT32 lwm) { queue_lwm_ = lwm; @@ -507,13 +507,13 @@ Bounded_Packet_Relay::status_msg (void) case UN_INITIALIZED: status_msg = "uninitialized"; break; - case STARTED: + case STARTED: status_msg = "in progress"; break; - case COMPLETED: + case COMPLETED: status_msg = "completed with all packets sent"; break; - case TIMED_OUT: + case TIMED_OUT: status_msg = "terminated by transmission duration timer"; break; case CANCELLED: @@ -529,4 +529,3 @@ Bounded_Packet_Relay::status_msg (void) return status_msg; } - diff --git a/examples/Bounded_Packet_Relay/BPR_Drivers.h b/examples/Bounded_Packet_Relay/BPR_Drivers.h index 1d3c5f03e80..49812a07d79 100644 --- a/examples/Bounded_Packet_Relay/BPR_Drivers.h +++ b/examples/Bounded_Packet_Relay/BPR_Drivers.h @@ -29,6 +29,7 @@ #if !defined (_BPR_DRIVERS_H_) #define _BPR_DRIVERS_H_ +#include "ace/Functor.h" #include "ace/Task.h" #include "ace/Synch.h" @@ -36,21 +37,6 @@ class Input_Device_Wrapper_Base; class Output_Device_Wrapper_Base; -class Command_Base -{ - // = TITLE - // Defines an abstract class that allows us to invoke commands - // without knowing anything about the implementation. - // - // = DESCRIPTION - // This class declares an interface to execute a command - // independent of the effect of the command, or the objects used - // to implement it. -public: - virtual int execute (void *arg) = 0; - // Invokes the method <action_> from the object <receiver_>. -}; - class Bounded_Packet_Relay { // = TITLE @@ -67,7 +53,7 @@ class Bounded_Packet_Relay // transmission call. public: // = Enumerates possible status values for a transmission. - enum Transmission_Status + enum Transmission_Status { UN_INITIALIZED, STARTED, @@ -211,8 +197,8 @@ public: virtual ~Input_Device_Wrapper_Base (); // Destructor. - - int set_send_input_msg_cmd (Command_Base *send_input_msg_cmd); + + int set_send_input_msg_cmd (ACE_Command_Base *send_input_msg_cmd); // Sets send input message command in the input device driver // object. @@ -244,7 +230,7 @@ protected: // underlying input device, by passing a pointer to the message // block to its command execution. - Command_Base *send_input_msg_cmd_; + ACE_Command_Base *send_input_msg_cmd_; // Send newly created input message. u_long input_period_; @@ -254,7 +240,7 @@ protected: // Reactor used to multiplex input streams, timeouts. int is_active_; - // Flag to indicate whether or not input object is + // Flag to indicate whether or not input object is // (and should remain) active. long send_count_; @@ -262,7 +248,7 @@ protected: // device should not stop). long current_count_; - // Currently remaining count of messages to send before stopping + // Currently remaining count of messages to send before stopping // (-1 indicates the device should not stop). }; diff --git a/examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp b/examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp index 3230842c17b..31390085b2f 100644 --- a/examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp +++ b/examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp @@ -34,25 +34,6 @@ ACE_RCSID(Bounded_Packet_Relay, BPR_Drivers_T, "$Id$") // Constructor. -template <class RECEIVER, class ACTION> -Command<RECEIVER, ACTION>::Command (RECEIVER &recvr, - ACTION action) - : receiver_ (recvr), - action_ (action) -{ -} - -// Invokes an operation. - -template <class RECEIVER, class ACTION> int -Command<RECEIVER, ACTION>::execute (void *arg) -{ - return (receiver_.*action_) (arg); -} - - -// Constructor. - template <class TQ> Bounded_Packet_Relay_Driver<TQ>::Bounded_Packet_Relay_Driver (void) : packet_count_cmd_ (0), @@ -177,7 +158,7 @@ Bounded_Packet_Relay_Driver<TQ>::parse_commands (const char *buf) // We just reread the option, this simplies parsing (since // sscanf can do it for us). - if ((::sscanf (buf, "%d %d", &option, &level) < 2) || + if ((::sscanf (buf, "%d %d", &option, &level) < 2) || (level < 0) || (level > 7)) { // If there was not enough information on the line, or the @@ -260,7 +241,7 @@ Bounded_Packet_Relay_Driver<TQ>::read_input (char *buf, size_t bufsiz) // Get count of packets to send in a transmission. -template <class TQ> u_long +template <class TQ> u_long Bounded_Packet_Relay_Driver<TQ>::packet_count (void) { return packet_count_; @@ -268,7 +249,7 @@ Bounded_Packet_Relay_Driver<TQ>::packet_count (void) // Set count of packets to send in a transmission. -template <class TQ> void +template <class TQ> void Bounded_Packet_Relay_Driver<TQ>::packet_count (u_long pc) { packet_count_ = pc; @@ -276,7 +257,7 @@ Bounded_Packet_Relay_Driver<TQ>::packet_count (u_long pc) // Get rate at which input packets are to arrive. -template <class TQ> u_long +template <class TQ> u_long Bounded_Packet_Relay_Driver<TQ>::arrival_period (void) { return arrival_period_; @@ -284,7 +265,7 @@ Bounded_Packet_Relay_Driver<TQ>::arrival_period (void) // Set rate at which input packets are to arrive. -template <class TQ> void +template <class TQ> void Bounded_Packet_Relay_Driver<TQ>::arrival_period (u_long ap) { arrival_period_ = ap; @@ -292,7 +273,7 @@ Bounded_Packet_Relay_Driver<TQ>::arrival_period (u_long ap) // Get rate at which packets are to be relayed (usec). -template <class TQ> u_long +template <class TQ> u_long Bounded_Packet_Relay_Driver<TQ>::send_period (void) { return send_period_; @@ -300,7 +281,7 @@ Bounded_Packet_Relay_Driver<TQ>::send_period (void) // Set rate at which packets are to be relayed (usec). -template <class TQ> void +template <class TQ> void Bounded_Packet_Relay_Driver<TQ>::send_period (u_long sp) { send_period_ = sp; @@ -308,7 +289,7 @@ Bounded_Packet_Relay_Driver<TQ>::send_period (u_long sp) // Get limit on the duration of the transmission (usec). -template <class TQ> u_long +template <class TQ> u_long Bounded_Packet_Relay_Driver<TQ>::duration_limit (void) { return duration_limit_; @@ -316,7 +297,7 @@ Bounded_Packet_Relay_Driver<TQ>::duration_limit (void) // Set limit on the duration of the transmission (usec). -template <class TQ> void +template <class TQ> void Bounded_Packet_Relay_Driver<TQ>::duration_limit (u_long dl) { duration_limit_ = dl; @@ -331,11 +312,9 @@ Bounded_Packet_Relay_Driver<TQ>::logging_level (void) // Set logging level. -template <class TQ> void +template <class TQ> void Bounded_Packet_Relay_Driver<TQ>::logging_level (int ll) { logging_level_ = ll; } #endif /* _BPR_DRIVER_T_CPP_ */ - - diff --git a/examples/Bounded_Packet_Relay/BPR_Drivers_T.h b/examples/Bounded_Packet_Relay/BPR_Drivers_T.h index 783c86e9328..31a8a41f798 100644 --- a/examples/Bounded_Packet_Relay/BPR_Drivers_T.h +++ b/examples/Bounded_Packet_Relay/BPR_Drivers_T.h @@ -29,40 +29,12 @@ #if !defined (_BPR_DRIVERS_T_H_) #define _BPR_DRIVERS_T_H_ +#include "ace/Functor.h" + // Forward declarations. class Input_Device_Wrapper_Base; class Output_Device_Wrapper_Base; -template <class RECEIVER, class ACTION> -class Command : public Command_Base -{ - // = TITLE - // Defines an abstract class that allows us to invoke commands - // without knowing anything about the implementation. This class - // is used in the <Bounded_Packet_Relay_Driver> to invoke - // operations of the driver. - // - // = DESCRIPTION - // This class declares an interface to execute operations, - // binding a RECEIVER object with an ACTION. The RECEIVER knows - // how to implement the operation. A class can invoke operations - // without knowing anything about it, or how it was implemented. -public: - Command (RECEIVER &recvr, ACTION action); - // Sets the <receiver_> of the Command to recvr, and the <action_> - // of the Command to <action>. - - virtual int execute (void *arg); - // Invokes the method <action_> from the object <receiver_>. - -private: - RECEIVER &receiver_; - // Object where the method resides. - - ACTION action_; - // Method that is going to be invoked. -}; - template <class TQ> class Bounded_Packet_Relay_Driver { @@ -145,33 +117,33 @@ protected: TQ timer_queue_; // Timer queue for transmission timeouts. - // = Set of <Command>s to be executed. + // = Set of commands to be executed. - Command_Base *packet_count_cmd_; + ACE_Command_Base *packet_count_cmd_; // Set packet count command. - Command_Base *arrival_period_cmd_; + ACE_Command_Base *arrival_period_cmd_; // Set arrival period command. - Command_Base *transmit_period_cmd_; + ACE_Command_Base *transmit_period_cmd_; // Set transmit period command. - Command_Base *duration_limit_cmd_; + ACE_Command_Base *duration_limit_cmd_; // Set duration limit command. - Command_Base *logging_level_cmd_; + ACE_Command_Base *logging_level_cmd_; // Set logging level command. - Command_Base *run_transmission_cmd_; + ACE_Command_Base *run_transmission_cmd_; // Run transmission command. - Command_Base *cancel_transmission_cmd_; + ACE_Command_Base *cancel_transmission_cmd_; // Cancel transmission command. - Command_Base *report_stats_cmd_; + ACE_Command_Base *report_stats_cmd_; // Report statistics command. - Command_Base *shutdown_cmd_; + ACE_Command_Base *shutdown_cmd_; // Shut down the driver. private: @@ -200,4 +172,3 @@ private: #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ #endif /* _BPR_DRIVERS_T_H_ */ - diff --git a/examples/Bounded_Packet_Relay/Makefile b/examples/Bounded_Packet_Relay/Makefile index 9291ba4b2f9..30c205dc03f 100644 --- a/examples/Bounded_Packet_Relay/Makefile +++ b/examples/Bounded_Packet_Relay/Makefile @@ -47,248 +47,365 @@ include $(ACE_ROOT)/include/makeinclude/rules.local.GNU # DO NOT DELETE THIS LINE -- g++dep uses it. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. -.obj/Thread_Bounded_Packet_Relay.o .obj/Thread_Bounded_Packet_Relay.so .shobj/Thread_Bounded_Packet_Relay.o .shobj/Thread_Bounded_Packet_Relay.so: Thread_Bounded_Packet_Relay.cpp \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Timer_Heap_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_Adapters.h \ - $(ACE_ROOT)/ace/Timer_Queue_Adapters.i \ - Thread_Bounded_Packet_Relay.h BPR_Drivers.h -.obj/BPR_Drivers.o .obj/BPR_Drivers.so .shobj/BPR_Drivers.o .shobj/BPR_Drivers.so: BPR_Drivers.cpp \ - $(ACE_ROOT)/ace/Auto_Ptr.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Auto_Ptr.i BPR_Drivers.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Timer_Heap_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_Adapters.h \ - $(ACE_ROOT)/ace/Timer_Queue_Adapters.i -.obj/bpr_thread.o .obj/bpr_thread.so .shobj/bpr_thread.o .shobj/bpr_thread.so: bpr_thread.cpp \ - $(ACE_ROOT)/ace/Auto_Ptr.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Auto_Ptr.i BPR_Drivers.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Timer_Heap_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_Adapters.h \ - $(ACE_ROOT)/ace/Timer_Queue_Adapters.i \ - Thread_Bounded_Packet_Relay.h +Thread_Bounded_Packet_Relay.o: Thread_Bounded_Packet_Relay.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Shared_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/ACE.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/OS.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/inc_user_config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/config-g++-common.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/streams.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Basic_Types.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Basic_Types.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/OS.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Trace.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Msg.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Record.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/ACE.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Priority.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Record.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Shared_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Event_Handler.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Event_Handler.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Complex.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Simple.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Simple.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Complex.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Atomic_Op.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_Base.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Memory_Pool.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Signal.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Signal.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Object_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Object_Manager.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Mem_Map.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Mem_Map.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Memory_Pool.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread_Manager.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Block.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Block.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/IO_Cntl_Msg.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SString.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SString.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Config.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Handle_Set.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Handle_Set.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor_Impl.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Svc_Conf_Tokens.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_Options.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_Options.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Hash_Map_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Hash_Map_Manager.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Repository.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Types.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Types.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Repository.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/WFMO_Reactor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/WFMO_Reactor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Heap_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Heap_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_Adapters.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_Adapters.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_Adapters.cpp \ + Thread_Bounded_Packet_Relay.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.cpp \ + BPR_Drivers.h BPR_Drivers_T.h BPR_Drivers_T.cpp +BPR_Drivers.o: BPR_Drivers.cpp BPR_Drivers.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/OS.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/inc_user_config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/config-g++-common.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/streams.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Basic_Types.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Basic_Types.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/OS.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Trace.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Msg.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Record.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/ACE.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/ACE.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Priority.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Record.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Shared_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Shared_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Event_Handler.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Event_Handler.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Complex.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Simple.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Simple.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Complex.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Atomic_Op.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_Base.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Memory_Pool.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Signal.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Signal.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Object_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Object_Manager.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Mem_Map.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Mem_Map.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Memory_Pool.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread_Manager.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Block.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Block.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/IO_Cntl_Msg.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SString.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SString.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Config.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Handle_Set.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Handle_Set.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor_Impl.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Svc_Conf_Tokens.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_Options.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_Options.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Hash_Map_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Hash_Map_Manager.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Repository.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Types.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Types.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Repository.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/WFMO_Reactor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/WFMO_Reactor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.cpp \ + BPR_Drivers_T.h BPR_Drivers_T.cpp +bpr_thread.o: bpr_thread.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Auto_Ptr.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/ACE.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/OS.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/inc_user_config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/config-g++-common.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/streams.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Basic_Types.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Basic_Types.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/OS.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Trace.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Msg.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Record.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/ACE.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Priority.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Log_Record.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Auto_Ptr.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Auto_Ptr.cpp \ + Thread_Bounded_Packet_Relay.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Functor_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Shared_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Shared_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Event_Handler.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Event_Handler.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Complex.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Simple.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Simple.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SV_Semaphore_Complex.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Atomic_Op.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Containers_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_Base.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Free_List.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Malloc_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Memory_Pool.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Signal.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Signal.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Object_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Object_Manager.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Managed_Object.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Mem_Map.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Mem_Map.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Memory_Pool.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Thread_Manager.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Block.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Block.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/IO_Cntl_Msg.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Config.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SString.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/SString.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Config.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Handle_Set.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Handle_Set.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Reactor_Impl.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Svc_Conf_Tokens.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_Options.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Synch_Options.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Hash_Map_Manager.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Hash_Map_Manager.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Repository.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Types.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Types.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Service_Repository.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/WFMO_Reactor.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/WFMO_Reactor.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Strategies.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Message_Queue.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Task_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Module.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Stream_Modules.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Heap_T.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Heap_T.cpp \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_Adapters.h \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_Adapters.i \ + /project/doc/cdgill/ACE_wrappers/build/sunc++/ace/Timer_Queue_Adapters.cpp \ + BPR_Drivers.h BPR_Drivers_T.h BPR_Drivers_T.cpp # IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp b/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp index 03b5f999291..e0a9e03736b 100644 --- a/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp +++ b/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp @@ -23,19 +23,18 @@ // // ============================================================================ -#include "ace/Task.h" -#include "ace/Timer_Heap_T.h" -#include "ace/Timer_Queue_Adapters.h" #include "Thread_Bounded_Packet_Relay.h" -typedef Thread_Bounded_Packet_Relay_Driver::COMMAND CMD; +typedef Thread_Bounded_Packet_Relay_Driver::COMMAND DRIVER_CMD; +typedef BPR_Handler_Base::COMMAND HANDLER_CMD; +typedef Send_Handler::COMMAND SEND_HANDLER_CMD; ACE_RCSID(Bounded_Packet_Relay, Thread_Bounded_Packet_Relay, "$Id$") // Constructor. Text_Input_Device_Wrapper::Text_Input_Device_Wrapper (ACE_Thread_Manager *input_task_mgr, - size_t read_length, + size_t read_length, const char* text, int logging) : Input_Device_Wrapper_Base (input_task_mgr), @@ -56,7 +55,7 @@ Text_Input_Device_Wrapper::~Text_Input_Device_Wrapper (void) // Modifies device settings based on passed pointer to a u_long. -int +int Text_Input_Device_Wrapper::modify_device_settings (void *logging) { packet_count_ = 0; @@ -81,8 +80,8 @@ Text_Input_Device_Wrapper::create_input_message (void) // Construct a new message block to send. ACE_Message_Block *mb; - ACE_NEW_RETURN (mb, - ACE_Message_Block (read_length_), + ACE_NEW_RETURN (mb, + ACE_Message_Block (read_length_), 0); // Zero out a "read" buffer to hold data. @@ -98,19 +97,19 @@ Text_Input_Device_Wrapper::create_input_message (void) } // Copy buf into the Message_Block and update the wr_ptr (). - if (mb->copy (read_buf, read_length_) < 0) + if (mb->copy (read_buf, read_length_) < 0) { delete mb; ACE_ERROR_RETURN ((LM_ERROR, "read buffer copy failed"), 0); } - + // log packet creation if logging is turned on if (logging_ & Text_Input_Device_Wrapper::LOG_MSGS_CREATED) { ++packet_count_; - ACE_DEBUG ((LM_DEBUG, "input message %d created\n", + ACE_DEBUG ((LM_DEBUG, "input message %d created\n", packet_count_)); } @@ -126,7 +125,7 @@ Text_Output_Device_Wrapper::Text_Output_Device_Wrapper (int logging) // Consume and possibly print out the passed message. -int +int Text_Output_Device_Wrapper::write_output_message (void *message) { if (message) @@ -134,7 +133,7 @@ Text_Output_Device_Wrapper::write_output_message (void *message) ++packet_count_; if (logging_ & Text_Output_Device_Wrapper::LOG_MSGS_RCVD) - ACE_DEBUG ((LM_DEBUG, "output message %d received\n", + ACE_DEBUG ((LM_DEBUG, "output message %d received\n", packet_count_)); if (logging_ & Text_Output_Device_Wrapper::PRINT_MSGS_RCVD) @@ -154,7 +153,7 @@ Text_Output_Device_Wrapper::write_output_message (void *message) // Modifies device settings based on passed pointer to a u_long. -int +int Text_Output_Device_Wrapper::modify_device_settings (void *logging) { packet_count_ = 0; @@ -191,7 +190,7 @@ User_Input_Task::~User_Input_Task (void) // Runs the main event loop. -int +int User_Input_Task::svc (void) { for (;;) @@ -207,11 +206,11 @@ User_Input_Task::svc (void) "terminating user input thread\n")); this->clear_all_timers (); return 0; -} +} // Sets the number of packets for the next transmission. -int +int User_Input_Task::set_packet_count (void *argument) { if (argument) @@ -219,15 +218,15 @@ User_Input_Task::set_packet_count (void *argument) driver_.packet_count (*ACE_static_cast (int *, argument)); return 0; } - ACE_ERROR_RETURN ((LM_ERROR, - "User_Input_Task::set_packet_count: null argument"), + ACE_ERROR_RETURN ((LM_ERROR, + "User_Input_Task::set_packet_count: null argument"), -1); } // Sets the input device packet arrival period (usecs) for the next // transmission. -int +int User_Input_Task::set_arrival_period (void *argument) { if (argument) @@ -235,15 +234,15 @@ User_Input_Task::set_arrival_period (void *argument) driver_.arrival_period (*ACE_static_cast (int *, argument)); return 0; } - ACE_ERROR_RETURN ((LM_ERROR, - "User_Input_Task::set_arrival_period: null argument"), + ACE_ERROR_RETURN ((LM_ERROR, + "User_Input_Task::set_arrival_period: null argument"), -1); } // Sets the period between output device sends (usecs) for the next // transmission. -int +int User_Input_Task::set_send_period (void *argument) { if (argument) @@ -251,14 +250,14 @@ User_Input_Task::set_send_period (void *argument) driver_.send_period (*ACE_static_cast (int *, argument)); return 0; } - ACE_ERROR_RETURN ((LM_ERROR, - "User_Input_Task::set_send_period: null argument"), + ACE_ERROR_RETURN ((LM_ERROR, + "User_Input_Task::set_send_period: null argument"), -1); } // Sets a limit on the transmission duration (usecs). -int +int User_Input_Task::set_duration_limit (void *argument) { if (argument) @@ -266,30 +265,30 @@ User_Input_Task::set_duration_limit (void *argument) driver_.duration_limit (*ACE_static_cast (int *, argument)); return 0; } - ACE_ERROR_RETURN ((LM_ERROR, - "User_Input_Task::set_duration_limit: null argument"), + ACE_ERROR_RETURN ((LM_ERROR, + "User_Input_Task::set_duration_limit: null argument"), -1); } // Sets logging level (0 or 1) for output device for the next // transmission. -int +int User_Input_Task::set_logging_level (void *argument) { if (argument) { driver_.logging_level (*ACE_static_cast (int *, argument)); return 0; - } - ACE_ERROR_RETURN ((LM_ERROR, - "User_Input_Task::set_logging_level: null argument"), + } + ACE_ERROR_RETURN ((LM_ERROR, + "User_Input_Task::set_logging_level: null argument"), -1); } // Runs the next transmission (if one is not in progress). -int +int User_Input_Task::run_transmission (void *) { if (relay_) @@ -299,7 +298,7 @@ User_Input_Task::run_transmission (void *) driver_.logging_level ())) { case 1: - ACE_DEBUG ((LM_DEBUG, + ACE_DEBUG ((LM_DEBUG, "\nRun transmission: " " Transmission already in progress\n")); return 0; @@ -311,19 +310,19 @@ User_Input_Task::run_transmission (void *) ACE_Time_Value send_at (send_every + now); Send_Handler *send_handler; - ACE_NEW_RETURN (send_handler, - Send_Handler (driver_.packet_count (), + ACE_NEW_RETURN (send_handler, + Send_Handler (driver_.packet_count (), send_every, *relay_, *queue_, - driver_), + driver_), -1); if (queue_->schedule (send_handler, 0, send_at) < 0) { delete send_handler; - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR_RETURN ((LM_ERROR, "User_Input_Task::run_transmission: " - "failed to schedule send handler"), + "failed to schedule send handler"), -1); } if (driver_.duration_limit ()) @@ -335,27 +334,27 @@ User_Input_Task::run_transmission (void *) termination_handler = new Termination_Handler (*relay_, - *queue_, + *queue_, driver_); - + if (! termination_handler) { this->clear_all_timers (); - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR_RETURN ((LM_ERROR, "User_Input_Task::run_transmission: " "failed to allocate termination " - "handler"), + "handler"), -1); } - if (queue_->schedule (termination_handler, + if (queue_->schedule (termination_handler, 0, terminate_at) < 0) { delete termination_handler; this->clear_all_timers (); - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR_RETURN ((LM_ERROR, "User_Input_Task::run_transmission: " "failed to schedule termination " - "handler"), + "handler"), -1); } } @@ -365,17 +364,17 @@ User_Input_Task::run_transmission (void *) default: return -1; /* NOTREACHED */ - } - } - ACE_ERROR_RETURN ((LM_ERROR, + } + } + ACE_ERROR_RETURN ((LM_ERROR, "User_Input_Task::run_transmission: " - "relay not instantiated"), + "relay not instantiated"), -1); } // Ends the current transmission (if one is in progress). -int +int User_Input_Task::end_transmission (void *) { if (relay_) @@ -383,11 +382,11 @@ User_Input_Task::end_transmission (void *) switch (relay_->end_transmission (Bounded_Packet_Relay::CANCELLED)) { case 1: - ACE_DEBUG ((LM_DEBUG, + ACE_DEBUG ((LM_DEBUG, "\nEnd transmission: " "no transmission in progress\n")); /* Fall through to next case */ - case 0: + case 0: // Cancel any remaining timers. this->clear_all_timers (); return 0; @@ -397,16 +396,16 @@ User_Input_Task::end_transmission (void *) /* NOTREACHED */ } } - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR_RETURN ((LM_ERROR, "User_Input_Task::end_transmission: " - "relay not instantiated"), + "relay not instantiated"), -1); } -// Reports statistics for the previous transmission +// Reports statistics for the previous transmission // (if one is not in progress). -int +int User_Input_Task::report_stats (void *) { if (relay_) @@ -414,7 +413,7 @@ User_Input_Task::report_stats (void *) switch (relay_->report_statistics ()) { case 1: - ACE_DEBUG ((LM_DEBUG, + ACE_DEBUG ((LM_DEBUG, "\nRun transmission: " "\transmission already in progress\n")); return 0; @@ -430,15 +429,15 @@ User_Input_Task::report_stats (void *) /* NOTREACHED */ } } - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR_RETURN ((LM_ERROR, "User_Input_Task::report_stats: " - "relay not instantiated"), + "relay not instantiated"), -1); } // Shut down the task. -int +int User_Input_Task::shutdown (void *) { // Clear any outstanding timers. @@ -488,8 +487,13 @@ BPR_Handler_Base::~BPR_Handler_Base (void) // Helper method: clears all timers. int -BPR_Handler_Base::clear_all_timers (void) +BPR_Handler_Base::clear_all_timers (void *arg) { + // Macro to avoid compiler warnings on some platforms. This + // is a command accessible method, which necessitates passing + // a void pointer to a potential command argument. + ACE_UNUSED_ARG (arg); + // Loop through the timers in the queue, cancelling each one. for (ACE_Timer_Node_T <ACE_Event_Handler *> *node; @@ -498,12 +502,15 @@ BPR_Handler_Base::clear_all_timers (void) queue_.timer_queue ().cancel (node->get_timer_id (), 0, 0); // queue_.cancel (node->get_timer_id (), 0); + // Invoke the handler's (virtual) destructor + delete this; + return 0; } // Constructor. -Send_Handler::Send_Handler (u_long send_count, +Send_Handler::Send_Handler (u_long send_count, const ACE_Time_Value &duration, Bounded_Packet_Relay &relay, Thread_Timer_Queue &queue, @@ -523,7 +530,7 @@ Send_Handler::~Send_Handler (void) // Call back hook. -int +int Send_Handler::handle_timeout (const ACE_Time_Value ¤t_time, const void *arg) { @@ -536,25 +543,28 @@ Send_Handler::handle_timeout (const ACE_Time_Value ¤t_time, case 1: if (send_count_ > 0) { - // Re-register the handler for a new timeout. - if (queue_.schedule (this, - 0, - duration_ + ACE_OS::gettimeofday ()) < 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Send_Handler::handle_timeout: " - "failed to reschedule send handler"), - -1); - return 0; + // Enqueue a deferred callback to the reregister command. + SEND_HANDLER_CMD *re_register_callback_; + ACE_NEW_RETURN (re_register_callback_, + SEND_HANDLER_CMD (*this, + &Send_Handler::reregister), + -1); + return queue_.enqueue_command (re_register_callback_); } else { - // All packets are sent, time to cancel any other timers, end - // the transmission, redisplay the user menu, and go away. - this->clear_all_timers (); + // All packets are sent, time to end the transmission, redisplay + // the user menu, cancel any other timers, and go away. relay_.end_transmission (Bounded_Packet_Relay::COMPLETED); driver_.display_menu (); - delete this; - return 0; + + // Enqueue a deferred callback to the clear_all_timers command. + HANDLER_CMD *clear_timers_callback_; + ACE_NEW_RETURN (clear_timers_callback_, + HANDLER_CMD (*this, + &BPR_Handler_Base::clear_all_timers), + -1); + return queue_.enqueue_command (clear_timers_callback_); } /* NOTREACHED */ default: @@ -564,19 +574,42 @@ Send_Handler::handle_timeout (const ACE_Time_Value ¤t_time, // Cancellation hook. -int +int Send_Handler::cancelled (void) { delete this; return 0; } +// Helper method: re-registers this timer + +int +Send_Handler::reregister (void *arg) +{ + // Macro to avoid compiler warnings on some platforms. This + // is a command accessible method, which necessitates passing + // a void pointer to a potential command invocation argument. + ACE_UNUSED_ARG (arg); + + // Re-register the handler for a new timeout. + if (queue_.schedule (this, + 0, + duration_ + ACE_OS::gettimeofday ()) < 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Send_Handler::reregister: " + "failed to reschedule send handler"), + -1); + + return 0; +} + + // Constructor. Termination_Handler::Termination_Handler (Bounded_Packet_Relay &relay, Thread_Timer_Queue &queue, Thread_Bounded_Packet_Relay_Driver &driver) - : BPR_Handler_Base (relay, queue), + : BPR_Handler_Base (relay, queue), driver_ (driver) { } @@ -589,22 +622,28 @@ Termination_Handler::~Termination_Handler (void) // Call back hook. -int +int Termination_Handler::handle_timeout (const ACE_Time_Value ¤t_time, const void *arg) { - // Transmission timed out, so cancel any other timers, - // end the transmission, display the user menu, and go away. - this->clear_all_timers (); + // Transmission timed out, so end the transmission, display the user + // menu, and register a callback to clear the timer queue and then + // make this object go away. relay_.end_transmission (Bounded_Packet_Relay::TIMED_OUT); driver_.display_menu (); - delete this; - return 0; + + // Enqueue a deferred callback to the clear_all_timers command. + HANDLER_CMD *clear_timers_callback_; + ACE_NEW_RETURN (clear_timers_callback_, + HANDLER_CMD (*this, + &BPR_Handler_Base::clear_all_timers), + -1); + return queue_.enqueue_command (clear_timers_callback_); } // Cancellation hook -int +int Termination_Handler::cancelled (void) { delete this; @@ -626,7 +665,7 @@ Thread_Bounded_Packet_Relay_Driver::~Thread_Bounded_Packet_Relay_Driver (void) // Display the user menu. -int +int Thread_Bounded_Packet_Relay_Driver::display_menu (void) { static char menu[] = @@ -657,8 +696,8 @@ Thread_Bounded_Packet_Relay_Driver::display_menu (void) " ----------------------------------------------------------------------\n" " Please enter your choice: "; - ACE_DEBUG ((LM_DEBUG, - menu, + ACE_DEBUG ((LM_DEBUG, + menu, this->packet_count (), this->arrival_period (), this->send_period (), @@ -670,46 +709,46 @@ Thread_Bounded_Packet_Relay_Driver::display_menu (void) // Initialize the driver. -int +int Thread_Bounded_Packet_Relay_Driver::init (void) { // Initialize the <Command> objects with their corresponding // methods from <User_Input_Task>. ACE_NEW_RETURN (packet_count_cmd_, - CMD (input_task_, - &User_Input_Task::set_packet_count), + DRIVER_CMD (input_task_, + &User_Input_Task::set_packet_count), -1); ACE_NEW_RETURN (arrival_period_cmd_, - CMD (input_task_, - &User_Input_Task::set_arrival_period), + DRIVER_CMD (input_task_, + &User_Input_Task::set_arrival_period), -1); ACE_NEW_RETURN (transmit_period_cmd_, - CMD (input_task_, - &User_Input_Task::set_send_period), + DRIVER_CMD (input_task_, + &User_Input_Task::set_send_period), -1); ACE_NEW_RETURN (duration_limit_cmd_, - CMD (input_task_, - &User_Input_Task::set_duration_limit), + DRIVER_CMD (input_task_, + &User_Input_Task::set_duration_limit), -1); ACE_NEW_RETURN (logging_level_cmd_, - CMD (input_task_, - &User_Input_Task::set_logging_level), + DRIVER_CMD (input_task_, + &User_Input_Task::set_logging_level), -1); ACE_NEW_RETURN (run_transmission_cmd_, - CMD (input_task_, - &User_Input_Task::run_transmission), + DRIVER_CMD (input_task_, + &User_Input_Task::run_transmission), -1); ACE_NEW_RETURN (cancel_transmission_cmd_, - CMD (input_task_, - &User_Input_Task::end_transmission), + DRIVER_CMD (input_task_, + &User_Input_Task::end_transmission), -1); ACE_NEW_RETURN (report_stats_cmd_, - CMD (input_task_, - &User_Input_Task::report_stats), + DRIVER_CMD (input_task_, + &User_Input_Task::report_stats), -1); ACE_NEW_RETURN (shutdown_cmd_, - CMD (input_task_, - &User_Input_Task::shutdown), + DRIVER_CMD (input_task_, + &User_Input_Task::shutdown), -1); if (this->input_task_.activate () == -1) ACE_ERROR_RETURN ((LM_ERROR, @@ -728,7 +767,7 @@ Thread_Bounded_Packet_Relay_Driver::init (void) // Run the driver -int +int Thread_Bounded_Packet_Relay_Driver::run (void) { this->init (); @@ -738,11 +777,15 @@ Thread_Bounded_Packet_Relay_Driver::run (void) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Thread_Timer_Queue_Adapter<Timer_Heap>; template class Bounded_Packet_Relay_Driver<Thread_Timer_Queue>; -template class Command<User_Input_Task, User_Input_Task::ACTION>; +template class ACE_Command_Callback<User_Input_Task, User_Input_Task::ACTION>; +template class ACE_Command_Callback<BPR_Handler_Base, BPR_Handler_Base::ACTION>; +template class ACE_Command_Callback<Send_Handler, Send_Handler::ACTION>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Thread_Timer_Queue_Adapter<Timer_Heap> #pragma instantiate Bounded_Packet_Relay_Driver<Thread_Timer_Queue> -#pragma instantiate Command<User_Input_Task, User_Input_Task::ACTION> +#pragma instantiate ACE_Command_Callback<User_Input_Task, User_Input_Task::ACTION> +#pragma instantiate ACE_Command_Callback<BPR_Handler_Base, BPR_Handler_Base::ACTION> +#pragma instantiate ACE_Command_Callback<Send_Handler, Send_Handler::ACTION> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) diff --git a/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h b/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h index e294b5600de..e7323c20b91 100644 --- a/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h +++ b/examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h @@ -14,7 +14,7 @@ // of the bounded packet relay example. // // = AUTHORS -// Chris Gill <cdgill@cs.wustl.edu> and +// Chris Gill <cdgill@cs.wustl.edu> and // Douglas C. Schmidt <schmidt@cs.wustl.edu> // // Based on the Timer Queue Test example written by @@ -28,6 +28,9 @@ #if !defined (_THREAD_BOUNDED_PACKET_RELAY_H_) #define _THREAD_BOUNDED_PACKET_RELAY_H_ +#define ACE_HAS_DEFERRED_TIMER_COMMANDS + +#include "ace/Functor.h" #include "ace/Task.h" #include "ace/Timer_Heap_T.h" #include "ace/Timer_Queue_Adapters.h" @@ -54,7 +57,7 @@ class Thread_Bounded_Packet_Relay_Driver; class Text_Input_Device_Wrapper : public Input_Device_Wrapper_Base { // = TITLE - // Defines a wrapper for a simple active looping text input + // Defines a wrapper for a simple active looping text input // pseudo-device. // // = DESCRIPTION @@ -72,13 +75,13 @@ class Text_Input_Device_Wrapper : public Input_Device_Wrapper_Base public: // = Enumerated logging level flags - enum Logging_Flags {NO_LOGGING = 0, + enum Logging_Flags {NO_LOGGING = 0, LOG_MSGS_CREATED = 1}; // = Initialization and termination methods. Text_Input_Device_Wrapper (ACE_Thread_Manager *input_task_mgr, - size_t read_length, - const char* text, + size_t read_length, + const char* text, int logging = 0); // Constructor. @@ -116,7 +119,7 @@ private: class Text_Output_Device_Wrapper : public Output_Device_Wrapper_Base { // = TITLE - // Implements a simple wrapper for a output pseudo-device. + // Implements a simple wrapper for a output pseudo-device. // // = DESCRIPTION // Data from the passed output message is printed to the standard @@ -124,7 +127,7 @@ class Text_Output_Device_Wrapper : public Output_Device_Wrapper_Base public: // = Enumerated logging level flags - enum Logging_Flags {NO_LOGGING = 0, + enum Logging_Flags {NO_LOGGING = 0, LOG_MSGS_RCVD = 2, PRINT_MSGS_RCVD = 4}; @@ -161,8 +164,10 @@ class User_Input_Task : public ACE_Task_Base // the control of a Timer_Queue, which is dispatched by another // thread. public: + + // = Trait for command accessible entry points. + typedef int (User_Input_Task::*ACTION) (void *); - // Trait for command accessible entry points. User_Input_Task (Bounded_Packet_Relay *relay, Thread_Timer_Queue *queue, @@ -231,20 +236,30 @@ class BPR_Handler_Base : public ACE_Event_Handler // Base event handler class for bounded packet relay example. // // = DESCRIPTION - // The <handle_timeout> hook method calls the relay's send - // method and decrements its count of messages to send. - // If there are still messages to send, it re-registers itself - // with the timer queue. Otherwise it calls the relay's end - // transmission method, clears the timer queue, and then deletes "this". + // The base class provides a helper method that derived classes + // can register as a deferred execution callback that will cancel + // all timers in the underlying timer queue, and then delete "this". + // public: + + // = Trait for command accessible entry points. + + typedef int (BPR_Handler_Base::*ACTION) (void *); + + // = Trait for callback commands to methods of this base class + + typedef ACE_Command_Callback<BPR_Handler_Base, BPR_Handler_Base::ACTION> COMMAND; + BPR_Handler_Base (Bounded_Packet_Relay &relay, Thread_Timer_Queue &queue); // Constructor. - ~BPR_Handler_Base (void); + virtual ~BPR_Handler_Base (void); // Destructor. - virtual int clear_all_timers (void); + // = Command accessible entry points. + + virtual int clear_all_timers (void *); // Helper method: clears all timers. protected: @@ -264,19 +279,29 @@ class Send_Handler : public BPR_Handler_Base // // = DESCRIPTION // The <handle_timeout> hook method calls the relay's send - // method and decrements its count of messages to send. + // method and decrements its count of messages to send. // If there are still messages to send, it re-registers itself // with the timer queue. Otherwise it calls the relay's end - // transmission method, clears the timer queue, and then deletes "this". + // transmission method, and registers a deferred execution + // callback to clear the timer queue, and then delete "this". public: - Send_Handler (u_long send_count, + + // = Trait for command accessible entry points. + + typedef int (Send_Handler::*ACTION) (void *); + + // = Trait for callback commands to methods of this class + + typedef ACE_Command_Callback<Send_Handler, Send_Handler::ACTION> COMMAND; + + Send_Handler (u_long send_count, const ACE_Time_Value &duration, Bounded_Packet_Relay &relay, Thread_Timer_Queue &queue, Thread_Bounded_Packet_Relay_Driver &driver); // Constructor. - ~Send_Handler (void); + virtual ~Send_Handler (void); // Destructor. virtual int handle_timeout (const ACE_Time_Value ¤t_time, @@ -286,13 +311,19 @@ public: virtual int cancelled (void); // Cancellation hook. + // = Command accessible entry points. + + virtual int reregister (void *timeout); + // Helper method: re-registers this handler. + private: + u_long send_count_; // Count of the number of messages to send from the // relay object to the output device object. ACE_Time_Value duration_; - // Stores the expected duration until expiration, and is used to + // Stores the expected duration until expiration, and is used to // re-register the handler if there are still sends to perform. Thread_Bounded_Packet_Relay_Driver &driver_; @@ -306,14 +337,15 @@ class Termination_Handler : public BPR_Handler_Base // // = DESCRIPTION // The <handle_timeout> hook method calls the relay's end - // transmission method, and then deletes "this". + // transmission method, then registers a deferred execution + // callback to clear all timers and then delete "this". public: Termination_Handler (Bounded_Packet_Relay &relay, Thread_Timer_Queue &queue, Thread_Bounded_Packet_Relay_Driver &driver); // Constructor. - ~Termination_Handler (void); + virtual ~Termination_Handler (void); // Destructor. virtual int handle_timeout (const ACE_Time_Value ¤t_time, @@ -340,10 +372,13 @@ class Thread_Bounded_Packet_Relay_Driver : public Bounded_Packet_Relay_Driver <T // called from the base class to print a menu specific to the // thread implementation of the timer queue. public: + // = Trait for commands issued from this driver - typedef Command<User_Input_Task, User_Input_Task::ACTION> COMMAND; + + typedef ACE_Command_Callback<User_Input_Task, User_Input_Task::ACTION> COMMAND; // = Initialization and termination methods. + Thread_Bounded_Packet_Relay_Driver (Bounded_Packet_Relay *relay); // Constructor. diff --git a/examples/Bounded_Packet_Relay/bpr_thread.cpp b/examples/Bounded_Packet_Relay/bpr_thread.cpp index ea232893d62..a7a2c309503 100644 --- a/examples/Bounded_Packet_Relay/bpr_thread.cpp +++ b/examples/Bounded_Packet_Relay/bpr_thread.cpp @@ -31,7 +31,7 @@ ACE_RCSID(Bounded_Packet_Relay, bpr_thread, "$Id$") typedef Bounded_Packet_Relay_Driver<Thread_Timer_Queue> THREAD_BOUNDED_PACKET_RELAY_DRIVER; -typedef Command<Bounded_Packet_Relay, Bounded_Packet_Relay::ACTION> +typedef ACE_Command_Callback<Bounded_Packet_Relay,Bounded_Packet_Relay::ACTION> INPUT_CALLBACK; // A snippet from Andrew Marvell (Oliver Cromwell's poet laureate) |