<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 10 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Bookman Old Style";
        panose-1:2 5 6 4 5 5 5 2 2 4;}
@font-face
        {font-family:Garamond;
        panose-1:2 2 4 4 3 3 1 1 8 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {font-family:Arial;
        color:windowtext;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi!</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I’m trying to figure out a nice and clean way of
passing arguments to the preinvoke primitive when using a CORBA servant
locator. I have an object that needs two parameters in the constructor when creating
the instance. Obviously I could add a primitive to initialize this data separately
but ideally I’d like some way of passing the 2 arguments to the preinvoke.
What I’m doing right now is basically setting 2 member variables in the
servant locator which are used in the preinvoke. These 2 member variables are
currently locked with a mutex as I’m not sure if the POA ensures that no
other object references will be requested before the previous one has been dispatched.
Is that the best I can do or am I missing something? Here’s what it
looks like in a nutshell:</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Class Line :</span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>public POA_LineInterface,</span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>public PortableServer::RefCountServantBase,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> {</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>public:</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Line(string mac, string userAgent);</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> virtual ~Line();</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>private:</span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>Line();</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>};</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>class LineMgr :</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> public POA_PortableServer::ServantLocator</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>{<br>
<br>
</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>public:</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> // CORBA servant locator</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> PortableServer::Servant</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> preinvoke(const PortableServer::ObjectId& oid,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> PortableServer::POA_ptr adapter, const char*
operation,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> PortableServer::ServantLocator::Cookie& the_cookie)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> {</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> lines[macM] = new Line(macM, userAgentM);</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> return lines[macM];</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> }</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> void</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> postinvoke(const PortableServer::ObjectId& oid,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> PortableServer::POA_ptr adapter, const
char* operation,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> PortableServer::ServantLocator::Cookie the_cookie,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> PortableServer::Servant the_servant)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> {</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> the_servant->_remove_ref();</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> }</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> LinePtr getLine(string mac, string userAgent)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> {</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> mutex.lock();</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> macM = mac;</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> userAgentM = userAgent;</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>CORBA::Object_var obj
= root_poaM->create_reference("IDL:LineInterface:1.0");</span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>Mutex.unlock();</span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>return lines[mac];</span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>}</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>private:</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> string macM;</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> string userAgentM;</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> map<string, LinePtr> lines;</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>};</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Note: LinePtr is a reference counting class.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I would appreciate any help!</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Thanks,</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Mike</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> </span></font></p>
<p class=MsoNormal style='page-break-after:avoid;text-autospace:none'><b><font
size=3 color=blue face="Bookman Old Style"><span style='font-size:12.0pt;
font-family:"Bookman Old Style";color:blue;font-weight:bold'>Michael Shearer</span></font></b></p>
<p class=MsoNormal style='text-autospace:none'><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>New Product
Development</span></font></b></p>
<p class=MsoNormal style='text-autospace:none'><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>Aastra Telecom </span></font></b><b><font
size=1 face=Garamond><span style='font-size:8.0pt;font-family:Garamond;
font-weight:bold'>US</span></font></b><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>, CVX Division</span></font></b></p>
<p class=MsoNormal style='text-autospace:none'><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>8 Federal
Street</span></font></b></p>
<p class=MsoNormal style='text-autospace:none'><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>Billerica</span></font></b><b><font
size=1 face=Garamond><span style='font-size:8.0pt;font-family:Garamond;
font-weight:bold'>, </span></font></b><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>MA</span></font></b><b><font
size=1 face=Garamond><span style='font-size:8.0pt;font-family:Garamond;
font-weight:bold'>, </span></font></b><b><font size=1 face=Garamond><span
style='font-size:8.0pt;font-family:Garamond;font-weight:bold'>USA</span></font></b><b><font
size=1 face=Garamond><span style='font-size:8.0pt;font-family:Garamond;
font-weight:bold'>, 01821-3570</span></font></b><b><font size=1 color=maroon
face=Arial><span style='font-size:8.0pt;font-family:Arial;color:maroon;
font-weight:bold'><br>
</span></font></b><font size=1 color=blue face=Wingdings><span
style='font-size:8.0pt;font-family:Wingdings;color:blue'>(</span></font><font
size=1 color=black face=Arial><span style='font-size:8.0pt;font-family:Arial;
color:black'> </span></font><font size=1 color=gray face=Arial><span
style='font-size:8.0pt;font-family:Arial;color:gray'>Phone (978) 436-4248</span></font></p>
<p class=MsoNormal style='text-autospace:none'><font size=1 color=blue
face=Wingdings><span style='font-size:8.0pt;font-family:Wingdings;color:blue'>(</span></font><font
size=1 color=black face=Arial><span style='font-size:8.0pt;font-family:Arial;
color:black'> </span></font><font size=1 color=gray face=Arial><span
style='font-size:8.0pt;font-family:Arial;color:gray'>Fax (978) 436-4233</span></font><font
size=1 color=black face=Wingdings><span style='font-size:8.0pt;font-family:
Wingdings;color:black'><br>
</span></font><font size=1 color=blue face=Wingdings><span style='font-size:
8.0pt;font-family:Wingdings;color:blue'>,</span></font><font size=1
color=black face=Arial><span style='font-size:8.0pt;font-family:Arial;
color:black'> </span></font><font size=1 color=gray face=Arial><span
style='font-size:8.0pt;font-family:Arial;color:gray'>Internet Mail </span></font><u><font
size=1 color=blue face=Arial><span style='font-size:8.0pt;font-family:Arial;
color:blue'>mshearer@aastra.com</span></font></u><font size=1 color=black
face=Arial><span style='font-size:8.0pt;font-family:Arial;color:black'><br>
</span></font><font size=1 color=blue face=Wingdings><span style='font-size:
8.0pt;font-family:Wingdings;color:blue'>:</span></font><font size=1
color=black face=Arial><span style='font-size:8.0pt;font-family:Arial;
color:black'> </span></font><font size=1 color=gray face=Arial><span
style='font-size:8.0pt;font-family:Arial;color:gray'>Web</span></font><font
size=1 color=blue face=Arial><span style='font-size:8.0pt;font-family:Arial;
color:blue'> <u><a href="www.aastra.com">www.aastra.com</a></u></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> </span></font></p>
</div>
</body>
</html>