SecurityServer.hh

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // CERTI - HLA RunTime Infrastructure
00003 // Copyright (C) 2002-2005  ONERA
00004 //
00005 // This file is part of CERTI-libCERTI
00006 //
00007 // CERTI-libCERTI is free software ; you can redistribute it and/or
00008 // modify it under the terms of the GNU Lesser General Public License
00009 // as published by the Free Software Foundation ; either version 2 of
00010 // the License, or (at your option) any later version.
00011 //
00012 // CERTI-libCERTI is distributed in the hope that it will be useful, but
00013 // WITHOUT ANY WARRANTY ; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00015 // Lesser General Public License for more details.
00016 //
00017 // You should have received a copy of the GNU Lesser General Public
00018 // License along with this program ; if not, write to the Free Software
00019 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00020 // USA
00021 //
00022 // $Id: SecurityServer.hh,v 3.11 2007/06/22 08:51:39 erk Exp $
00023 // ----------------------------------------------------------------------------
00024 
00025 #ifndef _CERTI_SECURITY_SERVER_HH
00026 #define _CERTI_SECURITY_SERVER_HH
00027 
00028 
00029 #include "SocketServer.hh"
00030 #include "AuditFile.hh"
00031 #include "FederateLevelList.hh"
00032 #include "SecureTCPSocket.hh"
00033 
00034 #include <list>
00035 
00036 namespace certi {
00037 
00048 class CERTI_EXPORT SecurityServer : private std::list<SecurityLevel *>
00049 {
00050 public:
00051     SecurityServer(SocketServer &, AuditFile &, Handle);
00052     ~SecurityServer();
00053 
00055     AuditFile &audit ;
00056 
00057     Handle federation() const { return myFederation ; };
00058 
00059     Socket *getSocketLink(FederateHandle theFederate,
00060                           TransportType theType = RELIABLE) const ;
00061 
00062     // Security related methods
00063     bool dominates(SecurityLevelID A, SecurityLevelID B) const ;
00064 
00065     bool canFederateAccessData(FederateHandle theFederate,
00066                                   SecurityLevelID theDataLevelID);
00067 
00068     SecurityLevelID getLevelIDWithName(const char *theName);
00069 
00070     void registerFederate(const char *the_federate,
00071                           SecurityLevelID the_level_id);
00072 
00073 private:
00074     Handle myFederation ;
00075     SocketServer &RTIG_SocketServer ;
00076 
00077     SecurityLevelID LastLevelID ; 
00078     FederateLevelList FedLevelList ;
00079     SecurityLevelID getLevel(const char *theFederate) const ;
00080 
00081     void insertPublicLevel();
00082 };
00083 
00084 }
00085 
00086 #endif // _CERTI_SECURITY_SERVER_HH
00087 
00088 // $Id: SecurityServer.hh,v 3.11 2007/06/22 08:51:39 erk Exp $

Generated on Thu Apr 30 15:53:50 2009 for CERTIDeveloperDocumentation by doxygen 1.5.5