summaryrefslogtreecommitdiff
path: root/TAO/CIAO/DAnCE/Config_Handlers/PCD_Handler.cpp
blob: ed43410e824451469e56f3d06af8b2fd6e09b7d4 (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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// $Id$

#include "PCD_Handler.h"
#include "Req_Handler.h"
#include "CEPE_Handler.h"
#include "PSPE_Handler.h"
#include "ERE_Handler.h"
#include "CRDD_Handler.h"
#include "Basic_Deployment_Data.hpp"
#include "ciao/Deployment_DataC.h"

namespace CIAO
{
  namespace Config_Handlers
  {

    PCD_Handler::PCD_Handler (void)
    {
    }

    PCD_Handler::~PCD_Handler (void)
    {
    }

    ///This method takes a <Deployment::PlanConnectionDescription>
    ///and maps the values from the passed in XSC
    ///PlanConnectionDescription to its members.
    void PCD_Handler::get_PlanConnectionDescription (
                Deployment::PlanConnectionDescription& toconfig,
                PlanConnectionDescription& desc)
    {
      toconfig.name = CORBA::string_dup (desc.name ().c_str ());

      //Source is mapped to a string in the schema and a sequence
      //in the IDL. We just assign the source string from the xml
      //to the first position in the IDL type's sequence. We
      //make sure that the source is present before lengthening
      //the sequence.
      if (desc.source_p ())
        {
          toconfig.source.length (toconfig.source.length () + 1);
          toconfig.source[toconfig.source.length () - 1] =
            CORBA::string_dup (desc.source ().c_str ());
        }


      if (desc.deployRequirement_p ())
        {
#if 0
          // @@ MAJO:
          //Create the handler for the requirements.
          Requirement_Handler reqhandler;

          //Increase the sequence length and delgate
          //the Requirement to the Req_Handler.
          toconfig.deployRequirement.length (
            toconfig.deployRequirement.length () + 1);
          reqhandler.get_Requirement (
            toconfig.deployRequirement[toconfig.deployRequirement.length () - 1],
            desc.deployRequirement ());
#endif /*if 0*/
        }

      //Create the ComponentExternalPortEndpoint handler.
      CEPE_Handler cepehandler;

      //Iterate through and configure each port in the
      //externalEndpoint sequence.
      for (PlanConnectionDescription::externalEndpoint_iterator
           port (desc.begin_externalEndpoint ());
           port != desc.end_externalEndpoint ();
           ++port)
        {
          toconfig.externalEndpoint.length (
            toconfig.externalEndpoint.length () + 1);

          cepehandler.get_ComponentExternalPortEndpoint (
            toconfig.externalEndpoint [toconfig.externalEndpoint.length () - 1],
            *port);
        }

      //Configure the PlanSubcomponentPortEndpoint's.
      PSPE_Handler pspehandler;

      for (PlanConnectionDescription::internalEndpoint_iterator
           ipoint (desc.begin_internalEndpoint ());
           ipoint != desc.end_internalEndpoint ();
           ++ipoint)
        {
          toconfig.internalEndpoint.length (
            toconfig.internalEndpoint.length () + 1);

          pspehandler.get_PlanSubcomponentPortEndpoint (
            toconfig.internalEndpoint [toconfig.internalEndpoint.length () - 1],
            *ipoint);
        }

      //Configure the ExternalReferenceEndpoint's.
      ERE_Handler erehandler;

      for (PlanConnectionDescription::externalReference_iterator
           ipoint (desc.begin_externalReference ());
           ipoint != desc.end_externalReference ();
           ++ipoint)
        {
          toconfig.externalReference.length (
            toconfig.externalReference.length () + 1);

          erehandler.get_ExternalReferenceEndpoint (
            toconfig.externalReference [toconfig.externalReference.length () - 1],
            *ipoint);
        }

      //Configure the resource value.
      if (desc.deployedResource_p ())
        {
          CRDD_Handler crddhandler;

          toconfig.deployedResource.length (
            toconfig.deployedResource.length () + 1);

          crddhandler.get_ConnectionResourceDeploymentDescription (
            toconfig.deployedResource[toconfig.deployedResource.length () - 1],
            desc.deployedResource ());
        }

    }

  }
}