25 #if !defined(WIN32) && !defined(_WIN32_WCE) 
   31 #include <sys/types.h> 
   45 #include <sys/types.h> 
   46 #include <sys/socket.h> 
   47 #include <netinet/in.h> 
   48 #if defined(_XOPEN_SOURCE_EXTENDED) || !defined(__hpux) 
   49 #include <arpa/inet.h> 
   58 typedef int ortp_socket_t;
 
   59 typedef pthread_t ortp_thread_t;
 
   60 typedef pthread_mutex_t ortp_mutex_t;
 
   61 typedef pthread_cond_t ortp_cond_t;
 
   63 #ifdef __INTEL_COMPILER 
   64 #pragma warning(disable : 111)          // statement is unreachable 
   65 #pragma warning(disable : 181)          // argument is incompatible with corresponding format string conversion 
   66 #pragma warning(disable : 188)          // enumerated type mixed with another type 
   67 #pragma warning(disable : 593)          // variable "xxx" was set but never used 
   68 #pragma warning(disable : 810)          // conversion from "int" to "unsigned short" may lose significant bits 
   69 #pragma warning(disable : 869)          // parameter "xxx" was never referenced 
   70 #pragma warning(disable : 981)          // operands are evaluated in unspecified order 
   71 #pragma warning(disable : 1418)         // external function definition with no prior declaration 
   72 #pragma warning(disable : 1419)         // external declaration in primary source file 
   73 #pragma warning(disable : 1469)         // "cc" clobber ignored 
   77 #define ORTP_INLINE                     inline 
   79 #define WINAPI_FAMILY_PARTITION(x) 1 
   86 int __ortp_thread_join(ortp_thread_t thread, 
void **ptr);
 
   87 int __ortp_thread_create(ortp_thread_t *thread, pthread_attr_t *attr, 
void * (*routine)(
void*), 
void *arg);
 
   88 unsigned long __ortp_thread_self(
void);
 
   94 #define ortp_thread_create      __ortp_thread_create 
   95 #define ortp_thread_join        __ortp_thread_join 
   96 #define ortp_thread_self        __ortp_thread_self 
   97 #define ortp_thread_exit        pthread_exit 
   98 #define ortp_mutex_init         pthread_mutex_init 
   99 #define ortp_mutex_lock         pthread_mutex_lock 
  100 #define ortp_mutex_unlock       pthread_mutex_unlock 
  101 #define ortp_mutex_destroy      pthread_mutex_destroy 
  102 #define ortp_cond_init          pthread_cond_init 
  103 #define ortp_cond_signal        pthread_cond_signal 
  104 #define ortp_cond_broadcast     pthread_cond_broadcast 
  105 #define ortp_cond_wait          pthread_cond_wait 
  106 #define ortp_cond_destroy       pthread_cond_destroy 
  108 #define SOCKET_OPTION_VALUE     void * 
  109 #define SOCKET_BUFFER           void * 
  111 #define getSocketError() strerror(errno) 
  112 #define getSocketErrorCode() (errno) 
  113 #define ortp_gettimeofday(tv,tz) gettimeofday(tv,tz) 
  114 #define ortp_log10f(x)  log10f(x) 
  126 #include <winsock2.h> 
  127 #include <ws2tcpip.h> 
  129 #if defined(__MINGW32__) || !defined(WINAPI_FAMILY_PARTITION) 
  131 #define WINAPI_FAMILY_PARTITION(x) 1 
  139 #define ORTP_PUBLIC     __declspec(dllexport) 
  141 #define ORTP_PUBLIC     __declspec(dllimport) 
  144 #pragma push_macro("_WINSOCKAPI_") 
  149 #define strtok_r strtok_s 
  151 typedef  unsigned __int64 uint64_t;
 
  152 typedef  __int64 int64_t;
 
  153 typedef  unsigned short uint16_t;
 
  154 typedef  unsigned int uint32_t;
 
  156 typedef  unsigned char uint8_t;
 
  157 typedef __int16 int16_t;
 
  162 ORTP_PUBLIC 
