public class org.apache.drill.exec.store.pcap.decoder.PacketDecoder extends java.lang.Object
{
private static final int GLOBAL_HEADER_SIZE;
private static final int PCAP_MAGIC_LITTLE_ENDIAN;
private static final int PCAP_MAGIC_NUMBER;
private static final int PCAPNG_MAGIC_LITTLE_ENDIAN;
private static final int PCAPNG_MAGIC_NUMBER;
private static final org.slf4j.Logger logger;
private final int maxLength;
private final int network;
private boolean bigEndian;
private org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat;
private java.io.InputStream input;
public void <init>(java.io.InputStream) throws java.io.IOException
{
byte[] v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat v, v, v, v, v, v;
java.lang.Object[] v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
java.lang.Integer v;
int v, v, v, v, v, v, v;
java.lang.String v;
boolean v, v, v, v, v;
java.io.IOException v;
java.io.InputStream v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v := @parameter: java.io.InputStream;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: java.io.InputStream input> = v;
v = newarray (byte)[24];
v = virtualinvoke v.<java.io.InputStream: int read(byte[])>(v);
v = lengthof v;
if v == v goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Can\'t read PCAP file header");
throw v;
label:
v = staticinvoke <org.apache.drill.exec.store.pcap.PcapFormatUtils: int getInt(byte[],int)>(v, 0);
lookupswitch(v)
{
case -1582119980: goto label;
case -725372255: goto label;
case 168627466: goto label;
case 1295788826: goto label;
default: goto label;
};
label:
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian> = 1;
v = <org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat PCAP>;
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat> = v;
goto label;
label:
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian> = 0;
v = <org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat PCAP>;
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat> = v;
goto label;
label:
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian> = 1;
v = <org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat PCAPNG>;
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat> = v;
goto label;
label:
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian> = 0;
v = <org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat PCAPNG>;
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat> = v;
goto label;
label:
v = newarray (java.lang.Object)[1];
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
v = staticinvoke <org.apache.drill.exec.store.pcap.PcapFormatUtils: int getIntFileOrder(boolean,byte[],int)>(v, v, 0);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Bad magic number = %08x", v);
staticinvoke <org.apache.drill.shaded.guava.com.google.common.base.Preconditions: void checkState(boolean,java.lang.Object)>(0, v);
label:
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat>;
v = <org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat PCAP>;
if v != v goto label;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
v = staticinvoke <org.apache.drill.exec.store.pcap.PcapFormatUtils: int getShortFileOrder(boolean,byte[],int)>(v, v, 4);
if v != 2 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <org.apache.drill.shaded.guava.com.google.common.base.Preconditions: void checkState(boolean,java.lang.Object)>(v, "Wanted major version == 2");
label:
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
v = staticinvoke <org.apache.drill.exec.store.pcap.PcapFormatUtils: int getIntFileOrder(boolean,byte[],int)>(v, v, 16);
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: int maxLength> = v;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
v = staticinvoke <org.apache.drill.exec.store.pcap.PcapFormatUtils: int getIntFileOrder(boolean,byte[],int)>(v, v, 20);
v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: int network> = v;
return;
}
public final int getMaxLength()
{
int v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: int maxLength>;
return v;
}
public int decodePacket(byte[], int, org.apache.drill.exec.store.pcap.decoder.Packet, int, int)
{
byte[] v;
org.apache.drill.exec.store.pcap.decoder.Packet v;
org.slf4j.Logger v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
java.lang.Integer v;
int v, v, v, v, v, v;
boolean v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: org.apache.drill.exec.store.pcap.decoder.Packet;
v := @parameter: int;
v := @parameter: int;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
v = v - v;
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = virtualinvoke v.<org.apache.drill.exec.store.pcap.decoder.Packet: int decodePcap(byte[],int,boolean,int)>(v, v, v, v);
if v <= v goto label;
v = <org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.slf4j.Logger logger>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object)>("Invalid packet at offset {}", v);
label:
return v;
}
public org.apache.drill.exec.store.pcap.decoder.Packet packet()
{
org.apache.drill.exec.store.pcap.decoder.Packet v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v = new org.apache.drill.exec.store.pcap.decoder.Packet;
specialinvoke v.<org.apache.drill.exec.store.pcap.decoder.Packet: void <init>()>();
return v;
}
public int getNetwork()
{
int v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: int network>;
return v;
}
public boolean isBigEndian()
{
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
boolean v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
return v;
}
public org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat getFileFormat()
{
org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.apache.drill.exec.store.pcap.decoder.PacketDecoder$FileFormat fileFormat>;
return v;
}
public org.apache.drill.exec.store.pcap.decoder.Packet nextPacket() throws java.io.IOException
{
org.apache.drill.exec.store.pcap.decoder.Packet v;
int v;
org.apache.drill.exec.store.pcap.decoder.PacketDecoder v;
boolean v, v;
java.io.InputStream v;
v := @this: org.apache.drill.exec.store.pcap.decoder.PacketDecoder;
v = new org.apache.drill.exec.store.pcap.decoder.Packet;
specialinvoke v.<org.apache.drill.exec.store.pcap.decoder.Packet: void <init>()>();
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: java.io.InputStream input>;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: boolean bigEndian>;
v = v.<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: int maxLength>;
v = virtualinvoke v.<org.apache.drill.exec.store.pcap.decoder.Packet: boolean readPcap(java.io.InputStream,boolean,int)>(v, v, v);
if v == 0 goto label;
return v;
label:
return null;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/drill/exec/store/pcap/decoder/PacketDecoder;");
<org.apache.drill.exec.store.pcap.decoder.PacketDecoder: org.slf4j.Logger logger> = v;
return;
}
}