00001 00024 // SOAPonProtocol.h: interface for the SOAPonProtocol class. 00025 // Class Description: Provides a couple of methods that I think 00026 // would be required regardless of whether SOAP messages were 00027 // transmitted using HTTP, SMTP, or something else. So far, 00028 // I've only done this using HTTP, so the full set of requirements 00029 // hasn't been set yet. Oh well. 00031 /* 00032 #if !defined(SOAPONPROTOCOL_H) 00033 #include "SOAPonProtocol.h" 00034 #endif // !defined(SOAPONPROTOCOL_H) 00035 */ 00036 #if !defined(SOAPONPROTOCOL_H) 00037 #define SOAPONPROTOCOL_H 00038 00039 #ifndef _STRING_ 00040 #include <string> 00041 #endif // _STRING_ 00042 00043 class SOAPMethod; 00044 class SOAPElement; 00045 00046 class SOAPonProtocol 00047 { 00048 public: 00049 00050 // Constructor/Destructor 00051 SOAPonProtocol(); 00052 virtual ~SOAPonProtocol(); 00053 00054 // getSendableResponse 00055 // Description: Given a SOAP message that has already been 00056 // translated to some sort of string, this call finsihes 00057 // things by adding any text required by the implemented 00058 // protocol. 00059 // szSOAPMessage: 00060 // The message without any protocol specific adornments. 00061 // bIsFault: 00062 // The message contains a Fault. 00063 // Returns: 00064 // The message WITH protocol specific adornments. This method 00065 // is for use on the server side of a SOAP call. 00066 virtual std::string getSendableResponse( 00067 const std::string& szSOAPMessage, bool bIsFault = false ) = 0; 00068 00069 // send 00070 // Description: Given a SOAPMethod and the related class on 00071 // the server, executes the method and returns the response 00072 // as a string. If any protocol specifc items will impede the 00073 // parsing of the SOAP part of the message, this item should 00074 // strip that off. 00075 // szClassName: 00076 // Name of the class that owns the method on the server. 00077 // aMethod: 00078 // Represents the method being called complete with any arguments. 00079 virtual std::string send( const std::string& szClassName, 00080 SOAPMethod& aMethod ) = 0; 00081 00082 // getMethodDetails 00083 // Description: When a call comes in, this takes the method, 00084 // takes out its "guts", and parses the message. This method 00085 // does not execute the actual message. That is done 00086 // by another object. The parsing is done here because this 00087 // object is intimate with the details of the overhead 00088 // and calling information that comes with the given protocol. 00089 // Arguments: 00090 // KszMessage: The message in its raw form. 00091 // szObjectName: On return, this contains the name of the object 00092 // to execute any methods on. 00093 // szMethodName: On return, this contains the name of the method 00094 // the caller wants to execute. 00095 // theCall: On return, this contains the parsed SOAP message. 00096 // Return value: 00097 // true: Successfully obtained all needed information. 00098 // false: Something went wrong during the parse. Look at 00099 // szObjectName for the fault details as a sendable 00100 // SOAP string, minus the protocol specific stuff. 00101 virtual bool getMethodDetails( const std::string& KszMessage, 00102 std::string& szObjectName, std::string& szMethodName, 00103 SOAPElement& theCall ) = 0; 00104 }; 00105 00106 #endif // !defined(SOAPONPROTOCOL_H)