TCP Mapping#
General Frame Format#
Each BaSyx Native frame is divided into two fields. These fields define message size and message payload. Due to this, the receiver can create a appropriate sized buffer.
If a message is received with size > Message Length, an error is assumed and the message it is discarded.
Length |
Field |
---|---|
4 Byte, LSB first |
Payload Length |
Variable, as defined in Payload Length |
Message payload |
String Encoding#
Strings are encoded in the following scheme:
Length |
Field |
---|---|
4 Byte, LSB first |
String Length |
Variable, as defined in String Length |
String content, without null termination |
Object Encoding#
Collections/Maps are serialized to a string as defined in the JSON serialization and send as a string as defined above.
Primitive Mapping#
For a detailed description of the primitives, see the VAB documentation.
RETRIEVE#
Request#
Length |
Field |
Value |
---|---|---|
1 Byte |
Command |
0x01 |
Path to element as string |
Response#
Length |
Field |
---|---|
1 Byte |
Result |
Value serialized as JSON |
Currently, the result will always be 0x00 with exceptions encoded in the returned string.
Exceptions#
If the property specified in the path or one of its parent elements does not exist, a ResourceNotFound Exception will be returned.
If the parent element of the specified property is a list, a ResourceNotFound Exception will be returned.
If another error occurs and the property can’t be retrieved, a MalformedRequest Exception will be returned.
UPDATE#
Request#
Length |
Field |
Value |
---|---|---|
1 Byte |
Command |
0x02 |
Path to element as string |
||
Value serialized as JSON |
Response#
Length |
Field |
---|---|
1 Byte |
Result |
Value serialized as JSON |
Currently, the result will always be 0x00 with exceptions encoded in the returned string.
Exceptions#
If the parent element of the property specified in the path is a list, a ResourceNotFound Exception is returned.
If another error occurs while trying to set the property, a MalformedRequest Exception is returned.
CREATE#
Request#
Length |
Field |
Value |
---|---|---|
1 Byte |
Command |
0x03 |
Path to element as string |
||
Value serialized as JSON |
Response#
Length |
Field |
---|---|
1 Byte |
Result |
Value serialized as JSON |
Currently, the result will always be 0x00 with exceptions encoded in the returned string.
Exceptions#
If one of the parent elements specified in the path does not exist, a ResourceNotFound exception will be returned.
If the property already exists, a ResourceAlreadyExists exception will be returned.
If the new property could not be created, a MalformedRequest exception will be returned.
DELETE#
There are two variants of delete: Deleting a value from a path and deleting a value from a Collection in a given path. In the latter case, the object to be deleted will be passed as JSON string.
Request#
Length |
Field |
Value |
---|---|---|
1 Byte |
Command |
0x04 |
Path to element as string |
||
Optional Object to be deleted from collection as JSON string |
Response#
Length |
Field |
---|---|
1 Byte |
Result |
Currently, the result will always be 0x00 with exceptions encoded in the returned string.
Exceptions#
If the property specified in the path or one of its parent elements does not exist, a PropertyNotFound exception is returned.
If the property could not be deleted, a MalformedRequest exception is returned.
INVOKE#
Request#
Length |
Field |
Value |
---|---|---|
1 Byte |
Command |
0x05 |
Path to operations as string |
||
Return value serialized as JSON |
Response#
Length |
Field |
---|---|
1 Byte |
Result |
Value serialized as JSON |
Currently, the result will always be 0x00 with exceptions encoded in the returned string.
Exceptions#
If the property specified in the path or one of its parent elements does not exist, a PropertyNotFound exception is returned.
If invoke is called on an object that is not a function, a ProviderException will be returned.