mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 01:37:00 +00:00
Rebase resync
This commit is contained in:
parent
a0797532e8
commit
1997c1e903
3106 changed files with 11118 additions and 627576 deletions
|
|
@ -1,193 +0,0 @@
|
|||
// $Id: OS_NS_stropts.cpp 91286 2010-08-05 09:04:31Z johnnyw $
|
||||
|
||||
#include "ace/OS_NS_stropts.h"
|
||||
|
||||
|
||||
|
||||
#if !defined (ACE_HAS_INLINED_OSCALLS)
|
||||
# include "ace/OS_NS_stropts.inl"
|
||||
#endif /* ACE_HAS_INLINED_OSCALLS */
|
||||
|
||||
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
|
||||
|
||||
int
|
||||
ACE_OS::ioctl (ACE_HANDLE socket,
|
||||
unsigned long io_control_code,
|
||||
void *in_buffer_p,
|
||||
unsigned long in_buffer,
|
||||
void *out_buffer_p,
|
||||
unsigned long out_buffer,
|
||||
unsigned long *bytes_returned,
|
||||
ACE_OVERLAPPED *overlapped,
|
||||
ACE_OVERLAPPED_COMPLETION_FUNC func)
|
||||
{
|
||||
# if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
|
||||
ACE_SOCKCALL_RETURN (::WSAIoctl ((ACE_SOCKET) socket,
|
||||
io_control_code,
|
||||
in_buffer_p,
|
||||
in_buffer,
|
||||
out_buffer_p,
|
||||
out_buffer,
|
||||
bytes_returned,
|
||||
(WSAOVERLAPPED *) overlapped,
|
||||
func),
|
||||
int,
|
||||
SOCKET_ERROR);
|
||||
# else
|
||||
ACE_UNUSED_ARG (socket);
|
||||
ACE_UNUSED_ARG (io_control_code);
|
||||
ACE_UNUSED_ARG (in_buffer_p);
|
||||
ACE_UNUSED_ARG (in_buffer);
|
||||
ACE_UNUSED_ARG (out_buffer_p);
|
||||
ACE_UNUSED_ARG (out_buffer);
|
||||
ACE_UNUSED_ARG (bytes_returned);
|
||||
ACE_UNUSED_ARG (overlapped);
|
||||
ACE_UNUSED_ARG (func);
|
||||
ACE_NOTSUP_RETURN (-1);
|
||||
# endif /* ACE_HAS_WINSOCK2 */
|
||||
}
|
||||
|
||||
int
|
||||
ACE_OS::ioctl (ACE_HANDLE socket,
|
||||
unsigned long io_control_code,
|
||||
ACE_QoS &ace_qos,
|
||||
unsigned long *bytes_returned,
|
||||
void *buffer_p,
|
||||
unsigned long buffer,
|
||||
ACE_OVERLAPPED *overlapped,
|
||||
ACE_OVERLAPPED_COMPLETION_FUNC func)
|
||||
{
|
||||
# if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
|
||||
|
||||
QOS qos;
|
||||
unsigned long qos_len = sizeof (QOS);
|
||||
|
||||
if (io_control_code == SIO_SET_QOS)
|
||||
{
|
||||
qos.SendingFlowspec = *(ace_qos.sending_flowspec ());
|
||||
qos.ReceivingFlowspec = *(ace_qos.receiving_flowspec ());
|
||||
qos.ProviderSpecific = (WSABUF) ace_qos.provider_specific ();
|
||||
|
||||
qos_len += ace_qos.provider_specific ().iov_len;
|
||||
|
||||
ACE_SOCKCALL_RETURN (::WSAIoctl ((ACE_SOCKET) socket,
|
||||
io_control_code,
|
||||
&qos,
|
||||
qos_len,
|
||||
buffer_p,
|
||||
buffer,
|
||||
bytes_returned,
|
||||
(WSAOVERLAPPED *) overlapped,
|
||||
func),
|
||||
int,
|
||||
SOCKET_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned long dwBufferLen = 0;
|
||||
|
||||
// Query for the buffer size.
|
||||
int result = ::WSAIoctl ((ACE_SOCKET) socket,
|
||||
io_control_code,
|
||||
0,
|
||||
0,
|
||||
&dwBufferLen,
|
||||
sizeof (dwBufferLen),
|
||||
bytes_returned,
|
||||
0,
|
||||
0);
|
||||
|
||||
|
||||
if (result == SOCKET_ERROR)
|
||||
{
|
||||
unsigned long dwErr = ::WSAGetLastError ();
|
||||
|
||||
if (dwErr == WSAEWOULDBLOCK)
|
||||
{
|
||||
errno = dwErr;
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
if (dwErr != WSAENOBUFS)
|
||||
{
|
||||
errno = dwErr;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
char *qos_buf = 0;
|
||||
ACE_NEW_RETURN (qos_buf,
|
||||
char [dwBufferLen],
|
||||
-1);
|
||||
|
||||
QOS *qos = reinterpret_cast<QOS*> (qos_buf);
|
||||
|
||||
result = ::WSAIoctl ((ACE_SOCKET) socket,
|
||||
io_control_code,
|
||||
0,
|
||||
0,
|
||||
qos,
|
||||
dwBufferLen,
|
||||
bytes_returned,
|
||||
0,
|
||||
0);
|
||||
|
||||
if (result == SOCKET_ERROR)
|
||||
return result;
|
||||
|
||||
ACE_Flow_Spec sending_flowspec (qos->SendingFlowspec.TokenRate,
|
||||
qos->SendingFlowspec.TokenBucketSize,
|
||||
qos->SendingFlowspec.PeakBandwidth,
|
||||
qos->SendingFlowspec.Latency,
|
||||
qos->SendingFlowspec.DelayVariation,
|
||||
# if defined(ACE_HAS_WINSOCK2_GQOS)
|
||||
qos->SendingFlowspec.ServiceType,
|
||||
qos->SendingFlowspec.MaxSduSize,
|
||||
qos->SendingFlowspec.MinimumPolicedSize,
|
||||
# else /* ACE_HAS_WINSOCK2_GQOS */
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
# endif /* ACE_HAS_WINSOCK2_GQOS */
|
||||
0,
|
||||
0);
|
||||
|
||||
ACE_Flow_Spec receiving_flowspec (qos->ReceivingFlowspec.TokenRate,
|
||||
qos->ReceivingFlowspec.TokenBucketSize,
|
||||
qos->ReceivingFlowspec.PeakBandwidth,
|
||||
qos->ReceivingFlowspec.Latency,
|
||||
qos->ReceivingFlowspec.DelayVariation,
|
||||
# if defined(ACE_HAS_WINSOCK2_GQOS)
|
||||
qos->ReceivingFlowspec.ServiceType,
|
||||
qos->ReceivingFlowspec.MaxSduSize,
|
||||
qos->ReceivingFlowspec.MinimumPolicedSize,
|
||||
# else /* ACE_HAS_WINSOCK2_GQOS */
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
# endif /* ACE_HAS_WINSOCK2_GQOS */
|
||||
0,
|
||||
0);
|
||||
|
||||
ace_qos.sending_flowspec (&sending_flowspec);
|
||||
ace_qos.receiving_flowspec (&receiving_flowspec);
|
||||
ace_qos.provider_specific (*((struct iovec *) (&qos->ProviderSpecific)));
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
# else
|
||||
ACE_UNUSED_ARG (socket);
|
||||
ACE_UNUSED_ARG (io_control_code);
|
||||
ACE_UNUSED_ARG (ace_qos);
|
||||
ACE_UNUSED_ARG (bytes_returned);
|
||||
ACE_UNUSED_ARG (buffer_p);
|
||||
ACE_UNUSED_ARG (buffer);
|
||||
ACE_UNUSED_ARG (overlapped);
|
||||
ACE_UNUSED_ARG (func);
|
||||
ACE_NOTSUP_RETURN (-1);
|
||||
# endif /* ACE_HAS_WINSOCK2 */
|
||||
}
|
||||
|
||||
ACE_END_VERSIONED_NAMESPACE_DECL
|
||||
Loading…
Add table
Add a link
Reference in a new issue