soup协议中的soap结构体
struct SOAP_STD_API soap
{ short state;/* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */
short version;/* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */
soap_mode mode;
soap_mode imode;
soap_mode omode;
const char *float_format;/* user-definable format string for floats (<1024 chars) */
const char *double_format;/* user-definable format string for doubles (<1024 chars) */
const char *dime_id_format;/* user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */
const char *http_version;/* HTTP version used "1.0" or "1.1" */
const char *http_content;/* optional custom response content type (with SOAP_FILE) */
const char *encodingStyle;/* default = NULL which means that SOAP encoding is used */
const char *actor;/* SOAP-ENV:actor or role attribute value */
const char *lang;/* xml:lang attribute value of SOAP-ENV:Text */
int recv_timeout;/* when > 0, gives socket recv timeout in seconds, < 0 in usec */
int send_timeout;/* when > 0, gives socket send timeout in seconds, < 0 in usec */
int connect_timeout;/* when > 0, gives socket connect() timeout in seconds, < 0 in usec */
int accept_timeout;/* when > 0, gives socket accept() timeout in seconds, < 0 in usec */
int socket_flags;/* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */
int connect_flags;/* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */
int bind_flags;/* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
int accept_flags;/* accept() SOL_SOCKET sockopt flags */
unsigned short linger_time;/* linger time for SO_LINGER option */
const struct Namespace *namespaces;/* Pointer to global namespace mapping table */
struct Namespace *local_namespaces;/* Local namespace mapping table */
struct soap_nlist *nlist;/* namespace stack */
struct soap_blist *blist;/* block allocation stack */
struct soap_clist *clist;/* class instance allocation list */
void *alist;/* memory allocation (malloc) list */
struct soap_ilist *iht[SOAP_IDHASH];
struct soap_plist *pht[SOAP_PTRHASH];
struct soap_pblk *pblk;/* plist block allocation */
short pidx;/* plist block allocation */
struct SOAP_ENV__Header *header;
struct SOAP_ENV__Fault *fault;
int idnum;
void *user;/* to pass user-defined da<wbr>ta */<br>
struct soap_plugin *plugins;/* linked list of plug-in da<wbr>ta */<br>
char *userid;/* HTTP Basic authorization userid */<br>
char *passwd;/* HTTP Basic authorization passwd */<br>
int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t);<br>
int (*fget)(struct soap*);<br>
int (*fput)(struct soap*);<br>
int (*fdel)(struct soap*);<br>
int (*fhead)(struct soap*);<br>
int (*fform)(struct soap*);<br>
int (*fposthdr)(struct soap*, const char*, const char*);<br>
int (*fresponse)(struct soap*, int, size_t);<br>
int (*fparse)(struct soap*);<br>
int (*fparsehdr)(struct soap*, const char*, const char*);<br>
int (*fheader)(struct soap*);<br>
int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr);<br>
int (*fconnect)(struct soap*, const char*, const char*, int);<br>
int (*fdisconnect)(struct soap*);<br>
int (*fclosesocket)(struct soap*, SOAP_SOCKET);<br>
int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int);<br>
SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int);<br>
SOAP_SOCKET (*faccept)(struct soap*, SOAP_SOCKET, struct sockaddr*, int *n);<br>
int (*fclose)(struct soap*);<br>
int (*fsend)(struct soap*, const char*, size_t);<br>
size_t (*frecv)(struct soap*, char*, size_t);<br>
int (*fpoll)(struct soap*);<br>
void (*fseterror)(struct soap*, const char **c, const char **s);<br>
int (*fignore)(struct soap*, const char*);<br>
int (*fserveloop)(struct soap*);<br>
void *(*fplugin)(struct soap*, const char*);<br>
void *(*fmalloc)(struct soap*, size_t);<br>
#ifndef WITH_LEANER<br>
int (*fprepareinit)(struct soap*);<br>
int (*fpreparesend)(struct soap*, const char*, size_t);<br>
int (*fpreparerecv)(struct soap*, const char*, size_t);<br>
int (*fpreparefinal)(struct soap*);<br>
void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);<br>
void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);<br>
void (*fdimereadclose)(struct soap*, void*);<br>
void (*fdimewriteclose)(struct soap*, void*);<br>
size_t (*fdimeread)(struct soap*, void*, char*, size_t);<br>
int (*fdimewrite)(struct soap*, void*, const char*, size_t);<br>
void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*);<br>
void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding);<br>
void (*fmimereadclose)(struct soap*, void*);<br>
void (*fmimewriteclose)(struct soap*, void*);<br>
size_t (*fmimeread)(struct soap*, void*, char*, size_t);<br>
int (*fmimewrite)(struct soap*, void*, const char*, size_t);<br>
#endif<br>
SOAP_SOCKET master;<br>
SOAP_SOCKET socket;<br>
#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT)<br>
std::ostream *os;<br>
std::istream *is;<br>
#else<br>
void *os;/* preserve struct size */<br>
void *is;/* preserve struct size */<br>
#endif<br>
#ifndef UNDER_CE<br>
int sendfd;<br>
int recvfd;<br>
#else<br>
FILE *sendfd;<br>
FILE *recvfd;<br>
#endif<br>
size_t bufidx;/* index in soap.buf[] */<br>
size_t buflen;/* length of soap.buf[] content */<br>
soap_wchar ahead;/* parser lookahead */<br>
short cdata;/* CDATA parser state */<br>
short body;/* parsed XML element has a body or not */<br>
unsigned int level;/* XML nesting level */<br>
size_t count;/* message length counter */<br>
size_t length;/* message length as set by HTTP header */<br>
char *labbuf;/* look-aside buffer */<br>
size_t lablen;/* look-aside buffer allocated length */<br>
size_t labidx;/* look-aside buffer index to available part */<br>
char buf[SOAP_BUFLEN];/* send and receive buffer */<br>
char msgbuf[1024];/* in/out buffer for HTTP/MIME headers >=1024 bytes */<br>
char tmpbuf[1024];/* in/out buffer for HTTP/MIME headers, simpleType values, element and attribute tag names, and DIME must be >=1024 bytes */<br>
char tag[SOAP_TAGLEN];<br>
char id[SOAP_TAGLEN];<br>
char href[SOAP_TAGLEN];<br>
char type[SOAP_TAGLEN];<br>
char arrayType[SOAP_TAGLEN];<br>
char arraySize[SOAP_TAGLEN];<br>
char arrayOffset[SOAP_TAGLEN];<br>
short other;<br>
short position;<br>
int positions[SOAP_MAXDIMS];<br>
short root;<br>
struct soap_attribute *attributes;/* attribute list */<br>
short encoding;/* when set, output encodingStyle */<br>
short mustUnderstand;/* a mustUnderstand element was parsed or is output */<br>
short null;/* parsed XML is xsi:nil */<br>
short ns;/* when not set, output full xmlns bindings */<br>
short part;/* parsing state */<br>
short alloced;<br>
short peeked;<br>
size_t chunksize;<br>
size_t chunkbuflen;<br>
char endpoint[SOAP_TAGLEN];<br>
char path[SOAP_TAGLEN];<br>
char host[SOAP_TAGLEN];<br>
char *act<wbr>ion;<br>
char *authrealm;/* HTTP authentication realm */<br>
char *prolog;/* XML declaration prolog */<br>
unsigned long ip;/* IP number */<br>
int port;/* port number */<br>
short keep_alive;/* connection should be kept open */<br>
short tcp_keep_alive;/* enable SO_KEEPALIVE */<br>
unsigned int tcp_keep_idle; /* set TCP_KEEPIDLE */<br>
unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */<br>
unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */<br>
unsigned int max_keep_alive; /* maximum keep-alive session (default=100) */<br>
const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */<br>
const char *proxy_host;/* Proxy Server host name */<br>
int proxy_port;/* Proxy Server port (default = 8080) */<br>
const char *proxy_userid;/* Proxy Authorization user name */<br>
const char *proxy_passwd;/* Proxy Authorization password */<br>
const char *proxy_from;/* X-Forwarding-For header returned by proxy */<br>
int status;/* -1 when request, else error co<wbr>de to be returned by server */<br>
int error;<br>
int errmode;<br>
int errnum;<br>
#ifndef WITH_LEANER<br>
struct soap_dom_element *dom;<br>
struct soap_dime dime;<br>
struct soap_mime mime;<br>
struct soap_xlist *xlist;<br>
#endif<br>
#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)<br>
const char *logfile[SOAP_MAXLOGS];<br>
FILE *fdebug[SOAP_MAXLOGS];<br>
struct soap_mlist *mht[SOAP_PTRHASH];<br>
#endif<br>
#ifndef WITH_LEAN<br>
const char *c14ninclude;<br>
const char *c14nexclude;<br>
struct soap_cookie *cookies;<br>
const char *cookie_domain;<br>
const char *cookie_path;<br>
int cookie_max;<br>
#endif<br>
#ifndef WITH_NOIO<br>
int ipv6_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */<br>
char* ipv4_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */<br>
int ipv4_multicast_ttl; /* multicast scope */<br>
#ifdef WITH_IPV6<br>
struct sockaddr_storage peer;/* IPv6: set by soap_accept and by UDP recv */<br>
#else<br>
struct sockaddr_in peer;/* IPv4: set by soap_connect/soap_accept and by UDP recv */<br>
#endif<br>
#endif<br>
size_t peerlen;<br>
#ifdef WITH_OPENSSL<br>
int (*fsslauth)(struct soap*);<br>
int (*fsslverify)(int, X509_STORE_CTX*);<br>
BIO *bio;<br>
SSL *ssl;<br>
SSL_CTX *ctx;<br>
SSL_SESSION *session;<br>
#else<br>
void *fsslauth;/* dummy members, to preserve struct size */<br>
void *fsslverify;<br>
void *bio;<br>
void *ssl;<br>
void *ctx;<br>
void *session;<br>
#endif<br>
unsigned short ssl_flags;<br>
const char *keyfile;<br>
const char *password;<br>
const char *dhfile;<br>
const char *cafile;<br>
const char *capath;<br>
const char *crlfile;<br>
const char *randfile;<br>
char session_host[SOAP_TAGLEN];<br>
int session_port;<br>
#ifdef WITH_C_LOCALE<br>
locale_t c_locale;/* set to C locale by default */<br>
#else<br>
void *c_locale;<br>
#endif<br>
#ifdef WITH_ZLIB<br>
z_stream *d_stream;/* decompression stream */<br>
uLong z_crc;/* internal gzip crc */<br>
#else<br>
void *d_stream;/* dummy members, to preserve struct size */<br>
soap_int32 z_crc;<br>
#endif<br>
short zlib_state;/* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */<br>
short zlib_in;/* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */<br>
short zlib_out;/* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */<br>
char *z_buf;/* buffer */<br>
size_t z_buflen;<br>
unsigned short z_level;/* compression level to be used (0=none, 1=fast to 9=best) */<br>
float z_ratio_in;/* detected compression ratio compressed_length/length of inbound message */<br>
float z_ratio_out;/* detected compression ratio compressed_length/length of outbound message */<br>
#ifdef WMW_RPM_IO<br>
void *rpmreqid;<br>
#endif<br>
#ifdef __cplusplus<br>
soap();<br>
soap(soap_mode);<br>
soap(soap_mode, soap_mode);<br>
soap(struct soap&);<br>
virtual ~soap();<br>
#else<br>
void (*dummy)();<br>
#endif<br>
};</wbr></wbr></wbr></wbr>