summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Notify/Basic/MultiTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/Notify/Basic/MultiTypes.h')
-rw-r--r--TAO/orbsvcs/tests/Notify/Basic/MultiTypes.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/Notify/Basic/MultiTypes.h b/TAO/orbsvcs/tests/Notify/Basic/MultiTypes.h
new file mode 100644
index 00000000000..598518a896e
--- /dev/null
+++ b/TAO/orbsvcs/tests/Notify/Basic/MultiTypes.h
@@ -0,0 +1,171 @@
+/* -*- C++ -*- */
+// $Id$
+// ==========================================================================
+//
+// = FILENAME
+// MultiTypes.h
+//
+// = DESCRIPTION
+// Test connect-disconnect methods of Notify.
+//
+// = AUTHOR
+// Pradeep Gore <pradeep@cs.wustl.edu>
+//
+// ==========================================================================
+
+#ifndef NOTIFY_MULTI_TYPES_H
+#define NOTIFY_MULTI_TYPES_H
+
+#include "Notify_Test_Client.h"
+#include "Notify_StructuredPushConsumer.h"
+#include "Notify_StructuredPushSupplier.h"
+#include "Notify_PushConsumer.h"
+#include "Notify_PushSupplier.h"
+#include "Notify_SequencePushConsumer.h"
+#include "Notify_SequencePushSupplier.h"
+
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning(push)
+#endif /* _MSC_VER >= 1200 */
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+class MultiTypes;
+
+/***************************************************************************/
+
+class MultiTypes_PushConsumer : public TAO_Notify_PushConsumer
+{
+public:
+ MultiTypes_PushConsumer (MultiTypes* client);
+
+ void push (
+ const CORBA::Any & data
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ CosEventComm::Disconnected
+ ));
+
+protected:
+ MultiTypes* client_;
+};
+
+/***************************************************************************/
+
+class MultiTypes_StructuredPushConsumer : public TAO_Notify_StructuredPushConsumer
+{
+public:
+ MultiTypes_StructuredPushConsumer (MultiTypes* client);
+
+ // = StructuredPushSupplier methods
+ virtual void push_structured_event (const CosNotification::StructuredEvent & notification
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ CosEventComm::Disconnected
+ ));
+
+protected:
+ MultiTypes* client_;
+};
+
+class MultiTypes_SequencePushConsumer : public TAO_Notify_SequencePushConsumer
+{
+public:
+ MultiTypes_SequencePushConsumer (MultiTypes* client);
+
+ // = SequencePushConsumer methods
+ virtual void push_structured_events (
+ const CosNotification::EventBatch & notifications
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ CosEventComm::Disconnected
+ ));
+
+protected:
+ MultiTypes* client_;
+};
+
+
+/***************************************************************************/
+
+class MultiTypes : public Notify_Test_Client
+{
+public:
+ // Initialization and termination code.
+ MultiTypes (void);
+ virtual ~MultiTypes ();
+
+ void on_received_event (MultiTypes_PushConsumer* consumer);
+ void on_received_event (MultiTypes_StructuredPushConsumer* consumer);
+ void on_received_event (MultiTypes_SequencePushConsumer* consumer);
+
+ int parse_args (int argc,
+ char *argv[]);
+
+ int init (int argc,
+ char *argv []
+ ACE_ENV_ARG_DECL);
+ // initialization.
+
+ void run_test (ACE_ENV_SINGLE_ARG_DECL);
+ // Run the test.
+
+ void end_test (ACE_ENV_SINGLE_ARG_DECL);
+ // End the test.
+
+ int check_results (void);
+ // Check if we got the expected results.
+
+protected:
+ // Wait to receive events.
+ void wait_for_all_consumers (int expected_count_per_consumer);
+
+ void create_EC (ACE_ENV_SINGLE_ARG_DECL);
+ // Create EC.
+
+ CosNotifyChannelAdmin::EventChannel_var ec_;
+ // The one channel that we create using the factory.
+
+ CosNotifyChannelAdmin::ConsumerAdmin_var consumer_admin_;
+ // The consumer admin used by consumers.
+
+ CosNotifyChannelAdmin::SupplierAdmin_var supplier_admin_;
+ // The supplier admin used by suppliers.
+
+ TAO_Notify_PushConsumer* any_consumer_;
+ TAO_Notify_StructuredPushConsumer* structured_consumer_;
+ TAO_Notify_SequencePushConsumer* sequence_consumer_;
+ // Consumers.
+
+ TAO_Notify_PushSupplier* any_supplier_;
+ TAO_Notify_StructuredPushSupplier* structured_supplier_;
+ TAO_Notify_SequencePushSupplier* sequence_supplier_;
+ // Suppliers
+
+ // Count of Any events received;
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, int> any_event_count_;
+
+ // Count of Structured events received;
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, int> struct_event_count_;
+
+ // Count of Sequence events received;
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, int> seq_event_count_;
+
+ // disconnect_on_last_event_
+ int disconnect_on_last_event_;
+};
+
+/***************************************************************************/
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#endif /* NOTIFY_MULTI_TYPES_H */