activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject svn commit: r1529024 - /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs
Date Thu, 03 Oct 2013 22:49:51 GMT
Author: tabish
Date: Thu Oct  3 22:49:50 2013
New Revision: 1529024

URL: http://svn.apache.org/r1529024
Log:
Add a little Stopper utility class.

Added:
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs
  (with props)

Added: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs?rev=1529024&view=auto
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs
(added)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs
Thu Oct  3 22:49:50 2013
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+
+namespace Apache.NMS.ActiveMQ.Util
+{
+    /// <summary>
+    /// Simple IStoppable service stopper class.  Can be used to Stop multiple
+    /// IStoppable instances without throwing an exception.  Once all services
+    /// have been stopped, the first thrown exception can be fired. 
+    /// </summary>
+    public class ServiceStopper
+    {
+        private Exception firstException;
+
+        public void Stop(IStoppable service)
+        {
+            try
+            {
+                service.Stop();
+            }
+            catch(Exception e)
+            {
+                OnException(service, e);
+            }
+        }
+
+        public void ThrowFirstException()
+        {
+            if (firstException != null)
+            {
+                throw firstException;
+            }
+        }
+
+        private void OnException(object owner, Exception e)
+        {
+            LogError(owner, e);
+            if (firstException == null)
+            {
+                firstException = e;
+            }
+        }
+
+        private void LogError(object owner, Exception e)
+        {
+            Tracer.WarnFormat("Error stopping service:[{0}] exception given: {1}", owner,
e);                              
+        }
+    }
+}
+

Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/ServiceStopper.cs
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message