00001
00002
00003
00004
00005
00006
00007 #ifdef USE_STD
00008 #include <iostream>
00009 #include <string>
00010 using namespace std;
00011 #else
00012 #include <iostream.h>
00013 #include <string.h>
00014 #endif
00015
00016 #include "utility.h"
00017 #include "MRAmspec.h"
00018 #include "MRAcspec.h"
00019 #include "MCFTPquote.h"
00020
00021 #include "MCFTPrequest.h"
00022
00023 MCFTPrequest::MCFTPrequest( int grid_dim, int array_dim )
00024 : _grid_dim(grid_dim), _array_dim(array_dim), _name("")
00025 {
00026 _sbn(_grid_dim);
00027 _mspec(_grid_dim);
00028 }
00029
00030 MCFTPrequest::MCFTPrequest( const MCFTPrequest& request )
00031 {
00032 _grid_dim = request._grid_dim;
00033 _array_dim = request._array_dim;
00034 _name = request._name;
00035 _sbn = request._sbn;
00036 _mspec = request._mspec;
00037 _cspec = request._cspec;
00038 }
00039
00040 MCFTPrequest::MCFTPrequest( const MCFTPquote& quote )
00041 {
00042 _grid_dim = quote._grid_dim;
00043 _array_dim = quote._array_dim;
00044 _name = quote._name;
00045 _sbn = quote._sbn;
00046 _mspec = quote._mspec;
00047 _cspec = quote._cspec;
00048 }
00049
00050 MCFTPrequest& MCFTPrequest::operator () ()
00051 {
00052 _grid_dim = 0;
00053 _array_dim = 0;
00054 _name = "";
00055 _sbn(0);
00056 _mspec(0);
00057 return *this;
00058 }
00059
00060 MCFTPrequest& MCFTPrequest::operator () ( int grid_dim, int array_dim )
00061 {
00062 _grid_dim = grid_dim;
00063 _array_dim = array_dim;
00064 _name = "";
00065 _sbn(_grid_dim);
00066 _mspec(_grid_dim);
00067 return *this;
00068 }
00069
00070 MCFTPrequest& MCFTPrequest::operator () ( const MCFTPquote& quote )
00071 {
00072 _grid_dim = quote._grid_dim;
00073 _array_dim = quote._array_dim;
00074 _name = quote._name;
00075 _sbn(_grid_dim) = quote._sbn;
00076 _mspec(_grid_dim) = quote._mspec;
00077 _cspec = quote._cspec;
00078 return *this;
00079 }
00080
00081 MCFTPrequest& MCFTPrequest::operator () ( const MCFTPrequest& request )
00082 {
00083 _grid_dim = request._grid_dim;
00084 _array_dim = request._array_dim;
00085 _name = request._name;
00086 _sbn(_grid_dim) = request._sbn;
00087 _mspec(_grid_dim) = request._mspec;
00088 _cspec = request._cspec;
00089 return *this;
00090 }
00091
00092 MCFTPrequest& MCFTPrequest::copy( const MCFTPrequest& request )
00093 {
00094 if ( this != &request ) {
00095 _grid_dim = request._grid_dim;
00096 _array_dim = request._array_dim;
00097 _name = request._name;
00098 _sbn = request._sbn;
00099 _mspec = request._mspec;
00100 _cspec = request._cspec;
00101 }
00102 return *this;
00103 }
00104
00105 MCFTPrequest& MCFTPrequest::copy( const MCFTPquote& quote )
00106 {
00107 _grid_dim = quote._grid_dim;
00108 _array_dim = quote._array_dim;
00109 _name = quote._name;
00110 _sbn = quote._sbn;
00111 _mspec = quote._mspec;
00112 _cspec = quote._cspec;
00113 return *this;
00114 }
00115
00116 bool MCFTPrequest::is_equal( const MCFTPrequest& request )
00117 {
00118 if ( this != &request ) {
00119 if ( _grid_dim != request._grid_dim ) return false;
00120 if ( _array_dim != request._array_dim ) return false;
00121 if ( _name != request._name ) return false;
00122 if ( _sbn != request._sbn ) return false;
00123 if ( _mspec != request._mspec ) return false;
00124 if ( _cspec != request._cspec ) return false;
00125 }
00126 return true;
00127 }
00128
00129 bool MCFTPrequest::is_equal( const MCFTPquote& quote )
00130 {
00131 if ( _grid_dim != quote._grid_dim ) return false;
00132 if ( _array_dim != quote._array_dim ) return false;
00133 if ( _name != quote._name ) return false;
00134 if ( _sbn != quote._sbn ) return false;
00135 if ( _mspec != quote._mspec ) return false;
00136 if ( _cspec != quote._cspec ) return false;
00137 return true;
00138 }
00139
00140 void MCFTPrequest::write( BufferBase& buffer )
00141 {
00142 bytepack bp;
00143 buffer >> bp( 0, 1 ); _grid_dim = int(bp);
00144 buffer >> bp( 0, 1 ); _array_dim = int(bp);
00145 buffer >> bp( 0, 1 ); int namesize = int(bp);
00146 _name = "";
00147 for( int i = 0; i < namesize; ++i ) _name += buffer.get();
00148 _sbn(_grid_dim);
00149 buffer >> _sbn;
00150 _mspec(_grid_dim);
00151 buffer >> _mspec;
00152 buffer >> _cspec;
00153 }
00154
00155 void MCFTPrequest::read( BufferBase& buffer )
00156 {
00157 bytepack bp;
00158 buffer << bp( _grid_dim, 1 );
00159 buffer << bp( _array_dim, 1 );
00160 buffer << bp( int(_name.size()), 1 );
00161 for(unsigned int i = 0; i < _name.size(); ++i ) buffer.put( _name[i] );
00162 buffer << _sbn;
00163 buffer << _mspec;
00164 buffer << _cspec;
00165 }
00166
00167 void MCFTPrequest::write( istream& is )
00168 {
00169 bytepack bp;
00170 is >> bp( 0, 1 ); _grid_dim = int(bp);
00171 is >> bp( 0, 1 ); _array_dim = int(bp);
00172 is >> bp( 0, 1 ); int namesize = int(bp);
00173 _name = "";
00174 for( int i = 0; i < namesize; ++i ) _name += is.get();
00175 _sbn(_grid_dim);
00176 is >> _sbn;
00177 _mspec(_grid_dim);
00178 is >> _mspec;
00179 is >> _cspec;
00180 }
00181
00182 void MCFTPrequest::read( ostream& os )
00183
00184 {
00185 bytepack bp;
00186 os << bp( _grid_dim, 1 );
00187 os << bp( _array_dim, 1 );
00188 os << bp( int(_name.size()), 1 );
00189 for(unsigned int i = 0; i < _name.size(); ++i ) os.put( _name[i] );
00190 os << _sbn;
00191 os << _mspec;
00192 os << _cspec;
00193 }
00194
00195 int MCFTPrequest::sizeb()
00196 {
00197 return 3 + _name.size() + _sbn.sizeb() + _mspec.sizeb() + _cspec.sizeb();
00198 }
00199
00200 void MCFTPrequest::report( ostream& os )
00201 {
00202 os << "MCFTPrequest::report(){\n";
00203 os << "grid_dim = " << _grid_dim << '\n';
00204 os << "array_dim = " << _array_dim << '\n';
00205 os << "name.size() = " << _name.size() << '\n';
00206 os << "name = " << _name << '\n';
00207 os << "sbn = \n";
00208 _sbn.report(os);
00209 os << "mspec = \n";
00210 _mspec.report(os);
00211 os << "cspec = \n";
00212 _cspec.report(os);
00213 os << "}\n";
00214 }
00215
00216
00217
00218 BufferBase& operator << ( BufferBase& buffer, MCFTPrequest& request )
00219 {
00220 request.read(buffer);
00221 return buffer;
00222 }
00223
00224 BufferBase& operator >> ( BufferBase& buffer, MCFTPrequest& request )
00225 {
00226 request.write(buffer);
00227 return buffer;
00228 }
00229
00230 ostream& operator << ( ostream& os, MCFTPrequest& request )
00231 {
00232 request.read(os);
00233 return os;
00234 }
00235
00236 istream& operator >> ( istream& is, MCFTPrequest& request )
00237 {
00238 request.write(is);
00239 return is;
00240 }
00241