package hdgl.db.protocol;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.Writable;
public class ResultPackWritable implements Writable{
long[][] result;
boolean hasMore;
public ResultPackWritable(long[][] result, boolean hasMore) {
super();
this.result = result;
this.hasMore = hasMore;
}
public ResultPackWritable() {
super();
}
@Override
public void write(DataOutput out) throws IOException {
out.writeBoolean(hasMore);
out.writeInt(result.length);
for(long[] path:result){
out.writeInt(path.length);
for(long id:path){
out.writeLong(id);
}
}
}
@Override
public void readFields(DataInput in) throws IOException {
hasMore = in.readBoolean();
int len = in.readInt();
result = new long[len][];
for(int i=0;i<len;i++){
int l = in.readInt();
long[] path =new long[l];
for(int j=0;j<l;j++){
path[j] = in.readLong();
}
result[i] = path;
}
}
public long[][] getResult() {
return result;
}
public void setResult(long[][] result) {
this.result = result;
}
public boolean isHasMore() {
return hasMore;
}
public void setHasMore(boolean hasMore) {
this.hasMore = hasMore;
}
@Override
public String toString() {
StringBuffer buf=new StringBuffer();
for(int i=0;i<result.length;i++){
if(buf.length()>0){
buf.append(",\n ");
}else{
buf.append(result.length+" paths [\n ");
}
buf.append(Arrays.toString(result[i]));
}
if(buf.length()>0){
buf.append("\n]\n");
}else{
return "empty\n";
}
return buf.toString();
}
}