3.15.5.3. Navigation Interfaces

module Components
{
  typedef string FeatureName;
  typedef sequence<FeatureName> NameList;

  valuetype PortDescription
  {
    public FeatureName name;
    public CORBA::RepositoryId type_id;
  };

  ...
  valuetype FacetDescription : PortDescription
  {
    public Object facet_ref;
  };
  typedef sequence<FacetDescription> FacetDescriptions;

  interface Navigation
  {
    FacetDescriptions get_all_facets ();
    Object provide_facet (in FeatureName name) raises (InvalidName);
    FacetDescriptions get_named_facets (in NameList names) raises (InvalidName);

    ...
  };

  ...
  valuetype PublisherDescription : PortDescription
  {
    public SubscriberDescriptions consumers;
  };
  typedef sequence<PublisherDescription> PublisherDescriptions;

  valuetype ConsumerDescription : PortDescription
  {
    public EventConsumerBase consumer;
  };
  typedef sequence<ConsumerDescription> ConsumerDescriptions;

  PublisherDescriptions get_all_publishers ();
  PublisherDescriptions get_named_publishers (in NameList names) raises (InvalidName);

  ConsumerDescriptions get_all_consumers ();
  ConsumerDescriptions get_named_consumers (in NameList names) raises (InvalidName);

  ...
};