char* strtok_r(
char *str, 
const char *delim, 
char **nextp);
 
  165 #define vsnprintf       _vsnprintf 
  167 typedef SOCKET ortp_socket_t;
 
  168 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 
  169 typedef HANDLE ortp_cond_t;
 
  170 typedef HANDLE ortp_mutex_t;
 
  172 typedef CONDITION_VARIABLE ortp_cond_t;
 
  173 typedef SRWLOCK ortp_mutex_t;
 
  175 typedef HANDLE ortp_thread_t;
 
  177 #define ortp_thread_create      WIN_thread_create 
  178 #define ortp_thread_join        WIN_thread_join 
  179 #define ortp_thread_self        WIN_thread_self 
  180 #define ortp_thread_exit(arg) 
  181 #define ortp_mutex_init         WIN_mutex_init 
  182 #define ortp_mutex_lock         WIN_mutex_lock 
  183 #define ortp_mutex_unlock       WIN_mutex_unlock 
  184 #define ortp_mutex_destroy      WIN_mutex_destroy 
  185 #define ortp_cond_init          WIN_cond_init 
  186 #define ortp_cond_signal        WIN_cond_signal 
  187 #define ortp_cond_broadcast     WIN_cond_broadcast 
  188 #define ortp_cond_wait          WIN_cond_wait 
  189 #define ortp_cond_destroy       WIN_cond_destroy 
  197 ORTP_PUBLIC 
int WIN_mutex_init(ortp_mutex_t *m, 
void *attr_unused);
 
  198 ORTP_PUBLIC 
int WIN_mutex_lock(ortp_mutex_t *mutex);
 
  199 ORTP_PUBLIC 
int WIN_mutex_unlock(ortp_mutex_t *mutex);
 
  200 ORTP_PUBLIC 
int WIN_mutex_destroy(ortp_mutex_t *mutex);
 
  201 ORTP_PUBLIC 
int WIN_thread_create(ortp_thread_t *t, 
void *attr_unused, 
void *(*func)(
void*), 
void *arg);
 
  202 ORTP_PUBLIC 
int WIN_thread_join(ortp_thread_t thread, 
void **unused);
 
  203 ORTP_PUBLIC 
unsigned long WIN_thread_self(
void);
 
  204 ORTP_PUBLIC 
int WIN_cond_init(ortp_cond_t *cond, 
void *attr_unused);
 
  205 ORTP_PUBLIC 
int WIN_cond_wait(ortp_cond_t * cond, ortp_mutex_t * mutex);
 
  206 ORTP_PUBLIC 
int WIN_cond_signal(ortp_cond_t * cond);
 
  207 ORTP_PUBLIC 
int WIN_cond_broadcast(ortp_cond_t * cond);
 
  208 ORTP_PUBLIC 
int WIN_cond_destroy(ortp_cond_t * cond);
 
  214 #define SOCKET_OPTION_VALUE     char * 
  215 #define ORTP_INLINE                     __inline 
  217 #if defined(_WIN32_WCE) 
  219 #define ortp_log10f(x)          (float)log10 ((double)x) 
  224 #define assert(exp)     ((void)0) 
  229 #define  errno GetLastError() 
  233 const char * ortp_strerror(DWORD value);
 
  234 #define strerror ortp_strerror 
  239 #define ortp_log10f(x)  log10f(x) 
  243 ORTP_PUBLIC 
const char *getWinSocketError(
int error);
 
  244 #define getSocketErrorCode() WSAGetLastError() 
  245 #define getSocketError() getWinSocketError(WSAGetLastError()) 
  247 #define snprintf _snprintf 
  248 #define strcasecmp _stricmp 
  249 #define strncasecmp _strnicmp 
  259 ORTP_PUBLIC 
int ortp_gettimeofday (
struct timeval *tv, 
void* tz);
 
  260 #ifdef _WORKAROUND_MINGW32_BUGS 
  261 char * WSAAPI gai_strerror(
int errnum);
 
  269 typedef unsigned char bool_t;
 
  286 ORTP_PUBLIC 
void* ortp_malloc(
size_t sz);
 
  287 ORTP_PUBLIC 
void ortp_free(
void *ptr);
 
  288 ORTP_PUBLIC 
