<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:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:D="DAV:" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" 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)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","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
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ecmsonormal, li.ecmsonormal, div.ecmsonormal
        {mso-style-name:ec_msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ecmsolistparagraph, li.ecmsolistparagraph, div.ecmsolistparagraph
        {mso-style-name:ec_msolistparagraph;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.ecmsohyperlink
        {mso-style-name:ec_msohyperlink;}
span.ecmsohyperlinkfollowed
        {mso-style-name:ec_msohyperlinkfollowed;}
span.ecemailstyle17
        {mso-style-name:ec_emailstyle17;}
p.ecmsonormal1, li.ecmsonormal1, div.ecmsonormal1
        {mso-style-name:ec_msonormal1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.ecmsohyperlink1
        {mso-style-name:ec_msohyperlink1;
        color:blue;
        text-decoration:underline;}
span.ecmsohyperlinkfollowed1
        {mso-style-name:ec_msohyperlinkfollowed1;
        color:purple;
        text-decoration:underline;}
p.ecmsolistparagraph1, li.ecmsolistparagraph1, div.ecmsolistparagraph1
        {mso-style-name:ec_msolistparagraph1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.ecemailstyle171
        {mso-style-name:ec_emailstyle171;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle28
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</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-AU link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Since you have some clue as to what’s going on – care to add
some XMLDOC comments on IClientAPI for these guys? Right now it’s confusing as
hell.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Adam<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> opensim-dev-bounces@lists.berlios.de
[mailto:opensim-dev-bounces@lists.berlios.de] <b>On Behalf Of </b>Stefan
Andersson<br>
<b>Sent:</b> Sunday, 22 February 2009 12:04 AM<br>
<b>To:</b> opensim-dev@lists.berlios.de<br>
<b>Subject:</b> Re: [Opensim-dev] Refactoring IClientAPI.Close and Friends<o:p></o:p></span></p>

</div>

</div>

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

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>I
know that part of why the Close() thing is so tangly is because we need to
make sure certain packets have been sent before just killing the
connection, and that some of them might need to wait for a response from the
client. So it's a difference between Close() as in Dispose() and Close() as in
'shut down user connection correctly' afaicanrecall.<br>
 <br>
Also, I think part of the confusion is a somewhat fuzzy diversion of
responsibility between the client itself and the client manager.<br>
 <br>
Ideally, all core code outside the manager and its clients should ask the
Client Manager to close a Client correctly (as it should know how to remove
references to clients, but also to interact with other system
management resources) - the emptying of queues and actual closing
down should probably be a private matter for the client class.<br>
 <br>
The Client Thus probably would need to have a 'shutting down' flag, throwing
non-essential packets, and it would signal to the client manager when it's done
with its internal closing down work, so the manager can remove the references
from the system. I believe that can be the origin of the event vs dispose bool.
Which is ugly as hell, and I'm probably the one to introduce it.<br>
 <br>
Best regards,<br>
Stefan Andersson<br>
Tribal Media AB<br>
<br>
<br>
<br>
 <o:p></o:p></span></p>

<div class=MsoNormal align=center style='text-align:center'><span
style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>

<hr size=2 width="100%" align=center id=stopSpelling>

</span></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>From: adam@deepthink.com.au<br>
To: opensim-dev@lists.berlios.de<br>
Date: Sun, 22 Feb 2009 02:21:05 -0500<br>
Subject: [Opensim-dev] Refactoring IClientAPI.Close and Friends<o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Right
now, we have four separate close methods for clients, enumerated they are (for
LLClientView):<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'> <o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Close(bool
circuit)<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:72.0pt;text-indent:-18.0pt'><span
style='font-size:10.0pt;font-family:"Courier New"'>o</span><span
style='font-size:7.0pt'>   </span><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>Either fires an event, or closes the
connection depending on parameter[!?]<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Kick(string
msg)<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:72.0pt;text-indent:-18.0pt'><span
style='font-size:10.0pt;font-family:"Courier New"'>o</span><span
style='font-size:7.0pt'>   </span><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>Asks the client politely to quit. [!?]<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Stop()<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:72.0pt;text-indent:-18.0pt'><span
style='font-size:10.0pt;font-family:"Courier New"'>o</span><span
style='font-size:7.0pt'>   </span><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>Initialises some shutdown cleanup<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Restart()<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:72.0pt;text-indent:-18.0pt'><span
style='font-size:10.0pt;font-family:"Courier New"'>o</span><span
style='font-size:7.0pt'>   </span><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>Undo-‘s the above<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Terminate()<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:72.0pt;text-indent:-18.0pt'><span
style='font-size:10.0pt;font-family:"Courier New"'>o</span><span
style='font-size:7.0pt'>   </span><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>Stops processing packets for the user and
removes their entry in the packet server<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'> <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>I
would like to propose changing this into three methods.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'> <o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Close(string
msg) – Combines Kick, Terminate and Close into one method. We need to find out
why Close branches onto the event when the parameter is true, or closes when
false, and streamline it. Kick should automatically terminate the connection –
there should be no ‘requests’ involved, it should be a very straight forward
‘You are the weakest link. Goodbye.’<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Pause()
– Equivilent to Stop() as it is now. Function described as ‘Suspend Packet
Processing’<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:-18.0pt'><span style='font-size:10.0pt;
font-family:"Verdana","sans-serif"'>-</span><span style='font-size:7.0pt'>         
</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Resume()
– Equivilent to Restart() as it is now. Function described as ‘Resume Packet
Processing’<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'> <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>Adam<o:p></o:p></span></p>

</div>

</div>

</div>

</body>

</html>