5383c976362d5b18656cf7b9248b2063a764a203vboxsync/* $Id$ */
5383c976362d5b18656cf7b9248b2063a764a203vboxsync/** @file
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * IPRT - Internal Header for RTSocket.
5383c976362d5b18656cf7b9248b2063a764a203vboxsync */
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsync/*
c7814cf6e1240a519cbec0441e033d0e2470ed00vboxsync * Copyright (C) 2010-2013 Oracle Corporation
5383c976362d5b18656cf7b9248b2063a764a203vboxsync *
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * available from http://www.virtualbox.org. This file is free software;
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * you can redistribute it and/or modify it under the terms of the GNU
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * General Public License (GPL) as published by the Free Software
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
5383c976362d5b18656cf7b9248b2063a764a203vboxsync *
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * The contents of this file may alternatively be used under the terms
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * of the Common Development and Distribution License Version 1.0
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * VirtualBox OSE distribution, in which case the provisions of the
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * CDDL are applicable instead of those of the GPL.
5383c976362d5b18656cf7b9248b2063a764a203vboxsync *
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * You may elect to license modified versions of this file under the
5383c976362d5b18656cf7b9248b2063a764a203vboxsync * terms and conditions of either the GPL or the CDDL or both.
5383c976362d5b18656cf7b9248b2063a764a203vboxsync */
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsync#ifndef ___internal_socket_h
5383c976362d5b18656cf7b9248b2063a764a203vboxsync#define ___internal_socket_h
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsync#include <iprt/cdefs.h>
5383c976362d5b18656cf7b9248b2063a764a203vboxsync#include <iprt/types.h>
280173a9a1d01b33c087a762ffb9e522efe5c0d5vboxsync#include <iprt/net.h>
d1966fe9681e9a100f8c895f08e450fc32dafd48vboxsync/* Currently requires a bunch of socket headers. */
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync/** Native socket handle type. */
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync#ifdef RT_OS_WINDOWS
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync# define RTSOCKETNATIVE SOCKET
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync#else
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync# define RTSOCKETNATIVE int
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync#endif
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync/** NIL value for native socket handles. */
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync#ifdef RT_OS_WINDOWS
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync# define NIL_RTSOCKETNATIVE INVALID_SOCKET
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync#else
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync# define NIL_RTSOCKETNATIVE (-1)
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync#endif
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncRT_C_DECLS_BEGIN
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
d1966fe9681e9a100f8c895f08e450fc32dafd48vboxsync#ifndef IPRT_INTERNAL_SOCKET_POLLING_ONLY
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncint rtSocketResolverError(void);
f1a03f23d2b1cd7569d8e96ca52a725ef39a83c9vboxsyncint rtSocketCreateForNative(RTSOCKETINT **ppSocket, RTSOCKETNATIVE hNative);
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncint rtSocketCreate(PRTSOCKET phSocket, int iDomain, int iType, int iProtocol);
280173a9a1d01b33c087a762ffb9e522efe5c0d5vboxsyncint rtSocketBind(RTSOCKET hSocket, PCRTNETADDR pAddr);
eab069fc0105a6cbbfc36707e7d8973613c617c8vboxsyncint rtSocketBindRawAddr(RTSOCKET hSocket, void const *pvAddr, size_t cbAddr);
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncint rtSocketListen(RTSOCKET hSocket, int cMaxPending);
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncint rtSocketAccept(RTSOCKET hSocket, PRTSOCKET phClient, struct sockaddr *pAddr, size_t *pcbAddr);
ca7ea74e4145b138179345f2c83316a97452467cvboxsyncint rtSocketConnect(RTSOCKET hSocket, PCRTNETADDR pAddr, RTMSINTERVAL cMillies);
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncint rtSocketSetOpt(RTSOCKET hSocket, int iLevel, int iOption, void const *pvValue, int cbValue);
d1966fe9681e9a100f8c895f08e450fc32dafd48vboxsync#endif /* IPRT_INTERNAL_SOCKET_POLLING_ONLY */
d1966fe9681e9a100f8c895f08e450fc32dafd48vboxsync
5b05f43fc07d02aa6997b203bad9cf92633b89d5vboxsyncint rtSocketPollGetHandle(RTSOCKET hSocket, uint32_t fEvents, PRTHCINTPTR phNative);
d1966fe9681e9a100f8c895f08e450fc32dafd48vboxsyncuint32_t rtSocketPollStart(RTSOCKET hSocket, RTPOLLSET hPollSet, uint32_t fEvents, bool fFinalEntry, bool fNoWait);
0fbb26e55fd320c3d5c5b4bfe85e578c867c657avboxsyncuint32_t rtSocketPollDone(RTSOCKET hSocket, uint32_t fEvents, bool fFinalEntry, bool fHarvestEvents);
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsyncRT_C_DECLS_END
5383c976362d5b18656cf7b9248b2063a764a203vboxsync
5383c976362d5b18656cf7b9248b2063a764a203vboxsync#endif
5383c976362d5b18656cf7b9248b2063a764a203vboxsync