コード例 #1
0
        /// <summary>
        /// De-queue the object
        /// </summary>
        public object Dequeue(string queueName)
        {
            if (String.IsNullOrEmpty(queueName))
            {
                throw new ArgumentNullException(nameof(queueName));
            }

            // Open the queue
            this.Open(queueName);

            String queueDirectory = Path.Combine(this.m_configuration.QueuePath, queueName);

            // Serialize
            var queueFile = Directory.GetFiles(queueDirectory).FirstOrDefault();

            if (queueFile == null)
            {
                return(null);
            }

            this.m_tracer.TraceInfo("Will dequeue {0}", Path.GetFileNameWithoutExtension(queueFile));
            object retVal = null;

            using (var fs = File.OpenRead(queueFile))
            {
                retVal = QueueEntry.Load(fs).ToObject();
            }
            File.Delete(queueFile);
            return(retVal);
        }
コード例 #2
0
        /// <summary>
        /// Dequeue by identifier
        /// </summary>
        public Queue.DispatcherQueueEntry DequeueById(string queueName, string correlationId)
        {
            try
            {
                if (String.IsNullOrEmpty(queueName))
                {
                    throw new ArgumentNullException(nameof(queueName));
                }

                // Open the queue
                this.Open(queueName);

                String queueDirectory = Path.Combine(this.m_configuration.QueuePath, queueName);

                // Serialize
                String queueFile = null;

                if (String.IsNullOrEmpty(correlationId))
                {
                    queueFile = Directory.GetFiles(queueDirectory).FirstOrDefault();
                }
                else
                {
                    queueFile = Path.Combine(queueDirectory, correlationId);
                }

                if (queueFile == null || !File.Exists(queueFile))
                {
                    return(null);
                }

                this.m_tracer.TraceInfo("Will dequeue {0}", Path.GetFileNameWithoutExtension(queueFile));
                QueueEntry retVal = null;
                try
                {
                    using (var fs = File.OpenRead(queueFile))
                    {
                        retVal = QueueEntry.Load(fs);
                    }
                }
                finally
                {
                    File.Delete(queueFile);
                }

                return(new Core.Queue.DispatcherQueueEntry(Path.GetFileNameWithoutExtension(queueFile), queueName, retVal.CreationTime, retVal.Type, retVal.ToObject()));
            }
            catch (Exception e)
            {
                this.m_tracer.TraceError("Error de-queueing {0} - {1}", queueName, e);

                return(null);
            }
        }
コード例 #3
0
        /// <summary>
        /// Get a queue entry
        /// </summary>

        public DispatcherQueueEntry GetQueueEntry(string queueName, string correlationId)
        {
            var filePath = Path.Combine(this.m_configuration.QueuePath, queueName, correlationId);

            if (File.Exists(filePath))
            {
                using (var fs = File.OpenRead(filePath))
                {
                    var entry = QueueEntry.Load(fs);
                    return(new DispatcherQueueEntry(correlationId, queueName, entry.CreationTime, entry.Type, entry.XmlData));
                }
            }
            throw new KeyNotFoundException($"{queueName}\\{correlationId} doesn't exist");
        }
コード例 #4
0
 /// <summary>
 /// Get all queue entries
 /// </summary>
 public IEnumerable <Queue.DispatcherQueueEntry> GetQueueEntries(string queueName)
 {
     foreach (var f in Directory.GetFiles(Path.Combine(this.m_configuration.QueuePath, queueName)))
     {
         QueueEntry entry = null;
         try
         {
             using (var fs = File.OpenRead(f))
                 entry = QueueEntry.Load(fs);
         }
         catch
         {
             continue;
         }
         yield return(new Core.Queue.DispatcherQueueEntry(Path.GetFileNameWithoutExtension(f), queueName, entry.CreationTime, entry.Type, entry.XmlData));
     }
 }