summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2017-05-25 21:59:40 +0200
committerEugen Wissner <belka@caraus.de>2017-05-25 21:59:40 +0200
commitd007aaa310843238f86720eb1167f99e21cb503e (patch)
tree008422e0087df864aab85eccb48cb4d76eb0a644 /source
parentae3e6b46f6c7ccaf31efce183cef6c8189ce9a86 (diff)
downloadtanya-d007aaa310843238f86720eb1167f99e21cb503e.tar.gz
Rename socket_t to SocketType
Diffstat (limited to 'source')
-rw-r--r--source/tanya/network/socket.d101
1 files changed, 59 insertions, 42 deletions
diff --git a/source/tanya/network/socket.d b/source/tanya/network/socket.d
index da7d934..1634607 100644
--- a/source/tanya/network/socket.d
+++ b/source/tanya/network/socket.d
@@ -15,12 +15,14 @@ module tanya.network.socket;
import core.stdc.errno;
import core.time;
import std.algorithm.comparison;
-public import std.socket : socket_t, Linger, SocketOptionLevel, SocketOption,
+public import std.socket : Linger, SocketOptionLevel, SocketOption,
AddressInfo;
import std.traits;
import std.typecons;
import tanya.memory;
+enum int socketError = -1;
+
version (Posix)
{
import core.stdc.errno;
@@ -31,7 +33,10 @@ version (Posix)
import core.sys.posix.sys.time;
import core.sys.posix.unistd;
- private enum SOCKET_ERROR = -1;
+ enum SocketType : int
+ {
+ init = -1,
+ }
}
else version (Windows)
{
@@ -42,6 +47,11 @@ else version (Windows)
import core.sys.windows.windef;
import core.sys.windows.winsock2;
+ enum SocketType : size_t
+ {
+ init = ~0,
+ }
+
enum : uint
{
IOC_UNIX = 0x00000000,
@@ -182,19 +192,26 @@ else version (Windows)
LPINT,
SOCKADDR**,
LPINT);
- const GUID WSAID_GETACCEPTEXSOCKADDRS = {0xb5367df2,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]};
+ const GUID WSAID_GETACCEPTEXSOCKADDRS = {
+ 0xb5367df2, 0xcbac, 0x11cf,
+ [ 0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92 ],
+ };
- struct WSABUF {
+ struct WSABUF
+ {
ULONG len;
CHAR* buf;
}
alias WSABUF* LPWSABUF;
- struct WSAOVERLAPPED {
+ struct WSAOVERLAPPED
+ {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
- union {
- struct {
+ union
+ {
+ struct
+ {
DWORD Offset;
DWORD OffsetHigh;
}
@@ -230,7 +247,7 @@ else version (Windows)
* handle = Socket handle.
* af = Address family.
*/
- this(socket_t handle, AddressFamily af) @nogc
+ this(SocketType handle, AddressFamily af) @nogc
{
super(handle, af);
}
@@ -267,7 +284,7 @@ else version (Windows)
&overlapped.overlapped,
NULL);
- if (result == SOCKET_ERROR && !wouldHaveBlocked)
+ if (result == socketError && !wouldHaveBlocked)
{
throw defaultAllocator.make!SocketException("Unable to receive");
}
@@ -338,7 +355,7 @@ else version (Windows)
&overlapped.overlapped,
NULL);
- if (result == SOCKET_ERROR && !wouldHaveBlocked)
+ if (result == socketError && !wouldHaveBlocked)
{
disconnected_ = true;
throw defaultAllocator.make!SocketException("Unable to send");
@@ -411,7 +428,7 @@ else version (Windows)
&dwBytes,
NULL,
NULL);
- if (!result == SOCKET_ERROR)
+ if (!result == socketError)
{
throw make!SocketException(defaultAllocator,
"Unable to retrieve an accept extension function pointer");
@@ -431,8 +448,8 @@ else version (Windows)
*/
bool beginAccept(SocketState overlapped) @nogc @trusted
{
- auto socket = cast(socket_t) socket(addressFamily, 1, 0);
- if (socket == socket_t.init)
+ auto socket = cast(SocketType) socket(addressFamily, 1, 0);
+ if (socket == SocketType.init)
{
throw defaultAllocator.make!SocketException("Unable to create socket");
}
@@ -482,7 +499,7 @@ else version (Windows)
defaultAllocator.dispose(overlapped.buffer.buf[0 .. overlapped.buffer.len]);
}
auto socket = make!OverlappedConnectedSocket(defaultAllocator,
- cast(socket_t) overlapped.handle,
+ cast(SocketType) overlapped.handle,
addressFamily);
scope (failure)
{
@@ -606,8 +623,8 @@ enum SocketError : int
/**
* $(D_PSYMBOL SocketException) should be thrown only if one of the socket functions
- * returns -1 or $(D_PSYMBOL SOCKET_ERROR) and sets $(D_PSYMBOL errno),
- * because $(D_PSYMBOL SocketException) relies on the $(D_PSYMBOL errno) value.
+ * $(D_PSYMBOL socketError) and sets $(D_PSYMBOL errno), because
+ * $(D_PSYMBOL SocketException) relies on the $(D_PSYMBOL errno) value.
*/
class SocketException : Exception
{
@@ -699,16 +716,16 @@ abstract class Socket
}
/// Socket handle.
- protected socket_t handle_;
+ protected SocketType handle_;
/// Address family.
protected AddressFamily family;
- private @property void handle(socket_t handle) @nogc
+ private @property void handle(SocketType handle) @nogc
in
{
- assert(handle != socket_t.init);
- assert(handle_ == socket_t.init, "Socket handle cannot be changed");
+ assert(handle != SocketType.init);
+ assert(handle_ == SocketType.init, "Socket handle cannot be changed");
}
body
{
@@ -722,7 +739,7 @@ abstract class Socket
}
}
- @property inout(socket_t) handle() inout const pure nothrow @safe @nogc
+ @property inout(SocketType) handle() inout const pure nothrow @safe @nogc
{
return handle_;
}
@@ -734,10 +751,10 @@ abstract class Socket
* handle = Socket.
* af = Address family.
*/
- this(socket_t handle, AddressFamily af) @nogc
+ this(SocketType handle, AddressFamily af) @nogc
in
{
- assert(handle != socket_t.init);
+ assert(handle != SocketType.init);
}
body
{
@@ -778,7 +795,7 @@ abstract class Socket
cast(int) level,
cast(int) option,
result.ptr,
- &length) == SOCKET_ERROR)
+ &length) == socketError)
{
throw defaultAllocator.make!SocketException("Unable to get socket option");
}
@@ -845,7 +862,7 @@ abstract class Socket
cast(int)level,
cast(int)option,
value.ptr,
- cast(uint) value.length) == SOCKET_ERROR)
+ cast(uint) value.length) == socketError)
{
throw defaultAllocator.make!SocketException("Unable to set socket option");
}
@@ -911,12 +928,12 @@ abstract class Socket
{
int fl = fcntl(handle_, F_GETFL, 0);
- if (fl != SOCKET_ERROR)
+ if (fl != socketError)
{
fl = yes ? fl & ~O_NONBLOCK : fl | O_NONBLOCK;
fl = fcntl(handle_, F_SETFL, fl);
}
- if (fl == SOCKET_ERROR)
+ if (fl == socketError)
{
throw make!SocketException(defaultAllocator,
"Unable to set socket blocking");
@@ -925,7 +942,7 @@ abstract class Socket
else version (Windows)
{
uint num = !yes;
- if (ioctlsocket(handle_, FIONBIO, &num) == SOCKET_ERROR)
+ if (ioctlsocket(handle_, FIONBIO, &num) == socketError)
{
throw make!SocketException(defaultAllocator,
"Unable to set socket blocking");
@@ -982,7 +999,7 @@ abstract class Socket
{
.close(handle_);
}
- handle_ = socket_t.init;
+ handle_ = SocketType.init;
}
/**
@@ -990,12 +1007,12 @@ abstract class Socket
* can $(D_PSYMBOL listen).
*
* Params:
- * backlog = Request of how many pending incoming connections are
+ * backlog = Request of how many pending incoming connections are
* queued until $(D_PSYMBOL accept)ed.
*/
void listen(int backlog) const @trusted @nogc
{
- if (.listen(handle_, backlog) == SOCKET_ERROR)
+ if (.listen(handle_, backlog) == socketError)
{
throw defaultAllocator.make!SocketException("Unable to listen on socket");
}
@@ -1048,8 +1065,8 @@ class StreamSocket : Socket, ConnectionOrientedSocket
*/
this(AddressFamily af) @trusted @nogc
{
- auto handle = cast(socket_t) socket(af, 1, 0);
- if (handle == socket_t.init)
+ auto handle = cast(SocketType) socket(af, 1, 0);
+ if (handle == SocketType.init)
{
throw defaultAllocator.make!SocketException("Unable to create socket");
}
@@ -1066,7 +1083,7 @@ class StreamSocket : Socket, ConnectionOrientedSocket
*/
void bind(Address address) const @trusted @nogc
{
- if (.bind(handle_, address.name, address.length) == SOCKET_ERROR)
+ if (.bind(handle_, address.name, address.length) == socketError)
{
throw defaultAllocator.make!SocketException("Unable to bind socket");
}
@@ -1085,7 +1102,7 @@ class StreamSocket : Socket, ConnectionOrientedSocket
*/
ConnectedSocket accept() @trusted @nogc
{
- socket_t sock;
+ SocketType sock;
version (linux)
{
@@ -1094,14 +1111,14 @@ class StreamSocket : Socket, ConnectionOrientedSocket
{
flags |= SOCK_NONBLOCK;
}
- sock = cast(socket_t).accept4(handle_, null, null, flags);
+ sock = cast(SocketType).accept4(handle_, null, null, flags);
}
else
{
- sock = cast(socket_t).accept(handle_, null, null);
+ sock = cast(SocketType).accept(handle_, null, null);
}
- if (sock == socket_t.init)
+ if (sock == SocketType.init)
{
if (wouldHaveBlocked())
{
@@ -1166,7 +1183,7 @@ class ConnectedSocket : Socket, ConnectionOrientedSocket
* handle = Socket.
* af = Address family.
*/
- this(socket_t handle, AddressFamily af) @nogc
+ this(SocketType handle, AddressFamily af) @nogc
{
super(handle, af);
}
@@ -1215,7 +1232,7 @@ class ConnectedSocket : Socket, ConnectionOrientedSocket
{
disconnected_ = true;
}
- else if (ret == SOCKET_ERROR)
+ else if (ret == socketError)
{
if (wouldHaveBlocked())
{
@@ -1252,7 +1269,7 @@ class ConnectedSocket : Socket, ConnectionOrientedSocket
}
sent = .send(handle_, buf.ptr, capToMaxBuffer(buf.length), sendFlags);
- if (sent != SOCKET_ERROR)
+ if (sent != socketError)
{
return sent;
}
@@ -1346,7 +1363,7 @@ class InternetAddress : Address
{
freeaddrinfoPointer(ai_res);
}
-
+
ubyte* dp = cast(ubyte*) &storage, sp = cast(ubyte*) ai_res.ai_addr;
for (auto i = ai_res.ai_addrlen; i > 0; --i, *dp++, *sp++)
{