Darwin-Streaming-Server/StreamingProxy.tproj/proxy_plat.h

167 lines
5.2 KiB
C
Raw Normal View History

/*
*
* @APPLE_LICENSE_HEADER_START@
*
* Copyright (c) 1999-2008 Apple Inc. All Rights Reserved.
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*
*/
/*
* proxy_plat.h
*
*
*/
#ifndef _PLAT_H_
#define _PLAT_H_
/**********************************************/
#define bool char
#if !defined(mac)
#define true 1
#define false 0
#endif
#if !defined(WIN32)
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#endif
/**********************************************/
#if defined(WIN32)
#define EACCES WSAEACCES
#define EINTR WSAEINTR
#define EAGAIN WSAEWOULDBLOCK /* good enough? */
#define EPIPE WSAESHUTDOWN /* good enough? */
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#define EISCONN WSAEISCONN
#define EINPROGRESS WSAEINPROGRESS
#define EALREADY WSAEALREADY
#include "WINSOCK.H"
#elif defined(mac)
#define EACCES kEACCESErr
#define EPIPE kEPIPEErr
#define EINTR kEINTRErr
#define EAGAIN kEAGAINErr
#define ENOTCONN kENOTCONNErr
#define ECONNRESET kECONNRESETErr
#define EISCONN kEISCONNErr
#define EINPROGRESS kEINPROGRESSErr
#define EALREADY kEALREADYErr
#endif
/**********************************************/
#define MSEC_PER_SEC 1000
#define USEC_PER_SEC 1000000
#define USEC_PER_MSEC 1000
#define timer_sub(ntime,subtime,eqtime) \
if ((subtime).tv_usec > (ntime).tv_usec) { \
(eqtime).tv_sec = ((ntime).tv_sec - 1) - (subtime).tv_sec; \
(eqtime).tv_usec = (ntime).tv_usec + USEC_PER_SEC - \
(subtime).tv_usec; \
} \
else { \
(eqtime).tv_sec = (ntime).tv_sec - (subtime).tv_sec; \
(eqtime).tv_usec = (ntime).tv_usec - (subtime).tv_usec; \
}
extern char *gConfigFilePath;
extern char *gOptionsString;
extern char gOptionsChar;
typedef struct stats_chunk {
unsigned long elapsedSeconds;
unsigned long bpsReceived;
unsigned long bpsSent;
unsigned long ppsReceived;
unsigned long ppsSent;
unsigned long totalPacketsReceived;
unsigned long totalPacketsSent;
unsigned long numClients;
unsigned long numPorts;
float percentLostPackets;
} stats_chunk;
void daemonize(void);
int init_network(void);
int term_network(void);
int init_ui(void);
int service_ui(int sleep_ticks);
void sleep_milliseconds(int ms);
time_t microseconds();
#define kPENDING_ADDRESS -2
int name_to_ip_num(char *name, int *ip_num, int async);
int get_remote_address(int skt, int *port);
int get_local_address(int skt, int *port);
int get_local_ip_address(void);
bool isReadable(int fd);
bool isWritable(int fd);
int new_socket_udp(void);
int new_socket_tcp(int is_listener);
void close_socket(int skt);
void set_socket_reuse_address(int skt);
void set_socket_max_buf(int skt);
void make_socket_nonblocking(int skt);
int bind_socket_to_address(int skt, int address, int port, int is_listener);
int listen_to_socket(int skt);
int call_is_waiting(int skt, int *incoming_skt);
int accept_connection(int from, int *to);
int get_interface_addr(int skt);
#if DO_ASYNC
pascal void conn_finished_proc(void* contextPtr, OTEventCode code, OTResult /*result*/, void* /*cookie*/);
int connect_to_address(void *context, OTNotifyProcPtr proc, int skt, int address, int port);
#else
int connect_to_address(int skt, int address, int port);
#endif
int tcp_data_ready(int skt);
int recv_udp(int skt, char *buf, int amt, int *fromAddress, int *fromPort);
int send_udp(int skt, char *buf, int amt, int address, int port);
int recv_tcp(int skt, char *buf, int amt);
int send_tcp(int skt, char *buf, int amt);
// int make_udp_port_pair(int *socket1, int *socket2);
int GetLastSocketError(int skt);
void DoStats(stats_chunk *stats);
#if defined(mac) || defined(WIN32)
extern char gLastErrorString[256];
#define ErrorString(a) sprintf(gLastErrorString, a)
#define ErrorString1(a,b) sprintf(gLastErrorString, a, b)
#define ErrorStringS(a,b) sprintf(gLastErrorString, a, b)
#define DebugString(a) printf(a "\n")
#define DebugString1(a,b) printf(a "\n", b)
#define DebugStringS(a,b) printf(a "\n", b)
#else
void ErrorString(char *string);
void ErrorString1(char *string, int d);
void ErrorStringS(char *string, char *arg);
#define DebugString(a) printf(a "\n")
#define DebugString1(a,b) printf(a "\n", b)
#define DebugStringS(a,b) printf(a "\n", b)
#endif
#endif // _PLAT_H_