// $Id: CCM_SessionComponent.idl 75969 2006-12-12 20:16:07Z johnnyw $

/**
 * @@ Compile this file with:
 *
 *     tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
 *          -Wb,export_macro=CIAO_Export \
 *          -Wb,export_include=CIAO_export.h \
 *          -Wb,pre_include="ace/pre.h" \
 *          -Wb,post_include="ace/post.h" \
 *          CCM_Container.idl
 */

//#define CIAO_HAS_IMPORT_KEYWORD

#if !defined (CCM_SESSIONCOMPONENT_IDL)
#define CCM_SESSIONCOMPONENT_IDL

#include "ciao/CCM_SessionContext.idl"
#include "ciao/CCM_CCMException.idl"
#include "ciao/CCM_EnterpriseComponent.idl"

// *************** Basic Container interfaces ***************

module Components
{
  typeprefix Components "omg.org";

  local interface SessionComponent : EnterpriseComponent
  {
    void set_session_context ( in SessionContext ctx)
      raises (CCMException);

    void ccm_activate()
      raises (CCMException);

    void ccm_passivate()
      raises (CCMException);

    void ccm_remove ()
      raises (CCMException);

    /**
     * This method is invoked before ccm_activate () is called. All
     * components in the assembly get this callback before the
     * ccm_activate () is called.
     * @note CIAO specific
     */
    void ciao_preactivate ()
      raises (CCMException);

    /**
     * This method is invoked after ccm_activate () is called. All
     * components in the assembly get this callback after the
     * ccm_activate () is called.
     * @note CIAO specific
     */
    void ciao_postactivate ()
      raises (CCMException);
  };
};
#endif /* CCM_SESSIONCOMPONENT_IDL */
