/* M2Mqtt - MQTT Client Library for .Net Copyright (c) 2014, Paolo Patierno, All rights reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. */ using System; using System.Collections; namespace uPLibrary.Networking.M2Mqtt { /// /// Extension class for a Queue /// internal static class QueueExtension { /// /// Predicate for searching inside a queue /// /// Item of the queue /// Result of predicate internal delegate bool QueuePredicate(object item); /// /// Get (without removing) an item from queue based on predicate /// /// Queue in which to search /// Predicate to verify to get item /// Item matches the predicate internal static object Get(Queue queue, QueuePredicate predicate) { foreach (var item in queue) { if (predicate(item)) return item; } return null; } } }