

!!! Listing.1

// Component-IDL-Spezification

// Beschreibung der im- und exportierten 
// Interfaces in einer separaten Datei
#include "MyComponentif.idl"
module Component 
{
    // session component 
    // (to specify used container type)
    #pragma Session
    component MyComponent
        // Equivalent-Interface
        supports Iequiv
    {
        // Facets
        provides      Ifacet1 myFacet1;
        provides      Ifacet2 myFacet2;
        // Receptacles
        uses          Irecept1 myRecept1;
    };
    home MyComponentHome
        manages MyComponent
    {};
};


!!! Listing.2


// Äquivalente Darstellung der CDL 
// als Standard-IDL

#include "MyComponentif.idl"

module Component 
{
    interface MyComponent : Components::CCMObject , Components::Basic::SessionComponent, I1 
    {
        /* - Facet "myFacet1" - */
        I2 provide_myFacet1 ();

        /* - Facet "myFacet2" - */
        I3 provide_myFacet2 ();

        /* - Receptacle "myRecept1" - */
        void connect_myRecept1 (in I3 conn) 
             raises (Components::AlreadyConnected,
               Components::InvalidConnection);
        I3 disconnect_myRecept1 ()
             raises (Components::NoConnection);
        I3 get_connection_myRecept1 ();
    };

    /* "MyComponentHome" to Equivalent Home */
    interface MyComponentHomeExplicit : Components::CCMHome 
    { };

    interface MyComponentHomeImplicit : Components::KeylessCCMHome 
    {
        MyComponent create();
    };

    interface MyComponentHome : MyComponentHomeExplicit, MyComponentHomeImplicit 
    { };
};



!!! Listing.3

// Component-IDL-Spezification

// Beschreibung der im- und exportierten 
// Interfaces in einer separaten Datei
#include "MyComponentif.idl"
module Component 
{
    // session component 
    // (to specify used container type)
    #pragma Session
    component MyComponent
        // Equivalent-Interface
        supports Iequiv
    {
        // Facets
        provides      Ifacet1 myFacet1;
        provides      Ifacet2 myFacet2;
        // Receptacles
        uses          Irecept1 myRecept1;
    };
    home MyComponentHome
        manages MyComponent
    {};
};


!!! Listing.4

// Standard-IDL fuer die benutzten Interfaces
// Datei "MyComponentif.idl"

#include "components.idl"
interface Iequiv
{ 
    string method1();
    string method_used_receptacle();
};
interface Ifacet1 : Components::CCMFacet
{
    string method2();
    string method_used_receptacle();
};
interface Ifacet2 : Components::CCMFacet
{
    string method3();
};


!!! Listing.5


// Äquivalente Darstellung der CDL 
// als Standard-IDL

#include "MyComponentif.idl"

module Component 
{
    interface MyComponent : Components::CCMObject , Components::Basic::SessionComponent, I1 
    {
        /* - Facet "myFacet1" - */
        I2 provide_myFacet1 ();

        /* - Facet "myFacet2" - */
        I3 provide_myFacet2 ();

        /* - Receptacle "myRecept1" - */
        void connect_myRecept1 (in I3 conn) 
             raises (Components::AlreadyConnected,
               Components::InvalidConnection);
        I3 disconnect_myRecept1 ()
             raises (Components::NoConnection);
        I3 get_connection_myRecept1 ();
    };

    /* "MyComponentHome" to Equivalent Home */
    interface MyComponentHomeExplicit : Components::CCMHome 
    { };

    interface MyComponentHomeImplicit : Components::KeylessCCMHome 
    {
        MyComponent create();
    };

    interface MyComponentHome : MyComponentHomeExplicit, MyComponentHomeImplicit 
    { };
};


!!! Listing.6


MyComponent.idl             // Äquivalente IDL

                            // Generierte Klassen für
                            // Navigations- und Zwischenschicht:
ccm_mycomponent.cpp         // für die Komponente
ccm_mycomponent.h           //
ccm_mycomponent_home.cpp    // und das Home
ccm_mycomponent_home.h      //
