~ubuntu-branches/ubuntu/breezy/ace/breezy

« back to all changes in this revision

Viewing changes to TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad, Benjamin Montgomery, Adam Conrad
  • Date: 2005-09-18 22:51:38 UTC
  • mfrom: (1.2.1 upstream) (2.1.1 sarge) (0.1.2 woody)
  • Revision ID: james.westby@ubuntu.com-20050918225138-seav22q6fyylb536
Tags: 5.4.7-3ubuntu1
[ Benjamin Montgomery ]
* Added a patch for amd64 and powerpc that disables the compiler
  option -fvisibility-inlines-hidden

[ Adam Conrad ]
* Added DPATCH_OPTION_CPP=1 to debian/patches/00options to make
  Benjamin's above changes work correctly with dpatch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// FTEC_ProxyConsumer.cpp,v 1.5 2003/11/24 04:07:41 huangming Exp
2
 
 
3
 
#include "FTEC_ProxyConsumer.h"
4
 
#include "Request_Context_Repository.h"
5
 
#include "Replication_Service.h"
6
 
#include "../Utils/activate_with_id.h"
7
 
 
8
 
ACE_RCSID (EventChannel,
9
 
           TAO_FTEC_ProxyPushConsumer,
10
 
           "FTEC_ProxyConsumer.cpp,v 1.5 2003/11/24 04:07:41 huangming Exp")
11
 
 
12
 
const TAO_FTEC_ProxyPushConsumer::RollbackOperation
13
 
  TAO_FTEC_ProxyPushConsumer::rollback_obtain =
14
 
    &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_consumer;
15
 
 
16
 
TAO_FTEC_ProxyPushConsumer::TAO_FTEC_ProxyPushConsumer (TAO_EC_Event_Channel_Base* event_channel)
17
 
: Inherited(event_channel)
18
 
{
19
 
}
20
 
 
21
 
 
22
 
const FtRtecEventChannelAdmin::ObjectId&
23
 
TAO_FTEC_ProxyPushConsumer::id() const
24
 
{
25
 
  return object_id_.in();
26
 
}
27
 
 
28
 
 
29
 
  /// Activate in the POA
30
 
void
31
 
TAO_FTEC_ProxyPushConsumer::activate (
32
 
     RtecEventChannelAdmin::ProxyPushConsumer_ptr &result
33
 
     ACE_ENV_ARG_DECL)
34
 
    ACE_THROW_SPEC ((CORBA::SystemException))
35
 
{
36
 
  result = RtecEventChannelAdmin::ProxyPushConsumer::_nil();
37
 
  ACE_TRY {
38
 
    object_id_ = Request_Context_Repository().get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
39
 
    ACE_TRY_CHECK;
40
 
    PortableServer::POA_var poa = _default_POA(ACE_ENV_SINGLE_ARG_PARAMETER);
41
 
    ACE_TRY_CHECK;
42
 
    activate_object_with_id(result, poa.in(), this, object_id_ ACE_ENV_ARG_PARAMETER);
43
 
    ACE_TRY_CHECK;
44
 
  }
45
 
  ACE_CATCHANY
46
 
  {
47
 
    ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "");
48
 
    // ignore exceptions
49
 
  }
50
 
  ACE_ENDTRY;
51
 
}
52
 
 
53
 
    // = The RtecEventChannelAdmin::ProxyPushConsumer methods...
54
 
void TAO_FTEC_ProxyPushConsumer::connect_push_supplier (
55
 
                RtecEventComm::PushSupplier_ptr push_supplier,
56
 
                const RtecEventChannelAdmin::SupplierQOS& qos
57
 
                ACE_ENV_ARG_DECL)
58
 
      ACE_THROW_SPEC ((CORBA::SystemException,
59
 
                       RtecEventChannelAdmin::AlreadyConnected))
60
 
{
61
 
  if (Request_Context_Repository().is_executed_request())
62
 
    return;
63
 
 
64
 
  FtRtecEventChannelAdmin::Operation update;
65
 
  update.object_id = this->id();
66
 
  FtRtecEventChannelAdmin::Connect_push_supplier_param param;
67
 
  param.push_supplier = RtecEventComm::PushSupplier::_duplicate(push_supplier);
68
 
  param.qos = qos;
69
 
  update.param.connect_supplier_param(param);
70
 
 
71
 
  Inherited::connect_push_supplier(push_supplier, qos ACE_ENV_ARG_PARAMETER);
72
 
  ACE_CHECK;
73
 
 
74
 
  ACE_TRY {
75
 
    FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
76
 
    ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
77
 
 
78
 
    svc->replicate_request(update,
79
 
                           &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_consumer
80
 
                           ACE_ENV_ARG_PARAMETER);
81
 
    ACE_TRY_CHECK;
82
 
  }
83
 
  ACE_CATCHALL {
84
 
    this->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
85
 
    ACE_RE_THROW;
86
 
  }
87
 
  ACE_ENDTRY;
88
 
  ACE_CHECK;
89
 
}
90
 
 
91
 
void TAO_FTEC_ProxyPushConsumer::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL)
92
 
      ACE_THROW_SPEC ((CORBA::SystemException))
93
 
{
94
 
  if (Request_Context_Repository().is_executed_request())
95
 
    return;
96
 
  FtRtecEventChannelAdmin::Operation update;
97
 
  update.object_id = id();
98
 
  update.param._d(FtRtecEventChannelAdmin::DISCONNECT_PUSH_CONSUMER);
99
 
 
100
 
  Inherited::disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
101
 
  ACE_CHECK;
102
 
 
103
 
  FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
104
 
  ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
105
 
 
106
 
  svc->replicate_request(update, 0 ACE_ENV_ARG_PARAMETER);
107
 
  ACE_CHECK;
108
 
}
109
 
 
110
 
void TAO_FTEC_ProxyPushConsumer::get_state(FtRtecEventChannelAdmin::ProxyPushConsumerStat& state)
111
 
{
112
 
  state.object_id = this->object_id_;
113
 
  if (this->is_connected()) {
114
 
    FtRtecEventChannelAdmin::ProxyPushConsumerConnectionInfo info;
115
 
    info.push_supplier = this->supplier();
116
 
    info.qos = this->publications();
117
 
    state.parameter.info(info);
118
 
  }
119
 
}
120
 
 
121
 
void TAO_FTEC_ProxyPushConsumer::set_state(const FtRtecEventChannelAdmin::ProxyPushConsumerStat& state
122
 
                                           ACE_ENV_ARG_DECL)
123
 
{
124
 
  if (!CORBA::is_nil(state.parameter.info().push_supplier.in()) )
125
 
  {
126
 
    Inherited::connect_push_supplier(state.parameter.info().push_supplier.in(),
127
 
                     state.parameter.info().qos
128
 
                     ACE_ENV_ARG_PARAMETER);
129
 
  }
130
 
}