network_core.h
author Darkvater
Sat, 02 Apr 2005 23:05:09 +0000
changeset 1632 10c391e108b7
parent 1507 18cb39ddddfd
child 1687 521050dcd91e
permissions -rw-r--r--
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
- Fix: 'L' no longer opens ingame terraform bar in scenario editor bar, but the land generator one
- Feature: [ 1095110 ] Create Lake and draggable Create Desert tools (initial implementation GoneWacko), also added sticky buttons to land generator and town generator
- CodeChange: moved around some of the draggable tools, demystifying them
- CodeChange: change CmdBuildCanal to allow for XANDY dragging not only X or Y (only scenario editor)
- CodeChange: add some more enums to sprites.
- TODO: merge most of the ingame and scenario editor land terraform code. This can only be done after OnClickButton function is changed so it also includes the backreference to the widget being clicked, postponed to after 0.4.0
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     1
#ifndef NETWORK_CORE_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     2
#define NETWORK_CORE_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     3
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     4
// Network stuff has many things that needs to be included
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     5
//  by default. All those things are in this file.
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     6
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     7
// =============================
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     8
// Include standard stuff per OS
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     9
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    10
// Windows stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    11
#if defined(WIN32)
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    12
#include <windows.h>
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    13
#include <winsock2.h>
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    14
#include <ws2tcpip.h>
792
baa707973bd5 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    15
1505
07a27f3cb4f9 (svn r2009) - VS.NET/VS6 removed all builds except for Release and Debug. Also add additional dependencies to the project file instead of in the header file itself.
darkvater
parents: 1466
diff changeset
    16
#if !(defined(__MINGW32__) || defined(__CYGWIN__))
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    17
	// Windows has some different names for some types..
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    18
	typedef SSIZE_T ssize_t;
1342
f14dc75d01be (svn r1846) - Fix: VS6 project file (bociusz)
darkvater
parents: 1332
diff changeset
    19
	typedef int socklen_t;
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    20
#endif
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    21
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    22
#define GET_LAST_ERROR() WSAGetLastError()
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    23
#define EWOULDBLOCK WSAEWOULDBLOCK
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    24
// Windows has some different names for some types..
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    25
typedef unsigned long in_addr_t;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    26
typedef INTERFACE_INFO IFREQ;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    27
#endif // WIN32
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    28
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    29
// UNIX stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    30
#if defined(UNIX)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    31
#	define SOCKET int
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    32
#	define INVALID_SOCKET -1
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    33
typedef struct ifreq IFREQ;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    34
#	if !defined(__MORPHOS__) && !defined(__AMIGA__)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    35
#		define ioctlsocket ioctl
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    36
#	if !defined(BEOS_NET_SERVER)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    37
#		define closesocket close
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    38
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    39
#		define GET_LAST_ERROR() (errno)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    40
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    41
// Need this for FIONREAD on solaris
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    42
#	define BSD_COMP
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    43
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    44
// Includes needed for UNIX-like systems
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    45
#	include <unistd.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    46
#	include <sys/ioctl.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    47
#	if defined(__BEOS__) && defined(BEOS_NET_SERVER)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    48
#		include <be/net/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    49
#		include <be/kernel/OS.h> // snooze()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    50
#		include <be/net/netdb.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    51
		typedef unsigned long in_addr_t;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    52
#		define INADDR_NONE INADDR_BROADCAST
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    53
#	else
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    54
#		include <sys/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    55
#		include <netinet/in.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    56
#		include <netinet/tcp.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    57
#		include <arpa/inet.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    58
#		include <net/if.h>
1412
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    59
// According to glibc/NEWS, <ifaddrs.h> appeared in glibc-2.3.
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    60
#		if !defined(SUNOS) && !defined(__MORPHOS__) && !defined(__BEOS__) \
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    61
		   && !(defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 2))
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    62
// If for any reason ifaddrs.h does not exist on your system, comment out
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    63
//   the following two lines and an alternative way will be used to fetch
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    64
//   the list of IPs from the system.
706
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    65
#			include <ifaddrs.h>
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    66
#			define HAVE_GETIFADDRS
1412
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    67
#		endif
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    68
#		if defined(SUNOS) || defined(__MORPHOS__) || defined(__BEOS__)
706
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    69
#			define INADDR_NONE 0xffffffff
1412
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    70
#		endif
1051
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    71
#		if defined(__BEOS__) && !defined(BEOS_NET_SERVER)
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    72
			// needed on Zeta
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    73
#			include <sys/sockio.h>
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    74
#		endif
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    75
#	endif // BEOS_NET_SERVER
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    76
1412
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    77
#	if defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 1)
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    78
		typedef uint32_t in_addr_t;
