[ https://issues.apache.org/jira/browse/IGNITE-8039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16458790#comment-16458790 ]
Alexey Kosenchuk commented on IGNITE-8039: ------------------------------------------ [~isapego] thanks. About the general format - it's better if [~dmagda] / [~vozerov] will confirm how the spec should be formatted and where located. Might be better if the types are grouped/ordered not by type code but by their kind - primitive types and their arrays first; then string/date/time/.../decimal/enum/...; collections/map/object_array at the end. Comments: - Byte: should be mentioned it's signed (?) - Short, Int, Long: should be mentioned it's little-endian (?) - Float, Double: should be mentioned it corresponds to the IEEE 754 floating-point numbers - Decimal: just curious why "data" here is in big-endian while in general "Ignite binary client protocol has little-endian byte ordering". - Enum: it's format should be clarified. ** "type_id" is an id of the enum type registered by OP_PUT_BINARY_TYPE command? ** "ordinal" is a position (starting from 0?) of a field in the enum type registered by OP_PUT_BINARY_TYPE command?? - arrays: as we see from Java client implementation there are two formats of arrays: 1) where every "element" does not have "type code" field but only "value". For example Byte array, Int array, etc. 2) where every "element" has both - "type code" and "value" fields. For example Date array, String array, etc. This should be clarified, at least. And may be unified (?) - Collection, Map, Object array: should be better explained objects of which types they may include. Absolutely any mentioned in this doc? I.e. it may be a Collection of Maps, a Collection of Object arrays, a Collection of Collections, etc.? And the same for Map? And the same for Object array? > Binary Client Protocol spec: data types/format clarifications > ------------------------------------------------------------- > > Key: IGNITE-8039 > URL: https://issues.apache.org/jira/browse/IGNITE-8039 > Project: Ignite > Issue Type: Bug > Components: documentation, thin client > Affects Versions: 2.4 > Reporter: Alexey Kosenchuk > Assignee: Igor Sapego > Priority: Major > Fix For: 2.5 > > > Assuming the Binary Client Protocol spec should be detalized enough to allow > a client development basing on the spec only, w/o looking at other client > implementations and asking additional questions... > The following should be clarified / corrected in the Binary Client Protocol > spec (v.2.4) > (https://apacheignite.readme.io/v2.4/docs/binary-client-protocol#section-data-format): > Type Codes table: > ----------------- > - UUID (Guid) size: should be 16 bytes, not 8 (?) > - what is Object array (type code 23) ? What is the difference between it and > Objects Wrapped In Array (type code 27) ? > - what is Collection USER_SET ? > - what is Collection USER_COL ? > - what is Collection SINGLETON_LIST ? > - Collection: misprint: should be "... + length ..." > - what is Decimal ? > - what is Timestamp ? > - what is Time ? > Complex Objects: > ---------------- > - what does flag USER_TYPE mean ? > - Schema "field Id; Java-style hash code of field" -> should be "... of field > name". > - "Repeat for as many times as the total number of schemas you have" -> > should be "... total number of fields you have". > - is it mandated that the number of fields in the Schema must be equal to the > number of fields in the Data Object ? > Objects Wrapped In Array > ------------------------ > - may binary objects with different type codes be in the same array ? > - may complex objects with different type ids be in the same array ? > - "All cache operations return complex objects inside a wrapper (but not > primitives)." -> does it mean that in general a complex object (103) must > always be sent via the Binary Protocol in a wrapper (27)? > - "Byte array size" -> "Payload size" or "Size of the whole array with > header" ? > - Offset. What is "object graph" here ? The Binary Protocol nowhere describes > any relations ("graph") between data objects in the protocol. > Terminology > ----------- > Not critical but would be really convenient to define and use the same terms > along the whole spec. For example: > - "binary object" is always the same as "data object" of any type (?). Can be > "standard/predefined type object" or "complex object". > - "cluster" or "server" ? > - "cluster member" or "server nodes" ? -- This message was sent by Atlassian JIRA (v7.6.3#76005)