00001
00002
00003
00004
00005
00006
00007 #ifndef MCFTPMSSG_H
00008 #define MCFTPMSSG_H
00009
00010 #ifdef USE_STD
00011 #include <iostream>
00012 #include <string>
00013 using namespace std;
00014 #else
00015 #include <iostream.h>
00016 #include <string.h>
00017 #endif
00018
00019 #include "BufferBase.h"
00020 #include "MRAsb.h"
00021 #include "MCFTPheader.h"
00022 #include "MCFTPrequest.h"
00023 #include "MCFTPquote.h"
00024
00025 class MCFTPmssg
00026 {
00027 public:
00028
00029 enum MessageType{
00030 messagetype_unknown = 0,
00031 messagetype_request = 1,
00032 messagetype_quote = 2,
00033 messagetype_mrasb = 3
00034 };
00035 enum MessageQual{
00036 messagequal_none = 0,
00037 messagequal_error = 1,
00038 messagequal_notfound = 2,
00039 messagequal_quoteonly = 3,
00040 messagequal_correction = 4,
00041 messagequal_notavailable = 5
00042 };
00043
00044 static MessageType inttomessagetype( int i );
00045 static MessageQual inttomessagequal( int i );
00046
00047 MCFTPmssg();
00048
00049 MCFTPmssg( const MCFTPmssg& rhs );
00050
00051 ~MCFTPmssg();
00052
00053 MCFTPmssg& operator () ( const MCFTPmssg& );
00054
00055 MCFTPmssg& operator () ();
00056
00057 MCFTPmssg& operator () (
00058 MCFTPheader&,
00059 MCFTPrequest&, string&
00060 );
00061 MCFTPmssg& operator () (
00062 MCFTPheader&, MessageQual,
00063 MCFTPrequest&, string&
00064 );
00065
00066 MCFTPmssg& operator () (
00067 MCFTPheader&,
00068 MCFTPrequest&, MCFTPquote&, string&
00069 );
00070 MCFTPmssg& operator () (
00071 MCFTPheader&, MessageQual,
00072 MCFTPrequest&, MCFTPquote&, string&
00073 );
00074
00075 MCFTPmssg& operator () (
00076 MCFTPheader&,
00077 MCFTPrequest&, MCFTPquote&, MRAsbBase&, string&
00078 );
00079 MCFTPmssg& operator () (
00080 MCFTPheader&, MessageQual,
00081 MCFTPrequest&, MCFTPquote&, MRAsbBase&, string&
00082 );
00083
00084 MCFTPmssg& operator () (
00085 MCFTPheader&,
00086 MCFTPrequest&, char* = ""
00087 );
00088 MCFTPmssg& operator () (
00089 MCFTPheader&, MessageQual,
00090 MCFTPrequest&, char* = ""
00091 );
00092
00093 MCFTPmssg& operator () (
00094 MCFTPheader&,
00095 MCFTPrequest&, MCFTPquote&, char* = ""
00096 );
00097 MCFTPmssg& operator () (
00098 MCFTPheader&, MessageQual,
00099 MCFTPrequest&, MCFTPquote&, char* = ""
00100 );
00101
00102 MCFTPmssg& operator () (
00103 MCFTPheader&,
00104 MCFTPrequest&, MCFTPquote&, MRAsbBase&, char* = ""
00105 );
00106 MCFTPmssg& operator () (
00107 MCFTPheader&, MessageQual,
00108 MCFTPrequest&, MCFTPquote&, MRAsbBase&, char* = ""
00109 );
00110
00111 MCFTPmssg& copy( const MCFTPmssg& rhs );
00112 MCFTPmssg& operator = ( const MCFTPmssg& rhs );
00113
00114 void write( BufferBase& );
00115 MCFTPmssg& operator << ( BufferBase& );
00116 void read( BufferBase& );
00117 MCFTPmssg& operator >> ( BufferBase& );
00118
00119 void write( istream& );
00120 MCFTPmssg& operator << ( istream& );
00121 void read( ostream& );
00122 MCFTPmssg& operator >> ( ostream& );
00123
00124 void set_header( MCFTPheader& );
00125 void set_messagetype( MessageType );
00126 void set_messagequal( MessageQual );
00127 void set_request( MCFTPrequest& );
00128 void set_quote( MCFTPquote& );
00129 void set_sb( MRAsbBase& );
00130 void set_postscript( string& );
00131 void set_postscript( char* );
00132
00133 MCFTPheader* header();
00134 MessageType messagetype();
00135 MessageQual messagequal();
00136 MCFTPrequest* request();
00137 MCFTPquote* quote();
00138 MRAsbBase* sb();
00139 string& postscript();
00140
00141 int mcftpsizeb();
00142
00143 static string help( MessageType );
00144 static string help( MessageQual );
00145
00146 protected:
00147
00148 MCFTPheader* _header;
00149 MessageType _messagetype;
00150 MessageQual _messagequal;
00151 MCFTPrequest* _request;
00152 MCFTPquote* _quote;
00153 MRAsbBase* _sb;
00154 string _postscript;
00155
00156 private:
00157
00158 friend BufferBase& operator << ( BufferBase&, MCFTPmssg& );
00159 friend BufferBase& operator >> ( BufferBase&, MCFTPmssg& );
00160
00161 friend ostream& operator<<( ostream&, MCFTPmssg& );
00162 friend istream& operator>>( istream&, MCFTPmssg& );
00163
00164 };
00165
00166 inline
00167 MCFTPmssg::MessageType MCFTPmssg::inttomessagetype( int i ) {
00168 switch (i) {
00169 case int(messagetype_unknown): return messagetype_unknown;
00170 case int(messagetype_request): return messagetype_request;
00171 case int(messagetype_quote): return messagetype_quote;
00172 case int(messagetype_mrasb): return messagetype_mrasb;
00173 }
00174 }
00175
00176 inline
00177 MCFTPmssg::MessageQual MCFTPmssg::inttomessagequal( int i ) {
00178 switch (i) {
00179 case int(messagequal_none): return messagequal_none;
00180 case int(messagequal_quoteonly): return messagequal_quoteonly;
00181 }
00182 }
00183
00184 inline
00185 MCFTPmssg::MCFTPmssg()
00186 : _header( new MCFTPheader ),
00187 _messagetype(messagetype_unknown),
00188 _messagequal(messagequal_none),
00189 _request( new MCFTPrequest ), _quote( new MCFTPquote ),
00190 _sb( new MRAsb ), _postscript("") {}
00191
00192 inline
00193 MCFTPmssg::MCFTPmssg( const MCFTPmssg& rhs )
00194 : _header( new MCFTPheader ),
00195 _messagetype(rhs._messagetype), _messagequal(rhs._messagequal),
00196 _request( new MCFTPrequest ), _quote( new MCFTPquote ),
00197 _sb( new MRAsb ), _postscript(rhs._postscript)
00198 {
00199 _header = rhs._header;
00200 _request = rhs._request;
00201 _quote = rhs._quote;
00202 _sb = rhs._sb;
00203 _header->set_mcftpsizeb( mcftpsizeb() );
00204 }
00205
00206 inline
00207 MCFTPmssg::~MCFTPmssg()
00208 {
00209 if ( _header != 0 ) { delete _header ; _header = 0; }
00210 if ( _request != 0 ) { delete _request ; _request = 0; }
00211 if ( _quote != 0 ) { delete _quote ; _quote = 0; }
00212 if ( _sb != 0 ) { delete _sb ; _sb = 0; }
00213 }
00214
00215 inline
00216 MCFTPmssg& MCFTPmssg::operator () ( const MCFTPmssg& mcftpsb )
00217 {
00218 return *this = mcftpsb;
00219 }
00220
00221 inline
00222 MCFTPmssg& MCFTPmssg::operator () ()
00223 {
00224 if ( _header != 0 ) { delete _header ; _header = 0; }
00225 if ( _request != 0 ) { delete _request ; _request = 0; }
00226 if ( _quote != 0 ) { delete _quote ; _quote = 0; }
00227 if ( _sb != 0 ) { delete _sb ; _sb = 0; }
00228
00229 _header = new MCFTPheader;
00230 _messagetype = messagetype_unknown;
00231 _messagequal = messagequal_none;
00232 _request = new MCFTPrequest;
00233 _quote = new MCFTPquote;
00234 _sb = new MRAsb;
00235 _postscript = "";
00236 return *this;
00237 }
00238
00239 inline
00240 MCFTPmssg& MCFTPmssg::copy( const MCFTPmssg& rhs )
00241 {
00242 if ( this != &rhs ) {
00243 *_header = *(rhs._header);
00244 _messagetype = rhs._messagetype;
00245 _messagequal = rhs._messagequal;
00246 *_request = *(rhs._request);
00247 *_quote = *(rhs._quote);
00248 *_sb = *(rhs._sb);
00249 _postscript = rhs._postscript;
00250 }
00251 return *this;
00252 }
00253
00254 inline
00255 MCFTPmssg& MCFTPmssg::operator = ( const MCFTPmssg& rhs ) { return copy(rhs); }
00256
00257 inline
00258 MCFTPmssg& MCFTPmssg::operator << ( BufferBase& buffer )
00259 {
00260 write(buffer);
00261 return *this;
00262 }
00263
00264 inline
00265 MCFTPmssg& MCFTPmssg::operator >> ( BufferBase& buffer )
00266 {
00267 read(buffer);
00268 return *this;
00269 }
00270
00271 inline
00272 MCFTPmssg& MCFTPmssg::operator << ( istream& is )
00273 {
00274 write(is);
00275 return *this;
00276 }
00277
00278 inline
00279 MCFTPmssg& MCFTPmssg::operator >> ( ostream& os )
00280 {
00281 read(os);
00282 return *this;
00283 }
00284
00285 inline
00286 void MCFTPmssg::set_header( MCFTPheader& header ) { *_header = header; }
00287
00288 inline
00289 void MCFTPmssg::set_messagetype( MessageType messagetype )
00290 {
00291 _messagetype = messagetype;
00292 }
00293
00294 inline
00295 void MCFTPmssg::set_messagequal( MessageQual messagequal )
00296 {
00297 _messagequal = messagequal;
00298 }
00299
00300 inline
00301 void MCFTPmssg::set_request( MCFTPrequest& request ) { *_request = request; }
00302
00303 inline
00304 void MCFTPmssg::set_quote( MCFTPquote& quote ) { *_quote = quote; }
00305
00306 inline
00307 void MCFTPmssg::set_sb( MRAsbBase& sb ) { *_sb = sb; }
00308
00309 inline
00310 void MCFTPmssg::set_postscript( string& postscript )
00311 {
00312 _postscript = postscript;
00313 }
00314
00315 inline
00316 void MCFTPmssg::set_postscript( char* postscript ) { _postscript = postscript;}
00317
00318 inline
00319 MCFTPheader* MCFTPmssg::header() { return _header; }
00320
00321 inline
00322 MCFTPmssg::MessageType MCFTPmssg::messagetype() { return _messagetype; }
00323
00324 inline
00325 MCFTPmssg::MessageQual MCFTPmssg::messagequal() { return _messagequal; }
00326
00327 inline
00328 MCFTPrequest* MCFTPmssg::request() { return _request; }
00329
00330 inline
00331 MCFTPquote* MCFTPmssg::quote() { return _quote; }
00332
00333 inline
00334 MRAsbBase* MCFTPmssg::sb() { return _sb; }
00335
00336 inline
00337 string& MCFTPmssg::postscript() { return _postscript; }
00338
00339
00340
00341 inline bool operator > (
00342 MCFTPmssg::MessageType lhs, MCFTPmssg::MessageType rhs
00343 )
00344 {
00345 return int(lhs) > int(rhs);
00346 }
00347
00348 inline bool operator >= (
00349 MCFTPmssg::MessageType lhs, MCFTPmssg::MessageType rhs
00350 )
00351 {
00352 return int(lhs) >= int(rhs);
00353 }
00354
00355 inline bool operator < (
00356 MCFTPmssg::MessageType lhs, MCFTPmssg::MessageType rhs
00357 )
00358 {
00359 return int(lhs) < int(rhs);
00360 }
00361
00362 inline bool operator <= (
00363 MCFTPmssg::MessageType lhs, MCFTPmssg::MessageType rhs
00364 )
00365 {
00366 return int(lhs) <= int(rhs);
00367 }
00368
00369 inline
00370 string MCFTPmssg::help( MessageType messagetype )
00371 {
00372 switch(messagetype) {
00373 case MCFTPmssg::messagetype_unknown:
00374 return " ==> MCFTPmssg::messagetype_unknown ";
00375 break;
00376 case MCFTPmssg::messagetype_request:
00377 return " ==> MCFTPmssg::messagetype_request ";
00378 break;
00379 case MCFTPmssg::messagetype_quote:
00380 return " ==> MCFTPmssg::messagetype_quote ";
00381 break;
00382 case MCFTPmssg::messagetype_mrasb:
00383 return " ==> MCFTPmssg::messagetype_mrasb ";
00384 break;
00385 }
00386 return "";
00387 }
00388
00389 inline
00390 string MCFTPmssg::help( MessageQual messagequal )
00391 {
00392 switch(messagequal) {
00393 case MCFTPmssg::messagequal_none:
00394 return " ==> MCFTPmssg::messagequal_none ";
00395 break;
00396 case MCFTPmssg::messagequal_error:
00397 return " ==> MCFTPmssg::messagequal_error ";
00398 break;
00399 case MCFTPmssg::messagequal_notfound:
00400 return " ==> MCFTPmssg::messagequal_notfound ";
00401 break;
00402 case MCFTPmssg::messagequal_quoteonly:
00403 return " ==> MCFTPmssg::messagequal_quoteonly ";
00404 break;
00405 case MCFTPmssg::messagequal_correction:
00406 return " ==> MCFTPmssg::messagequal_correction ";
00407 break;
00408 }
00409 return "";
00410 }
00411
00412
00413 #endif
00414