summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcdgill <cdgill@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-10-07 14:20:35 +0000
committercdgill <cdgill@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-10-07 14:20:35 +0000
commita989c05e953ddd084f84341f1f3ffa1279c2f096 (patch)
tree58d528eb06c02710df1ebaac932903d10087f358
parent23a476caf01bffd91901be23b0dd3023cbbbf8e9 (diff)
downloadATCD-a989c05e953ddd084f84341f1f3ffa1279c2f096.tar.gz
changed event handlers to use deferred registration and cancellation callbacks
-rw-r--r--examples/Bounded_Packet_Relay/BPR_Drivers.cpp107
-rw-r--r--examples/Bounded_Packet_Relay/BPR_Drivers.h28
-rw-r--r--examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp41
-rw-r--r--examples/Bounded_Packet_Relay/BPR_Drivers_T.h53
-rw-r--r--examples/Bounded_Packet_Relay/Makefile603
-rw-r--r--examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp267
-rw-r--r--examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h81
-rw-r--r--examples/Bounded_Packet_Relay/bpr_thread.cpp2
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 &current_time,
const void *arg)
{
@@ -536,25 +543,28 @@ Send_Handler::handle_timeout (const ACE_Time_Value &current_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 &current_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 &current_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 &current_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 &current_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)