public class org.jboss.logmanager.handlers.TcpOutputStream extends java.io.OutputStream implements org.jboss.logmanager.handlers.FlushableCloseable
{
private static final long retryTimeout;
private static final long maxRetryTimeout;
private static final int maxErrors;
protected final java.lang.Object outputLock;
private final org.jboss.logmanager.handlers.ClientSocketFactory socketFactory;
private final java.util.Deque errors;
private java.lang.Thread reconnectThread;
private boolean blockOnReconnect;
private java.net.Socket socket;
private boolean connected;
public void <init>(java.net.InetAddress, int) throws java.io.IOException
{
java.net.InetAddress v;
javax.net.SocketFactory v;
int v;
org.jboss.logmanager.handlers.TcpOutputStream v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: java.net.InetAddress;
v := @parameter: int;
v = staticinvoke <javax.net.SocketFactory: javax.net.SocketFactory getDefault()>();
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void <init>(javax.net.SocketFactory,java.net.InetAddress,int)>(v, v, v);
return;
}
public void <init>(java.net.InetAddress, int, boolean) throws java.io.IOException
{
java.net.InetAddress v;
javax.net.SocketFactory v;
int v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: java.net.InetAddress;
v := @parameter: int;
v := @parameter: boolean;
v = staticinvoke <javax.net.SocketFactory: javax.net.SocketFactory getDefault()>();
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void <init>(javax.net.SocketFactory,java.net.InetAddress,int,boolean)>(v, v, v, v);
return;
}
protected void <init>(java.net.Socket)
{
java.net.Socket v;
java.lang.Object v;
java.util.ArrayDeque v;
org.jboss.logmanager.handlers.TcpOutputStream v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: java.net.Socket;
specialinvoke v.<java.io.OutputStream: void <init>()>();
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock> = v;
v = new java.util.ArrayDeque;
specialinvoke v.<java.util.ArrayDeque: void <init>(int)>(10);
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors> = v;
v.<org.jboss.logmanager.handlers.TcpOutputStream: org.jboss.logmanager.handlers.ClientSocketFactory socketFactory> = null;
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket> = v;
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread> = null;
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected> = 1;
return;
}
protected void <init>(javax.net.SocketFactory, java.net.InetAddress, int) throws java.io.IOException
{
java.net.InetAddress v;
javax.net.SocketFactory v;
int v;
org.jboss.logmanager.handlers.TcpOutputStream v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: javax.net.SocketFactory;
v := @parameter: java.net.InetAddress;
v := @parameter: int;
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void <init>(javax.net.SocketFactory,java.net.InetAddress,int,boolean)>(v, v, v, 0);
return;
}
protected void <init>(javax.net.SocketFactory, java.net.InetAddress, int, boolean) throws java.io.IOException
{
java.net.InetAddress v;
javax.net.SocketFactory v;
org.jboss.logmanager.handlers.ClientSocketFactory v;
int v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: javax.net.SocketFactory;
v := @parameter: java.net.InetAddress;
v := @parameter: int;
v := @parameter: boolean;
v = staticinvoke <org.jboss.logmanager.handlers.ClientSocketFactory: org.jboss.logmanager.handlers.ClientSocketFactory of(javax.net.SocketFactory,java.net.InetAddress,int)>(v, v, v);
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void <init>(org.jboss.logmanager.handlers.ClientSocketFactory,boolean)>(v, v);
return;
}
public void <init>(org.jboss.logmanager.handlers.ClientSocketFactory, boolean)
{
java.net.Socket v;
java.io.IOException v;
org.jboss.logmanager.handlers.TcpOutputStream v;
org.jboss.logmanager.handlers.ClientSocketFactory v, v;
java.lang.Object v;
java.util.ArrayDeque v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: org.jboss.logmanager.handlers.ClientSocketFactory;
v := @parameter: boolean;
specialinvoke v.<java.io.OutputStream: void <init>()>();
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock> = v;
v = new java.util.ArrayDeque;
specialinvoke v.<java.util.ArrayDeque: void <init>(int)>(10);
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors> = v;
v.<org.jboss.logmanager.handlers.TcpOutputStream: org.jboss.logmanager.handlers.ClientSocketFactory socketFactory> = v;
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean blockOnReconnect> = v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: org.jboss.logmanager.handlers.ClientSocketFactory socketFactory>;
v = interfaceinvoke v.<org.jboss.logmanager.handlers.ClientSocketFactory: java.net.Socket createSocket()>();
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket> = v;
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected> = 1;
label:
goto label;
label:
v := @caughtexception;
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected> = 0;
label:
return;
catch java.io.IOException from label to label with label;
}
public void write(int) throws java.io.IOException
{
int v;
byte[] v;
org.jboss.logmanager.handlers.TcpOutputStream v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: int;
v = newarray (byte)[1];
v[0] = v;
virtualinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void write(byte[],int,int)>(v, 0, 1);
return;
}
public void write(byte[]) throws java.io.IOException
{
int v;
byte[] v;
org.jboss.logmanager.handlers.TcpOutputStream v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: byte[];
v = lengthof v;
virtualinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void write(byte[],int,int)>(v, 0, v);
return;
}
public void write(byte[], int, int) throws java.io.IOException
{
java.lang.Throwable v;
byte[] v;
java.net.Socket v, v;
org.jboss.logmanager.handlers.TcpOutputStream v;
java.net.SocketException v;
java.lang.Thread v, v, v;
int v, v;
boolean v, v, v;
java.io.OutputStream v;
java.lang.Object v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock>;
entermonitor v;
label:
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void checkReconnect()>();
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected>;
if v == 0 goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
v = virtualinvoke v.<java.net.Socket: java.io.OutputStream getOutputStream()>();
virtualinvoke v.<java.io.OutputStream: void write(byte[],int,int)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean isReconnectAllowed()>();
if v == 0 goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
staticinvoke <org.jboss.logmanager.handlers.TcpOutputStream: void safeClose(java.io.Closeable)>(v);
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected> = 0;
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void addError(java.lang.Exception)>(v);
v = specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread createThread()>();
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread> = v;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean blockOnReconnect>;
if v == 0 goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
virtualinvoke v.<java.lang.Thread: void run()>();
virtualinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void write(byte[],int,int)>(v, v, v);
goto label;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
virtualinvoke v.<java.lang.Thread: void start()>();
goto label;
label:
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.net.SocketException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void flush() throws java.io.IOException
{
java.io.OutputStream v;
java.lang.Throwable v;
java.net.Socket v, v, v;
org.jboss.logmanager.handlers.TcpOutputStream v;
java.net.SocketException v;
java.lang.Object v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock>;
entermonitor v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
if v == null goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
v = virtualinvoke v.<java.net.Socket: java.io.OutputStream getOutputStream()>();
virtualinvoke v.<java.io.OutputStream: void flush()>();
label:
goto label;
label:
v := @caughtexception;
v = specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean isReconnectAllowed()>();
if v == 0 goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
staticinvoke <org.jboss.logmanager.handlers.TcpOutputStream: void safeClose(java.io.Closeable)>(v);
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected> = 0;
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: void addError(java.lang.Exception)>(v);
goto label;
label:
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.net.SocketException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void close() throws java.io.IOException
{
java.lang.Throwable v;
java.net.Socket v, v;
java.lang.Thread v, v;
java.lang.Object v;
org.jboss.logmanager.handlers.TcpOutputStream v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock>;
entermonitor v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
if v == null goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
if v == null goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.net.Socket socket>;
virtualinvoke v.<java.net.Socket: void close()>();
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public boolean isBlockOnReconnect()
{
java.lang.Throwable v;
java.lang.Object v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock>;
entermonitor v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean blockOnReconnect>;
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public void setBlockOnReconnect(boolean)
{
java.lang.Throwable v;
java.lang.Object v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: boolean;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock>;
entermonitor v;
label:
v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean blockOnReconnect> = v;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public boolean isConnected()
{
java.lang.Throwable v;
java.lang.Object v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Object outputLock>;
entermonitor v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected>;
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public java.util.Collection getErrors()
{
java.lang.Throwable v;
java.util.Deque v, v, v, v;
org.jboss.logmanager.handlers.TcpOutputStream v;
java.util.ArrayList v;
java.util.List v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
entermonitor v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
v = interfaceinvoke v.<java.util.Deque: boolean isEmpty()>();
if v != 0 goto label;
v = new java.util.ArrayList;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
interfaceinvoke v.<java.util.Deque: void clear()>();
exitmonitor v;
label:
return v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void addError(java.lang.Exception)
{
java.lang.Throwable v;
int v;
java.util.Deque v, v, v;
org.jboss.logmanager.handlers.TcpOutputStream v;
java.lang.Exception v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v := @parameter: java.lang.Exception;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
entermonitor v;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
v = interfaceinvoke v.<java.util.Deque: int size()>();
if v >= 10 goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.util.Deque errors>;
interfaceinvoke v.<java.util.Deque: void addLast(java.lang.Object)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private boolean isReconnectAllowed()
{
org.jboss.logmanager.handlers.ClientSocketFactory v;
java.lang.Thread v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: org.jboss.logmanager.handlers.ClientSocketFactory socketFactory>;
if v == null goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void checkReconnect()
{
java.lang.Thread v, v, v;
org.jboss.logmanager.handlers.TcpOutputStream v;
boolean v, v, v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean connected>;
if v != 0 goto label;
v = specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean isReconnectAllowed()>();
if v == 0 goto label;
v = specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread createThread()>();
v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread> = v;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: boolean blockOnReconnect>;
if v == 0 goto label;
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
virtualinvoke v.<java.lang.Thread: void run()>();
goto label;
label:
v = v.<org.jboss.logmanager.handlers.TcpOutputStream: java.lang.Thread reconnectThread>;
virtualinvoke v.<java.lang.Thread: void start()>();
label:
return;
}
private java.lang.Thread createThread()
{
org.jboss.logmanager.handlers.TcpOutputStream$RetryConnector v;
org.jboss.logmanager.handlers.TcpOutputStream v;
java.lang.Thread v;
v := @this: org.jboss.logmanager.handlers.TcpOutputStream;
v = new java.lang.Thread;
v = new org.jboss.logmanager.handlers.TcpOutputStream$RetryConnector;
specialinvoke v.<org.jboss.logmanager.handlers.TcpOutputStream$RetryConnector: void <init>(org.jboss.logmanager.handlers.TcpOutputStream)>(v);
specialinvoke v.<java.lang.Thread: void <init>(java.lang.Runnable)>(v);
virtualinvoke v.<java.lang.Thread: void setDaemon(boolean)>(1);
virtualinvoke v.<java.lang.Thread: void setName(java.lang.String)>("LogManager Socket Reconnect Thread");
return v;
}
private static void safeClose(java.io.Closeable)
{
java.io.Closeable v;
v := @parameter: java.io.Closeable;
return;
}
}