You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2009/12/22 18:01:17 UTC

svn commit: r893231 - in /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x: ./ src/main/csharp/ src/main/csharp/Transport/ src/main/csharp/Transport/Mock/ src/main/csharp/Transport/Tcp/ src/main/csharp/Util/ src/test/csharp/ src/test/csharp/...

Author: tabish
Date: Tue Dec 22 17:01:16 2009
New Revision: 893231

URL: http://svn.apache.org/viewvc?rev=893231&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQNET-212
https://issues.apache.org/activemq/browse/AMQNET-227

Merged changes from trunk code for next RC

Added:
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/InactivityMonitor.cs
      - copied unchanged from r893228, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Util/IdGenerator.cs
      - copied unchanged from r893228, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/IdGenerator.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/Transport/Inactivity/
      - copied from r893228, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Transport/Inactivity/
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/Transport/Inactivity/InactivityMonitorTest.cs
      - copied unchanged from r893228, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Transport/Inactivity/InactivityMonitorTest.cs
Modified:
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/   (props changed)
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/nant-common.xml   (props changed)
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Connection.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/ConnectionFactory.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Mock/MockTransport.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Tcp/TcpTransportFactory.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/NMSConnectionFactoryTest.cs
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq-test.csproj   (contents, props changed)
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.csproj   (contents, props changed)
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.sln   (props changed)

Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 22 17:01:16 2009
@@ -1,3 +1,3 @@
 /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.0.0:692591,693525
 /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0:788230,788233,790183
-/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk:891917,892010-892308
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk:891917,892010-892308,892840-893228

Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/nant-common.xml
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 22 17:01:16 2009
@@ -1,2 +1,2 @@
 /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0/nant-common.xml:788230,788233,790183
-/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/nant-common.xml:891917,892010-892308
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/nant-common.xml:891917,892010-892308,892840-893228

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Connection.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Connection.cs?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Connection.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Connection.cs Tue Dec 22 17:01:16 2009
@@ -18,6 +18,7 @@
 using System;
 using System.Collections;
 using System.Threading;
+using Apache.NMS.ActiveMQ.Util;
 using Apache.NMS.ActiveMQ.Commands;
 using Apache.NMS.ActiveMQ.Transport;
 using Apache.NMS;
@@ -30,17 +31,10 @@
     /// </summary>
     public class Connection : IConnection
     {
-        private readonly Uri brokerUri;
-        private ITransport transport;
-        private readonly ConnectionInfo info;
+        private static readonly IdGenerator CONNECTION_ID_GENERATOR = new IdGenerator();
+
+        // Uri configurable options.
         private AcknowledgementMode acknowledgementMode = AcknowledgementMode.AutoAcknowledge;
-        private TimeSpan requestTimeout;
-        private BrokerInfo brokerInfo; // from broker
-        private WireFormatInfo brokerWireFormatInfo; // from broker
-        private readonly IList sessions = ArrayList.Synchronized(new ArrayList());
-        private readonly IDictionary producers = Hashtable.Synchronized(new Hashtable());
-        private readonly IDictionary dispatchers = Hashtable.Synchronized(new Hashtable());
-        private readonly object myLock = new object();
         private bool asyncSend = false;
         private bool alwaysSyncSend = false;
         private bool asyncClose = true;
@@ -49,6 +43,18 @@
         private bool sendAcksAsync = false;
         private bool dispatchAsync = true;
         private int producerWindowSize = 0;
+
+        private bool userSpecifiedClientID;
+        private readonly Uri brokerUri;
+        private ITransport transport;
+        private ConnectionInfo info;
+        private TimeSpan requestTimeout;
+        private BrokerInfo brokerInfo; // from broker
+        private WireFormatInfo brokerWireFormatInfo; // from broker
+        private readonly IList sessions = ArrayList.Synchronized(new ArrayList());
+        private readonly IDictionary producers = Hashtable.Synchronized(new Hashtable());
+        private readonly IDictionary dispatchers = Hashtable.Synchronized(new Hashtable());
+        private readonly object myLock = new object();
         private bool connected = false;
         private bool closed = false;
         private bool closing = false;
@@ -61,17 +67,25 @@
         private IRedeliveryPolicy redeliveryPolicy;
         private PrefetchPolicy prefetchPolicy = new PrefetchPolicy();
         private ICompressionPolicy compressionPolicy = new CompressionPolicy();
+        private IdGenerator clientIdGenerator;
 
-        public Connection(Uri connectionUri, ITransport transport, ConnectionInfo info)
+        public Connection(Uri connectionUri, ITransport transport, IdGenerator clientIdGenerator)
         {
             this.brokerUri = connectionUri;
-            this.info = info;
             this.requestTimeout = transport.RequestTimeout;
+            this.clientIdGenerator = clientIdGenerator;
+
             this.transport = transport;
             this.transport.Command = new CommandHandler(OnCommand);
             this.transport.Exception = new ExceptionHandler(OnException);
             this.transport.Interrupted = new InterruptedHandler(OnTransportInterrupted);
             this.transport.Resumed = new ResumedHandler(OnTransportResumed);
+
+            ConnectionId id = new ConnectionId();
+            id.Value = CONNECTION_ID_GENERATOR.GenerateId();
+
+            this.info = new ConnectionInfo();
+            this.info.ConnectionId = id;
         }
 
         ~Connection()
@@ -98,6 +112,18 @@
 
         #region Properties
 
+        public String UserName
+        {
+            get { return this.info.UserName; }
+            set { this.info.UserName = value; }
+        }
+
+        public String Password
+        {
+            get { return this.info.Password; }
+            set { this.info.Password = value; }
+        }
+
         /// <summary>
         /// This property indicates what version of the Protocol we are using to
         /// communicate with the Broker, if not set we return the lowest version
@@ -252,11 +278,26 @@
             get { return info.ClientId; }
             set
             {
-                if(connected)
+                if(this.connected)
                 {
                     throw new NMSException("You cannot change the ClientId once the Connection is connected");
                 }
-                info.ClientId = value;
+
+                this.info.ClientId = value;
+                this.userSpecifiedClientID = true;
+                CheckConnected();
+            }
+        }
+
+        /// <summary>
+        /// The Default Client Id used if the ClientId property is not set explicity.
+        /// </summary>
+        public string DefaultClientId
+        {
+            set
+            {
+                this.info.ClientId = value;
+                this.userSpecifiedClientID = true;
             }
         }
 
