71 lines
2.4 KiB
C#
71 lines
2.4 KiB
C#
// This file is part of Hangfire.
|
|
// Copyright © 2013-2014 Sergey Odinokov.
|
|
//
|
|
// Hangfire 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
|
|
// of the License, or any later version.
|
|
//
|
|
// Hangfire 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 Hangfire. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Hangfire.Raven.JobQueues
|
|
{
|
|
public class PersistentJobQueueProviderCollection : IEnumerable<IPersistentJobQueueProvider>
|
|
{
|
|
private readonly List<IPersistentJobQueueProvider> _providers
|
|
= new List<IPersistentJobQueueProvider>();
|
|
private readonly Dictionary<string, IPersistentJobQueueProvider> _providersByQueue
|
|
= new Dictionary<string, IPersistentJobQueueProvider>(StringComparer.OrdinalIgnoreCase);
|
|
|
|
private readonly IPersistentJobQueueProvider _defaultProvider;
|
|
|
|
public PersistentJobQueueProviderCollection(IPersistentJobQueueProvider defaultProvider)
|
|
{
|
|
defaultProvider.ThrowIfNull("defaultProvider");
|
|
|
|
_defaultProvider = defaultProvider;
|
|
|
|
_providers.Add(_defaultProvider);
|
|
}
|
|
|
|
public void Add(IPersistentJobQueueProvider provider, IEnumerable<string> queues)
|
|
{
|
|
provider.ThrowIfNull("provider");
|
|
queues.ThrowIfNull("queues");
|
|
|
|
_providers.Add(provider);
|
|
|
|
foreach (var queue in queues)
|
|
{
|
|
_providersByQueue.Add(queue, provider);
|
|
}
|
|
}
|
|
|
|
public IPersistentJobQueueProvider GetProvider(string queue)
|
|
{
|
|
return _providersByQueue.ContainsKey(queue)
|
|
? _providersByQueue[queue]
|
|
: _defaultProvider;
|
|
}
|
|
|
|
public IEnumerator<IPersistentJobQueueProvider> GetEnumerator()
|
|
{
|
|
return _providers.GetEnumerator();
|
|
}
|
|
|
|
IEnumerator IEnumerable.GetEnumerator()
|
|
{
|
|
return GetEnumerator();
|
|
}
|
|
}
|
|
} |