blob: 8de247d30092a223c83413a947068dba9a280f88 [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* 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 AXIS2_WINDOWS_H
#define AXIS2_WINDOWS_H
/**
* @file axis2_unix.h
* @brief axis2 unix platform specific interface
*/
#include <axis2_defines.h>
#ifdef __cplusplus
extern "C"
{
#endif
/** @defgroup axis2_unix Platform Specific
* @ingroup axis2_platforms_unix
* @{
*/
/*enum platform_error_codes
{
PLATFORM_ERROR_UUID_NO_ADDRESS = 0,
PLATFORM_ERROR_OUT_OF_MEMORY = 1
};*/
#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */
#include <windows.h>
/*for file access check*/
#include <io.h>
#include <sys/stat.h>
/*for network handling*/
#include <winsock2.h>
#include <fcntl.h>
#include <Mswsock.h>
/* for time */
#include <time.h>
#include <sys/timeb.h>
/* get opt */
#include <axis2_getopt_windows.h>
/***************************************************************
* Default paths to shared library/DLLs and files
***************************************************************
*/
#define AXIS2_PLATFORM_DEFAULT_DEPLOY_PATH ""
#define AXIS2_PLATFORM_XMLPARSER_PATH "axis2_parser.dll"
#define AXIS2_PLATFORM_TRANSPORTHTTP_PATH "http_transport.dll"
#define AXIS2_PLATFORM_CHANNEL_PATH "http_channel.dll"
#define AXIS2_PLATFORM_SSLCHANNEL_PATH "Unknown"
#define AXIS2_PLATFORM_LOG_PATH "" /*/usr/local/axis2/log/axis2_log*/
#define AXIS2_PLATFORM_CLIENTLOG_PATH "" /* /usr/local/axis2/log/axis2_client_log*/
#define AXIS2_PLATFORM_CONFIG_PATH "" /* /etc/axiscpp.conf */
#define AXIS2_PLATFORM_SECUREINFO ""
/**
* Resource that contains the configuration
*/
#define AXIS2_CONFIGURATION_RESOURCE "" /* should be set */
// =============================================================
// Library loading and procedure resolution
// =============================================================
#define DLHandler HINSTANCE
#define RTLD_LAZY 0 // not sure this is needed?
#define AXIS2_PLATFORM_LOADLIBINIT()
#define AXIS2_PLATFORM_LOADLIB(_lib) /*LoadLibrary(_lib) */ callLoadLib(_lib)
#define AXIS2_PLATFORM_UNLOADLIB FreeLibrary
#define AXIS2_PLATFORM_GETPROCADDR GetProcAddress
#define AXIS2_PLATFORM_LOADLIBEXIT()
#define AXIS2_PLATFORM_LOADLIB_ERROR ""
#define AXIS2_DLHANDLER void*
// =============================================================
// National Language Support
// =============================================================
// STRTOASC is to translate single byte 'native' character representation to ASCII
// ASCTOSTR is to translate single byte ascii representation to 'native' character
// CANNOT be used with constants
#define AXIS2_PLATFORM_STRTOASC( x ) ( x )
#define AXIS2_PLATFORM_ASCTOSTR( x ) ( x )
// =============================================================
// Miscellaneous
// =============================================================
#define AXIS2_STRRCHR(x, y) (strrchr(x, y))
#define AXIS2_PLATFORM_SLEEP(x) Sleep(0);
/**
* Get the last error code from the system.
* Please ensure that this is a thread safe implementation
* and that it returns a long
* @return long the lsat error message for this thread
*/
#define AXIS2_GETLASTERROR GetLastError();
/**
* From the last error number get a sensible std::string representing it
* @param errorNumber the error Number you are trying to get a message for
* @return the error message. NOTE: The caller is responsible for deleting the returned string
*/
#define AXIS2_PLATFORM_GET_ERROR_MESSAGE(errorNumber) getPlatformErrorMessage(errorNumber);
/**
* type to be used for 64bit integers
*/
#define AXIS2_LONGLONG __int64
/**
* Format string to be used in printf for 64bit integers
*/
#define AXIS2_PRINTF_LONGLONG_FORMAT_SPECIFIER "%I64d"
#define AXIS2_PRINTF_LONGLONG_FORMAT_SPECIFIER_CHARS "I64d"
AXIS2_DECLARE(HMODULE) callLoadLib(LPCTSTR lib);
/**
* Platform specific path separator char
*/
#define AXIS2_PATH_SEP_CHAR '/'
#define AXIS2_PATH_SEP_STR "/"
#define AXIS2_LIB_PREFIX ""
#define AXIS2_LIB_SUFFIX ".dll"
/**
* Platform specific time
*/
#define AXIS2_TIME_T time_t
/**
* Platform specific method to obtain current time in milli seconds
*/
#define AXIS2_PLATFORM_GET_TIME_IN_MILLIS _ftime
#define AXIS2_PLATFORM_TIMEB _timeb
/**
* Platform specific file handling
*/
#define AXIS2_ACCESS(zpath,imode) _access(zpath,imode)
#define AXIS2_R_OK 04 /* test for read permission */
#define AXIS2_W_OK 02 /* test for write permission */
#define AXIS2_X_OK 00 /* test for execute or search permission */
#define AXIS2_F_OK 00 /* test whether the directories leading to the file can be
searched and the file exists */
/**
* windows specific directory handling functions
*/
#define AXIS2_SCANDIR scandir
#define AXIS2_ALPHASORT alphasort
#define AXIS2_OPENDIR opendir
#define AXIS2_CLOSEDIR closedir
#define AXIS2_READDIR readdir
#define AXIS2_READDIR_R readdir_r
#define AXIS2_REWINDDIR rewinddir
/**
* network specific functions and defs
*/
#define axis2_socket_t SOCKET
#define AXIS2_INVALID_SOCKET INVALID_SOCKET
#define AXIS2_INADDR_NONE INADDR_NONE
#define axis2_unsigned_short_t u_short
#define AXIS2_CLOSE_SOCKET(sock) closesocket(sock)
#define AXIS2_CLOSE_SOCKET_ON_EXIT(sock)
#define axis2_socket_len_t int
/**
* Platform specific environment variable access method
*/
#define AXIS2_GETENV(_env_var_name) getenv(_env_var_name)
/**
* handling variable number of arguments (for log.c)
*/
/** getopt function */
#define AXIS2_GETOPT axis2_getopt
/** string functions */
#define AXIS2_VSNPRINTF _vsnprintf
#define AXIS2_SNPRINTF _snprintf
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_WINDOWS_H */