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