Ver a proveniência
New functions
This is to support the peek-and-publish model for the managed client
release/3.x.x
Paul Fake
há 6 anos
committed by
GitHub
ascendente
cometimento
9ff39c1fd9
Não foi encontrada uma chave conhecida para esta assinatura, na base de dados
ID da chave GPG: 4AEE18F83AFDEB23
1 ficheiros alterados com
32 adições e
0 eliminações
-
Source/MQTTnet/Internal/BlockingQueue.cs
|
|
@@ -55,6 +55,38 @@ namespace MQTTnet.Internal |
|
|
|
_gate.WaitOne(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public TItem PeekAndWait() |
|
|
|
{ |
|
|
|
while (true) |
|
|
|
{ |
|
|
|
lock (_syncRoot) |
|
|
|
{ |
|
|
|
if (_items.Count > 0) |
|
|
|
{ |
|
|
|
return _items.First.Value; |
|
|
|
} |
|
|
|
|
|
|
|
if (_items.Count == 0) |
|
|
|
{ |
|
|
|
_gate.Reset(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
_gate.WaitOne(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void RemoveFirstIfEqual(TItem item) |
|
|
|
{ |
|
|
|
lock (_syncRoot) |
|
|
|
{ |
|
|
|
if (_items.Count > 0 && EqualityComparer<TItem>.Default.Equals(_items.First.Value, item)) |
|
|
|
{ |
|
|
|
_items.RemoveFirst(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public TItem RemoveFirst() |
|
|
|
{ |
|
|
|