in src/session.c [1265:1324]
int session_send_flow(LINK_ENDPOINT_HANDLE link_endpoint, FLOW_HANDLE flow)
{
int result;
if ((link_endpoint == NULL) ||
(flow == NULL))
{
result = MU_FAILURE;
}
else
{
LINK_ENDPOINT_INSTANCE* link_endpoint_instance = (LINK_ENDPOINT_INSTANCE*)link_endpoint;
SESSION_INSTANCE* session_instance = (SESSION_INSTANCE*)link_endpoint_instance->session;
result = 0;
if (session_instance->session_state == SESSION_STATE_BEGIN_RCVD)
{
if (flow_set_next_incoming_id(flow, session_instance->next_incoming_id) != 0)
{
result = MU_FAILURE;
}
}
if (result == 0)
{
if ((flow_set_next_incoming_id(flow, session_instance->next_incoming_id) != 0) ||
(flow_set_incoming_window(flow, session_instance->incoming_window) != 0) ||
(flow_set_next_outgoing_id(flow, session_instance->next_outgoing_id) != 0) ||
(flow_set_outgoing_window(flow, session_instance->outgoing_window) != 0) ||
(flow_set_handle(flow, link_endpoint_instance->output_handle) != 0))
{
result = MU_FAILURE;
}
else
{
AMQP_VALUE flow_performative_value = amqpvalue_create_flow(flow);
if (flow_performative_value == NULL)
{
result = MU_FAILURE;
}
else
{
if (encode_frame(link_endpoint, flow_performative_value, NULL, 0) != 0)
{
result = MU_FAILURE;
}
else
{
result = 0;
}
amqpvalue_destroy(flow_performative_value);
}
}
}
}
return result;
}