Salome HOME
Fix compilation pb.
[modules/kernel.git] / src / Registry / RegistryService.hxx
1 //  SALOME Registry : Registry server implementation
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
6 //  This library is free software; you can redistribute it and/or 
7 //  modify it under the terms of the GNU Lesser General Public 
8 //  License as published by the Free Software Foundation; either 
9 //  version 2.1 of the License. 
10 // 
11 //  This library is distributed in the hope that it will be useful, 
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 //  Lesser General Public License for more details. 
15 // 
16 //  You should have received a copy of the GNU Lesser General Public 
17 //  License along with this library; if not, write to the Free Software 
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19 // 
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //
23 //
24 //  File   : RegistryService.hxx
25 //  Author : Pascale NOYRET - Antoine YESSAYAN, EDF
26 //  Module : SALOME
27 //  $Header$
28
29 # ifndef __RegistryService_h__
30 # define __RegistryService_h__
31
32 #include <SALOME_Registry.hxx>
33
34 #include <SALOMEconfig.h>
35 #include CORBA_SERVER_HEADER(SALOME_Registry)
36
37 # include <map>
38
39 class REGISTRY_EXPORT RegistryService : public POA_Registry::Components  //, public PortableServer::RefCountServantBase
40 {
41
42 public :
43         enum Status { UNDEF=-1 , TERMINATED=0 , RUNNING=1 } ;
44
45         class client_infos
46         {
47         protected :
48                 const char* const       _ior;
49                 const char* const       _name;
50                 const long              _pid ;
51                 const char* const       _machine;
52                 const char* const       _adip;
53                 const long              _uid;
54                 const char* const       _pwname;
55                 const long              _ts_start ;
56                 const long              _difftime;
57                 const char* const       _cdir ;
58                       long              _ts_hello ;
59                       long              _ts_end ;
60                       Status            _status;
61         public :
62                 friend class RegistryService ;
63
64                 client_infos( const Registry::Infos &infos );
65                 ~client_infos();
66         }; 
67
68
69
70 public :
71         RegistryService(void);
72         virtual ~RegistryService(void);
73
74         void ping();
75         CORBA::Long getPID();
76         virtual CORBA::ULong add (const Registry::Infos & infos);
77         virtual CORBA::ULong size ( void );
78 #ifndef WNT
79         virtual void remove( const CORBA::ULong id );
80         virtual void hello( const CORBA::ULong id );
81 #else
82         virtual void remove( CORBA::ULong id );
83         virtual void hello( CORBA::ULong id );
84 #endif
85         virtual void end(void);
86
87         virtual Registry::AllInfos *getall(void);
88         virtual Registry::AllInfos *history(void);
89
90         void SessionName( const char *sessionName ) ;
91
92         void SetOrb( CORBA::ORB_ptr orb ) { _orb = orb; return; }
93
94         void Shutdown() { if(!CORBA::is_nil(_orb)) _orb->shutdown(0); }
95
96 protected :
97
98         CORBA::ORB_var _orb;
99         const char              *_SessionName ;
100         int                      _Compteur ;
101         std::map<int,client_infos *>     _reg ;
102         std::map<int,client_infos *>     _fin ;
103
104         Registry::AllInfos* makeseq(std::map<int,client_infos *> &mymap );
105
106 } ;
107
108 # endif