mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-14 01:49:05 +00:00
merged new xmlrpc-c revision 1472 from https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/trunk
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8545 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
120
libs/xmlrpc-c/src/method.h
Normal file
120
libs/xmlrpc-c/src/method.h
Normal file
@@ -0,0 +1,120 @@
|
||||
#ifndef METHOD_H_INCLUDED
|
||||
#define METHOD_H_INCLUDED
|
||||
|
||||
#include "xmlrpc-c/base.h"
|
||||
|
||||
struct xmlrpc_signature {
|
||||
struct xmlrpc_signature * nextP;
|
||||
const char * retType;
|
||||
/* Name of the XML-RPC element that represents the return value
|
||||
type, e.g. "int" or "dateTime.iso8601"
|
||||
*/
|
||||
unsigned int argCount;
|
||||
/* Number of arguments method takes */
|
||||
unsigned int argListSpace;
|
||||
/* Number of slots that exist in the argList[] (i.e. memory is
|
||||
allocated)
|
||||
*/
|
||||
const char ** argList;
|
||||
/* Array of size 'argCount'. argList[i] is the name of the type
|
||||
of argument i. Like 'retType', e.g. "string".
|
||||
|
||||
The strings are constants, not malloc'ed.
|
||||
*/
|
||||
};
|
||||
|
||||
typedef struct xmlrpc_signatureList {
|
||||
/* A list of signatures for a method. Each signature describes one
|
||||
alternative form of invoking the method (a
|
||||
single method might have multiple forms, e.g. one takes two integer
|
||||
arguments; another takes a single string).
|
||||
*/
|
||||
struct xmlrpc_signature * firstSignatureP;
|
||||
} xmlrpc_signatureList;
|
||||
|
||||
struct xmlrpc_registry {
|
||||
bool introspectionEnabled;
|
||||
struct xmlrpc_methodList * methodListP;
|
||||
xmlrpc_default_method defaultMethodFunction;
|
||||
void * defaultMethodUserData;
|
||||
xmlrpc_preinvoke_method preinvokeFunction;
|
||||
void * preinvokeUserData;
|
||||
xmlrpc_server_shutdown_fn * shutdownServerFn;
|
||||
/* Function that can be called to shut down the server that is
|
||||
using this registry. NULL if none.
|
||||
*/
|
||||
void * shutdownContext;
|
||||
/* Context for _shutdown_server_fn -- understood only by
|
||||
that function, passed to it as argument.
|
||||
*/
|
||||
xmlrpc_dialect dialect;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/*----------------------------------------------------------------------------
|
||||
Everything a registry knows about one XML-RPC method
|
||||
-----------------------------------------------------------------------------*/
|
||||
/* One of the methodTypeX fields is NULL and the other isn't.
|
||||
(The reason there are two is backward compatibility. Old
|
||||
programs set up the registry with Type 1; modern ones set it up
|
||||
with Type 2.
|
||||
*/
|
||||
xmlrpc_method1 methodFnType1;
|
||||
/* The method function, if it's type 1. Null if it's not */
|
||||
xmlrpc_method2 methodFnType2;
|
||||
/* The method function, if it's type 2. Null if it's not */
|
||||
void * userData;
|
||||
/* Passed to method function */
|
||||
struct xmlrpc_signatureList * signatureListP;
|
||||
/* Stuff returned by system method system.methodSignature.
|
||||
Empty list doesn't mean there are no valid forms of calling the
|
||||
method -- just that the registry declines to state.
|
||||
*/
|
||||
const char * helpText;
|
||||
/* Stuff returned by system method system.methodHelp */
|
||||
} xmlrpc_methodInfo;
|
||||
|
||||
typedef struct xmlrpc_methodNode {
|
||||
struct xmlrpc_methodNode * nextP;
|
||||
const char * methodName;
|
||||
xmlrpc_methodInfo * methodP;
|
||||
} xmlrpc_methodNode;
|
||||
|
||||
typedef struct xmlrpc_methodList {
|
||||
xmlrpc_methodNode * firstMethodP;
|
||||
xmlrpc_methodNode * lastMethodP;
|
||||
} xmlrpc_methodList;
|
||||
|
||||
void
|
||||
xmlrpc_methodCreate(xmlrpc_env * const envP,
|
||||
xmlrpc_method1 methodFnType1,
|
||||
xmlrpc_method2 methodFnType2,
|
||||
void * const userData,
|
||||
const char * const signatureString,
|
||||
const char * const helpText,
|
||||
xmlrpc_methodInfo ** const methodPP);
|
||||
|
||||
void
|
||||
xmlrpc_methodDestroy(xmlrpc_methodInfo * const methodP);
|
||||
|
||||
void
|
||||
xmlrpc_methodListCreate(xmlrpc_env * const envP,
|
||||
xmlrpc_methodList ** const methodListPP);
|
||||
|
||||
void
|
||||
xmlrpc_methodListDestroy(xmlrpc_methodList * methodListP);
|
||||
|
||||
void
|
||||
xmlrpc_methodListLookupByName(xmlrpc_methodList * const methodListP,
|
||||
const char * const methodName,
|
||||
xmlrpc_methodInfo ** const methodPP);
|
||||
|
||||
void
|
||||
xmlrpc_methodListAdd(xmlrpc_env * const envP,
|
||||
xmlrpc_methodList * const methodListP,
|
||||
const char * const methodName,
|
||||
xmlrpc_methodInfo * const methodP);
|
||||
|
||||
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user