| |
| /* |
| * 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 <axutil_utils_defines.h> |
| #define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ |
| #include <windows.h> |
| |
| /*for minizip uncompression library */ |
| # include <direct.h> |
| |
| /*for file access check */ |
| #include <io.h> |
| #include <sys/stat.h> |
| |
| /*for network handling */ |
| #include <winsock2.h> |
| #include <fcntl.h> |
| #include <Mswsock.h> |
| #include <Ws2tcpip.h> |
| |
| /* for time */ |
| #include <time.h> |
| #include <sys/timeb.h> |
| |
| /* 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 */ |