This KB describes how the SmartServer processes multiple read/write requests at the same time.
If a read SOAP request comes, without a maxage element, the SmartServer should process it immediately.
When maxage is for a READ request, the SmartServer will poll all datapoint in the read request that has not been polled within the maxage time before sending the response. If maxage is set to 0 then all datapoints in the read request are polled before the response is sent.
There are 8 threads that are available for processing SOAP requests so response order depends on which channel the read/write request is for.
If you have multiple requests going to the same channel (e.g., FT-10) then the response for the first request will be sent before processing the second request (whether read or write). If the requests go to different channels (one for the FT-10, and the other for MODBUS or a SmartServer internal Datapoint) then you may see the response from the second request before the first request.
1. Multiple Requests to the same channel: New Requests Read/Write are blocked.
If a Read request (with max age = 0) for datapoints on an external device on the FT-10 channel comes in and immediately a write request comes in to write to a datapoint for device on the FT-10 channel:
Since both the read and write request are for devices on the same channel (FT-10) the SmartServer will fully process the Read request first (poll all the requested datapoints and send the response) before starting to process the write request. That is, the Write request is blocked until the Read request is finished.
2. Multiple Requests to different channels: New Requests Read/Write are NOT blocked.
If a Read request (with max age = 0) for datapoints on an external device on the FT-10 channel comes in and immediately a write request comes in to write to a SmartServer internal datapoint:
Since both the read and write request are NOT for devices on the same channel (FT-10) the SmartServer may send the write response before sending the Read response. That is, the Write request is not blocked by the Read Request.