private void Receive()
 {
     while (Connected)
     {
         try
         {
             int    length = BitConverter.ToUInt16(ReadStream(2), 0);
             byte[] data   = ReadStream(length);
             if (data != null && data.Length > 0)
             {
                 if (data[0] == (byte)SToCMessage.Chat)
                 {
                     InstantQueue.Add(data);
                 }
                 else
                 {
                     DelayedQueue.Add(data);
                 }
             }
             else
             {
                 Connected = false;
                 break;
             }
         }
         catch (Exception)
         {
             Connected = false;
             break;
         }
     }
 }
Example #2
0
        public MessageSender(CompositionContainer container, DelayedQueue <SendableMail> queue)
        {
            _askStop       = new ManualResetEvent(false);
            _informStopped = new ManualResetEvent(false);

            _processor = new MessageProcessor(container);
            _mailQueue = queue;

            _processor.OnMailError += HandleMailError;
        }
        public void Test_Delayed_Queue()
        {
            var time = TimeSpan.FromSeconds(5);
            var q    = new DelayedQueue <int>();

            q.AddAsync(10, time);
            Assert.AreEqual(q.QueueSize, 0);
            Thread.Sleep(5);
            Assert.AreEqual(q.QueueSize, 1);
        }
        public void PutWithDelay()
        {
            // This test cannot run without the scheduler, so we have to check the
            // output container directly (thus this is not a black-box test)

            var blobStorage = GlobalSetup.Container.Resolve<IBlobStorageProvider>();
            var delayer = new DelayedQueue(blobStorage);

            var trigger = DateTimeOffset.UtcNow.AddMinutes(5);

            delayer.PutWithDelay(21, trigger, _testQueueName);

            var prefix = new DelayedMessageName(trigger, Guid.Empty);

            var blobReferences = blobStorage.ListBlobNames(prefix);

            Assert.AreEqual(1, blobReferences.Count(), "Wrong blob count");
        }
Example #5
0
        public TimeTableGenerator(ITimeTable timeTable, DelayedQueue <SendableMail> queue, CompositionContainer container)
        {
            if (timeTable == null)
            {
                throw new ArgumentNullException("timeTable");
            }
            if (queue == null)
            {
                throw new ArgumentNullException("queue");
            }
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            _timeTable = timeTable;
            _queue     = queue;

            _timeTableType            = container.GetExport <ITimeTableType>(timeTable.Type).Value;
            _timeTableType.Parameters = _timeTable.Parameters;
            _timeTableType.Initialize();

            container.SatisfyImportsOnce(this);
        }