Gizmo3D

gzProtocol.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // File         : gzProtocol.h
00003 // Module       : gzBase
00004 // Description  : Class definition of serialize protocol classes
00005 // Author       : Anders Modén      
00006 // Product      : GizmoBase 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden       
00009 //          
00010 // NOTE:    GizmoBase is a platform abstraction utility layer for C++. It contains 
00011 //          design patterns and C++ solutions for the advanced programmer.
00012 //
00013 //
00014 // Revision History...                          
00015 //                                  
00016 // Who  Date    Description                     
00017 //                                  
00018 // AMO  981019  Created file    
00019 //
00020 // ******************************************************************************
00021 
00022 #ifndef __GZ_PROTOCOL_H__
00023 #define __GZ_PROTOCOL_H__
00024 
00030 #include "gzSerialize.h"
00031 #include "gzNotify.h"
00032 #include "gzLex.h"
00033 #include "gzNetwork.h"
00034 
00035 enum gzParseHttpState
00036 {
00037     GZ_HTTP_PARSE_STATE_RESET,
00038     GZ_HTTP_PARSE_STATE_PUBLIC,
00039     GZ_HTTP_PARSE_STATE_LAST
00040 };
00041 
00042 //******************************************************************************
00043 // Class    : gzSerializeAdapterHttp
00044 //                                  
00045 // Purpose  : Class for Serialize data to Web Server
00046 //                                  
00047 // Notes    : This class is responsible to write/read data to a http adapter
00048 //                                  
00049 // Revision History...                          
00050 //                                  
00051 // Who  Date    Description                     
00052 //                                  
00053 // AMO  040203  Created 
00054 //                                  
00055 //******************************************************************************
00056 class  gzSerializeAdapterHttp : public gzSerializeAdapter , 
00057                                 public gzNotifyInterface , 
00058                                 public gzParserFunction<gzSerializeAdapterHttp,gzBasicParser>
00059 {
00060 public:
00061     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);   // RTTI
00062 
00063     GZ_BASE_EXPORT gzSerializeAdapterHttp(const gzString &url,gzSerializeAction action,gzSerializeAdapterFlags flags, const gzString &password);
00064 
00065     GZ_BASE_EXPORT virtual ~gzSerializeAdapterHttp();
00066 
00067     GZ_BASE_EXPORT virtual gzVoid flush();
00068 
00069     GZ_BASE_EXPORT gzBool openURL(const gzString &url);
00070 
00071     GZ_PROPERTY_GET_EXPORT( gzString,       User                ,GZ_BASE_EXPORT);
00072     GZ_PROPERTY_GET_EXPORT( gzString,       Password            ,GZ_BASE_EXPORT);
00073     GZ_PROPERTY_GET_EXPORT( gzUShort,       HostPort            ,GZ_BASE_EXPORT);
00074     GZ_PROPERTY_GET_EXPORT( gzString,       Host                ,GZ_BASE_EXPORT);
00075     GZ_PROPERTY_GET_EXPORT( gzString,       Path                ,GZ_BASE_EXPORT);
00076 
00077     GZ_PROPERTY_EXPORT(     gzString,       AttributeString     ,GZ_BASE_EXPORT);
00078     GZ_PROPERTY_EXPORT(     gzULong,        MajorVersion        ,GZ_BASE_EXPORT);
00079     GZ_PROPERTY_EXPORT(     gzULong,        MinorVersion        ,GZ_BASE_EXPORT);
00080 
00081     GZ_PROPERTY_EXPORT(     gzString,       DefaultUser         ,GZ_BASE_EXPORT);
00082     GZ_PROPERTY_EXPORT(     gzUShort,       DefaultHostPort     ,GZ_BASE_EXPORT);
00083 
00084     
00085     GZ_PROPERTY_GET_EXPORT( gzULong,        LastContentLength   ,GZ_BASE_EXPORT);
00086     GZ_PROPERTY_GET_EXPORT( gzString,       LastContentType     ,GZ_BASE_EXPORT);
00087     GZ_PROPERTY_GET_EXPORT( gzString,       LastContentBase     ,GZ_BASE_EXPORT);
00088     GZ_PROPERTY_GET_EXPORT( gzULong,        LastErrorCode       ,GZ_BASE_EXPORT);
00089 
00090     GZ_BASE_EXPORT  gzBool  hasPublicMethod(const gzString &methodName);
00091 
00092     GZ_BASE_EXPORT  gzVoid  resetLastError();   
00093 
00094 protected:
00095 
00096     // Utilities
00097     GZ_BASE_EXPORT          gzBool      waitForAnswer( gzULong timeOut=GZ_SLEEP_INFINITE);
00098 
00099     GZ_BASE_EXPORT virtual  gzVoid      initConnection();
00100     GZ_BASE_EXPORT virtual  gzVoid      sendOptionRequest();
00101         
00102     // Adapter
00103     GZ_BASE_EXPORT  virtual gzVoid      write_imp(gzUByte data);
00104     GZ_BASE_EXPORT  virtual gzUByte     read_imp();
00105 
00106     GZ_BASE_EXPORT  virtual gzVoid      write_imp(gzUByte *data,gzULong count);
00107     GZ_BASE_EXPORT  virtual gzULong     read_imp(gzUByte *data,gzULong maxcount);
00108     GZ_BASE_EXPORT  virtual gzULong     length_imp();
00109     GZ_BASE_EXPORT  virtual gzBool      hasData_imp();
00110 
00111     // parsing
00112 
00113     GZ_BASE_EXPORT virtual gzParseResult parseMessage();
00114     GZ_BASE_EXPORT virtual gzParseResult parseRequest();
00115     GZ_BASE_EXPORT virtual gzParseResult parseRequestLine();
00116     GZ_BASE_EXPORT virtual gzParseResult parseRequestHeader();
00117     GZ_BASE_EXPORT virtual gzParseResult parseRequestURI();
00118     GZ_BASE_EXPORT virtual gzParseResult parseResponse();
00119     GZ_BASE_EXPORT virtual gzParseResult parseResponseHeader();
00120     GZ_BASE_EXPORT virtual gzParseResult parseGeneralHeader();
00121     GZ_BASE_EXPORT virtual gzParseResult parseEntityHeader();
00122     GZ_BASE_EXPORT virtual gzParseResult parseStatusLine();
00123     GZ_BASE_EXPORT virtual gzParseResult parseMessageBody();
00124     GZ_BASE_EXPORT virtual gzParseResult parseVersion();
00125     GZ_BASE_EXPORT virtual gzParseResult parseStatusCode();
00126     GZ_BASE_EXPORT virtual gzParseResult parseReasonPhrase();
00127     GZ_BASE_EXPORT virtual gzParseResult parseWWWAuthenticate();
00128     GZ_BASE_EXPORT virtual gzParseResult parseAllow();
00129     GZ_BASE_EXPORT virtual gzParseResult parseContentBase();
00130     GZ_BASE_EXPORT virtual gzParseResult parseContentEncoding();
00131     GZ_BASE_EXPORT virtual gzParseResult parseContentLanguage();
00132     GZ_BASE_EXPORT virtual gzParseResult parseContentLength();
00133     GZ_BASE_EXPORT virtual gzParseResult parseContentLocation();
00134     GZ_BASE_EXPORT virtual gzParseResult parseContentType();
00135     GZ_BASE_EXPORT virtual gzParseResult parseExpires();
00136     GZ_BASE_EXPORT virtual gzParseResult parseLastModified();
00137     GZ_BASE_EXPORT virtual gzParseResult parseExtensionHeader();
00138     GZ_BASE_EXPORT virtual gzParseResult parseCacheControl();
00139     GZ_BASE_EXPORT virtual gzParseResult parseConnection();
00140     GZ_BASE_EXPORT virtual gzParseResult parseDate();
00141     GZ_BASE_EXPORT virtual gzParseResult parseVia();
00142     GZ_BASE_EXPORT virtual gzParseResult parseServer();
00143     GZ_BASE_EXPORT virtual gzParseResult parseVary();
00144     GZ_BASE_EXPORT virtual gzParseResult parseRetryAfter();
00145     GZ_BASE_EXPORT virtual gzParseResult parsePublic();
00146     GZ_BASE_EXPORT virtual gzParseResult parseProxyAuthenticate();
00147     GZ_BASE_EXPORT virtual gzParseResult parseLocation();
00148     GZ_BASE_EXPORT virtual gzParseResult parseMethod();
00149     GZ_BASE_EXPORT virtual gzParseResult parseExtensionMethod();
00150     GZ_BASE_EXPORT virtual gzParseResult parseMethodList();
00151     GZ_BASE_EXPORT virtual gzParseResult parseCacheDirectiveList();
00152     GZ_BASE_EXPORT virtual gzParseResult parseCacheDirective();
00153     GZ_BASE_EXPORT virtual gzParseResult parseCacheResponce();
00154     GZ_BASE_EXPORT virtual gzParseResult parseCacheRequest();
00155     GZ_BASE_EXPORT virtual gzParseResult parseFieldNameList();
00156     
00157     // Basics
00158 
00159     GZ_BASE_EXPORT gzParseResult parseToken();
00160     
00161     // Compounds
00162 
00163     GZ_BASE_EXPORT gzParseResult parseDigit_();
00164     GZ_BASE_EXPORT gzParseResult parseHEX_();
00165     GZ_BASE_EXPORT gzParseResult parseToken_();
00166     GZ_BASE_EXPORT gzParseResult parseTokenOrSP_();
00167     GZ_BASE_EXPORT gzParseResult parseLWS();
00168     GZ_BASE_EXPORT gzParseResult parseLWS_();
00169     GZ_BASE_EXPORT gzParseResult parseText();
00170     GZ_BASE_EXPORT gzParseResult parseText_();
00171     GZ_BASE_EXPORT gzParseResult parseTSpecials();
00172     GZ_BASE_EXPORT gzParseResult parseCText();
00173     GZ_BASE_EXPORT gzParseResult parseComment();
00174     GZ_BASE_EXPORT gzParseResult parseDQText();
00175     GZ_BASE_EXPORT gzParseResult parseDQString();
00176     GZ_BASE_EXPORT gzParseResult parseAbsoluteURI();
00177     GZ_BASE_EXPORT gzParseResult parseReserved();
00178     GZ_BASE_EXPORT gzParseResult parseScheme();
00179     GZ_BASE_EXPORT gzParseResult parseScheme_();
00180     GZ_BASE_EXPORT gzParseResult parseUChar();
00181     GZ_BASE_EXPORT gzParseResult parseEscape();
00182     GZ_BASE_EXPORT gzParseResult parseUnreserved();
00183     GZ_BASE_EXPORT gzParseResult parseSafe();
00184     GZ_BASE_EXPORT gzParseResult parseUnsafe();
00185     GZ_BASE_EXPORT gzParseResult parseExtra();
00186     GZ_BASE_EXPORT gzParseResult parseNational();
00187     GZ_BASE_EXPORT gzParseResult parseMediaType();
00188     GZ_BASE_EXPORT gzParseResult parseParameter();
00189     GZ_BASE_EXPORT gzParseResult parseHost();
00190     GZ_BASE_EXPORT gzParseResult parseHostName();
00191     GZ_BASE_EXPORT gzParseResult parseDomainLabel();
00192     GZ_BASE_EXPORT gzParseResult parseTopLabel();
00193     GZ_BASE_EXPORT gzParseResult parseProduct();
00194 
00195 
00196     GZ_BASE_EXPORT gzBool checkMethod(const gzString &methodName);
00197 
00198 
00199     // Socket callback
00200     GZ_BASE_EXPORT virtual gzVoid onNotify(gzNotifyManager *master,gzRefPointer<gzNotifyMessage> &data,gzULong senderClass);
00201 
00202     // parse callback
00203     GZ_BASE_EXPORT virtual gzVoid parseInput(gzUByte *buffer,gzULong len);
00204     GZ_BASE_EXPORT virtual gzVoid onMessageBody(gzUByte *buffer,gzULong len);
00205 
00206 
00207     gzSocket                    m_socket;
00208 
00209     gzDict<gzString,gzVoid>     m_publicMethods;
00210 
00211     gzQueue<gzParseHttpState>   m_currentState;
00212 
00213     gzEvent                     m_event;
00214 
00215     gzULong                     m_pendingBodyData;
00216 
00217     gzMutex                     m_dataLocker;
00218 };
00219 
00220 #endif // __GZ_PROTOCOL_H__

Documentation for Gizmo3D generated at Wed Feb 20 11:54:08 2008 by   Saab Training Systems AB, ¸ (c) 2003-and beyond