public SimpleMessageQueue(DirectoryInfo directory) { if (directory == null) throw new ArgumentNullException("directory"); if (!directory.Exists) throw new ArgumentException("directory does not exist"); _innerQueue = MemoryQueueLookup.Current.CreateOrGetQueue(directory.FullName); Formatter = new BinaryFormatter(); }
public void UnSubscribe(InnerSimpleQueue queue) { lock (typeof(MemoryQueueLookup)) { InnerSimpleQueue innerQueue; if (!_lookupTable.TryGetValue(queue.DirectoryPath, out innerQueue)) return; innerQueue.Subscribers--; if (innerQueue.AnySubscribers) return; TearDownQueue(innerQueue); } }
public SimpleMessageQueue(DirectoryInfo directory) { if (directory == null) { throw new ArgumentNullException("directory"); } if (!directory.Exists) { throw new ArgumentException("directory does not exist"); } _innerQueue = MemoryQueueLookup.Current.CreateOrGetQueue(directory.FullName); Formatter = new BinaryFormatter(); }
public void UnSubscribe(InnerSimpleQueue queue) { lock (typeof(MemoryQueueLookup)) { InnerSimpleQueue innerQueue; if (!_lookupTable.TryGetValue(queue.DirectoryPath, out innerQueue)) { return; } innerQueue.Subscribers--; if (innerQueue.AnySubscribers) { return; } TearDownQueue(innerQueue); } }
public InnerSimpleQueue CreateOrGetQueue(string directoryPath) { if (string.IsNullOrEmpty(directoryPath)) throw new ArgumentNullException("directoryPath"); lock (typeof(MemoryQueueLookup)) { InnerSimpleQueue innerQueue; if (_lookupTable.TryGetValue(directoryPath, out innerQueue)) { innerQueue.Subscribers++; return innerQueue; } innerQueue = new InnerSimpleQueue(new BlockingCollection<SimpleQueueMessage>(), directoryPath); innerQueue.Subscribers++; innerQueue.Initialize(); _lookupTable.Add(directoryPath, innerQueue); return innerQueue; } }
public InnerSimpleQueue CreateOrGetQueue(string directoryPath) { if (string.IsNullOrEmpty(directoryPath)) { throw new ArgumentNullException("directoryPath"); } lock (typeof(MemoryQueueLookup)) { InnerSimpleQueue innerQueue; if (_lookupTable.TryGetValue(directoryPath, out innerQueue)) { innerQueue.Subscribers++; return(innerQueue); } innerQueue = new InnerSimpleQueue(new BlockingCollection <SimpleQueueMessage>(), directoryPath); innerQueue.Subscribers++; innerQueue.Initialize(); _lookupTable.Add(directoryPath, innerQueue); return(innerQueue); } }
private void TearDownQueue(InnerSimpleQueue queue) { _lookupTable.Remove(queue.DirectoryPath); queue.Dispose(); }