summaryrefslogtreecommitdiff
path: root/CIAO/ciao/Deployment_Container.idl
blob: 55ac0c7dfdd7b226f53c7a5faeaa44c19838d784 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// $Id$

#if !defined (DEPLOYMENT_CONTAINER_IDL)
#define DEPLOYMENT_CONTAINER_IDL

#include "ciao/Deployment_Application.idl"
#include "ciao/Deployment_Core.idl"

// *************** Packaging and Deployment ***************
module Deployment
{
  interface NodeApplication; // Forward decl.

  /// CIAO specific
  struct Component_Info
  {
    string component_instance_name;
    Components::CCMObject component_ref;
  };

  /// CIAO specific
  typedef sequence < Component_Info > ComponentInfos;

  /// CIAO specific
  struct ComponentImplementationInfo
  {
    string component_instance_name;
    string executor_dll;
    string executor_entrypt;
    string servant_dll;
    string servant_entrypt;
    Properties component_config;
    //  Properties home_config;      //ignored for now.
  };

  /// CIAO specific
  typedef sequence <ComponentImplementationInfo> ComponentImplementationInfos;

  // ContainerImplementationInfo contains a list of components to be installed and
  // policy configuration for the container which hosts these components
  /// CIAO specific
  struct ContainerImplementationInfo
  {
    ComponentImplementationInfos impl_infos;
    Properties container_config;
  };

  /// CIAO specific
  typedef sequence <ContainerImplementationInfo> ContainerImplementationInfos;

  /// CIAO specific interface, which could deal with installing multiple
  /// containers into a single NodeApplication.
  interface Container
  {
    readonly attribute ::Deployment::Properties properties;

    /// Get the NodeApplication which created us
    NodeApplication get_node_application ();

    /// Initialize the container with policies
    // long init (in ::CORBA::PolicyList policies);

    // NW: The following should be component specific info because the
    // container has already been created and initialized at this
    // time.  So there's not much container configuration to be done
    // at this stage.
    //@@ The container_impl_info will contain
    //1 component instance name as the key.
    //2 dll/so name of the exec
    //3 entry point of the exec
    //4 dll/so name of the svnt
    //5 entry point of the svnt
    //6 Poosible other configuration for container/home/component

    /// Install all homes and components
    Deployment::ComponentInfos install (in ContainerImplementationInfo container_impl_info)
        raises (UnknownImplId,
                ImplEntryPointNotFound,
                InstallationFailure,
                ::Components::InvalidConfiguration);

    /// Remove all homes and components
    void remove ()
      raises (::Components::RemoveFailure);

    /// Remove a component instance
    void remove_component (in string inst_name)
      raises (::Components::RemoveFailure);
  };

  typedef sequence<Container> Containers;
};
#endif /* DEPLOYMENT_CONTAINER_IDL */