RTItypes.cc

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // CERTI - HLA RunTime Infrastructure
00003 // Copyright (C) 2002-2006  ONERA
00004 //
00005 // This program is free software ; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public License
00007 // as published by the Free Software Foundation ; either version 2 of
00008 // the License, or (at your option) any later version.
00009 //
00010 // This program is distributed in the hope that it will be useful, but
00011 // WITHOUT ANY WARRANTY ; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this program ; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00018 //
00019 // $Id: RTItypes.cc,v 1.4 2009/04/04 13:30:54 gotthardp Exp $
00020 // ----------------------------------------------------------------------------
00021 
00022 #include "Exception.hh"
00023 #include "PrettyDebug.hh"
00024 #include <assert.h>
00025 #include <sstream>
00026 #include <cstdlib>
00027 #include <cstring>
00028 
00029 // static members for HLA Exceptions
00030 const char *RTI::ArrayIndexOutOfBounds::_ex = "ArrayIndexOutOfBounds" ;
00031 const char *RTI::AsynchronousDeliveryAlreadyDisabled::_ex = "AsynchronousDeliveryAlreadyDisabled" ;
00032 const char *RTI::AsynchronousDeliveryAlreadyEnabled::_ex = "AsynchronousDeliveryAlreadyEnabled" ;
00033 const char *RTI::AttributeAcquisitionWasNotRequested::_ex = "AttributeAcquisitionWasNotRequested" ;
00034 const char *RTI::AttributeAcquisitionWasNotCanceled::_ex = "AttributeAcquisitionWasNotCanceled" ;
00035 const char *RTI::AttributeAlreadyBeingAcquired::_ex = "AttributeAlreadyBeingAcquired" ;
00036 const char *RTI::AttributeAlreadyBeingDivested::_ex = "AttributeAlreadyBeingDivested" ;
00037 const char *RTI::AttributeAlreadyOwned::_ex = "AttributeAlreadyOwned" ;
00038 const char *RTI::AttributeDivestitureWasNotRequested::_ex = "AttributeDivestitureWasNotRequested" ;
00039 const char *RTI::AttributeNotDefined::_ex = "AttributeNotDefined" ;
00040 const char *RTI::AttributeNotKnown::_ex = "AttributeNotKnown" ;
00041 const char *RTI::AttributeNotOwned::_ex = "AttributeNotOwned" ;
00042 const char *RTI::AttributeNotPublished::_ex = "AttributeNotPublished" ;
00043 const char *RTI::ConcurrentAccessAttempted::_ex = "ConcurrentAccessAttempted" ;
00044 const char *RTI::CouldNotDiscover::_ex = "CouldNotDiscover" ;
00045 const char *RTI::CouldNotOpenFED::_ex = "CouldNotOpenFED" ;
00046 const char *RTI::CouldNotRestore::_ex = "CouldNotRestore" ;
00047 const char *RTI::DeletePrivilegeNotHeld::_ex = "DeletePrivilegeNotHeld" ;
00048 const char *RTI::DimensionNotDefined::_ex = "DimensionNotDefined" ;
00049 const char *RTI::EnableTimeConstrainedPending::_ex = "EnableTimeConstrainedPending" ;
00050 const char *RTI::EnableTimeConstrainedWasNotPending::_ex = "EnableTimeConstrainedWasNotPending" ;
00051 const char *RTI::EnableTimeRegulationPending::_ex = "EnableTimeRegulationPending" ;
00052 const char *RTI::EnableTimeRegulationWasNotPending::_ex = "EnableTimeRegulationWasNotPending" ;
00053 const char *RTI::ErrorReadingFED::_ex = "ErrorReadingFED" ;
00054 const char *RTI::EventNotKnown::_ex = "EventNotKnown" ;
00055 const char *RTI::FederateAlreadyExecutionMember::_ex = "FederateAlreadyExecutionMember" ;
00056 const char *RTI::FederateInternalError::_ex = "FederateInternalError" ;
00057 const char *RTI::FederateLoggingServiceCalls::_ex = "FederateLoggingServiceCalls" ;
00058 const char *RTI::FederateNotExecutionMember::_ex = "FederateNotExecutionMember" ;
00059 const char *RTI::FederateOwnsAttributes::_ex = "FederateOwnsAttributes" ;
00060 const char *RTI::FederateWasNotAskedToReleaseAttribute::_ex = "FederateWasNotAskedToReleaseAttribute" ;
00061 const char *RTI::FederatesCurrentlyJoined::_ex = "FederatesCurrentlyJoined" ;
00062 const char *RTI::FederationExecutionAlreadyExists::_ex = "FederationExecutionAlreadyExists" ;
00063 const char *RTI::FederationExecutionDoesNotExist::_ex = "FederationExecutionDoesNotExist" ;
00064 const char *RTI::FederationTimeAlreadyPassed::_ex = "FederationTimeAlreadyPassed" ;
00065 const char *RTI::HandleValuePairMaximumExceeded::_ex = "HandleValuePairMaximumExceeded" ;
00066 const char *RTI::InteractionClassNotDefined::_ex = "InteractionClassNotDefined" ;
00067 const char *RTI::InteractionClassNotKnown::_ex = "InteractionClassNotKnown" ;
00068 const char *RTI::InteractionClassNotPublished::_ex = "InteractionClassNotPublished" ;
00069 const char *RTI::InteractionClassNotSubscribed::_ex = "InteractionClassNotSubscribed" ;
00070 const char *RTI::InteractionParameterNotDefined::_ex = "InteractionParameterNotDefined" ;
00071 const char *RTI::InteractionParameterNotKnown::_ex = "InteractionParameterNotKnown" ;
00072 const char *RTI::InvalidExtents::_ex = "InvalidExtents" ;
00073 const char *RTI::InvalidFederationTime::_ex = "InvalidFederationTime" ;
00074 const char *RTI::InvalidHandleValuePairSetContext::_ex = "InvalidHandleValuePairSetContext" ;
00075 const char *RTI::InvalidLookahead::_ex = "InvalidLookahead" ;
00076 const char *RTI::InvalidOrderingHandle::_ex = "InvalidOrderingHandle" ;
00077 const char *RTI::InvalidRegionContext::_ex = "InvalidRegionContext" ;
00078 const char *RTI::InvalidResignAction::_ex = "InvalidResignAction" ;
00079 const char *RTI::InvalidRetractionHandle::_ex = "InvalidRetractionHandle" ;
00080 const char *RTI::InvalidTransportationHandle::_ex = "InvalidTransportationHandle" ;
00081 const char *RTI::MemoryExhausted::_ex = "MemoryExhausted" ;
00082 const char *RTI::NameNotFound::_ex = "NameNotFound" ;
00083 const char *RTI::ObjectClassNotDefined::_ex = "ObjectClassNotDefined" ;
00084 const char *RTI::ObjectClassNotKnown::_ex = "ObjectClassNotKnown" ;
00085 const char *RTI::ObjectClassNotPublished::_ex = "ObjectClassNotPublished" ;
00086 const char *RTI::ObjectClassNotSubscribed::_ex = "ObjectClassNotSubscribed" ;
00087 const char *RTI::ObjectNotKnown::_ex = "ObjectNotKnown" ;
00088 const char *RTI::ObjectAlreadyRegistered::_ex = "ObjectAlreadyRegistered" ;
00089 const char *RTI::OwnershipAcquisitionPending::_ex = "OwnershipAcquisitionPending" ;
00090 const char *RTI::RegionInUse::_ex = "RegionInUse" ;
00091 const char *RTI::RegionNotKnown::_ex = "RegionNotKnown" ;
00092 const char *RTI::RestoreInProgress::_ex = "RestoreInProgress" ;
00093 const char *RTI::RestoreNotRequested::_ex = "RestoreNotRequested" ;
00094 const char *RTI::RTIinternalError::_ex = "RTIinternalError" ;
00095 const char *RTI::SpaceNotDefined::_ex = "SpaceNotDefined" ;
00096 const char *RTI::SaveInProgress::_ex = "SaveInProgress" ;
00097 const char *RTI::SaveNotInitiated::_ex = "SaveNotInitiated" ;
00098 const char *RTI::SpecifiedSaveLabelDoesNotExist::_ex = "SpecifiedSaveLabelDoesNotExist" ;
00099 const char *RTI::SynchronizationPointLabelWasNotAnnounced::_ex = "SynchronizationPointLabelWasNotAnnounced" ;
00100 const char *RTI::TimeAdvanceAlreadyInProgress::_ex = "TimeAdvanceAlreadyInProgress" ;
00101 const char *RTI::TimeAdvanceWasNotInProgress::_ex = "TimeAdvanceWasNotInProgress" ;
00102 const char *RTI::TimeConstrainedAlreadyEnabled::_ex = "TimeConstrainedAlreadyEnabled" ;
00103 const char *RTI::TimeConstrainedWasNotEnabled::_ex = "TimeConstrainedWasNotEnabled" ;
00104 const char *RTI::TimeRegulationAlreadyEnabled::_ex = "TimeRegulationAlreadyEnabled" ;
00105 const char *RTI::TimeRegulationWasNotEnabled::_ex = "TimeRegulationWasNotEnabled" ;
00106 const char *RTI::UnableToPerformSave::_ex = "UnableToPerformSave" ;
00107 const char *RTI::ValueCountExceeded::_ex = "ValueCountExceeded" ;
00108 const char *RTI::ValueLengthExceeded::_ex = "ValueLengthExceeded" ;
00109 
00110 // TypeException managing (how to obtain TypeException from Exception name ?)
00111 long RTI::ArrayIndexOutOfBounds::type = certi::e_ArrayIndexOutOfBounds ;
00112 long RTI::AsynchronousDeliveryAlreadyDisabled::type = certi::e_AsynchronousDeliveryAlreadyDisabled ;
00113 long RTI::AsynchronousDeliveryAlreadyEnabled::type = certi::e_AsynchronousDeliveryAlreadyEnabled ;
00114 long RTI::AttributeAcquisitionWasNotRequested::type = certi::e_AttributeAcquisitionWasNotRequested ;
00115 long RTI::AttributeAcquisitionWasNotCanceled::type = certi::e_AttributeAcquisitionWasNotCanceled ;
00116 long RTI::AttributeAlreadyBeingAcquired::type = certi::e_AttributeAlreadyBeingAcquired ;
00117 long RTI::AttributeAlreadyBeingDivested::type = certi::e_AttributeAlreadyBeingDivested ;
00118 long RTI::AttributeAlreadyOwned::type = certi::e_AttributeAlreadyOwned ;
00119 long RTI::AttributeDivestitureWasNotRequested::type = certi::e_AttributeDivestitureWasNotRequested ;
00120 long RTI::AttributeNotDefined::type = certi::e_AttributeNotDefined ;
00121 long RTI::AttributeNotKnown::type = certi::e_AttributeNotKnown ;
00122 long RTI::AttributeNotOwned::type = certi::e_AttributeNotOwned ;
00123 long RTI::AttributeNotPublished::type = certi::e_AttributeNotPublished ;
00124 long RTI::ConcurrentAccessAttempted::type = certi::e_ConcurrentAccessAttempted ;
00125 long RTI::CouldNotDiscover::type = certi::e_CouldNotDiscover ;
00126 long RTI::CouldNotOpenFED::type = certi::e_CouldNotOpenFED ;
00127 long RTI::CouldNotRestore::type = certi::e_CouldNotRestore ;
00128 long RTI::DeletePrivilegeNotHeld::type = certi::e_DeletePrivilegeNotHeld ;
00129 long RTI::DimensionNotDefined::type = certi::e_DimensionNotDefined ;
00130 long RTI::EnableTimeConstrainedPending::type = certi::e_EnableTimeConstrainedPending ;
00131 long RTI::EnableTimeConstrainedWasNotPending::type = certi::e_EnableTimeConstrainedWasNotPending ;
00132 long RTI::EnableTimeRegulationPending::type = certi::e_EnableTimeRegulationPending ;
00133 long RTI::EnableTimeRegulationWasNotPending::type = certi::e_EnableTimeRegulationWasNotPending ;
00134 long RTI::ErrorReadingFED::type = certi::e_ErrorReadingFED ;
00135 long RTI::EventNotKnown::type = certi::e_EventNotKnown ;
00136 long RTI::FederateAlreadyExecutionMember::type = certi::e_FederateAlreadyExecutionMember ;
00137 long RTI::FederateInternalError::type = certi::e_FederateInternalError ;
00138 long RTI::FederateLoggingServiceCalls::type = certi::e_FederateLoggingServiceCalls ;
00139 long RTI::FederateNotExecutionMember::type = certi::e_FederateNotExecutionMember ;
00140 long RTI::FederateOwnsAttributes::type = certi::e_FederateOwnsAttributes ;
00141 long RTI::FederateWasNotAskedToReleaseAttribute::type = certi::e_FederateWasNotAskedToReleaseAttribute ;
00142 long RTI::FederatesCurrentlyJoined::type = certi::e_FederatesCurrentlyJoined ;
00143 long RTI::FederationExecutionAlreadyExists::type = certi::e_FederationExecutionAlreadyExists ;
00144 long RTI::FederationExecutionDoesNotExist::type = certi::e_FederationExecutionDoesNotExist ;
00145 long RTI::FederationTimeAlreadyPassed::type = certi::e_FederationTimeAlreadyPassed ;
00146 long RTI::HandleValuePairMaximumExceeded::type = certi::e_HandleValuePairMaximumExceeded ;
00147 long RTI::InteractionClassNotDefined::type = certi::e_InteractionClassNotDefined ;
00148 long RTI::InteractionClassNotKnown::type = certi::e_InteractionClassNotKnown ;
00149 long RTI::InteractionClassNotPublished::type = certi::e_InteractionClassNotPublished ;
00150 long RTI::InteractionClassNotSubscribed::type = certi::e_InteractionClassNotSubscribed ;
00151 long RTI::InteractionParameterNotDefined::type = certi::e_InteractionParameterNotDefined ;
00152 long RTI::InteractionParameterNotKnown::type = certi::e_InteractionParameterNotKnown ;
00153 long RTI::InvalidExtents::type = certi::e_InvalidExtents ;
00154 long RTI::InvalidFederationTime::type = certi::e_InvalidFederationTime ;
00155 long RTI::InvalidHandleValuePairSetContext::type = certi::e_InvalidHandleValuePairSetContext ;
00156 long RTI::InvalidLookahead::type = certi::e_InvalidLookahead ;
00157 long RTI::InvalidOrderingHandle::type = certi::e_InvalidOrderingHandle ;
00158 long RTI::InvalidRegionContext::type = certi::e_InvalidRegionContext ;
00159 long RTI::InvalidResignAction::type = certi::e_InvalidResignAction ;
00160 long RTI::InvalidRetractionHandle::type = certi::e_InvalidRetractionHandle ;
00161 long RTI::InvalidTransportationHandle::type = certi::e_InvalidTransportationHandle ;
00162 long RTI::MemoryExhausted::type = certi::e_MemoryExhausted ;
00163 long RTI::NameNotFound::type = certi::e_NameNotFound ;
00164 long RTI::ObjectClassNotDefined::type = certi::e_ObjectClassNotDefined ;
00165 long RTI::ObjectClassNotKnown::type = certi::e_ObjectClassNotKnown ;
00166 long RTI::ObjectClassNotPublished::type = certi::e_ObjectClassNotPublished ;
00167 long RTI::ObjectClassNotSubscribed::type = certi::e_ObjectClassNotSubscribed ;
00168 long RTI::ObjectNotKnown::type = certi::e_ObjectNotKnown ;
00169 long RTI::ObjectAlreadyRegistered::type = certi::e_ObjectAlreadyRegistered ;
00170 long RTI::OwnershipAcquisitionPending::type = certi::e_OwnershipAcquisitionPending ;
00171 long RTI::RegionInUse::type = certi::e_RegionInUse ;
00172 long RTI::RegionNotKnown::type = certi::e_RegionNotKnown ;
00173 long RTI::RestoreInProgress::type = certi::e_RestoreInProgress ;
00174 long RTI::RestoreNotRequested::type = certi::e_RestoreNotRequested ;
00175 long RTI::RTIinternalError::type = certi::e_RTIinternalError ;
00176 long RTI::SpaceNotDefined::type = certi::e_SpaceNotDefined ;
00177 long RTI::SaveInProgress::type = certi::e_SaveInProgress ;
00178 long RTI::SaveNotInitiated::type = certi::e_SaveNotInitiated ;
00179 long RTI::SpecifiedSaveLabelDoesNotExist::type = certi::e_SpecifiedSaveLabelDoesNotExist ;
00180 long RTI::SynchronizationPointLabelWasNotAnnounced::type = certi::e_SynchronizationPointLabelWasNotAnnounced ;
00181 long RTI::TimeAdvanceAlreadyInProgress::type = certi::e_TimeAdvanceAlreadyInProgress ;
00182 long RTI::TimeAdvanceWasNotInProgress::type = certi::e_TimeAdvanceWasNotInProgress ;
00183 long RTI::TimeConstrainedAlreadyEnabled::type = certi::e_TimeConstrainedAlreadyEnabled ;
00184 long RTI::TimeConstrainedWasNotEnabled::type = certi::e_TimeConstrainedWasNotEnabled ;
00185 long RTI::TimeRegulationAlreadyEnabled::type = certi::e_TimeRegulationAlreadyEnabled ;
00186 long RTI::TimeRegulationWasNotEnabled::type = certi::e_TimeRegulationWasNotEnabled ;
00187 long RTI::UnableToPerformSave::type = certi::e_UnableToPerformSave ;
00188 long RTI::ValueCountExceeded::type = certi::e_ValueCountExceeded ;
00189 long RTI::ValueLengthExceeded::type = certi::e_ValueLengthExceeded ;
00190 
00191 static PrettyDebug PD_RTIException("RTI_EXCEPTION",__FILE__);
00192 
00193 RTI::Exception::~Exception()
00194 {
00195     if (NULL!=_reason) {
00196         free(_reason);
00197     }
00198 }
00199 
00200 RTI::Exception::Exception(const char *reason)
00201 {
00202     _reason = (reason == NULL)?NULL:strdup(reason);
00203     _serial = 0 ;
00204 }
00205 
00206 RTI::Exception::Exception(ULong serial, const char *reason)
00207 {
00208     _serial = serial ;
00209     _reason = (reason == NULL)?NULL:strdup(reason);
00210 }
00211 
00212 
00213 RTI::Exception::Exception(const Exception &toCopy)
00214 {
00215     _serial = toCopy._serial ;
00216     _reason = ( toCopy._reason== NULL)?NULL:strdup(toCopy._reason) ;
00217     _name = toCopy._name ;
00218 }
00219 
00220 RTI::Exception& RTI::Exception::operator=(const Exception &toCopy)
00221 {
00222     _serial = toCopy._serial ;
00223     _reason = (toCopy._reason == NULL)?NULL:strdup(toCopy._reason) ;
00224     _name = toCopy._name ;
00225     return *this ;
00226 }
00227 
00228 const std::string RTI::Exception::displayMe() const
00229 {
00230     std::stringstream msg;
00231 
00232     msg << "RTI::Exception [";
00233     if (NULL!=_name) {
00234         msg <<_name;
00235     } else {
00236         msg<<"<noname>";
00237     }
00238     msg <<",0x"<<std::hex<<_serial<<"]";
00239     msg << " - reason=";
00240     if (NULL !=_reason) {
00241         msg << _reason;
00242     } else {
00243         msg << "<noreason>";
00244     }
00245     msg << std::endl;
00246     msg << std::flush;
00247 
00248     PD_RTIException[pdExcept] << msg.str().c_str();
00249     return msg.str();
00250 }
00251 
00252 RTI_STD::ostream &
00253 operator<<(RTI_STD::ostream &os, RTI::Exception const &ex)
00254 {
00255     // FIXME
00256     return os << ex.displayMe();
00257 }
00258 
00259 RTI_STD::ostream &
00260 operator<<(RTI_STD::ostream &os, RTI::Exception *ex)
00261 {
00262     assert(ex);
00263     return os<<(*ex);
00264 }
00265 
00266 // $Id: RTItypes.cc,v 1.4 2009/04/04 13:30:54 gotthardp Exp $

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