You've already forked lidgren-network-gen3
mirror of
https://github.com/lidgren/lidgren-network-gen3.git
synced 2026-05-06 02:11:06 +09:00
NetQueue TryDequeue signature change
This commit is contained in:
@@ -228,8 +228,8 @@ namespace Lidgren.Network
|
|||||||
if (m_throttleDebt >= throttleThreshold)
|
if (m_throttleDebt >= throttleThreshold)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
NetSending send = m_unsentMessages.TryDequeue();
|
NetSending send;
|
||||||
if (send == null)
|
if (!m_unsentMessages.TryDequeue(out send))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
send.NumSends++;
|
send.NumSends++;
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ namespace Lidgren.Network
|
|||||||
|
|
||||||
// send unconnected sends
|
// send unconnected sends
|
||||||
NetSending uncSend;
|
NetSending uncSend;
|
||||||
while ((uncSend = m_unsentUnconnectedMessage.TryDequeue()) != null)
|
while (m_unsentUnconnectedMessage.TryDequeue(out uncSend))
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// TODO: use throttling here
|
// TODO: use throttling here
|
||||||
|
|||||||
@@ -81,11 +81,11 @@ namespace Lidgren.Network
|
|||||||
/// <param name="initialCapacity">initial capacity in bytes</param>
|
/// <param name="initialCapacity">initial capacity in bytes</param>
|
||||||
public NetOutgoingMessage CreateMessage(int initialCapacity)
|
public NetOutgoingMessage CreateMessage(int initialCapacity)
|
||||||
{
|
{
|
||||||
NetOutgoingMessage retval = m_outgoingMessagesPool.TryDequeue();
|
NetOutgoingMessage retval;
|
||||||
if (retval == null)
|
if (m_outgoingMessagesPool.TryDequeue(out retval))
|
||||||
retval = new NetOutgoingMessage();
|
|
||||||
else
|
|
||||||
retval.Reset();
|
retval.Reset();
|
||||||
|
else
|
||||||
|
retval = new NetOutgoingMessage();
|
||||||
|
|
||||||
byte[] storage = GetStorage(initialCapacity);
|
byte[] storage = GetStorage(initialCapacity);
|
||||||
retval.m_data = storage;
|
retval.m_data = storage;
|
||||||
@@ -228,11 +228,11 @@ namespace Lidgren.Network
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, int requiredCapacity)
|
internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, int requiredCapacity)
|
||||||
{
|
{
|
||||||
NetIncomingMessage retval = m_incomingMessagesPool.TryDequeue();
|
NetIncomingMessage retval;
|
||||||
if (retval == null)
|
if (m_incomingMessagesPool.TryDequeue(out retval))
|
||||||
retval = new NetIncomingMessage();
|
|
||||||
else
|
|
||||||
retval.Reset();
|
retval.Reset();
|
||||||
|
else
|
||||||
|
retval = new NetIncomingMessage();
|
||||||
|
|
||||||
NetException.Assert(retval.m_status == NetIncomingMessageReleaseStatus.NotReleased);
|
NetException.Assert(retval.m_status == NetIncomingMessageReleaseStatus.NotReleased);
|
||||||
|
|
||||||
@@ -256,11 +256,11 @@ namespace Lidgren.Network
|
|||||||
|
|
||||||
internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, byte[] copyFrom, int offset, int copyLength)
|
internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, byte[] copyFrom, int offset, int copyLength)
|
||||||
{
|
{
|
||||||
NetIncomingMessage retval = m_incomingMessagesPool.TryDequeue();
|
NetIncomingMessage retval;
|
||||||
if (retval == null)
|
if (m_incomingMessagesPool.TryDequeue(out retval))
|
||||||
retval = new NetIncomingMessage();
|
|
||||||
else
|
|
||||||
retval.Reset();
|
retval.Reset();
|
||||||
|
else
|
||||||
|
retval = new NetIncomingMessage();
|
||||||
|
|
||||||
NetException.Assert(retval.m_status == NetIncomingMessageReleaseStatus.NotReleased);
|
NetException.Assert(retval.m_status == NetIncomingMessageReleaseStatus.NotReleased);
|
||||||
|
|
||||||
|
|||||||
@@ -196,8 +196,8 @@ namespace Lidgren.Network
|
|||||||
if (m_status == NetPeerStatus.NotRunning)
|
if (m_status == NetPeerStatus.NotRunning)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
NetIncomingMessage retval = m_releasedIncomingMessages.TryDequeue();
|
NetIncomingMessage retval;
|
||||||
if (retval != null)
|
if (m_releasedIncomingMessages.TryDequeue(out retval))
|
||||||
{
|
{
|
||||||
if (retval.MessageType == NetIncomingMessageType.StatusChanged)
|
if (retval.MessageType == NetIncomingMessageType.StatusChanged)
|
||||||
{
|
{
|
||||||
@@ -212,7 +212,9 @@ namespace Lidgren.Network
|
|||||||
{
|
{
|
||||||
if (m_messageReceivedEvent != null)
|
if (m_messageReceivedEvent != null)
|
||||||
m_messageReceivedEvent.WaitOne(maxMillis);
|
m_messageReceivedEvent.WaitOne(maxMillis);
|
||||||
return m_releasedIncomingMessages.TryDequeue();
|
NetIncomingMessage retval;
|
||||||
|
m_releasedIncomingMessages.TryDequeue(out retval);
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -133,23 +133,29 @@ namespace Lidgren.Network
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets an item from the head of the queue, or returns default(T) if empty
|
/// Gets an item from the head of the queue, or returns default(T) if empty
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public T TryDequeue()
|
public bool TryDequeue(out T item)
|
||||||
{
|
{
|
||||||
if (m_size == 0)
|
if (m_size == 0)
|
||||||
return default(T);
|
{
|
||||||
|
item = default(T);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
lock (m_lock)
|
lock (m_lock)
|
||||||
{
|
{
|
||||||
if (m_size == 0)
|
if (m_size == 0)
|
||||||
return default(T);
|
{
|
||||||
|
item = default(T);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
T retval = m_items[m_head];
|
item = m_items[m_head];
|
||||||
m_items[m_head] = default(T);
|
m_items[m_head] = default(T);
|
||||||
|
|
||||||
m_head = (m_head + 1) % m_items.Length;
|
m_head = (m_head + 1) % m_items.Length;
|
||||||
m_size--;
|
m_size--;
|
||||||
|
|
||||||
return retval;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ namespace UnitTests
|
|||||||
queue.Enqueue(2);
|
queue.Enqueue(2);
|
||||||
queue.Enqueue(3);
|
queue.Enqueue(3);
|
||||||
|
|
||||||
|
bool ok;
|
||||||
|
int a;
|
||||||
|
|
||||||
if (queue.Contains(4))
|
if (queue.Contains(4))
|
||||||
throw new Exception("NetQueue Contains failure");
|
throw new Exception("NetQueue Contains failure");
|
||||||
|
|
||||||
@@ -22,8 +25,11 @@ namespace UnitTests
|
|||||||
|
|
||||||
if (queue.Count != 3)
|
if (queue.Count != 3)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
if (queue.TryDequeue() != 1)
|
|
||||||
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == false || a != 1)
|
||||||
throw new Exception("NetQueue failure");
|
throw new Exception("NetQueue failure");
|
||||||
|
|
||||||
if (queue.Count != 2)
|
if (queue.Count != 2)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
|
|
||||||
@@ -31,22 +37,32 @@ namespace UnitTests
|
|||||||
if (queue.Count != 3)
|
if (queue.Count != 3)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
|
|
||||||
if (queue.TryDequeue() != 42)
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == false || a != 42)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
if (queue.TryDequeue() != 2)
|
|
||||||
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == false || a != 2)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
if (queue.TryDequeue() != 3)
|
|
||||||
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == false || a != 3)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
if (queue.TryDequeue() != 0)
|
|
||||||
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == true)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
if (queue.TryDequeue() != 0)
|
|
||||||
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == true)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
|
|
||||||
queue.Enqueue(78);
|
queue.Enqueue(78);
|
||||||
if (queue.Count != 1)
|
if (queue.Count != 1)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
|
|
||||||
if (queue.TryDequeue() != 78)
|
ok = queue.TryDequeue(out a);
|
||||||
|
if (ok == false || a != 78)
|
||||||
throw new Exception("NetQueue failed");
|
throw new Exception("NetQueue failed");
|
||||||
|
|
||||||
queue.Clear();
|
queue.Clear();
|
||||||
|
|||||||
Reference in New Issue
Block a user