public abstract class oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread extends oadd.org.apache.hadoop.fs.shell.CommandWithDestination
{
private int threadCount;
private java.util.concurrent.ThreadPoolExecutor executor;
private int threadPoolQueueSize;
public static final int DEFAULT_QUEUE_SIZE;
public void <init>()
{
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
specialinvoke v.<oadd.org.apache.hadoop.fs.shell.CommandWithDestination: void <init>()>();
v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadCount> = 1;
v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor> = null;
v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadPoolQueueSize> = 1024;
return;
}
protected void setThreadCount(java.lang.String)
{
int v, v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.lang.String v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v := @parameter: java.lang.String;
if v == null goto label;
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = staticinvoke <java.lang.Math: int max(int,int)>(v, 1);
v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadCount> = v;
label:
return;
}
protected void setThreadPoolQueueSize(java.lang.String)
{
int v, v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.lang.String v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v := @parameter: java.lang.String;
if v == null goto label;
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v >= 1 goto label;
v = 1024;
goto label;
label:
v = v;
label:
v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadPoolQueueSize> = v;
label:
return;
}
protected int getThreadCount()
{
int v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadCount>;
return v;
}
protected int getThreadPoolQueueSize()
{
int v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadPoolQueueSize>;
return v;
}
protected java.util.concurrent.ThreadPoolExecutor getExecutor()
{
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.util.concurrent.ThreadPoolExecutor v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
return v;
}
protected void processArguments(java.util.LinkedList) throws java.io.IOException
{
java.util.concurrent.ThreadPoolExecutor v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.util.LinkedList v;
boolean v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v := @parameter: java.util.LinkedList;
v = virtualinvoke v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: boolean isMultiThreadNecessary(java.util.LinkedList)>(v);
if v == 0 goto label;
specialinvoke v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: void initThreadPoolExecutor()>();
label:
specialinvoke v.<oadd.org.apache.hadoop.fs.shell.CommandWithDestination: void processArguments(java.util.LinkedList)>(v);
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
if v == null goto label;
specialinvoke v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: void waitForCompletion()>();
label:
return;
}
protected boolean isMultiThreadNecessary(java.util.LinkedList) throws java.io.IOException
{
int v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.util.LinkedList v;
boolean v, v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v := @parameter: java.util.LinkedList;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadCount>;
if v <= 1 goto label;
v = specialinvoke v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: boolean hasMoreThanOneSourcePaths(java.util.LinkedList)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private boolean hasMoreThanOneSourcePaths(java.util.LinkedList) throws java.io.IOException
{
oadd.org.apache.hadoop.fs.FileStatus v;
int v, v;
java.lang.Object v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.util.LinkedList v;
boolean v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v := @parameter: java.util.LinkedList;
v = virtualinvoke v.<java.util.LinkedList: int size()>();
if v <= 1 goto label;
return 1;
label:
v = virtualinvoke v.<java.util.LinkedList: int size()>();
if v != 1 goto label;
v = virtualinvoke v.<java.util.LinkedList: java.lang.Object get(int)>(0);
v = v.<oadd.org.apache.hadoop.fs.shell.PathData: oadd.org.apache.hadoop.fs.FileStatus stat>;
if v != null goto label;
virtualinvoke v.<oadd.org.apache.hadoop.fs.shell.PathData: oadd.org.apache.hadoop.fs.FileStatus refreshStatus()>();
label:
v = virtualinvoke v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: boolean isPathRecursable(oadd.org.apache.hadoop.fs.shell.PathData)>(v);
return v;
label:
return 0;
}
private void initThreadPoolExecutor()
{
java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy v;
java.util.concurrent.ThreadPoolExecutor v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.ArrayBlockingQueue v;
int v, v, v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v = new java.util.concurrent.ThreadPoolExecutor;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadCount>;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadCount>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = new java.util.concurrent.ArrayBlockingQueue;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: int threadPoolQueueSize>;
specialinvoke v.<java.util.concurrent.ArrayBlockingQueue: void <init>(int)>(v);
v = new java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy;
specialinvoke v.<java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy: void <init>()>();
specialinvoke v.<java.util.concurrent.ThreadPoolExecutor: void <init>(int,int,long,java.util.concurrent.TimeUnit,java.util.concurrent.BlockingQueue,java.util.concurrent.RejectedExecutionHandler)>(v, v, 1L, v, v, v);
v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor> = v;
return;
}
private void waitForCompletion()
{
java.util.concurrent.ThreadPoolExecutor v, v, v, v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.util.concurrent.TimeUnit v;
java.lang.InterruptedException v;
java.lang.Thread v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
if v == null goto label;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void shutdown()>();
label:
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MINUTES>;
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean awaitTermination(long,java.util.concurrent.TimeUnit)>(9223372036854775807L, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: java.util.List shutdownNow()>();
virtualinvoke v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: void displayError(java.lang.Exception)>(v);
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return;
catch java.lang.InterruptedException from label to label with label;
}
protected void copyFileToTarget(oadd.org.apache.hadoop.fs.shell.PathData, oadd.org.apache.hadoop.fs.shell.PathData) throws java.io.IOException
{
oadd.org.apache.hadoop.fs.shell.PathData v, v;
java.util.concurrent.ThreadPoolExecutor v, v;
oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread v;
java.lang.Runnable v;
v := @this: oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread;
v := @parameter: oadd.org.apache.hadoop.fs.shell.PathData;
v := @parameter: oadd.org.apache.hadoop.fs.shell.PathData;
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
if v != null goto label;
specialinvoke v.<oadd.org.apache.hadoop.fs.shell.CommandWithDestination: void copyFileToTarget(oadd.org.apache.hadoop.fs.shell.PathData,oadd.org.apache.hadoop.fs.shell.PathData)>(v, v);
goto label;
label:
v = v.<oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread: java.util.concurrent.ThreadPoolExecutor executor>;
v = staticinvoke <oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread$lambda_copyFileToTarget_0__1060: java.lang.Runnable bootstrap$(oadd.org.apache.hadoop.fs.shell.CopyCommandWithMultiThread,oadd.org.apache.hadoop.fs.shell.PathData,oadd.org.apache.hadoop.fs.shell.PathData)>(v, v, v);
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: java.util.concurrent.Future submit(java.lang.Runnable)>(v);
label:
return;
}
}