merging latest development
Signed-off-by: kberg-amzn <karlberg@amazon.com>
This commit is contained in:
@@ -103,6 +103,14 @@ namespace AzNetworking
|
||||
//! @return boolean true on success
|
||||
virtual bool Disconnect(ConnectionId connectionId, DisconnectReason reason) = 0;
|
||||
|
||||
//! Sets whether this connection interface can disconnect by virtue of a timeout
|
||||
//! @param timeoutEnabled If this connection interface will automatically disconnect due to a timeout
|
||||
virtual void SetTimeoutEnabled(bool timeoutEnabled) = 0;
|
||||
|
||||
//! Whether this connection interface will disconnect by virtue of a time out (does not account for cvars affecting all connections)
|
||||
//! @return boolean true if this connection will not disconnect on timeout (does not account for cvars affecting all connections)
|
||||
virtual bool IsTimeoutEnabled() const = 0;
|
||||
|
||||
//! Const access to the metrics tracked by this network interface.
|
||||
//! @return const reference to the metrics tracked by this network interface
|
||||
const NetworkInterfaceMetrics& GetMetrics() const;
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace AzNetworking
|
||||
}
|
||||
timeoutItem->UpdateTimeoutTime(startTimeMs);
|
||||
|
||||
NetworkOutputSerializer serializer(buffer.GetBuffer(), buffer.GetSize());
|
||||
NetworkOutputSerializer serializer(buffer.GetBuffer(), static_cast<uint32_t>(buffer.GetSize()));
|
||||
if (m_state == ConnectionState::Connecting)
|
||||
{
|
||||
const ConnectResult connectResult = m_networkInterface.GetConnectionListener().ValidateConnect(GetRemoteAddress(), header, serializer);
|
||||
@@ -198,7 +198,7 @@ namespace AzNetworking
|
||||
{
|
||||
TcpPacketEncodingBuffer buffer;
|
||||
{
|
||||
NetworkInputSerializer serializer(buffer.GetBuffer(), buffer.GetCapacity());
|
||||
NetworkInputSerializer serializer(buffer.GetBuffer(), static_cast<uint32_t>(buffer.GetCapacity()));
|
||||
if (!const_cast<IPacket&>(packet).Serialize(serializer))
|
||||
{
|
||||
AZ_Assert(false, "SendReliablePacket: Unable to serialize packet [Type: %d]", packet.GetPacketType());
|
||||
@@ -272,7 +272,7 @@ namespace AzNetworking
|
||||
{
|
||||
TcpPacketHeader header(packetType, aznumeric_cast<uint16_t>(payloadBuffer.GetSize()));
|
||||
header.SetPacketFlag(PacketFlag::Compressed, shouldCompress);
|
||||
NetworkInputSerializer serializer(headerBuffer.GetBuffer(), headerBuffer.GetCapacity());
|
||||
NetworkInputSerializer serializer(headerBuffer.GetBuffer(), static_cast<uint32_t>(headerBuffer.GetCapacity()));
|
||||
if (!header.Serialize(serializer))
|
||||
{
|
||||
return false;
|
||||
@@ -313,7 +313,7 @@ namespace AzNetworking
|
||||
m_networkInterface.GetMetrics().m_sendBytesCompressedDelta += (payloadSize - compressionMemBytesUsed);
|
||||
|
||||
writeBuffer.Resize(aznumeric_cast<int32_t>(compressionMemBytesUsed));
|
||||
payloadSize = writeBuffer.GetSize();
|
||||
payloadSize = static_cast<uint32_t>(writeBuffer.GetSize());
|
||||
srcData = writeBuffer.GetBuffer();
|
||||
}
|
||||
|
||||
|
||||
@@ -174,6 +174,16 @@ namespace AzNetworking
|
||||
return connection->Disconnect(reason, TerminationEndpoint::Local);
|
||||
}
|
||||
|
||||
void TcpNetworkInterface::SetTimeoutEnabled(bool timeoutEnabled)
|
||||
{
|
||||
m_timeoutEnabled = timeoutEnabled;
|
||||
}
|
||||
|
||||
bool TcpNetworkInterface::IsTimeoutEnabled() const
|
||||
{
|
||||
return m_timeoutEnabled;
|
||||
}
|
||||
|
||||
void TcpNetworkInterface::QueueNewConnection(const PendingConnection& pendingConnection)
|
||||
{
|
||||
m_pendingConnections.PushBackItem(pendingConnection);
|
||||
@@ -306,7 +316,7 @@ namespace AzNetworking
|
||||
{
|
||||
tcpConnection->SendReliablePacket(CorePackets::HeartbeatPacket());
|
||||
}
|
||||
else if (net_TcpTimeoutConnections)
|
||||
else if (net_TcpTimeoutConnections && m_networkInterface.IsTimeoutEnabled())
|
||||
{
|
||||
tcpConnection->Disconnect(DisconnectReason::Timeout, TerminationEndpoint::Local);
|
||||
return TimeoutResult::Delete;
|
||||
|
||||
@@ -99,6 +99,8 @@ namespace AzNetworking
|
||||
bool WasPacketAcked(ConnectionId connectionId, PacketId packetId) override;
|
||||
bool StopListening() override;
|
||||
bool Disconnect(ConnectionId connectionId, DisconnectReason reason) override;
|
||||
void SetTimeoutEnabled(bool timeoutEnabled) override;
|
||||
bool IsTimeoutEnabled() const override;
|
||||
//! @}
|
||||
|
||||
//! Queues a new incoming connection for this network interface.
|
||||
@@ -154,6 +156,7 @@ namespace AzNetworking
|
||||
AZ::Name m_name;
|
||||
TrustZone m_trustZone;
|
||||
uint16_t m_port = 0;
|
||||
bool m_timeoutEnabled = true;
|
||||
IConnectionListener& m_connectionListener;
|
||||
TcpConnectionSet m_connectionSet;
|
||||
TcpSocketManager m_tcpSocketManager;
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace AzNetworking
|
||||
{
|
||||
template <uint32_t SIZE>
|
||||
inline TcpRingBuffer<SIZE>::TcpRingBuffer()
|
||||
: m_impl(m_buffer.data(), m_buffer.size())
|
||||
: m_impl(m_buffer.data(), static_cast<uint32_t>(m_buffer.size()))
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace AzNetworking
|
||||
if (dtlsData.GetSize() > 0)
|
||||
{
|
||||
const uint8_t* encryptedData = dtlsData.GetBuffer();
|
||||
const uint32_t encryptedSize = dtlsData.GetSize();
|
||||
const uint32_t encryptedSize = static_cast<uint32_t>(dtlsData.GetSize());
|
||||
BIO_write(m_readBio, encryptedData, encryptedSize);
|
||||
}
|
||||
DtlsEndpoint::HandshakeState prevState = m_state;
|
||||
@@ -196,7 +196,7 @@ namespace AzNetworking
|
||||
// Need to do this... connection negotiation may have left data in the write bio that we need to send out
|
||||
if (BIO_ctrl_pending(m_writeBio) > 0)
|
||||
{
|
||||
const uint32_t maxBufferSize = outHandshakeData.GetCapacity();
|
||||
const uint32_t maxBufferSize = static_cast<uint32_t>(outHandshakeData.GetCapacity());
|
||||
outHandshakeData.Resize(maxBufferSize);
|
||||
const int32_t dataSize = BIO_read(m_writeBio, outHandshakeData.GetBuffer(), maxBufferSize);
|
||||
outHandshakeData.Resize(dataSize);
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace AzNetworking
|
||||
return true;
|
||||
}
|
||||
|
||||
totalPacketSize += packetFragments[index]->GetChunkBuffer().GetSize();
|
||||
totalPacketSize += static_cast<uint32_t>(packetFragments[index]->GetChunkBuffer().GetSize());
|
||||
}
|
||||
|
||||
// We now mark this sequence as delivered, so if by some chance all the individual chunks get redelivered again we don't double deliver the reconstructed packet
|
||||
@@ -125,7 +125,7 @@ namespace AzNetworking
|
||||
uint8_t* bufferPointer = buffer.GetBuffer();
|
||||
for (uint32_t index = 0; index < packetFragments.size(); ++index)
|
||||
{
|
||||
const uint32_t chunkSize = packetFragments[index]->GetChunkBuffer().GetSize();
|
||||
const uint32_t chunkSize = static_cast<uint32_t>(packetFragments[index]->GetChunkBuffer().GetSize());
|
||||
memcpy(bufferPointer, packetFragments[index]->GetChunkBuffer().GetBuffer(), chunkSize);
|
||||
bufferPointer += chunkSize;
|
||||
}
|
||||
@@ -133,7 +133,7 @@ namespace AzNetworking
|
||||
// We can erase all the chunks now, packet is completed
|
||||
m_packetFragments.erase(fragmentSequence);
|
||||
|
||||
NetworkOutputSerializer networkSerializer(buffer.GetBuffer(), buffer.GetSize());
|
||||
NetworkOutputSerializer networkSerializer(buffer.GetBuffer(), static_cast<uint32_t>(buffer.GetSize()));
|
||||
{
|
||||
ISerializer& networkISerializer = networkSerializer; // To get the default typeinfo parameters in ISerializer
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ namespace AzNetworking
|
||||
continue;
|
||||
}
|
||||
decodedPacketData = m_decompressBuffer.GetBuffer();
|
||||
decodedPacketSize = m_decompressBuffer.GetSize();
|
||||
decodedPacketSize = static_cast<int32_t>(m_decompressBuffer.GetSize());
|
||||
}
|
||||
GetMetrics().m_recvBytesUncompressed += decodedPacketSize;
|
||||
|
||||
@@ -397,6 +397,16 @@ namespace AzNetworking
|
||||
return connection->Disconnect(reason, TerminationEndpoint::Local);
|
||||
}
|
||||
|
||||
void UdpNetworkInterface::SetTimeoutEnabled(bool timeoutEnabled)
|
||||
{
|
||||
m_timeoutEnabled = timeoutEnabled;
|
||||
}
|
||||
|
||||
bool UdpNetworkInterface::IsTimeoutEnabled() const
|
||||
{
|
||||
return m_timeoutEnabled;
|
||||
}
|
||||
|
||||
bool UdpNetworkInterface::IsEncrypted() const
|
||||
{
|
||||
return m_socket->IsEncrypted();
|
||||
@@ -494,7 +504,7 @@ namespace AzNetworking
|
||||
{
|
||||
buffer.Resize(buffer.GetCapacity());
|
||||
|
||||
NetworkInputSerializer networkSerializer(buffer.GetBuffer(), buffer.GetCapacity());
|
||||
NetworkInputSerializer networkSerializer(buffer.GetBuffer(), static_cast<uint32_t>(buffer.GetCapacity()));
|
||||
ISerializer& serializer = networkSerializer; // To get the default typeinfo parameters in ISerializer
|
||||
|
||||
if (!header.SerializePacketFlags(serializer))
|
||||
@@ -517,7 +527,7 @@ namespace AzNetworking
|
||||
|
||||
buffer.Resize(serializer.GetSize());
|
||||
}
|
||||
uint32_t packetSize = buffer.GetSize();
|
||||
uint32_t packetSize = static_cast<uint32_t>(buffer.GetSize());
|
||||
uint8_t* packetData = buffer.GetBuffer();
|
||||
|
||||
// If the packet doesn't fit within our MTU (minus potential SSL encryption overhead), break it up
|
||||
@@ -549,7 +559,7 @@ namespace AzNetworking
|
||||
UdpPacketEncodingBuffer writeBuffer;
|
||||
if (m_compressor && shouldCompress)
|
||||
{
|
||||
NetworkInputSerializer flagSerializer(writeBuffer.GetBuffer(), writeBuffer.GetCapacity());
|
||||
NetworkInputSerializer flagSerializer(writeBuffer.GetBuffer(), static_cast<uint32_t>(writeBuffer.GetCapacity()));
|
||||
ISerializer& serializer = flagSerializer; // To get the default typeinfo parameters in ISerializer
|
||||
|
||||
header.SetPacketFlag(PacketFlag::Compressed, true);
|
||||
@@ -562,7 +572,7 @@ namespace AzNetworking
|
||||
AZ_Assert(flagSize == 1, "Flag bitfield should serialize to one byte");
|
||||
|
||||
// Compress the packet, make sure to offset by the size of the flag which is now serialized
|
||||
const uint32_t payloadSize = buffer.GetSize() - flagSize;
|
||||
const uint32_t payloadSize = static_cast<uint32_t>(buffer.GetSize() - flagSize);
|
||||
uint8_t* payload = buffer.GetBuffer() + flagSize;
|
||||
const AZStd::size_t maxSizeNeeded = m_compressor->GetMaxCompressedBufferSize(payloadSize);
|
||||
AZStd::size_t compressionMemBytesUsed = 0;
|
||||
@@ -578,7 +588,7 @@ namespace AzNetworking
|
||||
if (compressionMemBytesUsed < payloadSize)
|
||||
{
|
||||
writeBuffer.Resize(aznumeric_cast<int32_t>(flagSize + compressionMemBytesUsed));
|
||||
packetSize = writeBuffer.GetSize();
|
||||
packetSize = static_cast<uint32_t>(writeBuffer.GetSize());
|
||||
packetData = writeBuffer.GetBuffer();
|
||||
// Track byte delta caused by compression
|
||||
GetMetrics().m_sendBytesCompressedDelta += (packetSize - compressionMemBytesUsed);
|
||||
@@ -729,7 +739,7 @@ namespace AzNetworking
|
||||
{
|
||||
udpConnection->SendUnreliablePacket(CorePackets::HeartbeatPacket());
|
||||
}
|
||||
else if (net_UdpTimeoutConnections)
|
||||
else if (net_UdpTimeoutConnections && m_networkInterface.IsTimeoutEnabled())
|
||||
{
|
||||
udpConnection->Disconnect(DisconnectReason::Timeout, TerminationEndpoint::Local);
|
||||
return TimeoutResult::Delete;
|
||||
|
||||
@@ -104,6 +104,8 @@ namespace AzNetworking
|
||||
bool WasPacketAcked(ConnectionId connectionId, PacketId packetId) override;
|
||||
bool StopListening() override;
|
||||
bool Disconnect(ConnectionId connectionId, DisconnectReason reason) override;
|
||||
void SetTimeoutEnabled(bool timeoutEnabled) override;
|
||||
bool IsTimeoutEnabled() const override;
|
||||
//! @}
|
||||
|
||||
//! Returns true if this is an encrypted socket, false if not.
|
||||
@@ -179,6 +181,7 @@ namespace AzNetworking
|
||||
TrustZone m_trustZone;
|
||||
uint16_t m_port = 0;
|
||||
bool m_allowIncomingConnections = false;
|
||||
bool m_timeoutEnabled = true;
|
||||
IConnectionListener& m_connectionListener;
|
||||
UdpConnectionSet m_connectionSet;
|
||||
TimeoutQueue m_connectionTimeoutQueue;
|
||||
|
||||
@@ -177,7 +177,7 @@ namespace AzNetworking
|
||||
}
|
||||
|
||||
IpAddress address;
|
||||
const uint32_t bufferHead = receiveBuffer.GetSize();
|
||||
const uint32_t bufferHead = static_cast<uint32_t>(receiveBuffer.GetSize());
|
||||
if (bufferHead + MaxUdpTransmissionUnit >= receiveBuffer.GetCapacity())
|
||||
{
|
||||
AZLOG_INFO("Receive buffer full, leaving data on the socket. Size exceeded by %d",
|
||||
|
||||
@@ -241,7 +241,7 @@ namespace AzNetworking
|
||||
#ifdef ENABLE_LATENCY_DEBUG
|
||||
int32_t UdpSocket::SendInternalDeferred(const DeferredData& data) const
|
||||
{
|
||||
return SendInternal(data.m_address, data.m_dataBuffer.GetBuffer(), data.m_dataBuffer.GetSize(), data.m_encrypt, *data.m_dtlsEndpoint);
|
||||
return SendInternal(data.m_address, data.m_dataBuffer.GetBuffer(), static_cast<uint32_t>(data.m_dataBuffer.GetSize()), data.m_encrypt, *data.m_dtlsEndpoint);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user