@@ -576,6 +617,11 @@
 
             if(!connected)
             {
+                if(!this.userSpecifiedClientID)
+                {
+                    this.info.ClientId = this.clientIdGenerator.GenerateId();
+                }
+
                 connected = true;
                 // now lets send the connection and see if we get an ack/nak
                 if(null == SyncRequest(info))
@@ -788,7 +834,7 @@
             return id;
         }
 
-        protected SessionInfo CreateSessionInfo(AcknowledgementMode sessionAcknowledgementMode)
+        private SessionInfo CreateSessionInfo(AcknowledgementMode sessionAcknowledgementMode)
         {
             SessionInfo answer = new SessionInfo();
             SessionId sessionId = new SessionId();

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/ConnectionFactory.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/ConnectionFactory.cs?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/ConnectionFactory.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/ConnectionFactory.cs Tue Dec 22 17:01:16 2009
@@ -16,6 +16,7 @@
  */
 
 using System;
+using Apache.NMS.ActiveMQ.Util;
 using Apache.NMS.ActiveMQ.Commands;
 using Apache.NMS.ActiveMQ.Transport;
 using Apache.NMS;
@@ -36,9 +37,19 @@
 		private Uri brokerUri;
 		private string connectionUserName;
 		private string connectionPassword;
-		private string clientId;
+        private string clientId;
+        private string clientIdPrefix;
+        private IdGenerator clientIdGenerator;
+
         private bool useCompression;
-        
+        private bool copyMessageOnSend = true;
+        private bool dispatchAsync=true;
+        private bool asyncSend;
+        private bool asyncClose;
+        private bool alwaysSyncSend;
+        private bool sendAcksAsync=true;
+        private AcknowledgementMode acknowledgementMode = AcknowledgementMode.AutoAcknowledge;
+
         private IRedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
         private PrefetchPolicy prefetchPolicy = new PrefetchPolicy();
         private ICompressionPolicy compressionPolicy = new CompressionPolicy();
@@ -79,8 +90,8 @@
 
 		public ConnectionFactory(Uri brokerUri, string clientID)
 		{
-			this.brokerUri = brokerUri;
-			this.clientId = clientID;
+			this.BrokerUri = brokerUri;
+			this.ClientId = clientID;
 		}
 
 		public IConnection CreateConnection()
@@ -90,37 +101,60 @@
 
 		public IConnection CreateConnection(string userName, string password)
 		{
-			// Strip off the activemq prefix, if it exists.
-			Uri uri = new Uri(URISupport.stripPrefix(brokerUri.OriginalString, "activemq:"));
-
-			Tracer.InfoFormat("Connecting to: {0}", uri.ToString());
+            Connection connection = null;
 
-			ConnectionInfo info = CreateConnectionInfo(userName, password);
-			ITransport transport = TransportFactory.CreateTransport(uri);
-			Connection connection = new Connection(uri, transport, info);
-
-            // Set the Factory level configuration to the Connection, this can be overriden by
-            // the params on the Connection URI so we do this before applying the params.
-            connection.UseCompression = this.useCompression;
-            connection.RedeliveryPolicy = this.redeliveryPolicy.Clone() as IRedeliveryPolicy;
-            connection.PrefetchPolicy = this.prefetchPolicy.Clone() as PrefetchPolicy;
-            connection.CompressionPolicy = this.compressionPolicy.Clone() as ICompressionPolicy;
-            
-			// Set properties on connection using parameters prefixed with "connection."
-			// Since this could be a composite Uri, assume the connection-specific parameters
-			// are associated with the outer-most specification of the composite Uri. What's nice
-			// is that this works with simple Uri as well.
-			URISupport.CompositeData c = URISupport.parseComposite(uri);
-			URISupport.SetProperties(connection, c.Parameters, "connection.");
+            try
+            {
+    			// Strip off the activemq prefix, if it exists.
+    			Uri uri = new Uri(URISupport.stripPrefix(brokerUri.OriginalString, "activemq:"));
+    
+    			Tracer.InfoFormat("Connecting to: {0}", uri.ToString());
+    
+                ITransport transport = TransportFactory.CreateTransport(uri);
+    
+                connection = new Connection(uri, transport, this.ClientIdGenerator);
+    
+                ConfigureConnection(connection);
+    
+                connection.UserName = this.connectionUserName;
+                connection.Password = this.connectionPassword;
+    
+                if(this.clientId != null)
+                {
+                    connection.DefaultClientId = this.clientId;
+                }
+    
+    			connection.ITransport.Start();
+    
+    			return connection;
+            }
+            catch(NMSException e)
+            {
+                try
+                {
+                    connection.Close();
+                }
+                catch
+                {
+                }
 
-            URISupport.SetProperties(connection.PrefetchPolicy, c.Parameters, "nms.PrefetchPolicy.");
-            URISupport.SetProperties(connection.RedeliveryPolicy, c.Parameters, "nms.RedeliveryPolicy.");
+                throw e;
+            }
+            catch(Exception e)
+            {
+                try
+                {
+                    connection.Close();
+                }
+                catch
+                {
+                }
 
-			connection.ITransport.Start();
-			return connection;
+                throw NMSExceptionSupport.Create("Could not connect to broker URL: " + this.brokerUri + ". Reason: " + e.Message, e);
+            }
 		}
 
-		// Properties
+        #region ConnectionFactory Properties
 
 		/// <summary>
 		/// Get/or set the broker Uri.
@@ -128,7 +162,17 @@
 		public Uri BrokerUri
 		{
 			get { return brokerUri; }
-			set { brokerUri = value; }
+			set
+            {
+                brokerUri = value;
+
+                Uri uri = new Uri(URISupport.stripPrefix(brokerUri.OriginalString, "activemq:"));
+
+                URISupport.CompositeData c = URISupport.parseComposite(uri);
+                URISupport.SetProperties(this, c.Parameters, "connection.");
+                URISupport.SetProperties(this.PrefetchPolicy, c.Parameters, "nms.PrefetchPolicy.");
+                URISupport.SetProperties(this.RedeliveryPolicy, c.Parameters, "nms.RedeliveryPolicy.");
+            }
 		}
 
 		public string UserName
@@ -149,12 +193,71 @@
 			set { clientId = value; }
 		}
 
