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 ); }
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 ); }
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); } } }
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(); }