<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1023094345;
        mso-list-type:hybrid;
        mso-list-template-ids:162439224 2042113262 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l1
        {mso-list-id:1592547136;
        mso-list-type:hybrid;
        mso-list-template-ids:-515056196 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:54.0pt;
        text-indent:-18.0pt;}
@list l2
        {mso-list-id:1719935055;
        mso-list-type:hybrid;
        mso-list-template-ids:-1647031244 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3
        {mso-list-id:2003308447;
        mso-list-type:hybrid;
        mso-list-template-ids:-1408736132 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l3:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal>Hi all<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>I am trying to write a truly dynamic client using DII which
talks to a server that is using the IDL generated header and stubs.<o:p></o:p></p>

<p class=MsoNormal>I do this because I will ultimately not be in control of the
functions in the API implemented by the server (the client is some kind of
engine processing an interpreted language which can construct objects to
represent calls to the server. So the input &#8216;script&#8217; and the server
are the only ones that depend on changes in the API and I don&#8217;t want to
recompile the client engine each time the API changes).<o:p></o:p></p>

<p class=MsoNormal>Currently the client doesn&#8217;t use an IFR to retrieve
the API operation signatures, but that will be my next step.<o:p></o:p></p>

<p class=MsoNormal>Still I am having a problem with this situation and am
unclear how to handle passing structs to the operations correctly.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>What I have done so far&#8230;<o:p></o:p></p>

<p class=MsoNormal>The IDL:<o:p></o:p></p>

<p class=MsoNormal>interface Complex {<o:p></o:p></p>

<p class=MsoNormal>&nbsp; struct add_info {<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; long count;<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; sequence&lt;long&gt; item_list;<o:p></o:p></p>

<p class=MsoNormal>&nbsp; };<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>&nbsp; long add(in add_info input);<o:p></o:p></p>

<p class=MsoNormal>}<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>On the client side:<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Create the _request(&#8220;add&#8221;)<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Create the TypeCode for the item_list sequence and the
add_info struct<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Create DynamicAnys for the item_list and add_info from
the TypeCodes<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Fill in the values of all the fields<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Convert the DynamicAny to an Any<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Use add_in_arg(&#8220;input&#8221;) to add the Any as
argument<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Set the return type for the request<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Call invoke() to call the server-side function<o:p></o:p></p>

<p class=MsoNormal>On the server side (using the generated files from the IDL):<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Implement the virtual function which takes an &#8216;const
Complex::add_info&amp;&#8217; as parameter<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>When I run the server and client program, I see an
MARSHAL_SequenceIsTooLong exception thrown on the server and propagate to the
client.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Running with ORBtraceLevel=40 shows that the client includes
the complete TypeCode in the GIOP that goes to the server for the add() call.
When I use a non-DII client program (which uses the header and stub generated
from the IDL) I see that this TypeCode info is not sent to the server as part
of the add() call.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>What am I doing wrong here?<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Some further experimenting shows two working solutions which
I am not happy with (and kind of defeat the purpose of using CORBA/DII).<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l3 level1 lfo4'><![if !supportLists]><span
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Using the Any type in the parameter list of the add()
operation in the IDL, like &#8216;long add(in Any unput)&#8217;<br>
The problem with this is, that when I want to load the IDL in the IFR (in the
future) and retrieve the operation signature, I can&#8217;t see that the actual
argument I have to generate is to be of the type add_info.<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l3 level1 lfo4'><![if !supportLists]><span
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Using the following IDL: &#8216;long add(in CORBA::TypeCode
tc, in add_info input)&#8217;<br>
Then in the server I just ignore the TypeCode parameter. I can&#8217;t believe
this is the OK way to handle this as it is way ugly.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Can someone enlighten me on this issue?<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Greetings,<o:p></o:p></p>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
color:black'>--<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp; Martin Smits<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp; E-Mail: Martin.Smits@task24.nl<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
color:black'>Progress isn't made by early risers. It's made by lazy men trying
to find<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
color:black'>easier ways to do something.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
color:black'>&nbsp; - Robert Heinlein</span><o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>