2.2.2.6 Generic Service Request Payload
The purpose of the DSLR protocol is to allow DSLR consumers to define remote services and requests (or function calls) on those services. To that end, all DSLR service requests follow the same convention. The message tag and payload is a child of the DSLR Dispatch Request tag defined in section 2.2.2.1, and includes the input parameters for the specific function being called.
The format for a generic service request message payload (the function's input parameters) is as follows:
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SerializedArgument_1 (variable) |
|||||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
SerializedArgument_N (variable) |
|||||||||||||||||||||||||||||||
... |
SerializedArgument_1 (variable): Input parameter for a specific function being called on the remote service. This parameter is defined by the service.
SerializedArgument_N (variable): Additional input parameters for a specific function being called on the remote service. These parameters are defined by the service.
Any of the following data types are valid input and output parameters for DSLR functions:
BYTE (1 byte): One byte of data.
-
0
1
2
3
4
5
6
7
BYTE
WORD (2 bytes): An unsigned 16-bit integer.
-
0
1
2
3
4
5
6
7
8
9
1
0
1
2
3
4
5
WORD
DWORD (4 bytes): An unsigned 32-bit integer.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1DWORD
DWORD64 (8 bytes): An unsigned 64-bit integer.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1DWORD64
...
GUID (16 bytes): 16 byte GUID. Consists of DWORD (4 bytes, unsigned 32-bit integer), Data1 (Big-Endian byte order), WORD (2 bytes, unsigned 16-bit integer), Data2 (Big-Endian byte order), WORD (2 bytes, unsigned 16-bit integer), Data3 (Big-Endian byte order), and Data4 =8 bytes field.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1Data1
Data2
Data3
Data4
...
Utf8Str (variable): Variable. Consists of a DWORD-length byte array of UTF-8 string data. The number of bytes in the Data field is equal to the value of the Length field.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1Length
Data (variable)
...
...
Blob (variable): Variable. Consists of a DWORD-length (Big-Endian byte order) byte array of arbitrary data. The number of bytes in the Data field is equal to the value of the Length field.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1Length
Data (variable)
...
...