conversions between PipelineOps and RPC schema
This commit is contained in:
parent
f999265165
commit
0d03705cfc
1 changed files with 35 additions and 0 deletions
|
@ -22,4 +22,39 @@ final class PipelineOp {
|
||||||
static PipelineOp PointerField(short pointerIndex) {
|
static PipelineOp PointerField(short pointerIndex) {
|
||||||
return new PipelineOp(Type.GET_POINTER_FIELD, pointerIndex);
|
return new PipelineOp(Type.GET_POINTER_FIELD, pointerIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void FromPipelineOps(PipelineOp[] ops, RpcProtocol.PromisedAnswer.Builder builder) {
|
||||||
|
var transforms = builder.initTransform(ops.length);
|
||||||
|
for (int ii = 0; ii < ops.length; ++ii) {
|
||||||
|
switch (ops[ii].type) {
|
||||||
|
case NOOP:
|
||||||
|
transforms.get(ii).setNoop(null);
|
||||||
|
break;
|
||||||
|
case GET_POINTER_FIELD:
|
||||||
|
transforms.get(ii).setGetPointerField(ops[ii].pointerIndex);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static PipelineOp[] ToPipelineOps(RpcProtocol.PromisedAnswer.Reader reader) {
|
||||||
|
var transforms = reader.getTransform();
|
||||||
|
var ops = new PipelineOp[transforms.size()];
|
||||||
|
for (int ii = 0; ii < ops.length; ++ii) {
|
||||||
|
var transform = transforms.get(ii);
|
||||||
|
switch (transform.which()) {
|
||||||
|
case NOOP:
|
||||||
|
ops[ii] = Noop();
|
||||||
|
break;
|
||||||
|
case GET_POINTER_FIELD:
|
||||||
|
ops[ii] = PointerField(transform.getGetPointerField());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// TODO improve error handling here
|
||||||
|
// Unsupported pipeline ops
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ops;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue