diff options
author | Simon Rettberg | 2015-08-18 19:48:59 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-18 19:48:59 +0200 |
commit | df9ea600ce311bdf907678d0da94eea5b39d890f (patch) | |
tree | 5d822056590456bfa666747f9f9e0182cebdb5e3 /src/main/java/org/openslx/thrifthelper/ThriftHandler.java | |
parent | Fix getNewSatClient() (diff) | |
download | master-sync-shared-df9ea600ce311bdf907678d0da94eea5b39d890f.tar.gz master-sync-shared-df9ea600ce311bdf907678d0da94eea5b39d890f.tar.xz master-sync-shared-df9ea600ce311bdf907678d0da94eea5b39d890f.zip |
First working version with SSL support
Diffstat (limited to 'src/main/java/org/openslx/thrifthelper/ThriftHandler.java')
-rw-r--r-- | src/main/java/org/openslx/thrifthelper/ThriftHandler.java | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/main/java/org/openslx/thrifthelper/ThriftHandler.java b/src/main/java/org/openslx/thrifthelper/ThriftHandler.java index c645dd8..01ed0b0 100644 --- a/src/main/java/org/openslx/thrifthelper/ThriftHandler.java +++ b/src/main/java/org/openslx/thrifthelper/ThriftHandler.java @@ -13,27 +13,29 @@ import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.apache.thrift.TServiceClient; import org.apache.thrift.transport.TTransportException; +import org.openslx.thrifthelper.ThriftManager.ErrorCallback; class ThriftHandler<T extends TServiceClient> implements InvocationHandler { private final static Logger LOGGER = Logger.getLogger( ThriftHandler.class ); - public interface EventCallback<T> + protected interface WantClientCallback<T> { public T getNewClient(); - - public boolean error( int failCount, String method, Throwable t ); } private final Deque<T> pool = new ArrayDeque<>(); - private final EventCallback<T> callback; + private final WantClientCallback<? extends T> callback; + + private final ErrorCallback errorCallback; private final Set<String> thriftMethods; - public ThriftHandler( final Class<T> clazz, EventCallback<T> cb ) + public ThriftHandler( final Class<? extends T> clazz, WantClientCallback<? extends T> cb, ErrorCallback errCb ) { + errorCallback = errCb; callback = cb; Set<String> tmpset = new HashSet<String>(); Method[] methods = clazz.getMethods(); @@ -85,14 +87,14 @@ class ThriftHandler<T extends TServiceClient> implements InvocationHandler if ( cause != null && ! ( cause instanceof TTransportException ) ) { throw cause; } - freeClient(client); + freeClient( client ); client = null; if ( cause == null ) cause = e; } } // Call the error callback. As long as true is returned, keep retrying - if ( !callback.error( i, method.getName(), cause ) ) { + if ( !errorCallback.thriftError( i, method.getName(), cause ) ) { break; } } @@ -106,16 +108,17 @@ class ThriftHandler<T extends TServiceClient> implements InvocationHandler } } - private void freeClient(T client) { + private void freeClient( T client ) + { try { client.getInputProtocol().getTransport().close(); - } catch (Exception e) { + } catch ( Exception e ) { } try { client.getOutputProtocol().getTransport().close(); - } catch (Exception e) { + } catch ( Exception e ) { } - + } private T getClient() |