00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "NetworkMessage.hh"
00025 #include "PrettyDebug.hh"
00026
00027 #include <cstdlib>
00028 #include <cstdio>
00029 #include <cstring>
00030 #include <cassert>
00031
00032 using std::vector ;
00033
00034 namespace certi {
00035 static PrettyDebug G("GENDOC",__FILE__);
00036
00037
00038 NetworkMessage::NetworkMessage()
00039 : exception(e_NO_EXCEPTION),
00040 type(NOT_USED),
00041 _isDated(false),
00042 _isLabelled(false),
00043 _isTagged(false)
00044 {
00045 name = std::string("NetworkMessage (generic)");
00046 exceptionReason = std::string("") ;
00047 number = 0 ;
00048
00049 federation = 0 ;
00050 federate = 0 ;
00051
00052 federationName = std::string("") ;
00053 federateName = std::string("") ;
00054
00055 label = std::string("") ;
00056 FEDid = std::string("") ;
00057
00058 bestEffortPeer = -1 ;
00059 bestEffortAddress = 0 ;
00060 numberOfRegulators = 0;
00061 multicastAddress = 0;
00062
00063 date = 0.0;
00064
00065 object = 0 ;
00066 objectClass = 0 ;
00067 interactionClass = 0 ;
00068
00069 handleArraySize = 0 ;
00070 valueArray.empty();
00071
00072 }
00073
00074 NetworkMessage::~NetworkMessage() {
00075
00076 }
00077
00078
00079 std::vector <AttributeValue_t>
00080 NetworkMessage::getAttribValueArray()
00081 {
00082 std::vector <std::string> NewValueArray ;
00083
00084 NewValueArray.resize(handleArraySize) ;
00085
00086 for (int i = 0 ; i <handleArraySize ; i++)
00087 NewValueArray[i] = valueArray[i] ;
00088
00089 return NewValueArray ;
00090 }
00091
00092
00093 std::vector <ParameterValue_t>
00094 NetworkMessage::getParamValueArray()
00095 {
00096 std::vector <std::string> NewValueArray ;
00097
00098 NewValueArray.resize(handleArraySize) ;
00099
00100 for (int i = 0 ; i < handleArraySize ; i++)
00101 NewValueArray[i] = valueArray[i] ;
00102
00103 return NewValueArray ;
00104 }
00105
00106
00107 void
00108 NetworkMessage::removeAttribute(UShort Rank)
00109 {
00110 if (Rank >= valueArray.size())
00111 throw RTIinternalError("Bad Rank while removing Nmessage attribute.");
00112
00113 handleArray.erase(handleArray.begin() + Rank);
00114 valueArray.erase(valueArray.begin() + Rank);
00115
00116 handleArraySize -- ;
00117 }
00118
00119
00120 void
00121 NetworkMessage::removeParameter(UShort Rank)
00122 {
00123 if (Rank >= valueArray.size())
00124 throw RTIinternalError("Bad Rank while removing Nmessage parameter.");
00125
00126 handleArray.erase(handleArray.begin() + Rank);
00127 valueArray.erase(valueArray.begin() + Rank);
00128
00129 handleArraySize -- ;
00130 }
00131
00132
00133 void
00134 NetworkMessage::setAHS(const std::vector <AttributeHandle> &attr, int size)
00135 {
00136 handleArraySize = size ;
00137 handleArray.resize(size) ;
00138 for (int i = 0 ; i < size ; ++i) {
00139 handleArray[i] = attr[i] ;
00140 }
00141 }
00142
00143 void
00144 NetworkMessage::sizeValueArray(int size)
00145 {
00146 valueArray.resize(size) ;
00147 }
00148
00149 void
00150 NetworkMessage::displayValueArray(char *titre)
00151 {
00152 printf("(%s) valueArray size=%d\n",titre,(int)valueArray.size());
00153 for (int i=0; i<(int)valueArray.size();i++)
00154 {
00155 printf("%d : length=%d : value=",i,(int)(valueArray[i].length()));
00156
00157 for(int k=0; k<(int)valueArray[i].length(); k++)
00158 if (isprint(valueArray[i][k]) == 0 )
00159 printf(" %x",valueArray[i][k]);
00160 else
00161 printf("%c",valueArray[i][k]);
00162
00163 printf("\n");
00164 }
00165 }
00166
00167 }
00168
00169