1412
1886a750ccf0 (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    79
#	endif
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    80
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    81
#	include <errno.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    82
#	include <sys/time.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    83
#	include <netdb.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    84
#endif // UNIX
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    85
1429
076726686ab2 (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    86
#ifdef __BEOS__
1441
3c9130c733f3 (svn r1945) - CodeChange: re-commit of rev 1835: "Reduce the visibility of network_core.h (Tron)".
darkvater
parents: 1429
diff changeset
    87
	typedef int socklen_t;
1429
076726686ab2 (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    88
#endif
076726686ab2 (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    89
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    90
// OS/2 stuff
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    91
#if defined(__OS2__)
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    92
#	define SOCKET int
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    93
#	define INVALID_SOCKET -1
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    94
typedef struct ifreq IFREQ;
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    95
#	define ioctlsocket ioctl
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    96
#	define closesocket close
810
a1494b19bd2a (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
    97
#	define GET_LAST_ERROR() (sock_errno())
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    98
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    99
// Includes needed for OS/2 systems
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   100
#	include <types.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   101
#	include <unistd.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   102
#	include <sys/ioctl.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   103
#	include <sys/socket.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   104
#	include <netinet/in.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   105
#	include <netinet/tcp.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   106
#	include <arpa/inet.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   107
#	include <net/if.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   108
#	include <errno.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   109
#	include <sys/time.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   110
#	include <netdb.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   111
#	include <nerrno.h>
810
a1494b19bd2a (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   112
#	define INADDR_NONE 0xffffffff
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   113
1507
18cb39ddddfd (svn r2011) - Fix: [ 1162209 ] Fix OS/2 build (orudge) #2
darkvater
parents: 1505
diff changeset
   114
typedef int socklen_t;
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   115
typedef unsigned long in_addr_t;
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   116
#endif // OS/2
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   117
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   118
// MorphOS and Amiga stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   119
#if defined(__MORPHOS__) || defined(__AMIGA__)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   120
#	include <exec/types.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   121
#	include <proto/exec.h>		// required for Open/CloseLibrary()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   122
#	if defined(__MORPHOS__)
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   123
#		include <sys/filio.h> 	// FIO* defines
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   124
#		include <sys/sockio.h>  // SIO* defines
1343
19445bf5b17e (svn r1847) Adjustment for MorphOS to unbreak the build there and removal of some now obsolete preprocessor magic
tron
parents: 1342
diff changeset
   125
#		include <netinet/in.h>
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   126
#	else // __AMIGA__
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   127
#		include	<proto/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   128
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   129
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   130
// Make the names compatible
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   131
#	define closesocket(s) CloseSocket(s)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   132
#	define GET_LAST_ERROR() Errno()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   133
#	define ioctlsocket(s,request,status) IoctlSocket((LONG)s,(ULONG)request,(char*)status)
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   134
#	define ioctl ioctlsocket
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   135
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   136
	typedef unsigned int in_addr_t;
1343
19445bf5b17e (svn r1847) Adjustment for MorphOS to unbreak the build there and removal of some now obsolete preprocessor magic
tron
parents: 1342
diff changeset
   137
	typedef long         socklen_t;
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   138
	extern struct Library *SocketBase;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   139
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   140
#	ifdef __AMIGA__
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   141
	// for usleep() implementation
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   142
	extern struct Device      *TimerBase;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   143
	extern struct MsgPort     *TimerPort;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   144
	extern struct timerequest *TimerRequest;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   145
#	endif
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   146
#endif // __MORPHOS__ || __AMIGA__
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   147
1332
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   148
static inline bool SetNonBlocking(int d)
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   149
{
1466
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   150
	#ifdef WIN32
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   151
	u_long nonblocking = 1;
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   152
	#else
1332
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   153
	int nonblocking = 1;
1466
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   154
	#endif
1332
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   155
	#if defined(__BEOS__) && defined(BEOS_NET_SERVER)
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   156
	return setsockopt(d, SOL_SOCKET, SO_NONBLOCK, &nonblocking, sizeof(nonblocking)) == 0;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   157
	#else
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   158
	return ioctlsocket(d, FIONBIO, &nonblocking) == 0;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   159
	#endif
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   160
}
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   161
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   162
static inline bool SetNoDelay(int d)
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   163
{
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   164
	// XXX should this be done at all?
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   165
	#if !defined(BEOS_NET_SERVER) // not implemented on BeOS net_server
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   166
	int b = 1;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   167
	// The (const char*) cast is needed for windows
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   168
	return setsockopt(d, IPPROTO_TCP, TCP_NODELAY, (const char*)&b, sizeof(b)) == 0;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   169
	#else
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   170
	return true;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   171
	#endif
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   172
}
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   173
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   174
#endif // NETWORK_CORE_H