Loading...
Searching...
No Matches
MqContextC_ReadApi_C_API

MqContextC - extract data from an incoming read-data-packageMore...

+ Collaboration diagram for MqContextC_ReadApi_C_API:

Topics

 MqContextC_ReadApi_Atom_C_API
 MqContextC - read a single-data-item outof a read-data-package
 
 MqContextC_ReadApi_Block_C_API
 MqContextC - read a block-of-data outof a read-data-package
 
 MqContextC_ReadApi_Misc_C_API
 MqContextC - various functions to work on a read-data-package
 

Detailed Description

MqContextC - extract data from an incoming read-data-package

A data-package is read in two different scenarios:

Reading data is a passive-task and the opposite of sending data, which is an active-task. Passive means that the reading process is triggered by an incoming-data-package and not by the software workflow or by the user.
There is a read function and some help functions for each basic type defined in MkBufferS .

Read-Safe
Each service-call has a private read-data-package. This means that during a service-call that is in progress, another service-call can be served without damaging the read-data-package of the current service-call.
Type-Safe
A data-item in a read-data-package is type safe, this mean that every read of a data-item have to match the data-type of the previous write. One exception is available, the cast from and to the string data-type (TYPE=C) is allowed.

Example from server.c read-safety: Make a nested service-call

static enum MkErrorE
Ot_CSV1 ( MQ_SERVICE_CALL_ARGS )
{
  // read the input-data from the CSV1-service-call
  // client → server
  MK_I32 retI, inI = MqReadI32_e(mqctx) + 1;

  // call the CSV2-service at the client, wait 10sec for timeout
  // server → client → server
  MqSend_E(mqctx, "Wt", 10, "CSV2:I@I", inI, &retI);

  // answer the CSV1-service-call with the result from the CSV2-service-call
  // server → client
error:
  return MqSend(mqctx, "R", "I", retI+1);
}