+        public string ClientIdPrefix
+        {
+            get { return clientIdPrefix; }
+            set { clientIdPrefix = value; }
+        }
+
         public bool UseCompression
         {
             get { return this.useCompression; }
             set { this.useCompression = value; }
         }
 
+        public bool CopyMessageOnSend
+        {
+            get { return copyMessageOnSend; }
+            set { copyMessageOnSend = value; }
+        }
+
+        public bool AlwaysSyncSend
+        {
+            get { return alwaysSyncSend; }
+            set { alwaysSyncSend = value; }
+        }
+
+        public bool AsyncClose
+        {
+            get { return asyncClose; }
+            set { asyncClose = value; }
+        }
+
+        public bool SendAcksAsync
+        {
+            get { return sendAcksAsync; }
+            set { sendAcksAsync = value; }
+        }
+
+        public bool AsyncSend
+        {
+            get { return asyncSend; }
+            set { asyncSend = value; }
+        }
+
+        public bool DispatchAsync
+        {
+            get { return this.dispatchAsync; }
+            set { this.dispatchAsync = value; }
+        }
+
+        public string AckMode
+        {
+            set { this.acknowledgementMode = NMSConvert.ToAcknowledgementMode(value); }
+        }
+
+        public AcknowledgementMode AcknowledgementMode
+        {
+            get { return acknowledgementMode; }
+            set { this.acknowledgementMode = value; }
+        }
+
+        public PrefetchPolicy PrefetchPolicy
+        {
+            get { return this.prefetchPolicy; }
+            set { this.prefetchPolicy = value; }
+        }
+
         public IRedeliveryPolicy RedeliveryPolicy
         {
             get { return this.redeliveryPolicy; }
@@ -177,7 +280,31 @@
                     this.compressionPolicy = value; 
                 }
             }
-        }        
+        }
+
+        public IdGenerator ClientIdGenerator
+        {
+            set { this.clientIdGenerator = value; }
+            get
+            {
+                lock(this)
+                {
+                    if(this.clientIdGenerator == null)
+                    {
+                        if(this.clientIdPrefix != null)
+                        {
+                            this.clientIdGenerator = new IdGenerator(this.clientIdPrefix);
+                        }
+                        else
+                        {
+                            this.clientIdGenerator = new IdGenerator();
+                        }
+                    }
+
+                    return this.clientIdGenerator;
+                }
+            }
+        }
 
 		public event ExceptionListener OnException
 		{
@@ -191,24 +318,22 @@
 			}
 		}
 
