summaryrefslogtreecommitdiffstats
path: root/util/include/platforms/windows/axutil_windows.h
blob: 49645629156e26ed61560412ac727208af6ac66f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
/*
 * 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 */