Different from difftomo all communication is done inside buffers preceded by TELL_BUFFERBYTES or RESPOND_BUFFERBYTES instructions. In either case, the instruction is immediately followed by a 32 bit integer describing the number of bytes InputBufferBytes that the buffer contains (up to a maximum of SM_SERV_BUFFER_BYTES in C++, or sm_client_par.BUFFER_BYTES in IDL), and then the buffer of that length containing commands and parameters.
Two variables provide important information about the input buffer. The variable InputBufferBytes tells the total number of bytes contained in this particular input buffer. The variable InputBufferByteOffset gives the offset within the input buffer where we should next read from.
The client signals the end of a ``Tell sequence'' (which can be many buffers long) by sending TELL_INDEX followed by the pertaining TellIndex of that sequence. In return the server signals the end of the resulting ``Respond sequence'' by sending RESPOND_INDEX followed by the pertaining RespondIndex. So the client will know that there is no further information to be obtained by another buffer read.