Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

MCFTPmssg.h

Go to the documentation of this file.
00001 // MCFTPmssg.h
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2002 Brown Deer Technology, LLC.
00004 //                        All rights reserved.
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 // ##### overloaded operators #####
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 

Generated on Mon May 31 21:38:49 2004 for SR2k4 Assembler by doxygen 1.3.6