soap協議中的soap結構體

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 data */
  struct soap_plugin *plugins; /* linked list of plug-in data */
  char *userid;   /* HTTP Basic authorization userid */
  char *passwd;   /* HTTP Basic authorization passwd */
  int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t);
  int (*fget)(struct soap*);
  int (*fput)(struct soap*);
  int (*fdel)(struct soap*);
  int (*fhead)(struct soap*);
  int (*fform)(struct soap*);
  int (*fposthdr)(struct soap*, const char*, const char*);
  int (*fresponse)(struct soap*, int, size_t);
  int (*fparse)(struct soap*);
  int (*fparsehdr)(struct soap*, const char*, const char*);
  int (*fheader)(struct soap*);
  int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr);
  int (*fconnect)(struct soap*, const char*, const char*, int);
  int (*fdisconnect)(struct soap*);
  int (*fclosesocket)(struct soap*, SOAP_SOCKET);
  int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int);
  SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int);
  SOAP_SOCKET (*faccept)(struct soap*, SOAP_SOCKET, struct sockaddr*, int *n);
  int (*fclose)(struct soap*);
  int (*fsend)(struct soap*, const char*, size_t);
  size_t (*frecv)(struct soap*, char*, size_t);
  int (*fpoll)(struct soap*);
  void (*fseterror)(struct soap*, const char **c, const char **s);
  int (*fignore)(struct soap*, const char*);
  int (*fserveloop)(struct soap*);
  void *(*fplugin)(struct soap*, const char*);
  void *(*fmalloc)(struct soap*, size_t);
#ifndef WITH_LEANER
  int (*fprepareinit)(struct soap*);
  int (*fpreparesend)(struct soap*, const char*, size_t);
  int (*fpreparerecv)(struct soap*, const char*, size_t);
  int (*fpreparefinal)(struct soap*);
  void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);
  void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);
  void (*fdimereadclose)(struct soap*, void*);
  void (*fdimewriteclose)(struct soap*, void*);
  size_t (*fdimeread)(struct soap*, void*, char*, size_t);
  int (*fdimewrite)(struct soap*, void*, const char*, size_t);
  void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*);
  void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding);
  void (*fmimereadclose)(struct soap*, void*);
  void (*fmimewriteclose)(struct soap*, void*);
  size_t (*fmimeread)(struct soap*, void*, char*, size_t);
  int (*fmimewrite)(struct soap*, void*, const char*, size_t);
#endif
  SOAP_SOCKET master;
  SOAP_SOCKET socket;
#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT)
  std::ostream *os;
  std::istream *is;
#else
  void *os;  /* preserve struct size */
  void *is;  /* preserve struct size */
#endif
#ifndef UNDER_CE
  int sendfd;
  int recvfd;
#else
  FILE *sendfd;
  FILE *recvfd;
