<p><aclass="el"href="classKite_1_1Session.html"title="Kite update Session. ">Session</a> extend the Katabatic update session to the <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a> router level. Mainly by managing <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a> update.</p>
<p><b>Difference between <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a>& Katabatic sessions:</b></p><ul>
<li>In Katabatic, segments are actually moved <em>before</em> the revalidation, then <em>during</em> the revalidation, contacts and topologies are adjusteds</li>
<li>In <aclass="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>
<li>When a <aclass="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 <aclass="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 <aclass="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>
<p><b>Indirect <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> invalidation:</b></p><ul>
<li><aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> invalidation do not result only from direct insertion in <aclass="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 <aclass="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 <aclass="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 <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>).</li>
<p>For details on how Katabatic Sessions works, have a look to <aclass="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>
<li>Modifications events are recorded (queued) into the <aclass="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><aclass="el"href="classKite_1_1Session.html#a5bd93abe1416952ace15a98dbeeed124">revalidate()</a></code> procedure is called (or the <aclass="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>
<li>Process all remove events. detach <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from their <aclass="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 <aclass="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 <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> are moved into their new <aclass="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 <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is done.</li>
<li>Call the <aclass="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 Katabatic data-base is up to date, but <em>not</em> the <aclass="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 <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (take account of extention modifications). The set of invalidated <aclass="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 <aclass="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 <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> that:<oltype="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 <aclass="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 <aclass="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>
<li>From a <aclass="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 Katabatic segment lookup table (slow, stored in a <code>map<></code>).</li>
<li>From a <aclass="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 <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (fast). </li>
</ul>
</div><h2class="groupheader">Member Function Documentation</h2>
<tr><tdclass="paramname">kite</td><td>A <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a> ToolEngine on which to work. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A new <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a> update <aclass="el"href="classKite_1_1Session.html"title="Kite update Session. ">Session</a>.</dd></dl>
<p>Open a new <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a> update <aclass="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>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>.</p>
<tdclass="memname"><aclass="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>
<p>Ensure that the <aclass="el"href="classKite_1_1Session.html"title="Kite update Session. ">Session</a> is empty and can be closed (deleted) safely. </p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>.</p>
<p><b>Returns:</b> The <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a> ToolEngine associated to the current update session (proxy helper). </p>
<p><b>Returns:</b> The <aclass="el"href="namespaceKite.html"title="The namespace dedicated to Kite. ">Kite</a> Configuration of the Router (proxy helper). </p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1TrackFixedSegment.html#a7b548c2078a8d380b37ca12a96aa979d">TrackFixedSegment::create()</a>.</p>
<p><b>Returns:</b> The current <aclass="el"href="classKite_1_1NegociateWindow.html"title="Perform the routing, main RoutingEvent manager. ">NegociateWindow</a> (proxy helper). </p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1TrackSegment.html#a10a45c049d0bd7d01c7eff1c5441c7a2">TrackSegment::_postDoglegs()</a>, and <aclass="el"href="classKite_1_1TrackSegment.html#a0ffe603ec7d46f21f5e56ccbe84c03fb">TrackSegment::reschedule()</a>.</p>
<p><b>Returns:</b> The GCell under <code></code>(x,y) (proxy helper, see <aclass="elRef"doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/katabatic/doc/html/katabatic.tag:../katabatic/"href="../katabatic/classKatabatic_1_1Grid.html#a98650c11b4aa0c6107c4d890dff61587">Katabatic::GCellGrid::getGCell()</a>). </p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1SegmentFsm.html#a0d9a9926ae67cc7998799347f135e28a">SegmentFsm::conflictSolveByHistory()</a>.</p>
<tr><tdclass="paramname">segment</td><td>An AutoSegment to insert in a <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a>. </td></tr>
<tr><tdclass="paramname">track</td><td>The <aclass="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 <aclass="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 <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a>. </p>
<tr><tdclass="paramname">segment</td><td>A <aclass="el"href="classKite_1_1TrackSegment.html"title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> to remove from a <aclass="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 <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a><em>track</em>. </p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>, and <aclass="el"href="classKite_1_1TrackSegment.html#a0ffe603ec7d46f21f5e56ccbe84c03fb">TrackSegment::reschedule()</a>.</p>
<tr><tdclass="paramname">segment</td><td>An AutoSegment to move into a new <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a>. </td></tr>
<tr><tdclass="paramname">track</td><td>The <aclass="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 <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a><em>track</em>. </p>
<tr><tdclass="paramname">track</td><td>The <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a> to update. </td></tr>
<tr><tdclass="paramname">forced</td><td>Force the invalidation of the <code><aclass="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 <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a><em>track</em>. If the <code><aclass="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><aclass="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>  Track::pack() & Track::sort(). </p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1TrackSegment.html#a5bd93abe1416952ace15a98dbeeed124">TrackSegment::revalidate()</a>.</p>
<pclass="reference">Referenced by <aclass="el"href="classKite_1_1RoutingEvent.html#a6add4f520081c698421481bf8fe0ad1f">RoutingEvent::process()</a>, <aclass="el"href="classKite_1_1NegociateWindow.html#a61e848b73b597f54e2e83e13eb70ff83">NegociateWindow::run()</a>, and <aclass="el"href="classKite_1_1NegociateWindow.html#a329dbc5bc549e3fe354996368dbf7113">NegociateWindow::setGCells()</a>.</p>
<p><b>Returns:</b> the <aclass="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><b>Returns:</b> the <aclass="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>