IncreaseUsage() public method

Increase the level of Usage.
public IncreaseUsage ( long value ) : void
value long /// A ///
return void
Beispiel #1
0
        public void TestUsage()
        {
            MemoryUsage usage1 = new MemoryUsage( 2048 );

            Assert.That( !usage1.IsFull() );
            Assert.That( usage1.Usage == 0 );

            usage1.IncreaseUsage( 1024 );

            Assert.That( !usage1.IsFull() );
            Assert.That( usage1.Usage == 1024 );

            usage1.DecreaseUsage( 512 );

            Assert.That( !usage1.IsFull() );
            Assert.That( usage1.Usage == 512 );

            usage1.Usage = 2048;

            Assert.That( usage1.IsFull() );
            Assert.That( usage1.Usage == 2048 );

            usage1.IncreaseUsage( 1024 );
            Assert.That( usage1.IsFull() );
            Assert.That( usage1.Usage == 3072 );
        }
Beispiel #2
0
        public void TestTimedWait()
        {
            MemoryUsage usage = new MemoryUsage( 2048 );
            usage.IncreaseUsage( 5072 );

            DateTime start = DateTime.Now;

            usage.WaitForSpace( TimeSpan.FromMilliseconds(150) );

            DateTime end = DateTime.Now;

            TimeSpan timePassed = end - start;

            Assert.That( timePassed.TotalMilliseconds >= 125 );
        }
Beispiel #3
0
        internal void DoSend(ActiveMQDestination destination, ActiveMQMessage message,
                             MessageProducer producer, MemoryUsage producerWindow, TimeSpan sendTimeout)
        {
            ActiveMQMessage msg = message;

            if(destination.IsTemporary && !connection.IsTempDestinationActive(destination as ActiveMQTempDestination))
            {
                throw new InvalidDestinationException("Cannot publish to a deleted Destination: " + destination);
            }

            if(IsTransacted)
            {
                DoStartTransaction();
                msg.TransactionId = TransactionContext.TransactionId;
            }

            msg.RedeliveryCounter = 0;
            msg.BrokerPath = null;

            if(this.connection.CopyMessageOnSend)
            {
                msg = (ActiveMQMessage)msg.Clone();
            }

            msg.OnSend();
            msg.ProducerId = msg.MessageId.ProducerId;

            if(sendTimeout.TotalMilliseconds <= 0 && !msg.ResponseRequired && !connection.AlwaysSyncSend &&
               (!msg.Persistent || connection.AsyncSend || msg.TransactionId != null))
            {
                this.connection.Oneway(msg);

                if(producerWindow != null)
                {
                    // Since we defer lots of the marshaling till we hit the wire, this
                    // might not provide and accurate size. We may change over to doing
                    // more aggressive marshaling, to get more accurate sizes.. this is more
                    // important once users start using producer window flow control.
                    producerWindow.IncreaseUsage(msg.Size());
                }
            }
            else
            {
                if(sendTimeout.TotalMilliseconds > 0)
                {
                    this.connection.SyncRequest(msg, sendTimeout);
                }
                else
                {
                    this.connection.SyncRequest(msg);
                }
            }
        }
Beispiel #4
0
        public void TestWait()
        {
            MemoryUsage usage = new MemoryUsage( 2048 );
            usage.IncreaseUsage( 5072 );

            Thread thread1 = new Thread(delegate ()
            {
                Thread.Sleep( 100 );
                usage.DecreaseUsage( usage.Usage );
            });

            thread1.Start();

            usage.WaitForSpace();
            Assert.That( usage.Usage == 0 );

            thread1.Join();
        }