Description of the illustration xstrm044.eps
This illustration shows two long, rectangular, vertically-standing boxes separated by a large space. The left box is labeled “client code”, while the right box is labeled “LCRCallbackSend”. The execution flow is shown beginning at Step 1 by an arrow labelled LCRCallbackSend going from the left box toward the right box near their tops. This flow shows the user invokes the OCIXStreamInLCRCallbackSend() providing two callbacks: createlcr_cb and createchunk_cb. This function initiates an LCR inbound stream to the server shown as a large arrow flowing from the right edge of the right box labeled “send to inbound server”.
The execution flow continues with Step 2 situated beneath Step 1 and shown as an arrow labelled createlcr_cb flowing from the right box to a small box within the left box labeled “construct LCR” indicating that this function invokes the createlcr_cb() procedure to get an LCR from the callback to send to the server. If the flag from Step 2 indicates the current LCR has more data, then this function proceeds to Step 3; otherwise it loops back to Step 2 to get the next LCR. This is shown as a dashed line descending from the box labeled construct LCR and flowing to the left edge of the right box. If the return LCR is NULL, then this function exits.
The execution flow continues with Step 3 situated beneath Step 2 and shown as an arrow labelled createchunk_cb flowing from the right box to a small box labeled “construct chunk” within the left box, indicating that this function invokes the createchunk_cb() to get the chunk data to send to the server. If the flag from this callback has the OCI_XSTREAM_MORE_ROW_DATA bit set shown as a dashed line flowing to the left edge of the right box, then it repeats Step 3 shown as an arrow within the right box pointing to Step 3; otherwise, it loops back to Step 2 to get the next LCR from the user shown as an arrow within the right box pointing to Step 2. If any callback function returns any values other than OCI_CONTINUE, then the OCIXStreamInLCRCallbackSend() call terminates.