-
Key: CORBA26-62
-
Legacy Issue Number: 4081
-
Status: closed
-
Source: Iconixx ( Thomas Hawker)
-
Summary:
The CCM standard indicates that all CCM Event functions will delegate to
the container. Chapter 7 of the CCM Volume 1 further dictates the
interface the container will provide to the component, called
Components::Notification::Event, referred to as the "Event Interface"
hereafter. This interface contains many problems and does not address
all the required functionality. The problems are listed below:<p>- The create_channel() method returns an EventConsumerBase for the
publisher to use to publish events to the channel. It is not possible
for the Event Interface to construct a concrete EventConsumerBase,
specifically the interface defined as
<publishing_component>EventConsumers::
<event_type>Consumer (per section 5.6.6 and 5.6.7 giving the
publisher and emitter IDL expansion). The Event::obtain_channel()
method has the same problem - The subscribe() method implies that the container supplying events
will hold the supplier proxy that will be used to send events to the
subscriber’s EventConsumerBase. This is an inefficient model. Also,
this model is in direct conflict with the listen() method, which
supports a more efficient model (see next bullet). - The standard does not provide any documentation on when a consumer
would call the listen() method. The standard also does not provide a
means for the consumer’s component to realise the "csmr_name", the
name used to find the ConsumerAdmin from the Naming Service [see
possibly related issue #3940]. Nor does the standard indicate when
the ConsumerAdmin would have ever been added to the Naming Service.
It might be possible that this would work for emitters, but it does
not work for publishers (the standard dictates that a consumer cannot
distinguish between being connected to an emitter or a publisher).
This method does imply that the consuming component will have a proxy
local to its container, separate from the publishing component’s
container (contradictory to the subscribe() method, see previous
bullet). - The push() method does not provide a means to indicate which channel
the event should be pushed to see possibly related issue #3928.<p>
The Event Interface is a local interface that is, the client will
never see this interface, and so it is possible to hide the use of this
interface inside the generated code and thus replace the interface.
Internally we have added a PortManager interface to be used in place of
the Event Interface. This interface provides better management of the
Event Channels and it also manages receptacle connections. Two
interfaces will derive from the PortManager, a TransientPortManager and
a PersistentPortManager. These two derived interfaces will permit
connections between components to be managed as defined by the type of
the container. Where meaningful, this permits the port connections to be
made persistent as part of the overall state so that connections
(specifically, notification channels) can be more reliably and robustly
managed. The CCM2Context::get_event() operation is replaced by
get_port_manager() - The create_channel() method returns an EventConsumerBase for the
-
Reported: CORBA 2.4.1 — Fri, 24 Nov 2000 05:00 GMT
-
Disposition: Resolved — CORBA 2.6.1
-
Disposition Summary:
See issue 3937. rejected
-
Updated: Fri, 6 Mar 2015 20:58 GMT
CORBA26 — Problems with the Components Notification Event Interface
- Key: CORBA26-62
- OMG Task Force: Core RTF