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) {
|
||||
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