diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/WSMethodInvocation.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/WSMethodInvocation.h')
| -rw-r--r-- | common/quicktime_win32/WSMethodInvocation.h | 1012 |
1 files changed, 1012 insertions, 0 deletions
diff --git a/common/quicktime_win32/WSMethodInvocation.h b/common/quicktime_win32/WSMethodInvocation.h new file mode 100644 index 0000000..2fbd2dd --- /dev/null +++ b/common/quicktime_win32/WSMethodInvocation.h @@ -0,0 +1,1012 @@ +/* + File: WSMethodInvocation.h + + Contains: WebServicesCore Method Invocation API + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 2002 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __MIXEDMODE__ +#include <MixedMode.h> +#endif + +#ifndef __CFSTRING__ +#include <CFString.h> +#endif + +#ifndef __CFURL__ +#include <CFURL.h> +#endif + +#ifndef __CFRUNLOOP__ +#include <CFRunLoop.h> +#endif + +#ifndef __CFXMLPARSER__ +#include <CFXMLParser.h> +#endif + +#ifndef __CFXMLNODE__ +#include <CFXMLNode.h> +#endif + + +/* + WebServicesCore + */ +/* + WebServicesCore error codes + */ + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +#if PRAGMA_ENUM_ALWAYSINT + #if defined(__fourbyteints__) && !__fourbyteints__ + #define __WSMETHODINVOCATION__RESTORE_TWOBYTEINTS + #pragma fourbyteints on + #endif + #pragma enumsalwaysint on +#elif PRAGMA_ENUM_OPTIONS + #pragma option enum=int +#elif PRAGMA_ENUM_PACK + #if __option(pack_enums) + #define __WSMETHODINVOCATION__RESTORE_PACKED_ENUMS + #pragma options(!pack_enums) + #endif +#endif + +enum { + errWSInternalError = -65793L, /* An internal framework error */ + errWSTransportError = -65794L, /* A network error occured */ + errWSParseError = -65795L, /* The server response wasn't valid XML */ + errWSTimeoutError = -65796L /* The invocation timed out */ +}; + + +/* + * WSTypeID + * + * Discussion: + * Internally, WebServicesCore uses the following enumeration when + * serializing between CoreFoundation and XML types. Because CFTypes + * are defined at runtime, it isn't always possible to produce a + * static mapping to a particular CFTypeRef. This enum and + * associated API allows for static determination of the expected + * serialization. + */ +enum WSTypeID { + + /* + * No mapping is known for this type + */ + eWSUnknownType = 0, + + /* + * CFNullRef + */ + eWSNullType = 1, + + /* + * CFBooleanRef + */ + eWSBooleanType = 2, + + /* + * CFNumberRef for 8, 16, 32 bit integers + */ + eWSIntegerType = 3, + + /* + * CFNumberRef for long double real numbers + */ + eWSDoubleType = 4, + + /* + * CFStringRef + */ + eWSStringType = 5, + + /* + * CFDateRef + */ + eWSDateType = 6, + + /* + * CFDataRef + */ + eWSDataType = 7, + + /* + * CFArrayRef + */ + eWSArrayType = 8, + + /* + * CFDictionaryRef + */ + eWSDictionaryType = 9 +}; +typedef enum WSTypeID WSTypeID; + +/* + * WSGetWSTypeIDFromCFType() + * + * Discussion: + * Returns the WSTypeID associated with CFTypeRef. There is not a + * one to one mapping between CFTypeID and WSTypesID therefore an + * actual instance of a CFType must be passed. + * + * Parameters: + * + * ref: + * a CFTypeRef object + * + * Result: + * the WSTypeID used in serializing the object. If no WSTypeID + * matches, eWSUnknownType is returned. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( WSTypeID ) +WSGetWSTypeIDFromCFType(CFTypeRef ref); + + +/* + * WSGetCFTypeIDFromWSTypeID() + * + * Discussion: + * Returns the CFTypeID that is associated with a given WSTypeID. + * CFTypeIDs are only valid during a particular instance of a + * process and should not be used as static values. + * + * Parameters: + * + * typeID: + * a WSTypeID constant + * + * Result: + * a CFTypeID, or 0 if not found + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFTypeID ) +WSGetCFTypeIDFromWSTypeID(WSTypeID typeID); + + +typedef CALLBACK_API( void *, WSClientContextRetainCallBackProcPtr )(void * info); +typedef CALLBACK_API( void , WSClientContextReleaseCallBackProcPtr )(void * info); +typedef CALLBACK_API( CFStringRef , WSClientContextCopyDescriptionCallBackProcPtr )(void * info); + +/* + * WSClientContext + * + * Discussion: + * Several calls in WebServicesCore take a callback with an optional + * context pointer. The context is copied and the info pointer + * retained. When the callback is made, the info pointer is passed + * to the callback. + */ +struct WSClientContext { + + /* + * set to zero (0) + */ + CFIndex version; + + /* + * info pointer to be passed to the callback + */ + void * info; + + /* + * callback made on the info pointer. This field may be NULL. + */ + WSClientContextRetainCallBackProcPtr retain; + + /* + * callback made on the info pointer. This field may be NULL. + */ + WSClientContextReleaseCallBackProcPtr release; + + /* + * callback made on the info pointer. This field may be NULL. + */ + WSClientContextCopyDescriptionCallBackProcPtr copyDescription; +}; +typedef struct WSClientContext WSClientContext; +/* + Web Service protocol types. These constant strings specify the type + of web service method invocation created. These are passed to + WSMethodInvocationCreate. + + For information on these service types, see: + + XML-RPC: <http://www.xml-rpc.com/spec/> + SOAP 1.1: <http://www.w3.org/TR/SOAP/> + SOAP 1.2: <http://www.w3.org/2002/ws/> +*/ +extern CFStringRef kWSXMLRPCProtocol; +extern CFStringRef kWSSOAP1999Protocol; +extern CFStringRef kWSSOAP2001Protocol; + + +/* + Dictionary entry if the invocation result is not a fault. This is + always available in method responses, although for SOAP messages, + it may be more correctly to query the result dictionary for the + specific field you're interested in. What this really means is + that the dictionary returned by the invocation may contain more + than one value, wherein the result data is duplicated several + times. If you don't know what to ask for to dump the reply, you + can ask for this key. If you do know what you want, you should + request that field expliclty. + + You can also specify the name of the reply parameter in the + invocation using kWSMethodInvocationResultParameterName. This will + add an alias for the given name to the result dictionary such that + kWSMethodInvocationResult will always return the correct + parameter. (This won't work for multi-value returns, however.) +*/ +extern CFStringRef kWSMethodInvocationResult; +/* + Dictionary entries if the result is a fault +*/ +extern CFStringRef kWSFaultString; /* a CFString */ +extern CFStringRef kWSFaultCode; /* a CFNumber */ +extern CFStringRef kWSFaultExtra; /* a CFString or CFDictionary, or NULL */ + +/* + If the result is a fault, and if the value of kWSFaultString in + the reply dictionary is kWSNetworkStreamFaultString, then + kWSFaultExtra will be a dictionary indicating the network error + and kWSFaultCode is ignored in this case. See + <CoreFoundation/CFStream.h> for details on what the domain and + error numbers mean. +*/ +extern CFStringRef kWSNetworkStreamFaultString; +extern CFStringRef kWSStreamErrorMessage; /* A CFString (for debug purposes only) */ +extern CFStringRef kWSStreamErrorDomain; /* A CFNumberRef */ +extern CFStringRef kWSStreamErrorError; /* A CFNumberRef */ + +/* + For HTTP[S] based invocations, you can specify a CFHTTPMessageRef + as a property which will be used instead of creating a new + outgoing message. The CFHTTPMessageRef can contain header, proxy + and authentication information. The body of the message will be + ignored and replaced with the outgoing, serialized invocation. + + After the invocation has executed, you can retrieve a copy of the + actual CFHTTPMessageRef, containing the details of the invocation + using kWSHTTPResponseMessage. Attempting to retrieve the response + message property before the invocation completes will result + return NULL. + + See: <CFNetwork/CFHTTPMessage.h> for more information. +*/ +extern CFStringRef kWSHTTPMessage; /* CFHTTPMessageRef */ +extern CFStringRef kWSHTTPResponseMessage; /* CFHTTPMessageRef */ +/* + To avoid having to create an entire CFHTTPMessageRef, these properties are + individually settable. If they are set, they will override any CFHTTPMessageRef + previously specified. +*/ +extern CFStringRef kWSHTTPVersion; /* "http/1.1" */ +extern CFStringRef kWSHTTPExtraHeaders; /* a CFDictionary of { key (CFString), val (CFString) } pairs */ +extern CFStringRef kWSHTTPProxy; /* CFURfRefL */ +extern CFStringRef kWSHTTPFollowsRedirects; /* kCFBooleanFalse */ +/* + SOCKS proxy support. WSMethodInvocation uses the same flags as + CFSocketStream.h in configuring SOCKS proxy support. You can set + the kCFStreamPropertySOCKSProxy property on the invocation and the + value will be applied to the underlying stream. See CFSocketStream.h + for more information and valid keys. +*/ +/* + These debugging flags will populate the WSInvocationResultRef + with some potentially useful debugging output. The property + name of the flag is the same as the the field in the result + dictionary. +*/ +extern CFStringRef kWSDebugOutgoingHeaders; /* kCFBooleanFalse */ +extern CFStringRef kWSDebugOutgoingBody; /* kCFBooleanFalse */ +extern CFStringRef kWSDebugIncomingHeaders; /* kCFBooleanFalse */ +extern CFStringRef kWSDebugIncomingBody; /* kCFBooleanFalse */ +/* + Extra properties for SOAP messages. These apply to the message + namespace and format itself. Individual message elements can + be modified using the kWSRecord constants below. +*/ +extern CFStringRef kWSSOAPMethodNamespaceURI; /* CFStringRef */ +extern CFStringRef kWSSOAPBodyEncodingStyle; /* CFStringRef { kWSSOAPStyleDoc, kWSSOAPStyleRPC } */ +extern CFStringRef kWSSOAPStyleDoc; +extern CFStringRef kWSSOAPStyleRPC; + +/* + For SOAP messages, this is an array of CFStringRefs which + contain valid XML header elements that are sent with the + message. These are only applicable to the Header of a SOAP + message. +*/ +extern CFStringRef kWSSOAPMessageHeaders; /* CFArrayRef */ + +/* + When serializing a record (dictionary) these keys present in + the dictionary can modify the behavior of the serialization. +*/ +extern CFStringRef kWSRecordParameterOrder; /* CFArrayRef of CFStringRef */ +extern CFStringRef kWSRecordNamespaceURI; /* CFStringRef */ +extern CFStringRef kWSRecordType; /* CFStringRef */ + +/* + Specifies that the result parameter will be found as this name. This + forces the deserializer to alias the named output parameter to kWSMethodInvocationResult +*/ +extern CFStringRef kWSMethodInvocationResultParameterName; +/* + Specifies a timeout (as CFNumber) which specifies in seconds the + amount of time to wait for the invocation to complete. If the + invocation times out before the server results are returned, + a fault will be returned with the error code errWSTimeoutError. +*/ +extern CFStringRef kWSMethodInvocationTimeoutValue; + +/* + * WSMethodInvocationRef + * + * Discussion: + * a WSMethodInvocationRef represents an object that can be executed + * to obtain a rsult from a web service. This is CFType and is + * therefore reference counted and and should be managed via + * CFRetain and CFRelease. + */ +typedef struct OpaqueWSMethodInvocationRef* WSMethodInvocationRef; +/* + * WSMethodInvocationGetTypeID() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFTypeID ) +WSMethodInvocationGetTypeID(void); + + + +/* + * WSMethodInvocationCreate() + * + * Discussion: + * Creates a web services method invocation object. This object may + * be executed synchronously or scheduled on a run loop for + * asynchronous execution. + * + * Parameters: + * + * url: + * the endpoint of the service + * + * methodName: + * the name of the method to be called + * + * protocol: + * a string, defined above, that determines the type of invocation + * object to create (XML-RPC vs. SOAP) + * + * Result: + * A WSMethodInvocationRef object that can be passed to + * WSMethodInvocationInvoke or scheduled with a run loop. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( WSMethodInvocationRef ) +WSMethodInvocationCreate( + CFURLRef url, + CFStringRef methodName, + CFStringRef protocol); + + + +/* + * WSMethodInvocationCreateFromSerialization() + * + * Discussion: + * Creates a web services method invocation object from a previously + * serialized contract. + * + * Parameters: + * + * contract: + * the result of a previously serialized WSMethodInvocationRef + * + * Result: + * A WSMethodInvocationRef object that can be passed to + * WSMethodInvocationInvoke or scheduled with a run loop. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( WSMethodInvocationRef ) +WSMethodInvocationCreateFromSerialization(CFDataRef contract); + + + +/* + * WSMethodInvocationCopySerialization() + * + * Discussion: + * Create a serialized version of the Method Invocation which can be + * reconstituted at a later time. + * + * Parameters: + * + * invocation: + * the invocation to serialize + * + * Result: + * a CFDataRef + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFDataRef ) +WSMethodInvocationCopySerialization(WSMethodInvocationRef invocation); + + + +/* + * WSMethodInvocationSetParameters() + * + * Discussion: + * Set the parameters for a method invocation. The parameterOrder + * may be NULL, in which case the order of th parameters is + * undefined. If it is not NULL and the parameters dictionary + * contains more parameters than are specified by the order, the + * behavior is undefined. If the parameterOrder specifies more + * parameters than are present in the dictionary, the result is + * undefined. + * + * Parameters: + * + * invocation: + * the invocation object + * + * parameters: + * a CFDictionaryRef of CFString keys and CFTypeRef values. + * + * parameterOrder: + * a CFArrayRef of CFString parameter names. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationSetParameters( + WSMethodInvocationRef invocation, + CFDictionaryRef parameters, + CFArrayRef parameterOrder); /* can be NULL */ + + +/* + * WSMethodInvocationCopyParameters() + * + * Discussion: + * Copies the parameters from the invocation. The resulting + * dictionary contains the parameter dictionary. The parameterOrder + * output parameter, if not NULL, will contain the order used to + * serialize the parameters. + * + * Parameters: + * + * invocation: + * the invocation + * + * parameterOrder: + * a pointer to a CFArray which will will receive the names, in + * their specified order, of the input parameter values. This + * parameter may be NULL. + * + * Result: + * a CFDictionaryRef + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFDictionaryRef ) +WSMethodInvocationCopyParameters( + WSMethodInvocationRef invocation, + CFArrayRef * parameterOrder); /* can be NULL */ + + +/* + * WSMethodInvocationSetProperty() + * + * Discussion: + * Add "properties" to a method invocation. These properties can be + * user defined or one of the WebServicesCore declared properties + * (which may modify the behavior of the invocation.) All + * WebServicesCore declared properties will start with the string + * "kWS", eg, kWSHTTPFollowsRedirects. Properties are serialized + * along with the contract, so you may want to avoid sticking raw + * pointers in a CFNumber (for example). + * + * Parameters: + * + * invocation: + * the invocation + * + * propertyName: + * a CFStringRef name of the property to modify + * + * propertyValue: + * a CFTypeRef containing the new property value + * + * Result: + * none + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationSetProperty( + WSMethodInvocationRef invocation, + CFStringRef propertyName, + CFTypeRef propertyValue); + + + +/* + * WSMethodInvocationCopyProperty() + * + * Discussion: + * Return a property from a invocation. If the result is NULL, the + * property doesn't exist. Being a "Copy" call, you must release + * the result. + * + * Parameters: + * + * invocation: + * the invocation + * + * propertyName: + * the name of the property to retreive + * + * Result: + * the CFTypeRef value of the property, or NULL if the property was + * not specified. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFTypeRef ) +WSMethodInvocationCopyProperty( + WSMethodInvocationRef invocation, + CFStringRef propertyName); + + + +/* + * WSMethodInvocationInvoke() + * + * Discussion: + * Execute the invocation. If the call was successful, the result + * will contain the result of the invocation. If for some reason the + * invocation failed, including out of memory or invalid parameter + * errors, then the result will contain a fault structure. You must + * release the result when you're done with it. + * + * Parameters: + * + * invocation: + * the invocation + * + * Result: + * a CFDictionaryRef containing the result of the execution or a + * fault, and optional debug information. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFDictionaryRef ) +WSMethodInvocationInvoke(WSMethodInvocationRef invocation); + + + +/* + These calls implemented the asynchronous variant of the WSMethodInvocationInvoke. + + The strategy is to schedule the invocation on a given runloop. + When the invocation completes, it calls the specified callback with + the result of the execution. The callback is responsible for + releasing the result ref. Your code is responsible for + unscheduling the invocation from the run loop, whether it completes + or not. + + You can re-schedule an invocation after it completes. + + When you unschedule with the run loop, the CallBack is not called. + + If a network error occurs, the kWSFaultString entry of the result + will contain some textual description of the error, kWSFaultCode + will contain kWSNetworkingFault and kWSFaultExtra will be a + dictionary containing two CFNumber values called kWSStreamErrorDomain + and kWSStreamErrorError. +*/ + + +/* + * WSMethodInvocationCallBackProcPtr + * + * Discussion: + * Prototypes the callback made when an asynchronous invocation + * completes. This callback is passed a reference to the invocation + * just completed, a pointer to private data, and a dictionary that + * contains the return value or falut for this invocation. The + * callback is responsible for releasing the dictionary when it is + * no longer used. + * + * Parameters: + * + * invocation: + * the invocation just completed + * + * info: + * private callback data + * + * outRef: + * a CFDictionaryRef containing the result of the execution or a + * fault, and optional debug information. + */ +typedef CALLBACK_API( void , WSMethodInvocationCallBackProcPtr )(WSMethodInvocationRef invocation, void *info, CFDictionaryRef outRef); +/* + * WSMethodInvocationSetCallBack() + * + * Discussion: + * sets the callback for an asynchronous method invocation. Call + * with a clientCB and context of NULL to clear the invocation + * callback. + * + * Parameters: + * + * invocation: + * the invocation + * + * clientCB: + * a ProcPtr to be called when the invocation completes. + * + * context: + * a pointer to a WSClientContext. The structure will be copied. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationSetCallBack( + WSMethodInvocationRef invocation, + WSMethodInvocationCallBackProcPtr clientCB, + WSClientContext * context); + + + +/* + @function WSMethodInvocationScheduleWithRunLoop + + @discussion Schedules the invocation to execute on the run loop. + + @param invocation + the invocation + + @param runLoop + the run loop upon which to scheduile the invocation + + @param runLoopMode + the run loop mode +*/ +/* + * WSMethodInvocationScheduleWithRunLoop() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationScheduleWithRunLoop( + WSMethodInvocationRef invocation, + CFRunLoopRef runLoop, + CFStringRef runLoopMode); + + + +/* + @function WSMethodInvocationUnscheduleFromRunLoop + + @discussion Unschedules the invocation from a given run loop and + mode. If the invocation has not yet completed, + its callback will not be called. + + + @param invocation + the invocation + + @param runLoop + the run loop upon which to scheduile the invocation + + @param runLoopMode + the run loop mode +*/ +/* + * WSMethodInvocationUnscheduleFromRunLoop() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationUnscheduleFromRunLoop( + WSMethodInvocationRef invocation, + CFRunLoopRef runLoop, + CFStringRef runLoopMode); + + + +/* + Result interrogation. + + If the result is a fault, look in the kWSFaultCode, kWSFaultString + and kWSFaultExtra fields of the resulting dictionary. If not a + fault, kWSMethodInvocationResult will contain the result of the + execution. If debugging information was requested, it will be + available in the dictionary as well. +*/ +/* + * WSMethodResultIsFault() + * + * Discussion: + * returns TRUE if the method invocation result contains a fault. + * + * Parameters: + * + * methodResult: + * the result ref + * + * Result: + * TRUE if the result contains a fault condition + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( Boolean ) +WSMethodResultIsFault(CFDictionaryRef methodResult); + + + +/* + Serialization / Deserialization override support. + + You can add serialization and deserialization callbacks for custom + types, or types not otherwise handled by the framework. Note that these + properties are *not* serialized if the invocation is serialized. + */ + + +/* + * WSMethodInvocationSerializationProcPtr + * + * Discussion: + * Prototypes the callback function for a custom serialization proc. + * This callback is called whenever a type has the given CFTypeID. + * The callback should return an XML snippet that will be understood + * by the server as a correct serialization for a given type. If + * the callback returns NULL, the default serializer will be used. + * + * Parameters: + * + * invocation: + * the invocation currently being serialized + * + * obj: + * the CFTypeRef to be serialized + * + * info: + * private callback data + * + * Result: + * a CFStringRef containing valid XML. The caller of this callback + * will release the string. + */ +typedef CALLBACK_API( CFStringRef , WSMethodInvocationSerializationProcPtr )(WSMethodInvocationRef invocation, CFTypeRef obj, void *info); +/* + * WSMethodInvocationAddSerializationOverride() + * + * Discussion: + * Specifies a callback which will be called to produce the XML that + * represents the serialization of a given type ref. See + * WSDescription.h for a list of CFTypes for which there currently + * exist serializers. If your callback returns NULL, the default + * serializer will be used. + * + * Parameters: + * + * invocation: + * the invocation + * + * objType: + * the CFTypeID of the object + * + * serializationProc: + * the callback called + * + * context: + * a pointer to a WSClientContext. The structure will be copied. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationAddSerializationOverride( + WSMethodInvocationRef invocation, + CFTypeID objType, + WSMethodInvocationSerializationProcPtr serializationProc, + WSClientContext * context); + + + + +/* + * WSMethodInvocationDeserializationProcPtr + * + * Discussion: + * Prototypes the callback function for a custom deserializer. This + * callback is passed a reference to the invocation currently being + * executed, the root of the response parse tree, the current node + * being deserialized, and a pointer to private data. The return + * result should be a valid CFTypeRef object (which will be released + * by the caller) or NULL to allow the default deserializer to act. + * + * Parameters: + * + * invocation: + * the invocation executing + * + * msgRoot: + * the root tree element + * + * deserializeRoot: + * the tree element that needs to be deserialied + * + * info: + * private callback data + * + * Result: + * a CFTypeRef representing the deserialized data, or NULL to allow + * the default deserializers to act. + */ +typedef CALLBACK_API( CFTypeRef , WSMethodInvocationDeserializationProcPtr )(WSMethodInvocationRef invocation, CFXMLTreeRef msgRoot, CFXMLTreeRef deserializeRoot, void *info); +/* + * WSMethodInvocationAddDeserializationOverride() + * + * Discussion: + * Specifies a callback to be made when parsing an XML method + * response. The callback should return a CFTypeRef containing the + * deserialized object value. If the callback returns NULL, the + * default deserializer will be used. + * + * Parameters: + * + * invocation: + * the invocation + * + * typeNamespace: + * the fully resolved namespace for a specific type. If NULL, the + * default namespace will be used. For example, this field could + * be: CFSTR("http://www.w3.org/2001/XMLSchema-instance"). + * + * typeName: + * the non-qualified type name. This parameter must not be NULL. + * + * deserializationProc: + * a ProcPtr to be called to perform the deserialization + * + * context: + * a pointer to a WSClientContext. The structure will be copied. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +WSMethodInvocationAddDeserializationOverride( + WSMethodInvocationRef invocation, + CFStringRef typeNamespace, + CFStringRef typeName, + WSMethodInvocationDeserializationProcPtr deserializationProc, + WSClientContext * context); + + + +#if PRAGMA_ENUM_ALWAYSINT + #pragma enumsalwaysint reset + #ifdef __WSMETHODINVOCATION__RESTORE_TWOBYTEINTS + #pragma fourbyteints off + #endif +#elif PRAGMA_ENUM_OPTIONS + #pragma option enum=reset +#elif defined(__WSMETHODINVOCATION__RESTORE_PACKED_ENUMS) + #pragma options(pack_enums) +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif |