Salome HOME
Improve SALOME logger: customize log file name (add port, user and host ids) to avoid...
[modules/kernel.git] / idl / SALOME_Session.idl
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
19 //
20 //
21 //
22 //  File   : SALOME_Session.idl
23 //  Author : Paul RASCLE, EDF
24 //  $Header$
25
26 #include "SALOME_Component.idl"
27
28 /*!   
29   This package contains interfaces used for management of the session in %SALOME application.
30 */
31 module SALOME
32 {
33 /*! \brief State of the session
34    
35    This enumeration contains values defining the state of the session
36   
37 */ 
38   enum SessionState {asleep, /*! Session is inactive */
39                      running /*! Session is running */
40   } ;
41
42 /*! \brief %Session State and Statistics
43
44
45     This struct contains a field list with general information about the session 
46 */
47    
48   struct StatSession
49   {
50 /*! \brief State of the session
51   
52    It can be:
53    *     -# asleep  : no running study
54    *     -# running : one or more running studies
55 */
56     SessionState state ; 
57 /*! Number of running studies
58 */
59     short        runningStudies ;
60 /*! It is True if GUI is active in the session
61 */
62     boolean      activeGUI ;
63   } ;
64 /*! \brief Interface of the session
65
66     The %session Server launches and stops GUI (Graphical User Interface).
67     The %session can be active without GUI (It can contain one or more running studies)
68 */
69
70   interface Session
71   {
72 /*! 
73    This exception is raised when trying to stop the %session with active GUI
74 */
75     exception GUIActive {} ;
76 /*! 
77    This exception is raised when trying to stop the %session with a number of running studies.
78 */
79     exception RunningStudies {} ;  
80
81 /*! 
82    Launches GUI in the session
83 */
84     void GetInterface(); 
85
86 /*! 
87    Returns a standalone component
88 */
89     Engines::Component GetComponent(in string theLibraryName);
90
91 /*! 
92   Stops the %Session (It must be idle)
93 */
94     void StopSession() raises(GUIActive, RunningStudies) ;
95
96 /*! 
97   Gets Session State
98 */
99     StatSession GetStatSession() ;
100 /*! 
101     Determines whether the server has already been loaded or not.
102 */ 
103     void ping();
104 /*!
105     Returns the PID of the server
106 */
107     long getPID();
108 /*!
109     Get Active study ID
110 */
111     long GetActiveStudyId();
112 /*!
113     Restores a state of the study at theSavePoint
114 */
115     boolean restoreVisualState(in long theSavePoint);
116 /*!
117     Emit a qt signal from the session GUI desktop window.
118     This method can be used to send a message to the GUI from the standalone
119     container.
120     Caution: this method can block the Session and the calling container
121     if it is called when container processes some request from the GUI
122     (mutual lock takes place).
123     In such a case it is recommended to use oneway method.
124 */
125     void emitMessage(in string theMessage);
126 /*!
127     Emit a qt signal from the session GUI desktop window.
128     This method can be used to send a message to the GUI from the standalone
129     container.
130     This method never blocks the Session and the calling container.
131 */
132     oneway void emitMessageOneWay(in string theMessage);
133   } ;
134 } ;