Loading...
Searching...
No Matches
MqContextC_FilterApi_C_API

MqContextC - modify the data using the filter-technology

+ Collaboration diagram for MqContextC_FilterApi_C_API:

MqContextC - modify the data using the filter-technology

The filter mode is related to a special usage of the libmqmsgque software called a command pipeline. To define a filter create a server with:

Every filter has two context one belongs to the left command and one belongs to the right command:

 <-- left cmd --> <------- filter -------> <-- right cmd -->

                  <-- left --><- right -->
                  <- server -><- client ->
                  <- master -><- slave -->
                  <-context1-><-context2->

  ... command1   @         filter         @   command2 ...

The left context is created on application startup and the right context is created as slave of the left context.

BI-DIRECTIONAL FILTER

A bi-directional filter allow a data-flow in both directions and is used in a classical client/server application:

    client ... <--> ... server

as a feature enhancement like a protocol-tunnelling:

    client @ mq2tunnel ... <--> ... tunnel2mq @ server

or to convert the protocol into an other protocol:

    client @ mq2soap ... <--> ... soap-server

To define a bi-directional filter a couple of commands provide support:

ONE-DIRECTIONAL FILTER

A one-directional filter is a special form of a bi-directional filter and allow a data-flow from the left to the right.
This filter is well known from the unix shell to link different commands together:

    command1 | command2 | command3

A libmqmsgque command pipeline is created with the special character "@" instead of "|" :

    msgcmd1 @ msgcmd2 @ msgcmd3

To define a libmqmsgque filter... create a service handle with MqServiceCreate or MqServiceProxy ... using the token +FTR and +EOF

token description
+FTR required to act on filter data rows. Every filter input data is a list of filter data
rows and every row is a list of filter data columns. Every row is send to the following
filter-command as +FTR service request
+EOF required to act on End-Of-Filter data and is called after all +FTR data was send.
Sometimes the filter data can not be served as +FTR data (example: sorting of the
input rows need to read all rows before the data can be send to the next filter command)
and the+EOF token is used to continue send +FTR data rows.

and send every data item with MqSendEND_AND_WAIT .