coriolis/kite/doc/html/classKite_1_1Session.html

664 lines
44 KiB
HTML

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Kite - Detailed Router</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="SoC.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head>
<h1 id="pagetop" class="header">Kite - Detailed Router</h1>
<!--
<center class="header">
<table class="header">
<tr>
<td><a href="customSummary.html">Summary</a></td>
<td><a href="namespaces.html">Namespaces</a></td>
<td><a href="customHierarchy.html">Class Hierarchy</a></td>
<td><a href="annotated.html">Classes</a></td>
<td><a href="functions.html">Member Index</a></td>
</tr>
</table>
</center>
-->
<br>
<body onload="javascript:toggleLevel(1)">
<!-- Generated by Doxygen 1.8.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceKite.html">Kite</a></li><li class="navelem"><a class="el" href="classKite_1_1Session.html">Session</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classKite_1_1Session-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Session Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> update <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>.
<a href="classKite_1_1Session.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Session:</div>
<div class="dyncontent">
<div class="center"><img src="classKite_1_1Session__inherit__graph.png" border="0" usemap="#Session_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ab8362982a442b5a67f5bd76d6b6caf93"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classKite_1_1Session.html">Session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#ab8362982a442b5a67f5bd76d6b6caf93">open</a> (<a class="el" href="classKite_1_1KiteEngine.html">KiteEngine</a> *)</td></tr>
<tr class="separator:ab8362982a442b5a67f5bd76d6b6caf93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76f17c3642eaeba85fa0af5ae9d208b4"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classKite_1_1Session.html">Session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a76f17c3642eaeba85fa0af5ae9d208b4">get</a> (const char *message=NULL)</td></tr>
<tr class="separator:a76f17c3642eaeba85fa0af5ae9d208b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a3fc782c34dc075bb2e14209e245494"><td class="memItemLeft" align="right" valign="top">static <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1Session.html">Katabatic::Session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a8a3fc782c34dc075bb2e14209e245494">base</a> ()</td></tr>
<tr class="separator:a8a3fc782c34dc075bb2e14209e245494"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af337ffd75e4f019ce15302c60715d84b"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#af337ffd75e4f019ce15302c60715d84b">isEmpty</a> ()</td></tr>
<tr class="separator:af337ffd75e4f019ce15302c60715d84b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b6c91acd2c2a7c082b3b006c1bdc91d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classKite_1_1KiteEngine.html">KiteEngine</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a7b6c91acd2c2a7c082b3b006c1bdc91d">getKiteEngine</a> ()</td></tr>
<tr class="separator:a7b6c91acd2c2a7c082b3b006c1bdc91d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a7fbadfe526875680f698c76adfb128"><td class="memItemLeft" align="right" valign="top">static Configuration *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a9a7fbadfe526875680f698c76adfb128">getConfiguration</a> ()</td></tr>
<tr class="separator:a9a7fbadfe526875680f698c76adfb128"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef6f41b0e8265ad574d1797f46ab9fa8"><td class="memItemLeft" align="right" valign="top">static <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#aef6f41b0e8265ad574d1797f46ab9fa8">getBlockageNet</a> ()</td></tr>
<tr class="separator:aef6f41b0e8265ad574d1797f46ab9fa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39ebff178f2e0abb9d5a29f485e0bbab"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classKite_1_1NegociateWindow.html">NegociateWindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a39ebff178f2e0abb9d5a29f485e0bbab">getNegociateWindow</a> ()</td></tr>
<tr class="separator:a39ebff178f2e0abb9d5a29f485e0bbab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27ecb1cf5ffabe1c7901c5c894a5067d"><td class="memItemLeft" align="right" valign="top">static <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1GCell.html">Katabatic::GCell</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a27ecb1cf5ffabe1c7901c5c894a5067d">getGCellUnder</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>)</td></tr>
<tr class="separator:a27ecb1cf5ffabe1c7901c5c894a5067d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4f08dfb62ce626ed72023ce02e7205f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#ad4f08dfb62ce626ed72023ce02e7205f">addInsertEvent</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *, <a class="el" href="classKite_1_1Track.html">Track</a> *)</td></tr>
<tr class="separator:ad4f08dfb62ce626ed72023ce02e7205f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedd573fc951ed93f8ada5b0522813c3a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#aedd573fc951ed93f8ada5b0522813c3a">addRemoveEvent</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *)</td></tr>
<tr class="separator:aedd573fc951ed93f8ada5b0522813c3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa42e4cb9e2559c00d68821f535ef7838"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#aa42e4cb9e2559c00d68821f535ef7838">addMoveEvent</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *, <a class="el" href="classKite_1_1Track.html">Track</a> *)</td></tr>
<tr class="separator:aa42e4cb9e2559c00d68821f535ef7838"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a990d32b1f1ea661b088a05f86319772f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a990d32b1f1ea661b088a05f86319772f">addSortEvent</a> (<a class="el" href="classKite_1_1Track.html">Track</a> *, bool forced=false)</td></tr>
<tr class="separator:a990d32b1f1ea661b088a05f86319772f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bd93abe1416952ace15a98dbeeed124"><td class="memItemLeft" align="right" valign="top">static size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a5bd93abe1416952ace15a98dbeeed124">revalidate</a> ()</td></tr>
<tr class="separator:a5bd93abe1416952ace15a98dbeeed124"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1728621b96081c32fb7bfb18a0ebfad3"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a1728621b96081c32fb7bfb18a0ebfad3">lookup</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Segment.html">Segment</a> *)</td></tr>
<tr class="separator:a1728621b96081c32fb7bfb18a0ebfad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3946039ef19b5b6994171288f183bdaf"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Session.html#a3946039ef19b5b6994171288f183bdaf">lookup</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1AutoSegment.html">AutoSegment</a> *)</td></tr>
<tr class="separator:a3946039ef19b5b6994171288f183bdaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> update <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>. </p>
<p><a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a> extend the <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/namespaceKatabatic.html">Katabatic</a> update session to the <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> router level. Mainly by managing <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> update.</p>
<p><b>Difference between <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> &amp; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/namespaceKatabatic.html">Katabatic</a> sessions:</b></p>
<ul>
<li>In <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/namespaceKatabatic.html">Katabatic</a>, segments are actually moved <em>before</em> the revalidation, then <em>during</em> the revalidation, contacts and topologies are adjusteds</li>
<li>In <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a>, nothing is moved until the revalidation. Requests for segment displacement are queued for the session.</li>
</ul>
<p><b>Asymmetry between invalidation &amp; revalidation:</b></p>
<ul>
<li>When a <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (or directly an AutoSegment) is invalidated both associated AutoSegment and <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> are invalidated (through the Observer mechanism).</li>
<li>When an AutoSegment is revalidated, the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is <b>not</b> immediatly revalidated. See the revalidate algorithm for more details.</li>
</ul>
<p><b>Indirect <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> invalidation:</b></p>
<ul>
<li><a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> invalidation do not result only from direct insertion in <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. For example, any or all of it's perpandicular can be invalidated trough the <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1Session.html">Katabatic::Session</a> update (the perpandicular <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1AutoSegment.html">Katabatic::AutoSegment</a> is revalidated, generating invalidation on their associated <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>).</li>
</ul>
<p>For details on how <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/namespaceKatabatic.html">Katabatic</a> Sessions works, have a look to <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1Session.html">Katabatic::Session</a>.</p>
<h1><a class="anchor" id="secSessionMechanism"></a>
The Session Mechanism.</h1>
<p>Delayed modification procedure :</p>
<ul>
<li>Modifications events are recorded (queued) into the <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>. At this step, no modification are actually done, the data-base retains it's previous state and coherency.</li>
<li>The <code><a class="el" href="classKite_1_1Session.html#a5bd93abe1416952ace15a98dbeeed124">revalidate()</a></code> procedure is called (or the <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a> is closed), then all the modification events are applied. The data-base is in now in it's new state.</li>
</ul>
<h1><a class="anchor" id="secKiteSessionRevalidate"></a>
The Revalidate Algorithm.</h1>
<p>Revalidation steps :</p>
<ul>
<li>Process all remove events. detach <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from their <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, but do not remove the pointer from the internal <code>vector</code>.</li>
<li>Pack all <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in which removal have took place.</li>
<li>Process all insert events. <b>This is the time <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> are moved into their new <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> (physical displacement)</b>. It is at this point that the invalidation of both AutoSegment and <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is done.</li>
<li>Call the <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1Session.html#a4da9e28432c1fdb0c754717487d9cc83">Katabatic::Session::revalidate()</a> method which will recompute the correct contact extensions and topologies. <em>After</em> this step the <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/namespaceKatabatic.html">Katabatic</a> data-base is up to date, but <em>not</em> the <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> one. AutoSegment are revalidated.</li>
<li>Recompute the canonical position of source and target of all invalidateds <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (take account of extention modifications). The set of invalidated <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is computed from the revalidated AutoSegment, that is AutoSegment that are canonical.</li>
<li>Perform a sort() on all <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> that have been modifieds.</li>
<li>Now that the size of the segments have been accurately computed, look for revalidateds <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> that:<ol type="1">
<li>Can be reduced, generate a track remove event.</li>
<li>Must be raised, generate a routing event (put into the queue).</li>
</ol>
</li>
<li>Process the additional track remove events.</li>
</ul>
<p><b>Note:</b> We cannot use the Observer mechanism to automatically update <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from an AutoSegment, because we must wait for all AutoSegments (canonical or not) involved into the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> to be up to date before we can update it.</p>
<p><b>Note:</b> Have to talk about the special case when new canonical AutoSegment appears after dogleg creation.</p>
<h1><a class="anchor" id="secKiteSessionLookup"></a>
The Lookup Mechanism</h1>
<p>There are two lookup mechanisms:</p>
<ul>
<li>From a <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Segment.html">Hurricane::Segment</a>, we uses the <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/namespaceKatabatic.html">Katabatic</a> segment lookup table (slow, stored in a <code>map&lt;&gt;</code>).</li>
<li>From a <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1AutoSegment.html">Katabatic::AutoSegment</a>, we uses the Observer, it's owner is the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (fast). </li>
</ul>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ab8362982a442b5a67f5bd76d6b6caf93"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1Session.html">Session</a> * open </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1KiteEngine.html">KiteEngine</a> *&#160;</td>
<td class="paramname"><em>kite</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">kite</td><td>A <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> ToolEngine on which to work. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A new <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> update <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>.</dd></dl>
<p>Open a new <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> update <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a> on the <code>kite</code> <code>ToolEngine</code>. At this point only one session can be opened at a time. Attempt to open a second one will result in an exception. </p>
</div>
</div>
<a class="anchor" id="a76f17c3642eaeba85fa0af5ae9d208b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1Session.html">Session</a> * get </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>message</em> = <code>NULL</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The currently opened session, <code>NULL</code> if no session has been opened. </p>
<p>Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>.</p>
</div>
</div>
<a class="anchor" id="a8a3fc782c34dc075bb2e14209e245494"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1Session.html">Katabatic::Session</a> * base </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>, casted as it's base object. </p>
</div>
</div>
<a class="anchor" id="af337ffd75e4f019ce15302c60715d84b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isEmpty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Ensure that the <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a> is empty and can be closed (deleted) safely. </p>
<p>Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>.</p>
</div>
</div>
<a class="anchor" id="a7b6c91acd2c2a7c082b3b006c1bdc91d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1KiteEngine.html">KiteEngine</a> * getKiteEngine </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> ToolEngine associated to the current update session (proxy helper). </p>
<p>Referenced by <a class="el" href="classKite_1_1Manipulator.html#aa1b59e12dd58840e11e1056cab4261b7">Manipulator::canRipup()</a>, <a class="el" href="classKite_1_1SegmentFsm.html#a0d9a9926ae67cc7998799347f135e28a">SegmentFsm::conflictSolveByHistory()</a>, <a class="el" href="classKite_1_1SegmentFsm.html#a9c0fa6a9067b6e027e24f38330f627dc">SegmentFsm::conflictSolveByPlaceds()</a>, <a class="el" href="classKite_1_1NegociateWindow.html#a7bf31fcd4e4007e62454689ef7c553fc">NegociateWindow::createTrackSegment()</a>, <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>, <a class="el" href="classKite_1_1RoutingEvent.html#a6add4f520081c698421481bf8fe0ad1f">RoutingEvent::process()</a>, <a class="el" href="classKite_1_1RoutingEvent.html#a5bd93abe1416952ace15a98dbeeed124">RoutingEvent::revalidate()</a>, <a class="el" href="classKite_1_1Manipulator.html#af46102d49a7aa0c163de1bf143807794">Manipulator::ripple()</a>, <a class="el" href="classKite_1_1Manipulator.html#a147c24aa53f561c10d5d24b82b03448a">Manipulator::ripupPerpandiculars()</a>, <a class="el" href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>, <a class="el" href="classKite_1_1SegmentFsm.html#a2a8eadaaf3ed213914e7b4a81cae6e6a">SegmentFsm::SegmentFsm()</a>, and <a class="el" href="classKite_1_1NegociateWindow.html#a329dbc5bc549e3fe354996368dbf7113">NegociateWindow::setGCells()</a>.</p>
</div>
</div>
<a class="anchor" id="a9a7fbadfe526875680f698c76adfb128"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Configuration * getConfiguration </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <a class="el" href="namespaceKite.html" title="The namespace dedicated to Kite. ">Kite</a> Configuration of the Router (proxy helper). </p>
</div>
</div>
<a class="anchor" id="aef6f41b0e8265ad574d1797f46ab9fa8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * getBlockageNet </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The net used to create blockage components (proxy helper). </p>
<p>Referenced by <a class="el" href="classKite_1_1TrackFixedSegment.html#a7b548c2078a8d380b37ca12a96aa979d">TrackFixedSegment::create()</a>.</p>
</div>
</div>
<a class="anchor" id="a39ebff178f2e0abb9d5a29f485e0bbab"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1NegociateWindow.html">NegociateWindow</a> * getNegociateWindow </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The current <a class="el" href="classKite_1_1NegociateWindow.html" title="Perform the routing, main RoutingEvent manager. ">NegociateWindow</a> (proxy helper). </p>
<p>Referenced by <a class="el" href="classKite_1_1TrackSegment.html#a10a45c049d0bd7d01c7eff1c5441c7a2">TrackSegment::_postDoglegs()</a>, and <a class="el" href="classKite_1_1TrackSegment.html#a0ffe603ec7d46f21f5e56ccbe84c03fb">TrackSegment::reschedule()</a>.</p>
</div>
</div>
<a class="anchor" id="a27ecb1cf5ffabe1c7901c5c894a5067d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1GCell.html">Katabatic::GCell</a> * getGCellUnder </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The GCell under <code></code>(x,y) (proxy helper, see <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1Grid.html#ae9a2132d74bd6a15002a3917f57516ae">Katabatic::GCellGrid::getGCell()</a>). </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentFsm.html#a0d9a9926ae67cc7998799347f135e28a">SegmentFsm::conflictSolveByHistory()</a>.</p>
</div>
</div>
<a class="anchor" id="ad4f08dfb62ce626ed72023ce02e7205f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addInsertEvent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>segment</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classKite_1_1Track.html">Track</a> *&#160;</td>
<td class="paramname"><em>track</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segment</td><td>An AutoSegment to insert in a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </td></tr>
<tr><td class="paramname">track</td><td>The <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> into which the <em>segment</em> will be inserted.</td></tr>
</table>
</dd>
</dl>
<p>Schedule the insertion of <em>segment</em> into <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> <em>track</em>. The <em>segment</em> must not already be part of a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
</div>
</div>
<a class="anchor" id="aedd573fc951ed93f8ada5b0522813c3a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addRemoveEvent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segment</td><td>A <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> to remove from a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>.</td></tr>
</table>
</dd>
</dl>
<p>Schedule the removal of <em>segment</em> from <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> <em>track</em>. </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>, and <a class="el" href="classKite_1_1TrackSegment.html#a0ffe603ec7d46f21f5e56ccbe84c03fb">TrackSegment::reschedule()</a>.</p>
</div>
</div>
<a class="anchor" id="aa42e4cb9e2559c00d68821f535ef7838"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addMoveEvent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>segment</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classKite_1_1Track.html">Track</a> *&#160;</td>
<td class="paramname"><em>track</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segment</td><td>An AutoSegment to move into a new <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </td></tr>
<tr><td class="paramname">track</td><td>The <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> into which the <em>segment</em> will be moved.</td></tr>
</table>
</dd>
</dl>
<p>Schedule the displacement of <em>segment</em> into <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> <em>track</em>. </p>
</div>
</div>
<a class="anchor" id="a990d32b1f1ea661b088a05f86319772f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addSortEvent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1Track.html">Track</a> *&#160;</td>
<td class="paramname"><em>track</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>forced</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">track</td><td>The <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> to update. </td></tr>
<tr><td class="paramname">forced</td><td>Force the invalidation of the <code><a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a></code>.</td></tr>
</table>
</dd>
</dl>
<p>Schedule the update of <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> <em>track</em>. If the <code><a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a></code> has not been invalidated, no actual sort will takes place. To force a sort (manually invalidating the <code><a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a></code>), sets <b>forced</b> to <b>true</b>.</p>
<p><b>See also:</b>&#160; Track::pack() &amp; Track::sort(). </p>
<p>Referenced by <a class="el" href="classKite_1_1TrackSegment.html#a5bd93abe1416952ace15a98dbeeed124">TrackSegment::revalidate()</a>.</p>
</div>
</div>
<a class="anchor" id="a5bd93abe1416952ace15a98dbeeed124"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void revalidate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Applies all the requested modifications, but keeping the session opened. </p>
<p>Referenced by <a class="el" href="classKite_1_1RoutingEvent.html#a6add4f520081c698421481bf8fe0ad1f">RoutingEvent::process()</a>, <a class="el" href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>, and <a class="el" href="classKite_1_1NegociateWindow.html#a329dbc5bc549e3fe354996368dbf7113">NegociateWindow::setGCells()</a>.</p>
</div>
</div>
<a class="anchor" id="a1728621b96081c32fb7bfb18a0ebfad3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> * lookup </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Segment.html">Segment</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> associated to <code>segment</code>. </p>
<p>Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a4936106670361df6b6f3ef0b6088c9dc">NegociateWindow::computeWirelength()</a>, <a class="el" href="classKite_1_1TrackSegment.html#a536f91d468e6c2097f85169e6d790f64">TrackSegment::create()</a>, <a class="el" href="classKite_1_1TrackSegment.html#af2d46d64cbd02bdbba53d5483d95e26d">TrackSegment::getCanonical()</a>, <a class="el" href="classKite_1_1TrackSegment.html#ad1a03a36d5908ce44c3d0391ff9c7103">TrackSegment::getParent()</a>, <a class="el" href="classKite_1_1TrackSegment.html#a7e79fbfe77f173d46b1959c41087930a">TrackSegment::getSourceDogleg()</a>, <a class="el" href="classKite_1_1TrackSegment.html#aeb4e39bd925d093e6c45599433bb421c">TrackSegment::getTargetDogleg()</a>, <a class="el" href="classKite_1_1Manipulator.html#a8b5b69fd5762d5a0cbc4ceea4d1b68c1">Manipulator::relax()</a>, <a class="el" href="classKite_1_1RoutingEventQueue.html#a4fb0022d3e8f91a862b5f6438b7f8dad">RoutingEventQueue::repushInvalidateds()</a>, and <a class="el" href="classKite_1_1NegociateWindow.html#a329dbc5bc549e3fe354996368dbf7113">NegociateWindow::setGCells()</a>.</p>
</div>
</div>
<a class="anchor" id="a3946039ef19b5b6994171288f183bdaf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> * lookup </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/" href="../katabatic/classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> associated to <code>segment</code>. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Session_8h_source.html">Session.h</a></li>
<li>Session.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.5 on Mon Oct 1 2018</small></td>
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
</tr>
</table>
<table class="footer2">
<tr>
<td class="LFooter">Kite - Detailed Router</td>
<td class="RFooter"><small>Copyright &#169; 2008-2016 UPMC. All rights reserved</small></td>
</tr>
</table>
</body>
</html>