[ https://issues.apache.org/jira/browse/IGNITE-22645?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stanislav Lukyanov updated IGNITE-22645: ---------------------------------------- Epic Link: IGNITE-22146 (was: IGNITE-19848) > C++ Client Marshaler API > ------------------------ > > Key: IGNITE-22645 > URL: https://issues.apache.org/jira/browse/IGNITE-22645 > Project: Ignite > Issue Type: Improvement > Reporter: Aleksandr > Assignee: Igor Sapego > Priority: Major > Labels: ignite-3 > > Compute API provides JobDescriptor in java > https://github.com/apache/ignite-3/blob/7dedc06ea25b9c63dcdfb69290c7862c754a0d8f/modules/api/src/main/java/org/apache/ignite/compute/JobDescriptor.java#L29 > > With this api I can define argument and result marshallers in the java > client: > {code:java} > String result = compute.execute( > JobTarget.node(targetNode), > JobDescriptor.builder(ArgMarshalingJob.class) > .argumentMarshaller(new ArgumentStringMarshaller()) > .resultMarshaller(new ResultStringUnMarshaller()) > .build(), > "Input" > ); > // ... > static class ArgumentStringMarshaller implements ByteArrayMarshaler<String> { > @Override > public byte @Nullable [] marshal(@Nullable String object) { > return ByteArrayMarshaler.super.marshal(object + > ":marshalledOnClient"); > } > } > static class ResultStringUnMarshaller implements > ByteArrayMarshaler<String> { > @Override > public @Nullable String unmarshal(byte @Nullable [] raw) { > return ByteArrayMarshaler.super.unmarshal(raw) + > ":unmarshalledOnClient"; > } > } > {code} > Argument marshaller is called on the client side during job argument packing, > so, the argument is sent as marshalled byte[]. Result marhaller unmarshalls > the result from the job from byte[] to the target type. > Invariant: If one has defined argument/result marshaller in JobDescriptor > then they must define argument/result marshaller in the compute job. > By default marshallers are null everywhere. Null means "No marshaller > defined", the existing serialization is used. More in IEP: > https://cwiki.apache.org/confluence/display/IGNITE/IEP-124%3A+User+Object+Serialization > -- This message was sent by Atlassian Jira (v8.20.10#820010)