\mbox{\hyperlink{classKite_1_1Session}{Session}} extend the Katabatic update session to the \mbox{\hyperlink{namespaceKite}{Kite}} router level. Mainly by managing \mbox{\hyperlink{classKite_1_1Track}{Track}} update.
\item In Katabatic, segments are actually moved {\itshape before} the revalidation, then {\itshape during} the revalidation, contacts and topologies are adjusteds
\item In \mbox{\hyperlink{namespaceKite}{Kite}}, nothing is moved until the revalidation. Requests for segment displacement are queued for the session.
\item When a \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} (or directly an Auto\+Segment) is invalidated both associated Auto\+Segment and \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} are invalidated (through the Observer mechanism).
\item When an Auto\+Segment is revalidated, the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} is {\bfseries not} immediatly revalidated. See the revalidate algorithm for more details.
\item\mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} invalidation do not result only from direct insertion in \mbox{\hyperlink{classKite_1_1Track}{Track}}. For example, any or all of it\textquotesingle{}s perpandicular can be invalidated trough the \textbf{ Katabatic\+::\+Session} update (the perpandicular \textbf{ Katabatic\+::\+Auto\+Segment} is revalidated, generating invalidation on their associated \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}).
For details on how Katabatic Sessions works, have a look to \textbf{ Katabatic\+::\+Session}.\hypertarget{classKite_1_1Session_secSessionMechanism}{}\subsubsection{The Session Mechanism.}\label{classKite_1_1Session_secSessionMechanism}
\item Modifications events are recorded (queued) into the \mbox{\hyperlink{classKite_1_1Session}{Session}}. At this step, no modification are actually done, the data-\/base retains it\textquotesingle{}s previous state and coherency.
\item The {\ttfamily\mbox{\hyperlink{classKite_1_1Session_a5bd93abe1416952ace15a98dbeeed124}{revalidate()}}} procedure is called (or the \mbox{\hyperlink{classKite_1_1Session}{Session}} is closed), then all the modification events are applied. The data-\/base is in now in it\textquotesingle{}s new state.
\item Process all remove events. detach \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from their \mbox{\hyperlink{classKite_1_1Track}{Track}}, but do not remove the pointer from the internal {\ttfamily vector}.
\item Pack all \mbox{\hyperlink{classKite_1_1Track}{Track}} in which removal have took place.
\item Process all insert events. {\bfseries This is the time \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} are moved into their new \mbox{\hyperlink{classKite_1_1Track}{Track}} (physical displacement)}. It is at this point that the invalidation of both Auto\+Segment and \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} is done.
\item Call the \textbf{ Katabatic\+::\+Session\+::revalidate()} method which will recompute the correct contact extensions and topologies. {\itshape After} this step the Katabatic data-\/base is up to date, but {\itshape not} the \mbox{\hyperlink{namespaceKite}{Kite}} one. Auto\+Segment are revalidated.
\item Recompute the canonical position of source and target of all invalidateds \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} (take account of extention modifications). The set of invalidated \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} is computed from the revalidated Auto\+Segment, that is Auto\+Segment that are canonical.
\item Perform a sort() on all \mbox{\hyperlink{classKite_1_1Track}{Track}} that have been modifieds.
\item Now that the size of the segments have been accurately computed, look for revalidateds \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} that\+:
{\bfseries Note\+:} We cannot use the Observer mechanism to automatically update \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from an Auto\+Segment, because we must wait for all Auto\+Segments (canonical or not) involved into the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} to be up to date before we can update it.
{\bfseries Note\+:} Have to talk about the special case when new canonical Auto\+Segment appears after dogleg creation.\hypertarget{classKite_1_1Session_secKiteSessionLookup}{}\subsubsection{The Lookup Mechanism}\label{classKite_1_1Session_secKiteSessionLookup}
\item From a \textbf{ Hurricane\+::\+Segment}, we uses the Katabatic segment lookup table (slow, stored in a {\ttfamily map$<$$>$}).
\item From a \textbf{ Katabatic\+::\+Auto\+Segment}, we uses the Observer, it\textquotesingle{}s owner is the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} (fast).
Open a new \mbox{\hyperlink{namespaceKite}{Kite}} update \mbox{\hyperlink{classKite_1_1Session}{Session}} on the {\ttfamily kite}{\ttfamily Tool\+Engine}. At this point only one session can be opened at a time. Attempt to open a second one will result in an exception. \mbox{\Hypertarget{classKite_1_1Session_a76f17c3642eaeba85fa0af5ae9d208b4}\label{classKite_1_1Session_a76f17c3642eaeba85fa0af5ae9d208b4}}
{\footnotesize\ttfamily\textbf{ Katabatic\+::\+Session}$\ast$ base (\begin{DoxyParamCaption}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
{\bfseries Returns\+:} The \mbox{\hyperlink{classKite_1_1Session}{Session}}, casted as it\textquotesingle{}s base object. \mbox{\Hypertarget{classKite_1_1Session_af337ffd75e4f019ce15302c60715d84b}\label{classKite_1_1Session_af337ffd75e4f019ce15302c60715d84b}}
{\bfseries Returns\+:} The \mbox{\hyperlink{namespaceKite}{Kite}} Configuration of the Router (proxy helper). \mbox{\Hypertarget{classKite_1_1Session_aef6f41b0e8265ad574d1797f46ab9fa8}\label{classKite_1_1Session_aef6f41b0e8265ad574d1797f46ab9fa8}}
Schedule the insertion of {\itshape segment} into \mbox{\hyperlink{classKite_1_1Track}{Track}}{\itshape track}. The {\itshape segment} must not already be part of a \mbox{\hyperlink{classKite_1_1Track}{Track}}. \mbox{\Hypertarget{classKite_1_1Session_aedd573fc951ed93f8ada5b0522813c3a}\label{classKite_1_1Session_aedd573fc951ed93f8ada5b0522813c3a}}
Schedule the displacement of {\itshape segment} into \mbox{\hyperlink{classKite_1_1Track}{Track}}{\itshape track}. \mbox{\Hypertarget{classKite_1_1Session_a990d32b1f1ea661b088a05f86319772f}\label{classKite_1_1Session_a990d32b1f1ea661b088a05f86319772f}}
Schedule the update of \mbox{\hyperlink{classKite_1_1Track}{Track}}{\itshape track}. If the {\ttfamily\mbox{\hyperlink{classKite_1_1Track}{Track}}} has not been invalidated, no actual sort will takes place. To force a sort (manually invalidating the {\ttfamily\mbox{\hyperlink{classKite_1_1Track}{Track}}}), sets {\bfseries forced} to {\bfseries true}.
{\bfseries See also\+:}~ Track\+::pack() \& Track\+::sort().