#ifndef LO_TYPES_H #define LO_TYPES_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_POLL #include #endif #ifdef WIN32 #include #include #else #include #endif #ifdef _MSC_VER typedef SSIZE_T ssize_t; typedef unsigned __int64 uint64_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef __int32 int32_t; #endif #ifndef WIN32 #include #else #ifndef HAVE_PTHREAD_H typedef void * pthread_t; #endif #endif // WIN32 #include "lo_osc_types.h" typedef void (*lo_err_handler)(int num, const char *msg, const char *path); struct _lo_method; typedef struct _lo_address { char *host; int socket; char *port; int protocol; struct addrinfo *ai; int errnum; const char *errstr; int ttl; } *lo_address; typedef struct _lo_blob { uint32_t size; char *data; } *lo_blob; typedef struct _lo_message { char *types; size_t typelen; size_t typesize; void *data; size_t datalen; size_t datasize; lo_address source; lo_arg **argv; /* timestamp from bundle (LO_TT_IMMEDIATE for unbundled messages) */ lo_timetag ts; } *lo_message; typedef int (*lo_method_handler)(const char *path, const char *types, lo_arg **argv, int argc, struct _lo_message *msg, void *user_data); typedef struct _lo_method { const char *path; const char *typespec; lo_method_handler handler; char *user_data; struct _lo_method *next; } *lo_method; typedef struct _lo_server { struct addrinfo *ai; lo_method first; lo_err_handler err_h; int port; char *hostname; char *path; int protocol; void *queued; struct sockaddr_storage addr; socklen_t addr_len; int sockets_len; int sockets_alloc; #ifdef HAVE_POLL struct pollfd *sockets; #else struct { int fd; } *sockets; #endif } *lo_server; typedef struct _lo_server_thread { lo_server s; pthread_t thread; volatile int active; volatile int done; } *lo_server_thread; typedef struct _lo_bundle { size_t size; size_t len; lo_timetag ts; lo_message *msgs; char **paths; } *lo_bundle; typedef struct _lo_strlist { char *str; struct _lo_strlist *next; } lo_strlist; typedef union { int32_t i; float f; char c; uint32_t nl; } lo_pcast32; typedef union { int64_t i; double f; uint64_t nl; lo_timetag tt; } lo_pcast64; extern struct lo_cs { int udp; int tcp; } lo_client_sockets; #endif