Genivia Home Documentation
ISAPI_Server.cpp File Reference

updated Mon Feb 22 2016
 
Classes | Functions | Variables
ISAPI_Server.cpp File Reference
#include <memory>
#include <strstream>
#include <cassert>
#include "ISAPI_Server.h"
#include "isapistream.h"
#include "ISAPI_HttpContext.h"
#include "ISAPI_SoapServerFactory.h"
Include dependency graph for ISAPI_Server.cpp:

Classes

class  SoapTransaction
 

Functions

static string MakeDllName (EXTENSION_CONTROL_BLOCK *pECB, const char *pszDllName)
 

helper function to build full path to dll.

More...
 
static int mod_gsoap_plugin_copy (struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src)
 
static void mod_gsoap_delete (struct soap *soap, struct soap_plugin *p)
 
static int mod_gsoap_plugin (struct soap *soap, struct soap_plugin *p, void *arg)
 
static int http_post_header (soap *soap, const char *key, const char *value)
 
static int http_response (soap *soap, int soap_error, size_t count)
 
static int fsend (soap *soap, const char *pBuf, size_t len)
 
static size_t frecv (soap *soap, char *pBuf, size_t len)
 
static DWORD serve (const mod_gsoap_interface *pInterface, ISAPI_HttpRequest &req, HttpResponse res, isapistream &is)
 
static void SendErrorMessage (isapistream &is, const char *pszError)
 

Variables

static const char * GSOAP_ID = "mod_gsoap isapi extension 0.0.2"
 
static const char * crlf = "\r\n"
 

Detailed Description

Implementation of the ISAPI_Server class

Author
Christian Aberger Copyright (C) 2001 WebWare (http://www.webware.at) Load a gosap server dll dynamically (if not already loaded) and serve the request. See http://www.aberger.at/SOAP for documentation.

Function Documentation

static size_t frecv ( soap *  soap,
char *  pBuf,
size_t  len 
)
static

gsoap function that requests the next piece of data from us

static int fsend ( soap *  soap,
const char *  pBuf,
size_t  len 
)
static

gsoap function to append the data to send to our output buffer

static int http_post_header ( soap *  soap,
const char *  key,
const char *  value 
)
static

Emits HTTP key: val header entries.

Returns
SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_post_header.

IIS handles most of the headers (Connection etc.) itself. The main thing we need to extract is SOAPAction.

static int http_response ( soap *  soap,
int  soap_error,
size_t  count 
)
static

set the http - response code from the soap error message.

static string MakeDllName ( EXTENSION_CONTROL_BLOCK *  pECB,
const char *  pszDllName 
)
static

helper function to build full path to dll.

Given a dllname make a fully qualified path to the dll in the current isapi directory

Parameters
pECBthe Extension Control Block of the Request
pszDllNamethe unqualified dllname
static void mod_gsoap_delete ( struct soap *  soap,
struct soap_plugin *  p 
)
static
static int mod_gsoap_plugin ( struct soap *  soap,
struct soap_plugin *  p,
void *  arg 
)
static
static int mod_gsoap_plugin_copy ( struct soap *  soap,
struct soap_plugin *  dst,
struct soap_plugin *  src 
)
static
static void SendErrorMessage ( isapistream is,
const char *  pszError 
)
static
static DWORD serve ( const mod_gsoap_interface pInterface,
ISAPI_HttpRequest req,
HttpResponse  res,
isapistream is 
)
static

Variable Documentation

const char* crlf = "\r\n"
static
const char* GSOAP_ID = "mod_gsoap isapi extension 0.0.2"
static