// $Id: CCM_Object.idl 92154 2010-10-05 08:58:23Z mhengstmengel $
// Compliant with OMG 06-04-01 Section 6.11.1

#if !defined (CCM_OBJECT_IDL)
#define CCM_OBJECT_IDL

#include "ccm/CCM_Events.idl"
#include "ccm/CCM_Navigation.idl"
#include "ccm/CCM_Home.idl"
#include "ccm/CCM_PrimaryKeyBase.idl"

module Components
{
  typeprefix Components "omg.org";

  exception InvalidConfiguration
  {
  };

#if !defined (CCM_LW)
  valuetype ComponentPortDescription
  {
    public FacetDescriptions facets;
    public ReceptacleDescriptions receptacles;
#if !defined (CCM_NOEVENT)
    public ConsumerDescriptions consumers;
    public EmitterDescriptions emitters;
    public PublisherDescriptions publishers;
#endif
  };
#endif

#if !defined (CCM_LW)
  exception NoKeyAvailable {};
#endif

  interface CCMObject : Navigation, Receptacles, Events
  {
#if !defined (CCM_LW)
    CORBA::IRObject get_component_def ( );
#endif
    CCMHome get_ccm_home( );
#if !defined (CCM_LW)
    PrimaryKeyBase get_primary_key( )
      raises (NoKeyAvailable);
#endif
    void configuration_complete ()
      raises (InvalidConfiguration);
    void remove()
      raises (RemoveFailure);
#if !defined (CCM_LW)
    ComponentPortDescription get_all_ports ();
#endif
  };

typedef sequence<CCMObject> CCMObjectSeq;
};
#endif /* CCM_OBJECT_IDL */
