Hi Michael,<br><br>This is a great tip. Thanks a lot. <br><br>/David<br><br><div class="gmail_quote">On Thu, Apr 17, 2008 at 4:35 PM, Michael &lt;<a href="mailto:omniorb@bindone.de">omniorb@bindone.de</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi David,<br>
<br>
seems like you&#39;re using the default poa. What you could do is the following:<br>
<br>
Assuming you a method that accepts a ref reference:<br>
<br>
void MyObject::MyMethod(RemoteProxy_ptr p)<br>
{<br>
 &nbsp;try<br>
 &nbsp;{<br>
 &nbsp; &nbsp;PortableServer::Servant servant = poa_-&gt;reference_to_servant(p)<br>
 &nbsp; &nbsp;if (RemoteProxy_i* rp = dynamic_cast&lt;RemoteProxy_i*&gt;(servant))<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp;WrappedObject* o = rp-&gt;getWrapedObject();<br>
 &nbsp; &nbsp;}<br>
 &nbsp;}<br>
 &nbsp;catch(...)<br>
 &nbsp;{<br>
 &nbsp; &nbsp;// there are different (meaningful) exceptions emitted, check the standard<br>
 &nbsp;}<br>
}<br>
(this assumes, you stored the poa used somewhere - if it&#39;s the default poa you could also<br>
get it through resolve_initial_reference)<br>
<br>
This is also nice, because you can verify that the servant is really out of this oa (and<br>
not a remote object).<br>
<br>
cheers<br>
michael<br>
<div><div></div><div class="Wj3C7c"><br>
David wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I&#39;m having a problem with my IDL interface. I have a RemoteProxy class that<br>
&gt; wraps an object on the server. On the server side, the factory creating the<br>
&gt; RemoteProxy object needs to inject the wrapped object somehow. The interface<br>
&gt; of RemoteProxy is however specified in IDL, and I can&#39;t specify my wrapped<br>
&gt; object in IDL, and hence can&#39;t pass it as an argument to an IDL-specified<br>
&gt; method.<br>
&gt;<br>
&gt; So far, I have been able to add a RemoteProxy_i.setWrappedObject(<br>
&gt; WrappedObject *o ) method to the RemoteProxy_i class, which is my object<br>
&gt; implementation class (inheriting from POA_RemoteProxy). So when I create it,<br>
&gt; I can do:<br>
&gt;<br>
&gt; RemoteProxy_i *rp = new RemoteProxy_i();<br>
&gt; rp-&gt;setWrappedObject( o );<br>
&gt; poa-&gt;activate_object( rp );<br>
&gt; RemoteProxy_ptr ref = rp-&gt;_this();<br>
&gt;<br>
&gt; Once I&#39;ve created the reference object &quot;ref&quot;, &quot;rp&quot; is not saved. Now, my<br>
&gt; problem is that I can&#39;t get the wrapped object &quot;o&quot; back from &quot;ref&quot;, because<br>
&gt; &quot;ref&quot; only implements the IDL interface. How should I solve this? Do I need<br>
&gt; an external data structure, mapping references to &quot;wrapped objects&quot; (except<br>
&gt; they wouldn&#39;t be mapped in an object-oriented sense). Any help is<br>
&gt; appreciated.<br>
&gt;<br>
&gt; /David<br>
&gt;<br>
&gt;<br>
&gt;<br>
</div></div>&gt; ------------------------------------------------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; omniORB-list mailing list<br>
&gt; <a href="mailto:omniORB-list@omniorb-support.com">omniORB-list@omniorb-support.com</a><br>
&gt; <a href="http://www.omniorb-support.com/mailman/listinfo/omniorb-list" target="_blank">http://www.omniorb-support.com/mailman/listinfo/omniorb-list</a><br>
<br>
</blockquote></div><br>