/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 axutil_unix.h * @brief axis2 unix platform specific interface */ #include #define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ #include /*for minizip uncompression library */ # include /*for file access check */ #include #include /*for network handling */ #include #include #include #include /* for time */ #include #include /* get opt */ #include "axutil_getopt_windows.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 }; */ AXIS2_EXTERN HMODULE AXIS2_CALL callLoadLib( char *lib); AXIS2_EXTERN struct tm *AXIS2_CALL axis2_win_gmtime( const time_t * timep, struct tm *result); /* Get the last Error */ AXIS2_EXTERN void AXIS2_CALL axutil_win32_get_last_error(axis2_char_t *buff, unsigned int buf_size); /* Get the last Socket Error */ AXIS2_EXTERN void AXIS2_CALL axutil_win32_get_last_wsa_error(axis2_char_t *buff, unsigned int buf_size); #define AXUTIL_WIN32_ERROR_BUFSIZE 256 /*************************************************************** * 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/axutil_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 axutil_win32_get_last_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) #define AXIS2_SLEEP(x) Sleep((x)*1000) #define AXIS2_USLEEP(x) Sleep((x)/1000) /** * 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 last 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); /** * Platform specific method to obtain current thread ID */ #define AXIS2_PLATFORM_GET_THREAD_ID() GetCurrentThreadId() /** * 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" /** * 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_FOPEN fopen #define AXIS2_FREAD fread #define AXIS2_FWRITE fwrite #define AXIS2_FCLOSE fclose #define AXIS2_FTELL ftell #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 axis2_scandir #define AXIS2_ALPHASORT alphasort #define AXIS2_OPENDIR axis2_opendir #define AXIS2_CLOSEDIR axis2_closedir #define AXIS2_READDIR axis2_readdir #define AXIS2_READDIR_R axis2_readdir_r #define AXIS2_REWINDDIR axis2_rewinddir #define AXIS2_MKDIR(path,x) _mkdir(path) #define AXIS2_GETCWD _getcwd #define AXIS2_CHDIR _chdir /** * 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 #define AXIS2_SHUT_WR SD_SEND /** * Platform specific environment variable access method */ #define AXIS2_GETENV(_env_var_name) getenv(_env_var_name) /** * minizip functions */ #define axis2_fill_win32_filefunc(ffunc) fill_win32_filefunc(ffunc) #define AXIS2_UNZOPEN2(zipfilename, ffunc, uf) \ { \ uf = unzOpen2(zipfilename,NULL); \ } /** * 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 #define axis2_gmtime_r axis2_win_gmtime /** @} */ #ifdef __cplusplus } #endif #endif /* AXIS2_WINDOWS_H */