summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/WSMethodInvocation.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/WSMethodInvocation.h
downloadarchived-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.h1012
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