Skip to content

Commit 6155ce4

Browse files
committed
Add spec for ObjectMessage encoding and decoding
1 parent 59b42e9 commit 6155ce4

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

textile/features.textile

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,6 +1518,8 @@ h4. ObjectMessage
15181518
** @(OM3d)@ The size of the @extras@ property is the string length of its JSON representation
15191519
** @(OM3f)@ The size of the @clientId@ property is its string length
15201520
** @(OM3e)@ The size of a @null@ or omitted property is zero
1521+
* @(OM4)@ For @ObjectMessage@ encoding see @ObjectData@ "OD4":#OD4 and @ObjectOperation@ "OOP5":#OOP5 encoding
1522+
* @(OM5)@ For @ObjectMessage@ decoding see @ObjectData@ "OD5":#OD5 decoding
15211523

15221524
h4. ObjectOperation
15231525

@@ -1530,16 +1532,23 @@ h4. ObjectOperation
15301532
** @(OOP3d)@ @counterOp@ @CounterOp@ object - the payload for the operation if it is an operation on a @Counter@ object type
15311533
** @(OOP3e)@ @map@ @Map@ object - the payload for the operation if the operation is @MAP_CREATE@. Defines the initial value for the @Map@ object
15321534
** @(OOP3f)@ @counter@ @Counter@ object - the payload for the operation if the operation is @COUNTER_CREATE@. Defines the initial value for the @Counter@ object
1533-
** @(OOP3g)@ @nonce@ string - the nonce, must be present on @COUNTER_CREATE@ and @MAP_CREATE@ operations sent to the server
1534-
** @(OOP3h)@ @initialValue@ binary - the initial value bytes for the object
1535-
** @(OOP3i)@ @initialValueEncoding@ string - defines how the @initialValue@ should be interpreted. Should be @msgpack@ or @json@
1535+
** @(OOP3g)@ @nonce@ string - the nonce. Must be present on @COUNTER_CREATE@ and @MAP_CREATE@ operations sent to the server. Should not be accessed by the client library if received from the server
1536+
** @(OOP3h)@ @initialValue@ binary - the initial value bytes for the object. Must be present on @COUNTER_CREATE@ and @MAP_CREATE@ operations sent to the server. Should not be accessed by the client library if received from the server
1537+
** @(OOP3i)@ @initialValueEncoding@ string - defines how the @initialValue@ should be interpreted by the server. Must be @msgpack@ or @json@. Must be present on @COUNTER_CREATE@ and @MAP_CREATE@ operations sent to the server. Should not be accessed by the client library if received from the server
15361538
* @(OOP4)@ The size of the @ObjectOperation@ is calculated as follows:
15371539
** @(OOP4a)@ The size is the sum of the sizes of the @mapOp@, @counterOp@, @map@, and @counter@ properties
15381540
** @(OOP4b)@ The size of the @mapOp@ property is calculated per "MOP3":#MOP3
15391541
** @(OOP4c)@ The size of the @counterOp@ property is calculated per "COP3":#COP3
15401542
** @(OOP4d)@ The size of the @map@ property is calculated per "MAP4":#MAP4
15411543
** @(OOP4e)@ The size of the @counter@ property is calculated per "CNT3":#CNT3
15421544
** @(OOP4f)@ The size of a @null@ or omitted property is zero
1545+
* @(OOP5)@ @ObjectOperation@ encoding:
1546+
** @(OOP5a)@ When the MessagePack protocol is used:
1547+
*** @(OOP5a1)@ A binary @ObjectOperation.initialValue@ is encoded as a MessagePack binary type
1548+
*** @(OOP5a2)@ Set @ObjectOperation.initialValueEncoding@ to @msgpack@
1549+
** @(OOP5b)@ When the JSON protocol is used:
1550+
*** @(OOP5b1)@ A binary @ObjectOperation.initialValue@ is Base64-encoded and represented as a JSON string
1551+
*** @(OOP5b2)@ Set @ObjectOperation.initialValueEncoding@ to @json@
15431552

15441553
h4. ObjectState
15451554

@@ -1630,6 +1639,28 @@ h4. ObjectData
16301639
** @(OD3d)@ If set, the size of a @number@ property is 8
16311640
** @(OD3e)@ If set, the size of a @string@ property is its length
16321641
** @(OD3f)@ The size of a @null@ or omitted property is zero
1642+
* @(OD4)@ @ObjectData@ encoding:
1643+
** @(OD4a)@ Payloads must be booleans, binary, numbers, strings, or objects capable of JSON representation. Any other data type must not be permitted and result in an error with code 40013.
1644+
** @(OD4b)@ When the MessagePack protocol is used:
1645+
*** @(OD4b1)@ A boolean payload is encoded as a MessagePack boolean type, and the result is set on the @ObjectData.boolean@ attribute.
1646+
*** @(OD4b2)@ A binary payload is encoded as a MessagePack binary type, and the result is set on the @ObjectData.bytes@ attribute.
1647+
*** @(OD4b3)@ A number payload is encoded as a MessagePack number type, and the result is set on the @ObjectData.number@ attribute.
1648+
*** @(OD4b4)@ A string payload is encoded as a MessagePack string type, and the result is set on the @ObjectData.string@ attribute.
1649+
*** @(OD4b5)@ A payload consisting of an object capable of JSON representation is stringified as either a JSON object or array, encoded as a MessagePack string type, and the result is set on the @ObjectData.string@ attribute. The @ObjectData.encoding@ attribute is then set to "json".
1650+
** @(OD4c)@ When the JSON protocol is used:
1651+
*** @(OD4c1)@ A boolean payload is represented as a JSON boolean and set on the @ObjectData.boolean@ attribute.
1652+
*** @(OD4c2)@ A binary payload is Base64-encoded and represented as a JSON string; the result is set on the @ObjectData.bytes@ attribute.
1653+
*** @(OD4c3)@ A number payload is represented as a JSON number and set on the @ObjectData.number@ attribute.
1654+
*** @(OD4c4)@ A string payload is represented as a JSON string and set on the @ObjectData.string@ attribute.
1655+
*** @(OD4c5)@ A payload consisting of an object capable of JSON representation is stringified as either a JSON object or array, represented as a JSON string and the result is set on the @ObjectData.string@ attribute. The @ObjectData.encoding@ attribute is then set to "json".
1656+
* @(OD5)@ @ObjectData@ decoding:
1657+
** @(OD5a)@ When the MessagePack protocol is used:
1658+
*** @(OD5a1)@ The payloads in @ObjectData.boolean@, @ObjectData.bytes@, @ObjectData.number@, and @ObjectData.string@ are decoded as their corresponding MessagePack types.
1659+
*** @(OD5a2)@ If @ObjectData.encoding@ is set to "json", the @ObjectData.string@ content is decoded by parsing the string as JSON.
1660+
** @(OD5b)@ When the JSON protocol is used:
1661+
*** @(OD5b1)@ The payloads in @ObjectData.boolean@, @ObjectData.number@, and @ObjectData.string@ are decoded as their corresponding JSON types.
1662+
*** @(OD5b2)@ The @ObjectData.bytes@ payload is Base64-decoded into a binary value.
1663+
*** @(OD5b3)@ If @ObjectData.encoding@ is set to "json", the @ObjectData.string@ content is decoded by parsing the string as JSON.
16331664

16341665
h4. Annotation
16351666

0 commit comments

Comments
 (0)