Statistics.cc

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // CERTI - HLA RunTime Infrastructure
00003 // Copyright (C) 2003-2005  ONERA
00004 //
00005 // This file is part of CERTI
00006 //
00007 // CERTI is free software ; you can redistribute it and/or modify
00008 // it under the terms of the GNU General Public License as published by
00009 // the Free Software Foundation ; either version 2 of the License, or
00010 // (at your option) any later version.
00011 //
00012 // CERTI is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY ; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00015 // GNU General Public License for more details.
00016 //
00017 // You should have received a copy of the GNU General Public License
00018 // along with this program ; if not, write to the Free Software
00019 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00020 //
00021 // ----------------------------------------------------------------------------
00022 
00023 #include <config.h>
00024 #include "Statistics.hh"
00025 
00026 #include <cstdlib>
00027 #include <iostream>
00028 #include <string>
00029 
00030 using std::cout ;
00031 using std::endl ;
00032 using std::string ;
00033 using std::ostream ;
00034 using std::endl ;
00035 using std::vector ;
00036 
00037 #define STRINGIZE(m) #m
00038 #define FED_MSG_NAME(msg_) fedMessageName[msg_] = STRINGIZE(msg_)
00039 #define RTI_MSG_NAME(msg_) rtiMessageName[msg_] = STRINGIZE(msg_)
00040  
00041 namespace certi {
00042 namespace rtia {
00043 
00044 bool Statistics::initialized = false ;
00045 vector<string> Statistics::fedMessageName(Message::LAST);
00046 vector<string> Statistics::rtiMessageName(NetworkMessage::LAST);
00047 
00048 // ----------------------------------------------------------------------------
00050 Statistics::Statistics()
00051     : federateServiceSet(Message::LAST, 0),
00052       rtiServiceSet(NetworkMessage::LAST, 0),
00053       myDisplay(true), myDisplayZero(false)
00054 {
00055     if (getenv("CERTI_NO_STATISTICS"))
00056     myDisplay = false ;
00057 
00058     if (!initialized) {
00059         FED_MSG_NAME(Message::CLOSE_CONNEXION);
00060 
00061         // Federation
00062     FED_MSG_NAME(Message::CREATE_FEDERATION_EXECUTION);
00063     FED_MSG_NAME(Message::DESTROY_FEDERATION_EXECUTION);
00064     FED_MSG_NAME(Message::JOIN_FEDERATION_EXECUTION);
00065     FED_MSG_NAME(Message::RESIGN_FEDERATION_EXECUTION);
00066     FED_MSG_NAME(Message::REGISTER_FEDERATION_SYNCHRONIZATION_POINT);
00067     FED_MSG_NAME(Message::SYNCHRONIZATION_POINT_REGISTRATION_FAILED);
00068     FED_MSG_NAME(Message::SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED);
00069     FED_MSG_NAME(Message::ANNOUNCE_SYNCHRONIZATION_POINT);
00070     FED_MSG_NAME(Message::SYNCHRONIZATION_POINT_ACHIEVED);
00071     FED_MSG_NAME(Message::FEDERATION_SYNCHRONIZED);
00072     FED_MSG_NAME(Message::REQUEST_FEDERATION_SAVE);
00073     FED_MSG_NAME(Message::INITIATE_FEDERATE_SAVE);
00074     FED_MSG_NAME(Message::FEDERATE_SAVE_BEGUN);
00075     FED_MSG_NAME(Message::FEDERATE_SAVE_COMPLETE);
00076     FED_MSG_NAME(Message::FEDERATE_SAVE_NOT_COMPLETE);
00077     FED_MSG_NAME(Message::FEDERATION_SAVED);
00078     FED_MSG_NAME(Message::FEDERATION_NOT_SAVED);
00079     FED_MSG_NAME(Message::REQUEST_FEDERATION_RESTORE);
00080     FED_MSG_NAME(Message::REQUEST_FEDERATION_RESTORE_FAILED);
00081     FED_MSG_NAME(Message::REQUEST_FEDERATION_RESTORE_SUCCEEDED);
00082     FED_MSG_NAME(Message::INITIATE_FEDERATE_RESTORE);
00083     FED_MSG_NAME(Message::FEDERATE_RESTORE_COMPLETE);
00084     FED_MSG_NAME(Message::FEDERATE_RESTORE_NOT_COMPLETE);
00085     FED_MSG_NAME(Message::FEDERATION_RESTORED);
00086     FED_MSG_NAME(Message::FEDERATION_NOT_RESTORED);
00087     FED_MSG_NAME(Message::FEDERATION_RESTORE_BEGUN);
00088 
00089     // Declaration
00090     FED_MSG_NAME(Message::PUBLISH_OBJECT_CLASS);
00091     FED_MSG_NAME(Message::UNPUBLISH_OBJECT_CLASS);
00092     FED_MSG_NAME(Message::PUBLISH_INTERACTION_CLASS);
00093     FED_MSG_NAME(Message::UNPUBLISH_INTERACTION_CLASS);
00094     FED_MSG_NAME(Message::SUBSCRIBE_OBJECT_CLASS_ATTRIBUTES);
00095     FED_MSG_NAME(Message::UNSUBSCRIBE_OBJECT_CLASS);
00096     FED_MSG_NAME(Message::SUBSCRIBE_INTERACTION_CLASS);
00097     FED_MSG_NAME(Message::UNSUBSCRIBE_INTERACTION_CLASS);
00098     FED_MSG_NAME(Message::START_REGISTRATION_FOR_OBJECT_CLASS);
00099     FED_MSG_NAME(Message::STOP_REGISTRATION_FOR_OBJECT_CLASS);
00100     FED_MSG_NAME(Message::TURN_INTERACTIONS_ON);
00101     FED_MSG_NAME(Message::TURN_INTERACTIONS_OFF);
00102 
00103     // Object
00104     FED_MSG_NAME(Message::REGISTER_OBJECT_INSTANCE);
00105     FED_MSG_NAME(Message::UPDATE_ATTRIBUTE_VALUES);
00106     FED_MSG_NAME(Message::DISCOVER_OBJECT_INSTANCE);
00107     FED_MSG_NAME(Message::REFLECT_ATTRIBUTE_VALUES);
00108     FED_MSG_NAME(Message::SEND_INTERACTION);
00109     FED_MSG_NAME(Message::RECEIVE_INTERACTION);
00110     FED_MSG_NAME(Message::DELETE_OBJECT_INSTANCE);
00111     FED_MSG_NAME(Message::LOCAL_DELETE_OBJECT_INSTANCE);
00112     FED_MSG_NAME(Message::REMOVE_OBJECT_INSTANCE);
00113     FED_MSG_NAME(Message::CHANGE_ATTRIBUTE_TRANSPORTATION_TYPE);
00114     FED_MSG_NAME(Message::CHANGE_INTERACTION_TRANSPORTATION_TYPE);
00115     FED_MSG_NAME(Message::REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE);
00116     FED_MSG_NAME(Message::REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE);
00117     FED_MSG_NAME(Message::PROVIDE_ATTRIBUTE_VALUE_UPDATE);
00118     FED_MSG_NAME(Message::ATTRIBUTES_IN_SCOPE);
00119     FED_MSG_NAME(Message::ATTRIBUTES_OUT_OF_SCOPE);
00120     FED_MSG_NAME(Message::TURN_UPDATES_ON_FOR_OBJECT_INSTANCE);
00121     FED_MSG_NAME(Message::TURN_UPDATES_OFF_FOR_OBJECT_INSTANCE);
00122 
00123     // Ownership
00124     FED_MSG_NAME(Message::REQUEST_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00125     FED_MSG_NAME(Message::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION);
00126     FED_MSG_NAME(Message::NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00127     FED_MSG_NAME(Message::ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION);
00128     FED_MSG_NAME(Message::ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION);
00129     FED_MSG_NAME(Message::REQUEST_ATTRIBUTE_OWNERSHIP_ACQUISITION);
00130     FED_MSG_NAME(Message::REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE);
00131     FED_MSG_NAME(Message::QUERY_ATTRIBUTE_OWNERSHIP);
00132     FED_MSG_NAME(Message::INFORM_ATTRIBUTE_OWNERSHIP);
00133     FED_MSG_NAME(Message::IS_ATTRIBUTE_OWNED_BY_FEDERATE);
00134     FED_MSG_NAME(Message::ATTRIBUTE_IS_NOT_OWNED);
00135     FED_MSG_NAME(Message::ATTRIBUTE_OWNED_BY_RTI);
00136     FED_MSG_NAME(Message::ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE);
00137     FED_MSG_NAME(Message::ATTRIBUTE_OWNERSHIP_UNAVAILABLE);
00138     FED_MSG_NAME(Message::UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00139     FED_MSG_NAME(Message::ATTRIBUTE_OWNERSHIP_ACQUISITION);
00140     FED_MSG_NAME(Message::CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00141     FED_MSG_NAME(Message::ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE);
00142     FED_MSG_NAME(Message::CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION);
00143     FED_MSG_NAME(Message::CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION);
00144 
00145     // Time
00146     FED_MSG_NAME(Message::CHANGE_ATTRIBUTE_ORDER_TYPE);
00147     FED_MSG_NAME(Message::CHANGE_INTERACTION_ORDER_TYPE);
00148     FED_MSG_NAME(Message::ENABLE_TIME_REGULATION);
00149     FED_MSG_NAME(Message::DISABLE_TIME_REGULATION);
00150     FED_MSG_NAME(Message::ENABLE_TIME_CONSTRAINED);
00151     FED_MSG_NAME(Message::DISABLE_TIME_CONSTRAINED);
00152     FED_MSG_NAME(Message::QUERY_LBTS);
00153     FED_MSG_NAME(Message::QUERY_FEDERATE_TIME);
00154     FED_MSG_NAME(Message::QUERY_MIN_NEXT_EVENT_TIME);
00155     FED_MSG_NAME(Message::MODIFY_LOOKAHEAD);
00156     FED_MSG_NAME(Message::QUERY_LOOKAHEAD);
00157     FED_MSG_NAME(Message::RETRACT);
00158     FED_MSG_NAME(Message::REQUEST_RETRACTION);
00159     FED_MSG_NAME(Message::TIME_ADVANCE_REQUEST);
00160     FED_MSG_NAME(Message::TIME_ADVANCE_REQUEST_AVAILABLE);
00161     FED_MSG_NAME(Message::NEXT_EVENT_REQUEST);
00162     FED_MSG_NAME(Message::NEXT_EVENT_REQUEST_AVAILABLE);
00163     FED_MSG_NAME(Message::FLUSH_QUEUE_REQUEST);
00164     FED_MSG_NAME(Message::TIME_ADVANCE_GRANT);
00165     FED_MSG_NAME(Message::ENABLE_ASYNCHRONOUS_DELIVERY);
00166     FED_MSG_NAME(Message::DISABLE_ASYNCHRONOUS_DELIVERY);
00167     FED_MSG_NAME(Message::TIME_REGULATION_ENABLED);
00168     FED_MSG_NAME(Message::TIME_CONSTRAINED_ENABLED);
00169 
00170     // Data Distribution
00171     FED_MSG_NAME(Message::DDM_CREATE_REGION);
00172     FED_MSG_NAME(Message::DDM_MODIFY_REGION);
00173     FED_MSG_NAME(Message::DDM_DELETE_REGION);
00174     FED_MSG_NAME(Message::DDM_REGISTER_OBJECT);
00175     FED_MSG_NAME(Message::DDM_ASSOCIATE_REGION);
00176     FED_MSG_NAME(Message::DDM_UNASSOCIATE_REGION);
00177     FED_MSG_NAME(Message::DDM_SUBSCRIBE_ATTRIBUTES);
00178     FED_MSG_NAME(Message::DDM_UNSUBSCRIBE_ATTRIBUTES);
00179     FED_MSG_NAME(Message::DDM_SUBSCRIBE_INTERACTION);
00180     FED_MSG_NAME(Message::DDM_UNSUBSCRIBE_INTERACTION);
00181     FED_MSG_NAME(Message::DDM_REQUEST_UPDATE);
00182 
00183     // Support Services
00184     FED_MSG_NAME(Message::GET_OBJECT_CLASS_HANDLE);
00185     FED_MSG_NAME(Message::GET_OBJECT_CLASS_NAME);
00186     FED_MSG_NAME(Message::GET_ATTRIBUTE_HANDLE);
00187     FED_MSG_NAME(Message::GET_ATTRIBUTE_NAME);
00188     FED_MSG_NAME(Message::GET_INTERACTION_CLASS_HANDLE);
00189     FED_MSG_NAME(Message::GET_INTERACTION_CLASS_NAME);
00190     FED_MSG_NAME(Message::GET_PARAMETER_HANDLE);
00191     FED_MSG_NAME(Message::GET_PARAMETER_NAME);
00192     FED_MSG_NAME(Message::GET_OBJECT_INSTANCE_HANDLE);
00193     FED_MSG_NAME(Message::GET_OBJECT_INSTANCE_NAME);
00194     FED_MSG_NAME(Message::GET_SPACE_HANDLE);
00195     FED_MSG_NAME(Message::GET_SPACE_NAME);
00196     FED_MSG_NAME(Message::GET_DIMENSION_HANDLE);
00197     FED_MSG_NAME(Message::GET_DIMENSION_NAME);
00198     FED_MSG_NAME(Message::GET_ATTRIBUTE_SPACE_HANDLE);
00199     FED_MSG_NAME(Message::GET_OBJECT_CLASS);
00200     FED_MSG_NAME(Message::GET_INTERACTION_SPACE_HANDLE);
00201     FED_MSG_NAME(Message::GET_TRANSPORTATION_HANDLE);
00202     FED_MSG_NAME(Message::GET_TRANSPORTATION_NAME);
00203     FED_MSG_NAME(Message::GET_ORDERING_HANDLE);
00204     FED_MSG_NAME(Message::GET_ORDERING_NAME);
00205     FED_MSG_NAME(Message::ENABLE_CLASS_RELEVANCE_ADVISORY_SWITCH);
00206     FED_MSG_NAME(Message::DISABLE_CLASS_RELEVANCE_ADVISORY_SWITCH);
00207     FED_MSG_NAME(Message::ENABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH);
00208     FED_MSG_NAME(Message::DISABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH);
00209     FED_MSG_NAME(Message::ENABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH);
00210     FED_MSG_NAME(Message::DISABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH);
00211     FED_MSG_NAME(Message::ENABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH);
00212     FED_MSG_NAME(Message::DISABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH);
00213     FED_MSG_NAME(Message::TICK_REQUEST);
00214     FED_MSG_NAME(Message::TICK_REQUEST_NEXT);
00215     FED_MSG_NAME(Message::TICK_REQUEST_STOP);
00216 
00217     // RTI messages
00218     RTI_MSG_NAME(NetworkMessage::CLOSE_CONNEXION);
00219     RTI_MSG_NAME(NetworkMessage::MESSAGE_NULL);
00220     RTI_MSG_NAME(NetworkMessage::CREATE_FEDERATION_EXECUTION);
00221     RTI_MSG_NAME(NetworkMessage::DESTROY_FEDERATION_EXECUTION);
00222     RTI_MSG_NAME(NetworkMessage::JOIN_FEDERATION_EXECUTION);
00223     RTI_MSG_NAME(NetworkMessage::RESIGN_FEDERATION_EXECUTION);
00224     RTI_MSG_NAME(NetworkMessage::SET_TIME_REGULATING);
00225     RTI_MSG_NAME(NetworkMessage::SET_TIME_CONSTRAINED);
00226     RTI_MSG_NAME(NetworkMessage::TIME_REGULATION_ENABLED);
00227     RTI_MSG_NAME(NetworkMessage::TIME_CONSTRAINED_ENABLED);
00228     RTI_MSG_NAME(NetworkMessage::REGISTER_FEDERATION_SYNCHRONIZATION_POINT);
00229     RTI_MSG_NAME(NetworkMessage::SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED);
00230     RTI_MSG_NAME(NetworkMessage::ANNOUNCE_SYNCHRONIZATION_POINT);
00231     RTI_MSG_NAME(NetworkMessage::SYNCHRONIZATION_POINT_ACHIEVED);
00232     RTI_MSG_NAME(NetworkMessage::FEDERATION_SYNCHRONIZED);
00233     RTI_MSG_NAME(NetworkMessage::REQUEST_FEDERATION_SAVE);
00234     RTI_MSG_NAME(NetworkMessage::FEDERATE_SAVE_BEGUN);
00235     RTI_MSG_NAME(NetworkMessage::FEDERATE_SAVE_COMPLETE);
00236     RTI_MSG_NAME(NetworkMessage::FEDERATE_SAVE_NOT_COMPLETE);
00237     RTI_MSG_NAME(NetworkMessage::INITIATE_FEDERATE_SAVE);
00238     RTI_MSG_NAME(NetworkMessage::FEDERATION_SAVED);
00239     RTI_MSG_NAME(NetworkMessage::FEDERATION_NOT_SAVED);
00240     RTI_MSG_NAME(NetworkMessage::REQUEST_FEDERATION_RESTORE);
00241     RTI_MSG_NAME(NetworkMessage::FEDERATE_RESTORE_COMPLETE);
00242     RTI_MSG_NAME(NetworkMessage::FEDERATE_RESTORE_NOT_COMPLETE);
00243     RTI_MSG_NAME(NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED);
00244     RTI_MSG_NAME(NetworkMessage::REQUEST_FEDERATION_RESTORE_FAILED);
00245     RTI_MSG_NAME(NetworkMessage::FEDERATION_RESTORE_BEGUN);
00246     RTI_MSG_NAME(NetworkMessage::INITIATE_FEDERATE_RESTORE);
00247     RTI_MSG_NAME(NetworkMessage::FEDERATION_RESTORED);
00248     RTI_MSG_NAME(NetworkMessage::FEDERATION_NOT_RESTORED);
00249     RTI_MSG_NAME(NetworkMessage::PUBLISH_OBJECT_CLASS);
00250     RTI_MSG_NAME(NetworkMessage::UNPUBLISH_OBJECT_CLASS);
00251     RTI_MSG_NAME(NetworkMessage::PUBLISH_INTERACTION_CLASS);
00252     RTI_MSG_NAME(NetworkMessage::UNPUBLISH_INTERACTION_CLASS);
00253     RTI_MSG_NAME(NetworkMessage::SUBSCRIBE_OBJECT_CLASS);
00254     RTI_MSG_NAME(NetworkMessage::UNSUBSCRIBE_OBJECT_CLASS);
00255     RTI_MSG_NAME(NetworkMessage::SUBSCRIBE_INTERACTION_CLASS);
00256     RTI_MSG_NAME(NetworkMessage::UNSUBSCRIBE_INTERACTION_CLASS);
00257     RTI_MSG_NAME(NetworkMessage::TURN_INTERACTIONS_ON);
00258     RTI_MSG_NAME(NetworkMessage::TURN_INTERACTIONS_OFF);
00259     RTI_MSG_NAME(NetworkMessage::REGISTER_OBJECT);
00260     RTI_MSG_NAME(NetworkMessage::DISCOVER_OBJECT);
00261     RTI_MSG_NAME(NetworkMessage::UPDATE_ATTRIBUTE_VALUES);
00262     RTI_MSG_NAME(NetworkMessage::REFLECT_ATTRIBUTE_VALUES);
00263     RTI_MSG_NAME(NetworkMessage::SEND_INTERACTION);
00264     RTI_MSG_NAME(NetworkMessage::RECEIVE_INTERACTION);
00265     RTI_MSG_NAME(NetworkMessage::DELETE_OBJECT);
00266     RTI_MSG_NAME(NetworkMessage::REMOVE_OBJECT);
00267     RTI_MSG_NAME(NetworkMessage::CHANGE_ATTRIBUTE_TRANSPORT_TYPE);
00268     RTI_MSG_NAME(NetworkMessage::CHANGE_ATTRIBUTE_ORDER_TYPE);
00269     RTI_MSG_NAME(NetworkMessage::CHANGE_INTERACTION_TRANSPORT_TYPE);
00270     RTI_MSG_NAME(NetworkMessage::CHANGE_INTERACTION_ORDER_TYPE);
00271     RTI_MSG_NAME(NetworkMessage::REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE);
00272     RTI_MSG_NAME(NetworkMessage::REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE);
00273     RTI_MSG_NAME(NetworkMessage::IS_ATTRIBUTE_OWNED_BY_FEDERATE);
00274     RTI_MSG_NAME(NetworkMessage::QUERY_ATTRIBUTE_OWNERSHIP);
00275     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_IS_NOT_OWNED);
00276     RTI_MSG_NAME(NetworkMessage::INFORM_ATTRIBUTE_OWNERSHIP);
00277     RTI_MSG_NAME(NetworkMessage::NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00278     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION);
00279     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION);
00280     RTI_MSG_NAME(NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION);
00281     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_OWNERSHIP_UNAVAILABLE);
00282     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE);
00283     RTI_MSG_NAME(NetworkMessage::UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00284     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION);
00285     RTI_MSG_NAME(NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE);
00286     RTI_MSG_NAME(NetworkMessage::CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE);
00287     RTI_MSG_NAME(NetworkMessage::ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE);
00288     RTI_MSG_NAME(NetworkMessage::CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION);
00289     RTI_MSG_NAME(NetworkMessage::CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION);
00290     RTI_MSG_NAME(NetworkMessage::DDM_CREATE_REGION);
00291     RTI_MSG_NAME(NetworkMessage::DDM_MODIFY_REGION);
00292     RTI_MSG_NAME(NetworkMessage::DDM_DELETE_REGION);
00293     RTI_MSG_NAME(NetworkMessage::DDM_ASSOCIATE_REGION);
00294     RTI_MSG_NAME(NetworkMessage::DDM_UNASSOCIATE_REGION);
00295     RTI_MSG_NAME(NetworkMessage::DDM_SUBSCRIBE_ATTRIBUTES);
00296     RTI_MSG_NAME(NetworkMessage::DDM_UNSUBSCRIBE_ATTRIBUTES);
00297     RTI_MSG_NAME(NetworkMessage::DDM_SUBSCRIBE_INTERACTION);
00298     RTI_MSG_NAME(NetworkMessage::DDM_UNSUBSCRIBE_INTERACTION);
00299         RTI_MSG_NAME(NetworkMessage::PROVIDE_ATTRIBUTE_VALUE_UPDATE);
00300         RTI_MSG_NAME(NetworkMessage::GET_FED_FILE);
00301     RTI_MSG_NAME(NetworkMessage::SET_CLASS_RELEVANCE_ADVISORY_SWITCH);
00302     RTI_MSG_NAME(NetworkMessage::SET_INTERACTION_RELEVANCE_ADVISORY_SWITCH);
00303     RTI_MSG_NAME(NetworkMessage::SET_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH);
00304     RTI_MSG_NAME(NetworkMessage::SET_ATTRIBUTE_SCOPE_ADVISORY_SWITCH);
00305     RTI_MSG_NAME(NetworkMessage::START_REGISTRATION_FOR_OBJECT_CLASS);
00306     RTI_MSG_NAME(NetworkMessage::STOP_REGISTRATION_FOR_OBJECT_CLASS);
00307 
00308         initialized = true ;
00309     }
00310 }
00311 
00312 // ----------------------------------------------------------------------------
00314 void
00315 Statistics::rtiService(NetworkMessage::Type service)
00316 {
00317     rtiServiceSet[service]++ ;
00318 }
00319 
00320 // ----------------------------------------------------------------------------
00322 void
00323 Statistics::federateService(Message::Type service)
00324 {
00325     federateServiceSet[service]++ ;
00326 }
00327 
00328 // ----------------------------------------------------------------------------
00330 ostream &
00331 operator<<(ostream &s, Statistics &stat)
00332 {
00333     cout << endl << "RTIA: Statistics (processed messages)" << endl ;
00334 
00335     s << "List of federate initiated services " << endl
00336       << "--------------------------------------------------" << endl ;
00337 
00338     int sentFederateMessages = 0 ;
00339 
00340     for (int i = Message::NOT_USED ; i < Message::LAST ; ++i) {
00341     int nb = stat.federateServiceSet[i] ;
00342     if (nb > 0 || stat.displayZero()) {
00343         s.width(8);
00344         s << nb << ' ' << Statistics::fedMessageName[i].c_str() << " (MSG#"
00345           << i << ")" << endl ;
00346         }
00347         sentFederateMessages += nb ;
00348     }
00349 
00350     s << endl << "List of RTI initiated services " << endl
00351       << "--------------------------------------------------" << endl ;
00352 
00353     int sentRtiMessages = 0 ;
00354 
00355     for (int i = NetworkMessage::NOT_USED ; i < NetworkMessage::LAST ; ++i) {
00356         int nb = stat.rtiServiceSet[i] ;
00357         if (nb > 0 || stat.displayZero()) {
00358             s.width(8);
00359             s << nb << ' ' << Statistics::rtiMessageName[i].c_str() << " (MSG#"
00360           << i << ")" << endl ;
00361         }
00362         sentRtiMessages += nb ;
00363     }
00364 
00365     s << endl
00366       << " Number of Federate messages : " << sentFederateMessages << endl
00367       << " Number of RTIG messages : " << sentRtiMessages << endl ;
00368 
00369     return s ;
00370 }
00371 
00372 }} // namespace certi::rtia
00373 
00374 #undef FED_MSG_NAME
00375 #undef RTI_MSG_NAME
00376 
00377 // $Id: Statistics.cc,v 3.19 2009/04/08 10:47:18 approx Exp $

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