summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.h
blob: 97f2fdde8407d8fe819995788f9b515a454cb7ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// $Id$
// =========================================================================
//
// = LIBRARY
//   orbsvcs
//
// = FILENAME
//   Notify_ProxyPushSupplier_i.h
//
// = DESCRIPTION
//   implements CosNotifyChannelAdmin::ProxyPushSupplier and
//   CosEventChannelAdmin::ProxyPushSupplier
//
// = AUTHOR
//    Pradeep Gore <pradeep@cs.wustl.edu>
//
// ==========================================================================
#ifndef TAO_NOTIFY_PROXYPUSHSUPPLIER_I_H
#define TAO_NOTIFY_PROXYPUSHSUPPLIER_I_H

#include "ace/pre.h"
#include "Notify_ProxySupplier_T.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "orbsvcs/CosNotifyChannelAdminS.h"

class TAO_Notify_ConsumerAdmin_i;

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

class TAO_Notify_Export TAO_Notify_ProxyPushSupplier_i : public TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::ProxyPushSupplier>
{
  // = TITLE
  //   TAO_Notify_ProxyPushSupplier_i
  //
  // = DESCRIPTION
  //   implements CosNotifyChannelAdmin::ProxyPushSupplier.
  //

public:
  TAO_Notify_ProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumeradmin);
  // Constructor

  virtual ~TAO_Notify_ProxyPushSupplier_i (void);
  // Destructor

  // = Interface methods
  virtual void connect_any_push_consumer (
    CosEventComm::PushConsumer_ptr push_consumer
    TAO_ENV_ARG_DECL
  )
  ACE_THROW_SPEC ((
    CORBA::SystemException,
    CosEventChannelAdmin::AlreadyConnected,
    CosEventChannelAdmin::TypeError
  ));

virtual void disconnect_push_supplier (
    TAO_ENV_SINGLE_ARG_DECL
  )
  ACE_THROW_SPEC ((
    CORBA::SystemException
  ));

  virtual void shutdown (TAO_ENV_SINGLE_ARG_DECL);
  // Shutdown.

 protected:
  void shutdown_i (TAO_ENV_SINGLE_ARG_DECL);
  // Shutdown

 virtual void dispatch_event_i (TAO_Notify_Event &event TAO_ENV_ARG_DECL);
  // Deliver the event to the consumer.

 virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed TAO_ENV_ARG_DECL);
  // Deliver the update to the consumer.

  // = Data Members.
 CORBA::Boolean notify_style_consumer_;
  // True if the consumer supports the NotifyPublish interface.
  // If it does, we use the <notify_push_consumer_> else <cosec_push_consumer_>

 CosEventComm::PushConsumer_var cosec_push_consumer_;
 CosNotifyComm::PushConsumer_var notify_push_consumer_;
 // The consumer connected to us.

 private:
 typedef TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::ProxyPushSupplier>
   proxy_inherited;
};

class TAO_Notify_Export TAO_Notify_CosEC_ProxyPushSupplier_i : public POA_CosEventChannelAdmin::ProxyPushSupplier, public virtual PortableServer::RefCountServantBase
{
  // = TITLE
  //   TAO_Notify_CosEC_ProxyPushSupplier_i
  //
  // = DESCRIPTION
  //   implements CosEventChannelAdmin::ProxyPushSupplier by delegating
  //   to TAO_Notify_ProxyPushSupplier_i.
  //
public:
  // = Initialization and termination methods.
  TAO_Notify_CosEC_ProxyPushSupplier_i(TAO_Notify_ConsumerAdmin_i* consumeradmin);
  // Constructor.

  ~TAO_Notify_CosEC_ProxyPushSupplier_i (void);
  // Destructor.

  void init (TAO_ENV_SINGLE_ARG_DECL);
  // Init.

  virtual void disconnect_push_supplier (TAO_ENV_SINGLE_ARG_DECL)
      ACE_THROW_SPEC ((CORBA::SystemException));
  // Ends the event communication and disposes this object.

  virtual void connect_push_consumer(CosEventComm::PushConsumer_ptr push_consumer TAO_ENV_ARG_DECL)
    ACE_THROW_SPEC ((CORBA::SystemException,
                     CosEventChannelAdmin::AlreadyConnected,
                     CosEventChannelAdmin::TypeError));
  // Connects the <push_consumer> to the Event Channel.

 protected:
  // = Data Members
  TAO_Notify_ProxyPushSupplier_i notify_proxy_;
  // The proxy that we delegate too.
};

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

#include "ace/post.h"
#endif /* TAO_NOTIFY_PROXYPUSHSUPPLIER_I_H */