Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Group_AMOS.cc

Go to the documentation of this file.
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 #include "Group_AMOS.hh" 00011 using namespace AMOS; 00012 using namespace std; 00013 00014 00015 00016 00017 //================================================ Group_t ===================== 00018 const NCode_t Group_t::NCODE = M_GROUP; 00019 00020 00021 //----------------------------------------------------- readMessage ------------ 00022 void Group_t::readMessage (const Message_t & msg) 00023 { 00024 Universal_t::readMessage (msg); 00025 00026 try { 00027 00028 istringstream ss; 00029 00030 if ( msg . exists (F_MEMBER) ) 00031 { 00032 ID_t iid; 00033 00034 ss . str (msg . getField (F_MEMBER)); 00035 00036 while ( ss ) 00037 { 00038 ss >> iid; 00039 if ( ! ss . fail( ) ) 00040 mems_m . push_back (iid); 00041 } 00042 00043 if ( ! ss . eof( ) ) 00044 AMOS_THROW_ARGUMENT ("Invalid member list format"); 00045 ss . clear( ); 00046 } 00047 00048 if ( msg . exists (F_OBJECT) ) 00049 { 00050 string str; 00051 00052 ss . str (msg . getField (F_OBJECT)); 00053 ss >> str; 00054 if ( !ss || str . length( ) != NCODE_SIZE ) 00055 AMOS_THROW_ARGUMENT ("Invalid object type format"); 00056 ss . clear( ); 00057 memtype_m = Encode (str); 00058 } 00059 } 00060 catch (ArgumentException_t) { 00061 00062 clear( ); 00063 throw; 00064 } 00065 } 00066 00067 00068 //----------------------------------------------------- readRecord ------------- 00069 void Group_t::readRecord (istream & fix, istream & var) 00070 { 00071 Universal_t::readRecord (fix, var); 00072 00073 Size_t size; 00074 readLE (fix, &size); 00075 readLE (fix, &memtype_m); 00076 00077 mems_m . resize (size, NULL_ID); 00078 for ( Pos_t i = 0; i < size; i ++ ) 00079 readLE (var, &(mems_m [i])); 00080 } 00081 00082 00083 //----------------------------------------------------- writeMessage ----------- 00084 void Group_t::writeMessage (Message_t & msg) const 00085 { 00086 Universal_t::writeMessage (msg); 00087 00088 try { 00089 ostringstream ss; 00090 00091 msg . setMessageCode (Group_t::NCODE); 00092 00093 if ( !mems_m . empty( ) ) 00094 { 00095 string s; 00096 vector<ID_t>::const_iterator vi; 00097 00098 for ( vi = mems_m . begin( ); vi != mems_m . end( ); vi ++ ) 00099 { 00100 ss << *vi << endl; 00101 s . append (ss . str( )); 00102 ss . str (NULL_STRING); 00103 } 00104 00105 msg . setField (F_MEMBER, s); 00106 } 00107 00108 if ( memtype_m != NULL_NCODE ) 00109 { 00110 msg . setField (F_OBJECT, Decode (memtype_m)); 00111 ss . str (NULL_STRING); 00112 } 00113 } 00114 catch (ArgumentException_t) { 00115 00116 msg . clear( ); 00117 throw; 00118 } 00119 } 00120 00121 00122 //----------------------------------------------------- writeRecord ------------ 00123 void Group_t::writeRecord (ostream & fix, ostream & var) const 00124 { 00125 Universal_t::writeRecord (fix, var); 00126 00127 Size_t size = mems_m . size( ); 00128 writeLE (fix, &size); 00129 writeLE (fix, &memtype_m); 00130 00131 for ( Pos_t i = 0; i < size; i ++ ) 00132 writeLE (var, &(mems_m [i])); 00133 }

Generated on Tue May 17 15:19:01 2005 for libAMOS by doxygen 1.3.8