james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From b...@apache.org
Subject svn commit: r532141 - /james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
Date Tue, 24 Apr 2007 23:47:30 GMT
Author: bago
Date: Tue Apr 24 16:47:30 2007
New Revision: 532141

URL: http://svn.apache.org/viewvc?view=rev&rev=532141
Log:
Change DNSServiceXBillImpl callback to use a callback thread because it wasn't respecting
the contract.
The callback of an asynch method should never be called by the original caller thread.
A better solution could be to use a thread pool, but the dnsjnio implementation will take
care of this.
The DNSJava based Staged executor is simply a proof of concept.

Modified:
    james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java

Modified: james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
URL: http://svn.apache.org/viewvc/james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java?view=diff&rev=532141&r1=532140&r2=532141
==============================================================================
--- james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
(original)
+++ james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
Tue Apr 24 16:47:30 2007
@@ -47,13 +47,13 @@
 public class DNSServiceXBillImpl implements DNSService {
 
     // Set seconds after which we return and TempError
-    private int timeOut = 20;
+    protected int timeOut = 20;
 
     // The logger
-    private Logger log;
+    protected Logger log;
     
     // The record limit for lookups
-    private int recordLimit;
+    protected int recordLimit;
     
     /**
      * Default Constructor
@@ -195,12 +195,27 @@
      * @see org.apache.james.jspf.core.DNSService#getRecordsAsynch(java.lang.String, int,
java.lang.Object, org.apache.james.jspf.core.IResponseQueue)
      */
     public void getRecordsAsynch(String hostname, int recordType, Object id,
-            IResponseQueue responsePool) {
+            final IResponseQueue responsePool) {
+        IResponseImpl response;
         try {
-            responsePool.insertResponse(new IResponseImpl(id, getRecords(hostname, recordType)));
+            response = new IResponseImpl(id, getRecords(hostname, recordType));
         } catch (TimeoutException e) {
-            responsePool.insertResponse(new IResponseImpl(id, e));
+            response = new IResponseImpl(id, e);
         }
+        new Thread() {
+
+            private IResponseImpl response;
+
+            public void run() {
+                responsePool.insertResponse(response);
+            }
+
+            public Thread setResponse(IResponseImpl response) {
+                this.response = response;
+                return this;
+            }
+            
+        }.setResponse(response).start();
 
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message