summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/thrifthelper/ThriftHandler.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-18 19:48:59 +0200
committerSimon Rettberg2015-08-18 19:48:59 +0200
commitdf9ea600ce311bdf907678d0da94eea5b39d890f (patch)
tree5d822056590456bfa666747f9f9e0182cebdb5e3 /src/main/java/org/openslx/thrifthelper/ThriftHandler.java
parentFix getNewSatClient() (diff)
downloadmaster-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.java25
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()