// This file defines the Options class for CPP-inclient. IBM C++ compiler'd // template auto-instantiator needs this in a separate file. #ifndef __CPP_INCLIENT_H #define __CPP_INCLIENT_H #include "ace/SOCK_Stream.h" #include "ace/Barrier.h" #include "ace/Time_Value.h" class Options // = TITLE // Define the options for this test. { public: Options (void); // Constructor. ~Options (void); // Destructor. int parse_args (int argc, ACE_TCHAR *argv[]); // Parse the command-line arguments. const ACE_Time_Value &sleep_time () const; // Return the amount of time to sleep in order to implement the // proper transmission rates. u_short port () const; // Port of the server. const ACE_TCHAR *host () const; // Host of the server. size_t threads () const; // Number of threads. const ACE_TCHAR *quit_string () const; // String that shuts down the client/server. ssize_t read (void *buf, size_t len, size_t &iterations); // Read from the appropriate location. size_t message_len () const; // Returns the length of the message to send. const void *message_buf () const; // Returns a pointer to the message. ACE_THR_FUNC thr_func (void); // Returns a pointer to the entry point into the thread that runs // the client test function. private: int init (void); // Initialize the message we're sending to the user and set up the // barrier. char *shared_client_test (u_short port, ACE_SOCK_Stream &cli_stream); // Performs the shared behavior of the oneway and twoway client // tests. static void *twoway_client_test (void *); // Performs the twoway test. static void *oneway_client_test (void *); // Performs the oneway test. const ACE_TCHAR *host_; // Host of the server. u_short port_; // Port of the server. ACE_Time_Value sleep_time_; // Sleep_Time value. size_t threads_; // Number of threads. const ACE_TCHAR *quit_string_; // String that shuts down the client/server. size_t message_len_; // Size of the message we send to the server. char *message_buf_; // Pointer to the message we send to the server. ACE_HANDLE io_source_; // Are we reading I/O from ACE_STDIN or from our generator? size_t iterations_; // Number of iterations. char oneway_; // Are we running oneway or twoway? // Please leave the ; inside the parenthesis to avoid Green Hills // (and probably other) compiler warning about extra ;. ACE_MT (ACE_Barrier *barrier_;) // Barrier used to synchronize the start of all the threads. }; #endif /* __CPP_INCLIENT_H */