/* | |
* Copyright 2003-2004 The Apache Software Foundation. | |
* (c) Copyright IBM Corp. 2004, 2006 All Rights Reserved | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
* | |
* | |
* | |
*/ | |
#ifndef AXIS_INCLUDED | |
#define AXIS_INCLUDED | |
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ | |
/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE */ | |
/* ---------------------------------------------------------------- */ | |
/* THIS HEADER FILE PATTERNED AFTER CORRESPONDING hpp HEADER FILE. */ | |
/* CHANGES TO hpp HEADER FILE MAY NEED TO BE PROPAGATED HERE AND IN */ | |
/* THE IMPLEMEMTATION OF THE APIS. */ | |
/* ---------------------------------------------------------------- */ | |
/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE */ | |
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ | |
#include <axis/GDefine.h> | |
#include <axis/TypeMapping.h> | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
/** | |
* @file Axis.h | |
*/ | |
/** | |
* @enum AXISC_TRACE_TYPE | |
* Trace types | |
*/ | |
typedef enum | |
{ | |
AXISC_TRACE_TYPE_ENTRY=0, | |
AXISC_TRACE_TYPE_EXIT=1, | |
AXISC_TRACE_TYPE_EXCEPTION=2, | |
AXISC_TRACE_TYPE_DEBUG=3 | |
} AXISC_TRACE_TYPE; | |
/** | |
* | |
* Contains methods to initialize and terminate the Axis runtime. Creating a stub also initializes | |
* the Axis runtime and deleting the stub terminates it. So simple applications that only ever | |
* use one stub at a time do not need to call these methods. More complicated applications that | |
* initialize multiple stubs, use them and delete them later, should initialize Axis at the start | |
* of their application using axiscInitializeAxis and terminate Axis at the very end of their | |
* application with axiscTerminate. Applications that use Axis in multiple threads should also | |
* call axiscInitializeAxis and axiscTerminate. | |
*/ | |
/** | |
* Initializes the Axis runtime. | |
* @param bIsServer should be set to false for client applications. | |
* @return AXISC_SUCCESS or AXISC_FAIL to indicate success or fail | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscAxisInitialize(AxiscBool bIsServer); | |
/** | |
* Terminates the Axis runtime. | |
* @return AXISC_SUCCESS or AXISC_FAIL to indicate success or fail | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscAxisTerminate(); | |
/** | |
* Deletes storage allocated by the Axis engine, that is no longer required | |
* by the customer application. | |
* | |
* @param pValue Pointer to storage to be reclaimed | |
* @param type The XSDTYPE of the storage item to be deleted. | |
* @return AXISC_SUCCESS or AXISC_FAIL to indicate success or fail | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscAxisDelete(void * pValue, | |
AXISC_XSDTYPE type); | |
/** | |
* Allocates storage to be used by Axis engine. All proxy code and allocated | |
* storage required by the client for basic types must use this | |
* function in order that it may be freed by proxy code or the Axis engine. | |
* | |
* @param type The XSDTYPE of the storage to be allocated. | |
* @param size - size of storage to be allocated | |
* @return pointer to allocated storage | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void * axiscAxisNew(AXISC_XSDTYPE type, | |
int size); | |
/** | |
* Deletes storage allocated by the Axis engine representing a C-type array. | |
* This is an internal API used by the generated stubs. The elements in array are | |
* the responsibility of the stubs to clean up. | |
* | |
* @param pValue Pointer to storage to be reclaimed | |
* @return AXISC_SUCCESS or AXISC_FAIL to indicate success or fail | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscAxisDeleteCArray(void ** pValue); | |
/** | |
* Allocates storage to be used by stubs. The storage is a C-type array. | |
* This is an internal API used by the generated stubs. | |
* | |
* @param size - size of array to be allocated | |
* @return pointer to allocated storage | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void ** axiscAxisNewCArray(int size); | |
/** | |
* Registers a function that will be invoked to handle Axis engine | |
* exceptions. The function will be called with two parameters, | |
* the error code and the error message, if any. | |
* | |
* @param fp - pointer to exception handler function. | |
*/ | |
typedef void (* AXIS_EXCEPTION_HANDLER_FUNCT)(int exceptionCode, const char *exceptionString, AXISCHANDLE pSoapFault, void *faultDetail); | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisRegisterExceptionHandler(AXIS_EXCEPTION_HANDLER_FUNCT); | |
/** | |
* Invokes the registered exception handler. If an exception handler was not | |
* registered, the errorCode and errorString are printed to stderr. | |
* | |
* @param errorCode - error code. | |
* @param errorString - error string. | |
* @param pSoapFault - pointer to soap fault object. If no fault, param will be set to NULL. | |
* @param faultDetail - pointer to fault detail. If no fault detail, param will be set to NULL. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisInvokeExceptionHandler(int exceptionCode, | |
const char *exceptionString, | |
AXISCHANDLE pSoapFault, | |
void *faultDetail); | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisGenerateElementMissingException(const char *s); | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisGenerateRedundantElementException(const char *s); | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisGenerateUnknownElementException(const char *s); | |
/** | |
* Start Axis logging. This must be done prior to any activiy in order to propagate | |
* logging attributes to parser and transport. If there are active transports and | |
* parsers, you will not get trace records other than those associated with the | |
* the engine and newly instantiated transports and parsers. | |
* | |
* @param logFilePath Path to where trace records are written to. | |
* @param filter Trace filter. The string filter is a semicolon delimited string | |
* of possible filters. Possible filters include: | |
* | |
* stub - show trace records generated by stubs | |
* engine - show trace records generated by engine | |
* parser - show trace records generated by parser | |
* transport - show trace records generated by transport | |
* noEntryExit - do not show entry/exit trace records | |
* | |
* The default filter is "stub;engine;parser;transport". | |
* Specifying a NULL pointer or NULL string is equivalent to | |
* requesting the defailt filter. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscAxisStartTrace(const char* logFilePath, const char *logFilter); | |
/** | |
* Stop Axis logging. This should be done as the last step when everything has been cleaned | |
* up. Otherwise, active transports and parsers will continue to trace. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisStopTrace(); | |
/** | |
* Log trace. | |
* | |
* @param functionName - function for which trace record is being written. | |
* @param fmt - format as defined in printf and related functions. | |
* @param ... - variable nuumber of parameters. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscAxisWriteTrace(AXISC_TRACE_TYPE type, const char* functionName, const char * fmt, ...); | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif |