00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef OMNIEVENTS__PROXYPULLCONSUMER_H
00025 #define OMNIEVENTS__PROXYPULLCONSUMER_H
00026
00027 #ifdef HAVE_CONFIG_H
00028 # include "config.h"
00029 #endif
00030
00031 #include <list>
00032
00033 #ifdef HAVE_IOSTREAM
00034 # include <iostream>
00035 #else
00036 # include <iostream.h>
00037 #endif
00038
00039 #include "ProxyManager.h"
00040
00041 #include "CosEventChannelAdmin.hh"
00042
00043 #ifdef HAVE_STD_IOSTREAM
00044 using namespace std;
00045 #endif
00046
00047 namespace OmniEvents {
00048
00049 class ProxyPullConsumerManager
00050 : public ProxyManager
00051 {
00052 public:
00053 PortableServer::Servant incarnate(
00054 const PortableServer::ObjectId& oid,
00055 PortableServer::POA_ptr poa
00056 );
00057 public:
00058 ProxyPullConsumerManager(PortableServer::POA_ptr parentPoa, list<CORBA::Any*>& q);
00059 CosEventChannelAdmin::ProxyPullConsumer_ptr createObject();
00060
00062 void trigger();
00063
00064 private:
00065 list<CORBA::Any*>& _queue;
00066 };
00067
00068
00076 class ProxyPullConsumer_i
00077 : public virtual POA_CosEventChannelAdmin::ProxyPullConsumer,
00078 public Proxy
00079 {
00080 public:
00081 void connect_pull_supplier(CosEventComm::PullSupplier_ptr pullSupplier);
00082 void disconnect_pull_consumer();
00083 public:
00084 ProxyPullConsumer_i(PortableServer::POA_ptr poa, list<CORBA::Any*>& q);
00085 void trigger();
00086 void reincarnate(const OEP_prxy& prxy);
00087 void output(ostream& os);
00088 private:
00089 CosEventComm::PullSupplier_var _target;
00090 list<CORBA::Any*>& _queue;
00091
00093 enum Mode { Pull=0, TryPull=1 };
00094
00098 int _exceptionCount[2];
00099 };
00100
00101 };
00102
00103 #endif // OMNIEVENTS__PROXYPULLCONSUMER_H