public class org.apache.kafkaesque.common.network.ByteBufferSend extends java.lang.Object implements org.apache.kafkaesque.common.network.Send
{
private final java.lang.String destination;
private final int size;
protected final java.nio.ByteBuffer[] buffers;
private int remaining;
private boolean pending;
public transient void <init>(java.lang.String, java.nio.ByteBuffer[])
{
java.nio.ByteBuffer[] v;
java.nio.ByteBuffer v;
int v, v, v, v, v, v;
org.apache.kafkaesque.common.network.ByteBufferSend v;
java.lang.String v;
v := @this: org.apache.kafkaesque.common.network.ByteBufferSend;
v := @parameter: java.lang.String;
v := @parameter: java.nio.ByteBuffer[];
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.kafkaesque.common.network.ByteBufferSend: boolean pending> = 0;
v.<org.apache.kafkaesque.common.network.ByteBufferSend: java.lang.String destination> = v;
v.<org.apache.kafkaesque.common.network.ByteBufferSend: java.nio.ByteBuffer[] buffers> = v;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining>;
v = virtualinvoke v.<java.nio.ByteBuffer: int remaining()>();
v = v + v;
v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining> = v;
v = v + 1;
goto label;
label:
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining>;
v.<org.apache.kafkaesque.common.network.ByteBufferSend: int size> = v;
return;
}
public java.lang.String destination()
{
org.apache.kafkaesque.common.network.ByteBufferSend v;
java.lang.String v;
v := @this: org.apache.kafkaesque.common.network.ByteBufferSend;
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: java.lang.String destination>;
return v;
}
public boolean completed()
{
int v;
org.apache.kafkaesque.common.network.ByteBufferSend v;
boolean v, v;
v := @this: org.apache.kafkaesque.common.network.ByteBufferSend;
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining>;
if v > 0 goto label;
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: boolean pending>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public long size()
{
int v;
org.apache.kafkaesque.common.network.ByteBufferSend v;
v := @this: org.apache.kafkaesque.common.network.ByteBufferSend;
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: int size>;
return v;
}
public long writeTo(java.nio.channels.GatheringByteChannel) throws java.io.IOException
{
java.nio.ByteBuffer[] v;
long v, v;
java.io.EOFException v;
byte v;
int v;
org.apache.kafkaesque.common.network.ByteBufferSend v;
boolean v;
java.nio.channels.GatheringByteChannel v;
v := @this: org.apache.kafkaesque.common.network.ByteBufferSend;
v := @parameter: java.nio.channels.GatheringByteChannel;
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: java.nio.ByteBuffer[] buffers>;
v = interfaceinvoke v.<java.nio.channels.GatheringByteChannel: long write(java.nio.ByteBuffer[])>(v);
v = v cmp 0L;
if v >= 0 goto label;
v = new java.io.EOFException;
specialinvoke v.<java.io.EOFException: void <init>(java.lang.String)>("Wrote negative bytes to channel. This shouldn\'t happen.");
throw v;
label:
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining>;
v = v - v;
v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining> = v;
v = staticinvoke <org.apache.kafkaesque.common.network.TransportLayers: boolean hasPendingWrites(java.nio.channels.GatheringByteChannel)>(v);
v.<org.apache.kafkaesque.common.network.ByteBufferSend: boolean pending> = v;
return v;
}
public long remaining()
{
int v;
org.apache.kafkaesque.common.network.ByteBufferSend v;
v := @this: org.apache.kafkaesque.common.network.ByteBufferSend;
v = v.<org.apache.kafkaesque.common.network.ByteBufferSend: int remaining>;
return v;
}
}