 |
» |
|
|
 |
Use ft_bgroup() and ft_egroup() to begin and end the grouping
of low level FTAM functions and thus, increase performance. The
ftam_init places these functions into one presentation service data
unit (PSDU) before sending it across the network. For a group to be successful, all functions moving from one
regime to another must be successful (regardless of whether the
calls that do not move through regimes succeed). If a failure occurs on a function that crosses regimes and
if the SUCCESS count does not equal or exceed threshold, no remaining
calls, except ft_egroup(), are processed and you receive an error. Allowable Groupings |  |
Refer to the following guidelines for grouping FTAM functions
and for reading the following table. The table lists the legal groupings
with the associated sequence of LLCS functions (from left to right). All groups must begin with ft_bgroup()
and end with ft_egroup(). The first function you want to call after ft_bgroup()
determines which regime you must be in to call ft_bgroup(). You must call all functions within the group asynchronously
except for ft_egroup(), which can be synchronous or asynchronous. If more than one function is listed in a ``Mandatory''
column, you must perform both functions in the order listed. You can specify either or both optional functions,
or can choose not to use them. If you call both optional functions,
you must do so in the order given in the table.
The legal groupings are restricted by the service_class. Refer
to the above table and the following list to determine these restrictions. If you select FT_SC_TRANSFER, you
must use the #1 or #2 groupings. If you select FT_SC_MANAGEMENT, you must use the
#3 grouping. If you select FT_SC_TRANSFER_AND_MGMT, you must
use the #1, #2, or #3 groupings. If you select FT_SC_ACCESS, you can use any of the
groupings.
If you select the service_class FT_SC_TRANSFER, FT_SC_MANAGEMENT,
or FT_SC_TRANSFER_AND_MGT, you must use FT_FU_GROUPING in the functional_units
parameter. ft_bgroup() |  |
#include %</opt/ftam/include/map.h> #include %</opt/ftam/include/mapftam.h> Return_code ft_bgroup (connection_id, threshold, return_event_name, input_dcb, inout_dcb) Connection_id connection_id; Uint32 threshold; Local_event_name return_event_name; char *input_dcb; struct Ft_bgroup_out_dcb **inout_dcb; |
Issue an asynchronous ft_bgroup() to start a set of grouped
functions. You cannot nest an ft_bgroup() function
within another ft_bgroup() function (i.e., you cannot invoke ft_bgroup()
within another set of grouped functions). During ft_connect(), you must negotiate the FT_FU_GROUPING
functional_units to use ft_bgroup().
struct Ft_bgroup_out_dcb { Uint32 size; struct Api_rc result; }; |
ft_egroup() |  |
#include %</opt/ftam/include/map.h> #include %</opt/ftam/include/mapftam.h> Return_code ft_egroup (connection_id, return_event_name, input_dcb, inout_dcb) Connection_id connection_id; Local_event_name return_event_name; char *input_dcb; struct Ft_egroup_out_dcb **inout_dcb; |
Use ft_egroup(), either synchronously or asynchronously, to
end a set of grouped functions. During ft_connect(), you must negotiate
the FT_FU_GROUPING functional_units to use ft_egroup(). An ft_egroup() is successful only if ft_bgroup()
succeeds and if the threshold number of requests succeeds.
struct Ft_egroup_out_dcb { Uint32 size; struct Api_rc result; }; |
|