-		protected virtual ConnectionInfo CreateConnectionInfo(string userName, string password)
-		{
-			ConnectionInfo answer = new ConnectionInfo();
-			ConnectionId connectionId = new ConnectionId();
-			connectionId.Value = CreateNewGuid();
+        #endregion
 
-			answer.ConnectionId = connectionId;
-			answer.UserName = userName;
-			answer.Password = password;
-			answer.ClientId = clientId ?? CreateNewGuid();
-
-			return answer;
-		}
-
-		protected static string CreateNewGuid()
-		{
-			return Guid.NewGuid().ToString();
-		}
+        protected virtual void ConfigureConnection(Connection connection)
+        {
+            connection.AsyncClose = this.AsyncClose;
+            connection.AsyncSend = this.AsyncSend;
+            connection.CopyMessageOnSend = this.CopyMessageOnSend;
+            connection.AlwaysSyncSend = this.AlwaysSyncSend;
+            connection.DispatchAsync = this.DispatchAsync;
+            connection.SendAcksAsync = this.SendAcksAsync;
+            connection.AcknowledgementMode = this.acknowledgementMode;
+            connection.UseCompression = this.useCompression;
+            connection.RedeliveryPolicy = this.redeliveryPolicy.Clone() as IRedeliveryPolicy;
+            connection.PrefetchPolicy = this.prefetchPolicy.Clone() as PrefetchPolicy;
+            connection.CompressionPolicy = this.compressionPolicy.Clone() as ICompressionPolicy;
+        }
 
 		protected static void ExceptionHandler(Exception ex)
 		{

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Mock/MockTransport.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Mock/MockTransport.cs?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Mock/MockTransport.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Mock/MockTransport.cs Tue Dec 22 17:01:16 2009
@@ -44,6 +44,9 @@
         private bool failOnReceiveMessage = false;
         private int numReceivedMessagesBeforeFail = 0;
         private int numReceivedMessages = 0;
+        private bool failOnKeepAliveInfoSends = false;
+        private int numSentKeepAliveInfosBeforeFail = 0;
+        private int numSentKeppAliveInfos = 0;
         private int nextCommandId = 0;
         private CommandHandler commandHandler;
         private CommandHandler outgoingCommandHandler;
@@ -150,16 +153,25 @@
         public void Oneway(Command command)
         {
             Tracer.Debug("MockTransport sending oneway Command: " + command.ToString() );
-            
+
             if( command.IsMessage ) {
                 this.numSentMessages++;
-    
+
                 if( this.failOnSendMessage && this.numSentMessages > this.numSentMessagesBeforeFail ) {
                     Tracer.Debug("MockTransport Oneway send, failing as per configuration." );
                     throw new IOException( "Failed to Send Message.");
                 }
             }
-    
+
+            if( command.IsKeepAliveInfo ) {
+                this.numSentKeppAliveInfos++;
+
+                if( this.failOnKeepAliveInfoSends && this.numSentKeppAliveInfos > this.numSentKeepAliveInfosBeforeFail ) {
+                    Tracer.Debug("MockTransport Oneway send, failing as per configuration." );
+                    throw new IOException( "Failed to Send Message.");
+                }
+            }
+            
             // Process and send any new Commands back.
 
             // Let the Response Builder give us the Commands to send to the Client App.
@@ -324,19 +336,37 @@
 			get { return failOnReceiveMessage; }
 			set { failOnReceiveMessage = value; }
 		}
-		
+
 		public int NumReceivedMessagesBeforeFail
 		{
 			get { return numReceivedMessagesBeforeFail; }
-			set { numReceivedMessagesBeforeFail = value; }			
+			set { numReceivedMessagesBeforeFail = value; }
 		}
-		
+
 		public int NumReceivedMessages
 		{
 			get { return numReceivedMessages; }
 			set { numReceivedMessages = value; }
 		}
 
+        public bool FailOnKeepAliveInfoSends
+        {
+            get { return failOnKeepAliveInfoSends; }
+            set { failOnKeepAliveInfoSends = value; }
+        }
+
+        public int NumSentKeepAliveInfosBeforeFail
+        {
+            get { return numSentKeepAliveInfosBeforeFail; }
+            set { numSentKeepAliveInfosBeforeFail = value; }
+        }
+
+        public int NumSentKeppAliveInfos
+        {
+            get { return numSentKeppAliveInfos; }
+            set { numSentKeppAliveInfos = value; }
+        }
+
         public bool IsFaultTolerant
         {
             get{ return false; }

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Tcp/TcpTransportFactory.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Tcp/TcpTransportFactory.cs?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Tcp/TcpTransportFactory.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/main/csharp/Transport/Tcp/TcpTransportFactory.cs Tue Dec 22 17:01:16 2009
@@ -25,350 +25,365 @@
 
 namespace Apache.NMS.ActiveMQ.Transport.Tcp
 {
-	public class TcpTransportFactory : ITransportFactory
-	{
-		public TcpTransportFactory()
-		{
-		}
-
-		#region Properties
-
-		private bool useLogging = false;
-		public bool UseLogging
-		{
-			get { return useLogging; }
-			set { useLogging = value; }
-		}
-
-		/// <summary>
-		/// Size in bytes of the receive buffer.
-		/// </summary>
-		private int receiveBufferSize = 8192;
-		public int ReceiveBufferSize
-		{
-			get { return receiveBufferSize; }
-			set { receiveBufferSize = value; }
-		}
-
-		/// <summary>
-		/// Size in bytes of send buffer.
-		/// </summary>
-		private int sendBufferSize = 8192;
-		public int SendBufferSize
-		{
-			get { return sendBufferSize; }
-			set { sendBufferSize = value; }
-		}
-
-		/// <summary>
-		/// The time-out value, in milliseconds. The default value is 0, which indicates
-		/// an infinite time-out period. Specifying -1 also indicates an infinite time-out period.
-		/// </summary>
-		private int receiveTimeout = 0;
-		public int ReceiveTimeout
-		{
-			get { return receiveTimeout; }
-			set { receiveTimeout = value; }
-		}
-
-		/// <summary>
-		/// The time-out value, in milliseconds. If you set the property with a value between 1 and 499,
-		/// the value will be changed to 500. The default value is 0, which indicates an infinite
-		/// time-out period. Specifying -1 also indicates an infinite time-out period.
-		/// </summary>
-		private int sendTimeout = 0;
-		public int SendTimeout
-		{
-			get { return sendTimeout; }
-			set { sendTimeout = value; }
-		}
-
-		private string wireFormat = "OpenWire";
-		public string WireFormat
-		{
-			get { return wireFormat; }
-			set { wireFormat = value; }
-		}
-
-		private TimeSpan requestTimeout = NMSConstants.defaultRequestTimeout;
-		public int RequestTimeout
-		{
-			get { return (int) requestTimeout.TotalMilliseconds; }
-			set { requestTimeout = TimeSpan.FromMilliseconds(value); }
-		}
-
-		#endregion
-
-		#region ITransportFactory Members
-
-		public ITransport CompositeConnect(Uri location)
-		{
-			return CompositeConnect(location, null);
-		}
-
-		public ITransport CompositeConnect(Uri location, SetTransport setTransport)
-		{
-			// Extract query parameters from broker Uri
-			StringDictionary map = URISupport.ParseQuery(location.Query);
+    public class TcpTransportFactory : ITransportFactory
+    {
+        public TcpTransportFactory()
+        {
+        }
+
+        #region Properties
+
+        private bool useLogging = false;
+        public bool UseLogging
+        {
+            get { return useLogging; }
+            set { useLogging = value; }
+        }
+
+        /// <summary>
+        /// Should the Inactivity Monitor be enabled on this Transport.
+        /// </summary>
+        private bool useInactivityMonitor = false;
+        public bool UseInactivityMonitor
+        {
+           get { return this.useInactivityMonitor; }
+           set { this.useInactivityMonitor = value; }
+        }
+
+        /// <summary>
+        /// Size in bytes of the receive buffer.
+        /// </summary>
+        private int receiveBufferSize = 8192;
+        public int ReceiveBufferSize
+        {
+            get { return receiveBufferSize; }
+            set { receiveBufferSize = value; }
+        }
+
+        /// <summary>
+        /// Size in bytes of send buffer.
+        /// </summary>
+        private int sendBufferSize = 8192;
+        public int SendBufferSize
+        {
+            get { return sendBufferSize; }
+            set { sendBufferSize = value; }
+        }
+
+        /// <summary>
+        /// The time-out value, in milliseconds. The default value is 0, which indicates
+        /// an infinite time-out period. Specifying -1 also indicates an infinite time-out period.
+        /// </summary>
+        private int receiveTimeout = 0;
+        public int ReceiveTimeout
+        {
+            get { return receiveTimeout; }
+            set { receiveTimeout = value; }
+        }
+
+        /// <summary>
+        /// The time-out value, in milliseconds. If you set the property with a value between 1 and 499,
+        /// the value will be changed to 500. The default value is 0, which indicates an infinite
+        /// time-out period. Specifying -1 also indicates an infinite time-out period.
+        /// </summary>
+        private int sendTimeout = 0;
+        public int SendTimeout
+        {
+            get { return sendTimeout; }
+            set { sendTimeout = value; }
+        }
+
+        private string wireFormat = "OpenWire";
+        public string WireFormat
+        {
+            get { return wireFormat; }
+            set { wireFormat = value; }
+        }
+
+        private TimeSpan requestTimeout = NMSConstants.defaultRequestTimeout;
+        public int RequestTimeout
+        {
+            get { return (int) requestTimeout.TotalMilliseconds; }
+            set { requestTimeout = TimeSpan.FromMilliseconds(value); }
+        }
+
+        #endregion
+
+        #region ITransportFactory Members
+
+        public ITransport CompositeConnect(Uri location)
+        {
+            return CompositeConnect(location, null);
+        }
+
+        public ITransport CompositeConnect(Uri location, SetTransport setTransport)
+        {
+            // Extract query parameters from broker Uri
+            StringDictionary map = URISupport.ParseQuery(location.Query);
 
-			// Set transport. properties on this (the factory)
-			URISupport.SetProperties(this, map, "transport.");
+            // Set transport. properties on this (the factory)
+            URISupport.SetProperties(this, map, "transport.");
 
-			Tracer.Debug("Opening socket to: " + location.Host + " on port: " + location.Port);
-			Socket socket = Connect(location.Host, location.Port);
+            Tracer.Debug("Opening socket to: " + location.Host + " on port: " + location.Port);
+            Socket socket = Connect(location.Host, location.Port);
 
 #if !NETCF
-			socket.ReceiveBufferSize = ReceiveBufferSize;
-			socket.SendBufferSize = SendBufferSize;
-			socket.ReceiveTimeout = ReceiveTimeout;
-			socket.SendTimeout = SendTimeout;
+            socket.ReceiveBufferSize = ReceiveBufferSize;
+            socket.SendBufferSize = SendBufferSize;
+            socket.ReceiveTimeout = ReceiveTimeout;
+            socket.SendTimeout = SendTimeout;
 #endif
 
-			IWireFormat wireformat = CreateWireFormat(map);
-			ITransport transport = new TcpTransport(location, socket, wireformat);
+            IWireFormat wireformat = CreateWireFormat(map);
+            ITransport transport = new TcpTransport(location, socket, wireformat);
 
-			wireformat.Transport = transport;
+            wireformat.Transport = transport;
 
-			if(UseLogging)
-			{
-				transport = new LoggingTransport(transport);
-			}
-
-			if(wireformat is OpenWireFormat)
-			{
-				transport = new WireFormatNegotiator(transport, (OpenWireFormat) wireformat);
-			}
-
-			transport.RequestTimeout = this.requestTimeout;
-
-			if(setTransport != null)
-			{
-				setTransport(transport, location);
-			}
-
-			return transport;
-		}
-
-		public ITransport CreateTransport(Uri location)
-		{
-			ITransport transport = CompositeConnect(location);
-
-			transport = new MutexTransport(transport);
-			transport = new ResponseCorrelator(transport);
-			transport.RequestTimeout = this.requestTimeout;
-
-			return transport;
-		}
-
-		#endregion
-
-		// DISCUSSION: Caching host entries may not be the best strategy when using the
-		// failover protocol.  The failover protocol needs to be very dynamic when looking
-		// up hostnames at runtime.  If old hostname->IP mappings are kept around, this may
-		// lead to runtime failures that could have been avoided by dynamically looking up
-		// the new hostname IP.
+            if(UseLogging)
+            {
+                transport = new LoggingTransport(transport);
+            }
+
+            if(UseInactivityMonitor)
+            {
+               transport = new InactivityMonitor(transport);
+            }
+
+            if(wireformat is OpenWireFormat)
+            {
+                transport = new WireFormatNegotiator(transport, (OpenWireFormat) wireformat);
+            }
+
+            transport.RequestTimeout = this.requestTimeout;
+
+            if(setTransport != null)
+            {
+                setTransport(transport, location);
+            }
+
+            return transport;
+        }
+
+        public ITransport CreateTransport(Uri location)
+        {
+            ITransport transport = CompositeConnect(location);
+
+            transport = new MutexTransport(transport);
+            transport = new ResponseCorrelator(transport);
+            transport.RequestTimeout = this.requestTimeout;
+
+            return transport;
+        }
+
+        #endregion
+
+        // DISCUSSION: Caching host entries may not be the best strategy when using the
+        // failover protocol.  The failover protocol needs to be very dynamic when looking
+        // up hostnames at runtime.  If old hostname->IP mappings are kept around, this may
+        // lead to runtime failures that could have been avoided by dynamically looking up
+        // the new hostname IP.
 #if CACHE_HOSTENTRIES
-		private static IDictionary<string, IPHostEntry> CachedIPHostEntries = new Dictionary<string, IPHostEntry>();
-		private static readonly object _syncLock = new object();
+        private static IDictionary<string, IPHostEntry> CachedIPHostEntries = new Dictionary<string, IPHostEntry>();
+        private static readonly object _syncLock = new object();
 #endif
-		public static IPHostEntry GetIPHostEntry(string host)
-		{
-			IPHostEntry ipEntry;
+        public static IPHostEntry GetIPHostEntry(string host)
+        {
+            IPHostEntry ipEntry;
 
 #if CACHE_HOSTENTRIES
-			string hostUpperName = host.ToUpper();
+            string hostUpperName = host.ToUpper();
 
-			lock (_syncLock)
-			{
-				if (!CachedIPHostEntries.TryGetValue(hostUpperName, out ipEntry))
-				{
-					try
-					{
-						ipEntry = Dns.GetHostEntry(hostUpperName);
-						CachedIPHostEntries.Add(hostUpperName, ipEntry);
-					}
-					catch
-					{
-						ipEntry = null;
-					}
-				}
-			}
+            lock (_syncLock)
+            {
+                if (!CachedIPHostEntries.TryGetValue(hostUpperName, out ipEntry))
+                {
+                    try
+                    {
+                        ipEntry = Dns.GetHostEntry(hostUpperName);
+                        CachedIPHostEntries.Add(hostUpperName, ipEntry);
+                    }
+                    catch
+                    {
+                        ipEntry = null;
+                    }
+                }
+            }
 #else
-			try
-			{
-				ipEntry = Dns.GetHostEntry(host);
-			}
-			catch
-			{
-				ipEntry = null;
-			}
+            try
+            {
+                ipEntry = Dns.GetHostEntry(host);
+            }
+            catch
+            {
+                ipEntry = null;
+            }
 #endif
 
-			return ipEntry;
-		}
+            return ipEntry;
+        }
 
-		private Socket ConnectSocket(IPAddress address, int port)
-		{
-			if(null != address)
-			{
-				try
-				{
-					Socket socket = new Socket(address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
-
-					if(null != socket)
-					{
-						socket.Connect(new IPEndPoint(address, port));
-						if(socket.Connected)
-						{
-							return socket;
-						}
-					}
-				}
-				catch
-				{
-				}
-			}
+        private Socket ConnectSocket(IPAddress address, int port)
+        {
+            if(null != address)
+            {
+                try
+                {
+                    Socket socket = new Socket(address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
+
+                    if(null != socket)
+                    {
+                        socket.Connect(new IPEndPoint(address, port));
+                        if(socket.Connected)
+                        {
+                            return socket;
+                        }
+                    }
+                }
+                catch
+                {
+                }
+            }
 
-			return null;
-		}
+            return null;
+        }
 
-		public static bool TryParseIPAddress(string host, out IPAddress ipaddress)
-		{
+        public static bool TryParseIPAddress(string host, out IPAddress ipaddress)
+        {
 #if !NETCF
-			return IPAddress.TryParse(host, out ipaddress);
+            return IPAddress.TryParse(host, out ipaddress);
 #else
-			try
-			{
-				ipaddress = IPAddress.Parse(host);
-			}
-			catch
-			{
-				ipaddress = null;
-			}
+            try
+            {
+                ipaddress = IPAddress.Parse(host);
+            }
+            catch
+            {
+                ipaddress = null;
+            }
 
-			return (null != ipaddress);
+            return (null != ipaddress);
 #endif
-		}
+        }
 
-		public static IPAddress GetIPAddress(string hostname, AddressFamily addressFamily)
-		{
-			IPAddress ipaddress = null;
-			IPHostEntry hostEntry = GetIPHostEntry(hostname);
-
-			if(null != hostEntry)
-			{
-				ipaddress = GetIPAddress(hostEntry, addressFamily);
-			}
-
-			return ipaddress;
-		}
-
-		public static IPAddress GetIPAddress(IPHostEntry hostEntry, AddressFamily addressFamily)
-		{
-			if(null != hostEntry)
-			{
-				foreach(IPAddress address in hostEntry.AddressList)
-				{
-					if(address.AddressFamily == addressFamily)
-					{
-						return address;
-					}
-				}
-			}
-
-			return null;
-		}
-
-		protected Socket Connect(string host, int port)
-		{
-			Socket socket = null;
-			IPAddress ipaddress;
-
-			try
-			{
-				if(TryParseIPAddress(host, out ipaddress))
-				{
-					socket = ConnectSocket(ipaddress, port);
-				}
-				else
-				{
-					// Looping through the AddressList allows different type of connections to be tried
-					// (IPv6, IPv4 and whatever else may be available).
-					IPHostEntry hostEntry = GetIPHostEntry(host);
-
-					if(null != hostEntry)
-					{
-						// Prefer IPv6 first.
-						ipaddress = GetIPAddress(hostEntry, AddressFamily.InterNetworkV6);
-						socket = ConnectSocket(ipaddress, port);
-						if(null == socket)
-						{
-							// Try IPv4 next.
-							ipaddress = GetIPAddress(hostEntry, AddressFamily.InterNetwork);
-							socket = ConnectSocket(ipaddress, port);
-							if(null == socket)
-							{
-								// Try whatever else there is.
-								foreach(IPAddress address in hostEntry.AddressList)
-								{
-									if(AddressFamily.InterNetworkV6 == address.AddressFamily
-										|| AddressFamily.InterNetwork == address.AddressFamily)
-									{
-										// Already tried these protocols.
-										continue;
-									}
-
-									socket = ConnectSocket(address, port);
-									if(null != socket)
-									{
-										ipaddress = address;
-										break;
-									}
-								}
-							}
-						}
-					}
-				}
-
-				if(null == socket)
-				{
-					throw new SocketException();
-				}
-			}
-			catch(Exception ex)
-			{
-				throw new NMSConnectionException(String.Format("Error connecting to {0}:{1}.", host, port), ex);
-			}
-
-			Tracer.DebugFormat("Connected to {0}:{1} using {2} protocol.", host, port, ipaddress.AddressFamily.ToString());
-			return socket;
-		}
-
-		protected IWireFormat CreateWireFormat(StringDictionary map)
-		{
-			object properties = null;
-			IWireFormat wireFormatItf = null;
-
-			if(String.Compare(this.wireFormat, "stomp", true) == 0)
-			{
-				wireFormatItf = new StompWireFormat();
-				properties = wireFormatItf;
-			}
-			else
-			{
-				OpenWireFormat openwireFormat = new OpenWireFormat();
-
-				wireFormatItf = openwireFormat;
-				properties = openwireFormat.PreferedWireFormatInfo;
-			}
-
-			if(null != properties)
-			{
-				// Set wireformat. properties on the wireformat owned by the tcpTransport
-				URISupport.SetProperties(properties, map, "wireFormat.");
-			}
-
-			return wireFormatItf;
-		}
-	}
+        public static IPAddress GetIPAddress(string hostname, AddressFamily addressFamily)
+        {
+            IPAddress ipaddress = null;
+            IPHostEntry hostEntry = GetIPHostEntry(hostname);
+
+            if(null != hostEntry)
+            {
+                ipaddress = GetIPAddress(hostEntry, addressFamily);
+            }
+
+            return ipaddress;
+        }
+
+        public static IPAddress GetIPAddress(IPHostEntry hostEntry, AddressFamily addressFamily)
+        {
+            if(null != hostEntry)
+            {
+                foreach(IPAddress address in hostEntry.AddressList)
+                {
+                    if(address.AddressFamily == addressFamily)
+                    {
+                        return address;
+                    }
+                }
+            }
+
+            return null;
+        }
+
+        protected Socket Connect(string host, int port)
+        {
+            Socket socket = null;
+            IPAddress ipaddress;
+
+            try
+            {
+                if(TryParseIPAddress(host, out ipaddress))
+                {
+                    socket = ConnectSocket(ipaddress, port);
+                }
+                else
+                {
+                    // Looping through the AddressList allows different type of connections to be tried
+                    // (IPv6, IPv4 and whatever else may be available).
+                    IPHostEntry hostEntry = GetIPHostEntry(host);
+
+                    if(null != hostEntry)
+                    {
+                        // Prefer IPv6 first.
+                        ipaddress = GetIPAddress(hostEntry, AddressFamily.InterNetworkV6);
+                        socket = ConnectSocket(ipaddress, port);
+                        if(null == socket)
+                        {
+                            // Try IPv4 next.
+                            ipaddress = GetIPAddress(hostEntry, AddressFamily.InterNetwork);
+                            socket = ConnectSocket(ipaddress, port);
+                            if(null == socket)
+                            {
+                                // Try whatever else there is.
+                                foreach(IPAddress address in hostEntry.AddressList)
+                                {
+                                    if(AddressFamily.InterNetworkV6 == address.AddressFamily
+                                        || AddressFamily.InterNetwork == address.AddressFamily)
+                                    {
+                                        // Already tried these protocols.
+                                        continue;
+                                    }
+
+                                    socket = ConnectSocket(address, port);
+                                    if(null != socket)
+                                    {
+                                        ipaddress = address;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+                if(null == socket)
+                {
+                    throw new SocketException();
+                }
+            }
+            catch(Exception ex)
+            {
+                throw new NMSConnectionException(String.Format("Error connecting to {0}:{1}.", host, port), ex);
+            }
+
+            Tracer.DebugFormat("Connected to {0}:{1} using {2} protocol.", host, port, ipaddress.AddressFamily.ToString());
+            return socket;
+        }
+
+        protected IWireFormat CreateWireFormat(StringDictionary map)
+        {
+            object properties = null;
+            IWireFormat wireFormatItf = null;
+
+            if(String.Compare(this.wireFormat, "stomp", true) == 0)
+            {
+                wireFormatItf = new StompWireFormat();
+                properties = wireFormatItf;
+            }
+            else
+            {
+                OpenWireFormat openwireFormat = new OpenWireFormat();
+
+                wireFormatItf = openwireFormat;
+                properties = openwireFormat.PreferedWireFormatInfo;
+            }
+
+            if(null != properties)
+            {
+                // Set wireformat. properties on the wireformat owned by the tcpTransport
+                URISupport.SetProperties(properties, map, "wireFormat.");
+            }
+
+            return wireFormatItf;
+        }
+    }
 }

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/NMSConnectionFactoryTest.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/NMSConnectionFactoryTest.cs?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/NMSConnectionFactoryTest.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/src/test/csharp/NMSConnectionFactoryTest.cs Tue Dec 22 17:01:16 2009
@@ -45,20 +45,20 @@
 		[Row("activemq:tcp://InvalidHost:61616", ExpectedException = typeof(NMSConnectionException))]
 		[Row("activemq:tcp://InvalidHost:61616?connection.asyncclose=false", ExpectedException = typeof(NMSConnectionException))]
 
-		[Row("tcp://${activemqhost}:61616?connection.InvalidParameter=true", ExpectedException = typeof(NMSException))]
-		[Row("activemq:tcp://${activemqhost}:61616?connection.InvalidParameter=true", ExpectedException = typeof(NMSException))]
-		[Row("activemq:failover:tcp://${activemqhost}:61616?connection.InvalidParameter=true", ExpectedException = typeof(NMSException))]
-		[Row("activemq:failover:(tcp://${activemqhost}:61616)?connection.InvalidParameter=true", ExpectedException = typeof(NMSException))]
-		[Row("activemq:failover:(tcp://${activemqhost}:61616,tcp://${activemqbackuphost}:61616)?connection.InvalidParameter=true", ExpectedException = typeof(NMSException))]
+		[Row("tcp://${activemqhost}:61616?connection.InvalidParameter=true", ExpectedException = typeof(NMSConnectionException))]
+		[Row("activemq:tcp://${activemqhost}:61616?connection.InvalidParameter=true", ExpectedException = typeof(NMSConnectionException))]
+		[Row("activemq:failover:tcp://${activemqhost}:61616?connection.InvalidParameter=true", ExpectedException = typeof(NMSConnectionException))]
+		[Row("activemq:failover:(tcp://${activemqhost}:61616)?connection.InvalidParameter=true", ExpectedException = typeof(NMSConnectionException))]
+		[Row("activemq:failover:(tcp://${activemqhost}:61616,tcp://${activemqbackuphost}:61616)?connection.InvalidParameter=true", ExpectedException = typeof(NMSConnectionException))]
 
 		[Row("ftp://${activemqhost}:61616", ExpectedException = typeof(NMSConnectionException))]
 		[Row("http://${activemqhost}:61616", ExpectedException = typeof(NMSConnectionException))]
 		[Row("discovery://${activemqhost}:6155", ExpectedException = typeof(NMSConnectionException))]
 		[Row("sms://${activemqhost}:61616", ExpectedException = typeof(NMSConnectionException))]
 		[Row("activemq:multicast://${activemqhost}:6155", ExpectedException = typeof(NMSConnectionException))]
+		[Row("activemq:(tcp://${activemqhost}:61616)?connection.asyncClose=false", ExpectedException = typeof(NMSConnectionException))]
 
-		[Row("activemq:(tcp://${activemqhost}:61616)?connection.asyncclose=false", ExpectedException = typeof(UriFormatException))]
-		[Row("(tcp://${activemqhost}:61616,tcp://${activemqhost}:61616)", ExpectedException = typeof(UriFormatException))]
+        [Row("(tcp://${activemqhost}:61616,tcp://${activemqhost}:61616)", ExpectedException = typeof(UriFormatException))]
 		[Row("tcp://${activemqhost}:61616,tcp://${activemqhost}:61616", ExpectedException = typeof(UriFormatException))]
 		public void TestURI(string connectionURI)
 		{

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq-test.csproj
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq-test.csproj?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq-test.csproj (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq-test.csproj Tue Dec 22 17:01:16 2009
@@ -90,6 +90,7 @@
     <Compile Include="src\test\csharp\StompHelperTest.cs" />
     <Compile Include="src\test\csharp\Threads\DedicatedTaskRunnerTest.cs" />
     <Compile Include="src\test\csharp\Transport\failover\FailoverTransportTest.cs" />
+    <Compile Include="src\test\csharp\Transport\Inactivity\InactivityMonitorTest.cs" />
     <Compile Include="src\test\csharp\Transport\Mock\MockTransportFactoryTest.cs" />
     <Compile Include="src\test\csharp\Transport\Mock\MockTransportTest.cs" />
     <Compile Include="src\test\csharp\Util\MemoryUsageTest.cs" />

Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq-test.csproj
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 22 17:01:16 2009
@@ -1,2 +1,2 @@
 /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0/vs2008-activemq-test.csproj:788230,788233,790183
-/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq-test.csproj:891917,892010-892308
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq-test.csproj:891917,892010-892308,892840-893228

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.csproj
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.csproj?rev=893231&r1=893230&r2=893231&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.csproj (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.csproj Tue Dec 22 17:01:16 2009
@@ -899,6 +899,7 @@
       <SubType>Code</SubType>
     </Compile>
     <Compile Include="src\main\csharp\Transport\ICompositeTransport.cs" />
+    <Compile Include="src\main\csharp\Transport\InactivityMonitor.cs" />
     <Compile Include="src\main\csharp\Transport\ITransport.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -935,6 +936,7 @@
     <Compile Include="src\main\csharp\Transport\WireFormatNegotiator.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="src\main\csharp\Util\IdGenerator.cs" />
     <Compile Include="src\main\csharp\Util\MemoryUsage.cs" />
     <Compile Include="src\main\csharp\Util\MessageDispatchChannel.cs" />
   </ItemGroup>

Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.csproj
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 22 17:01:16 2009
@@ -1,2 +1,2 @@
 /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0/vs2008-activemq.csproj:788230,788233,790183
-/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq.csproj:891917,892010-892308
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq.csproj:891917,892010-892308,892840-893228

Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.2.x/vs2008-activemq.sln
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 22 17:01:16 2009
@@ -1,2 +1,2 @@
 /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0/vs2008-activemq.sln:788230,788233,790183
-/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq.sln:891917,892010-892308
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq.sln:891917,892010-892308,892840-893228