void* ortp_realloc(
void *ptr, 
size_t sz);
 
  289 ORTP_PUBLIC 
void* ortp_malloc0(
size_t sz);
 
  290 ORTP_PUBLIC 
char * ortp_strdup(
const char *tmp);
 
  294         void *(*malloc_fun)(
size_t sz);
 
  295         void *(*realloc_fun)(
void *ptr, 
size_t sz);
 
  296         void (*free_fun)(
void *ptr);
 
  301 #define ortp_new(type,count)    (type*)ortp_malloc(sizeof(type)*(count)) 
  302 #define ortp_new0(type,count)   (type*)ortp_malloc0(sizeof(type)*(count)) 
  304 ORTP_PUBLIC 
int close_socket(ortp_socket_t sock);
 
  305 ORTP_PUBLIC 
int set_non_blocking_socket(ortp_socket_t sock);
 
  307 ORTP_PUBLIC 
char *ortp_strndup(
const char *str,
int n);
 
  308 ORTP_PUBLIC 
char *ortp_strdup_printf(
const char *fmt,...);
 
  309 ORTP_PUBLIC 
char *ortp_strdup_vprintf(
const char *fmt, va_list ap);
 
  310 ORTP_PUBLIC 
char *ortp_strcat_printf(
char *dst, 
const char *fmt,...);
 
  311 ORTP_PUBLIC 
char *ortp_strcat_vprintf(
char *dst, 
const char *fmt, va_list ap);
 
  313 ORTP_PUBLIC 
int ortp_file_exist(
const char *pathname);
 
  316 void _ortp_get_cur_time(
ortpTimeSpec *ret, bool_t realtime);
 
  317 ORTP_PUBLIC uint64_t ortp_get_cur_time_ms(
void);
 
  318 ORTP_PUBLIC 
void ortp_sleep_ms(
int ms);
 
  319 ORTP_PUBLIC 
void ortp_sleep_until(
const ortpTimeSpec *ts);
 
  320 ORTP_PUBLIC 
unsigned int ortp_random(
void);
 
  323 #if !defined(_WIN32_WCE) 
  325 typedef HANDLE ortp_pipe_t;
 
  326 #define ORTP_PIPE_INVALID INVALID_HANDLE_VALUE 
  328 typedef int ortp_pipe_t;
 
  329 #define ORTP_PIPE_INVALID (-1) 
  332 ORTP_PUBLIC ortp_pipe_t ortp_server_pipe_create(
const char *name);
 
  338 ORTP_PUBLIC ortp_pipe_t ortp_server_pipe_accept_client(ortp_pipe_t server);
 
  339 ORTP_PUBLIC 
int ortp_server_pipe_close(ortp_pipe_t spipe);
 
  340 ORTP_PUBLIC 
int ortp_server_pipe_close_client(ortp_pipe_t client);
 
  342 ORTP_PUBLIC ortp_pipe_t ortp_client_pipe_connect(
const char *name);
 
  343 ORTP_PUBLIC 
int ortp_client_pipe_close(ortp_pipe_t sock);
 
  345 ORTP_PUBLIC 
int ortp_pipe_read(ortp_pipe_t p, uint8_t *buf, 
int len);
 
  346 ORTP_PUBLIC 
int ortp_pipe_write(ortp_pipe_t p, 
const uint8_t *buf, 
int len);
 
  348 ORTP_PUBLIC 
void *ortp_shm_open(
unsigned int keyid, 
int size, 
int create);
 
  349 ORTP_PUBLIC 
void ortp_shm_close(
void *memory);
 
  359 #if (defined(WIN32) || defined(_WIN32_WCE)) && !defined(ORTP_STATIC) 
  361    #define ORTP_VAR_PUBLIC    extern __declspec(dllexport) 
  363    #define ORTP_VAR_PUBLIC    __declspec(dllimport) 
  366    #define ORTP_VAR_PUBLIC    extern 
  369 #ifndef IN6_IS_ADDR_MULTICAST 
  370 #define IN6_IS_ADDR_MULTICAST(i)        (((uint8_t *) (i))[0] == 0xff) 
  376 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE==1