--- /dev/null
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File : SALOME_Session.idl
+// Author : Paul RASCLE, EDF
+// $Header$
+
+#include "SALOME_Component.idl"
+
+/*!
+ This package contains interfaces used for management of the session in %SALOME application.
+*/
+module SALOME
+{
+/*! \brief State of the session
+
+ This enumeration contains values defining the state of the session
+
+*/
+ enum SessionState {asleep, /*! Session is inactive */
+ running /*! Session is running */
+ } ;
+
+/*! \brief %Session State and Statistics
+
+
+ This struct contains a field list with general information about the session
+*/
+
+ struct StatSession
+ {
+/*! \brief State of the session
+
+ It can be:
+ * -# asleep : no running study
+ * -# running : one or more running studies
+*/
+ SessionState state ;
+/*! Number of running studies
+*/
+ short runningStudies ;
+/*! It is True if GUI is active in the session
+*/
+ boolean activeGUI ;
+ } ;
+/*! \brief Interface of the session
+
+ The %session Server launches and stops GUI (Graphical User Interface).
+ The %session can be active without GUI (It can contain one or more running studies)
+*/
+
+ interface Session
+ {
+/*!
+ This exception is raised when trying to stop the %session with active GUI
+*/
+ exception GUIActive {} ;
+/*!
+ This exception is raised when trying to stop the %session with a number of running studies.
+*/
+ exception RunningStudies {} ;
+
+/*!
+ Launches GUI in the session
+*/
+ void GetInterface();
+
+/*!
+ Returns a standalone component
+*/
+ Engines::Component GetComponent(in string theLibraryName);
+
+/*!
+ Stops the %Session (It must be idle)
+*/
+ void StopSession() raises(GUIActive, RunningStudies) ;
+
+/*!
+ Gets Session State
+*/
+ StatSession GetStatSession() ;
+/*!
+ Determines whether the server has already been loaded or not.
+*/
+ void ping();
+/*!
+ Get Active study ID
+*/
+ long GetActiveStudyId();
+/*!
+ Restores a state of the study at theSavePoint
+*/
+ boolean restoreVisualState(in long theSavePoint);
+ } ;
+} ;