Changes to attempt to silence bcc64x
[ACE_TAO.git] / TAO / orbsvcs / tests / CosEvent / Basic / Random.h
blob2f1f0cb015e6690b03a04f6e1a4dab8342e649ef
1 /* -*- C++ -*- */
2 //=============================================================================
3 /**
4 * @file Random.h
6 * @author Carlos O'Ryan (coryan@cs.wustl.edu)
7 */
8 //=============================================================================
11 #ifndef EC_RANDOM_H
12 #define EC_RANDOM_H
14 #include "orbsvcs/CosEventCommS.h"
15 #include "orbsvcs/CosEventChannelAdminS.h"
16 #include "ace/Task.h"
18 #if !defined (ACE_LACKS_PRAGMA_ONCE)
19 # pragma once
20 #endif /* ACE_LACKS_PRAGMA_ONCE */
22 #if defined(_MSC_VER)
23 #pragma warning(push)
24 #pragma warning(disable:4250)
25 #endif /* _MSC_VER */
27 class RND_Driver;
29 /// Simple consumer object
30 class RND_Consumer
31 : public POA_CosEventComm::PushConsumer
33 public:
34 /// Constructor
35 RND_Consumer (RND_Driver *driver);
37 void push (const CORBA::Any &event);
38 void disconnect_push_consumer ();
40 void connect (CosEventChannelAdmin::ConsumerAdmin_ptr admin);
41 void disconnect ();
43 protected:
44 /// The driver
45 RND_Driver *driver_;
47 /// The supplier.
48 CosEventChannelAdmin::ProxyPushSupplier_var proxy_;
50 /// Synch
51 TAO_SYNCH_MUTEX lock_;
54 inline
55 RND_Consumer::RND_Consumer (RND_Driver *driver)
56 : driver_ (driver)
60 // ****************************************************************
62 // ****************************************************************
64 /// Simple supplier object
65 class RND_Supplier
66 : public POA_CosEventComm::PushSupplier
67 , public ACE_Task_Base
69 public:
70 /// Constructor
71 RND_Supplier ();
73 void connect (CosEventChannelAdmin::SupplierAdmin_ptr admin);
74 void disconnect ();
76 /// Push a single event...
77 void push_new_event ();
78 void push (CORBA::Any &event);
80 virtual void disconnect_push_supplier ();
82 /// Active method
83 virtual int svc ();
85 private:
86 /// The supplier.
87 CosEventChannelAdmin::ProxyPushConsumer_var proxy_;
89 /// Synch
90 TAO_SYNCH_MUTEX lock_;
93 inline
94 RND_Supplier::RND_Supplier ()
98 // ****************************************************************
100 class RND_Driver
102 public:
103 RND_Driver ();
105 /// Run the test
106 int run (int argc, ACE_TCHAR *argv[]);
108 /// The main timer has expired
109 void timer (const CORBA::Any &e);
111 /// One of the consumers has received an event
112 void event (const CORBA::Any &e);
114 private:
115 RND_Driver (const RND_Driver &);
116 RND_Driver& operator= (const RND_Driver &);
118 private:
119 /// The supplier
120 RND_Supplier supplier_;
122 /// Number of suppliers
123 int nsuppliers_;
125 /// The suppliers
126 RND_Supplier **suppliers_;
128 /// Number of consumers
129 int nconsumers_;
131 /// The consumers
132 RND_Consumer **consumers_;
134 /// Maximum recursion
135 int max_recursion_;
137 CosEventChannelAdmin::ConsumerAdmin_var consumer_admin_;
138 CosEventChannelAdmin::SupplierAdmin_var supplier_admin_;
141 #if defined(_MSC_VER)
142 #pragma warning(pop)
143 #endif /* _MSC_VER */
145 #endif /* EC_RANDOM_H */