#endif
  size_t bufidx; /* index in soap.buf[] */
  size_t buflen; /* length of soap.buf[] content */
  soap_wchar ahead; /* parser lookahead */
  short cdata;  /* CDATA parser state */
  short body;  /* parsed XML element has a body or not */
  unsigned int level; /* XML nesting level */
  size_t count;  /* message length counter */
  size_t length; /* message length as set by HTTP header */
  char *labbuf;  /* look-aside buffer */
  size_t lablen; /* look-aside buffer allocated length */
  size_t labidx; /* look-aside buffer index to available part */
  char buf[SOAP_BUFLEN];/* send and receive buffer */
  char msgbuf[1024]; /* in/out buffer for HTTP/MIME headers >=1024 bytes */
  char tmpbuf[1024]; /* in/out buffer for HTTP/MIME headers, simpleType values, element and attribute tag names, and DIME must be >=1024 bytes */
  char tag[SOAP_TAGLEN];
  char id[SOAP_TAGLEN];
  char href[SOAP_TAGLEN];
  char type[SOAP_TAGLEN];
  char arrayType[SOAP_TAGLEN];
  char arraySize[SOAP_TAGLEN];
  char arrayOffset[SOAP_TAGLEN];
  short other;
  short position;
  int positions[SOAP_MAXDIMS];
  short root;
  struct soap_attribute *attributes; /* attribute list */
  short encoding; /* when set, output encodingStyle */
  short mustUnderstand; /* a mustUnderstand element was parsed or is output */
  short null;  /* parsed XML is xsi:nil */
  short ns;  /* when not set, output full xmlns bindings */
  short part;  /* parsing state */
  short alloced;
  short peeked;
  size_t chunksize;
  size_t chunkbuflen;
  char endpoint[SOAP_TAGLEN];
  char path[SOAP_TAGLEN];
  char host[SOAP_TAGLEN];
  char *action;
  char *authrealm;  /* HTTP authentication realm */
  char *prolog;   /* XML declaration prolog */
  unsigned long ip;  /* IP number */
  int port;   /* port number */
  short keep_alive;  /* connection should be kept open */
  short tcp_keep_alive;  /* enable SO_KEEPALIVE */
  unsigned int tcp_keep_idle;  /* set TCP_KEEPIDLE */
  unsigned int tcp_keep_intvl;  /* set TCP_KEEPINTVL */
  unsigned int tcp_keep_cnt;  /* set TCP_KEEPCNT */
  unsigned int max_keep_alive;  /* maximum keep-alive session (default=100) */
  const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */
  const char *proxy_host; /* Proxy Server host name */
  int proxy_port;  /* Proxy Server port (default = 8080) */
  const char *proxy_userid; /* Proxy Authorization user name */
  const char *proxy_passwd; /* Proxy Authorization password */
  const char *proxy_from; /* X-Forwarding-For header returned by proxy */
  int status;   /* -1 when request, else error code to be returned by server */
  int error;
  int errmode;
  int errnum;
#ifndef WITH_LEANER
  struct soap_dom_element *dom;
  struct soap_dime dime;
  struct soap_mime mime;
  struct soap_xlist *xlist;
#endif
#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)
  const char *logfile[SOAP_MAXLOGS];
  FILE *fdebug[SOAP_MAXLOGS];
  struct soap_mlist *mht[SOAP_PTRHASH];
#endif
#ifndef WITH_LEAN
  const char *c14ninclude;
  const char *c14nexclude;
  struct soap_cookie *cookies;
  const char *cookie_domain;
  const char *cookie_path;
  int cookie_max;
#endif
#ifndef WITH_NOIO
  int ipv6_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */
  char* ipv4_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */
  int ipv4_multicast_ttl; /* multicast scope */
#ifdef WITH_IPV6
  struct sockaddr_storage peer; /* IPv6: set by soap_accept and by UDP recv */
#else
  struct sockaddr_in peer; /* IPv4: set by soap_connect/soap_accept and by UDP recv */
#endif
#endif
  size_t peerlen;
#ifdef WITH_OPENSSL
  int (*fsslauth)(struct soap*);
  int (*fsslverify)(int, X509_STORE_CTX*);
  BIO *bio;
  SSL *ssl;
  SSL_CTX *ctx;
  SSL_SESSION *session;
#else
  void *fsslauth;  /* dummy members, to preserve struct size */
  void *fsslverify;
  void *bio;
  void *ssl;
  void *ctx;
  void *session;
#endif
  unsigned short ssl_flags;
  const char *keyfile;
  const char *password;
  const char *dhfile;
  const char *cafile;
  const char *capath;
  const char *crlfile;
  const char *randfile;
  char session_host[SOAP_TAGLEN];
  int session_port;
#ifdef WITH_C_LOCALE
  locale_t c_locale;  /* set to C locale by default */
#else
  void *c_locale;
#endif
#ifdef WITH_ZLIB
  z_stream *d_stream;  /* decompression stream */
  uLong z_crc;   /* internal gzip crc */
#else
  void *d_stream;  /* dummy members, to preserve struct size */
  soap_int32 z_crc;
#endif
  short zlib_state;  /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */
  short zlib_in;  /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
  short zlib_out;  /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
  char *z_buf;   /* buffer */
  size_t z_buflen;
  unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */
  float z_ratio_in;  /* detected compression ratio compressed_length/length of inbound message */
  float z_ratio_out;  /* detected compression ratio compressed_length/length of outbound message */
#ifdef WMW_RPM_IO
  void *rpmreqid;
#endif
#ifdef __cplusplus
  soap();
  soap(soap_mode);
  soap(soap_mode, soap_mode);
  soap(struct soap&);
  virtual ~soap();
#else
  void (*dummy)();
#endif
};



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章