Example #1
0
static void
orte_iof_hnp_exception_handler(const orte_process_name_t* peer, orte_rml_exception_t reason)
{
#if 0
    orte_iof_base_endpoint_t *endpoint;
    opal_output_verbose(1, orte_iof_base.iof_output, 
                        "iof svc exception handler! %s\n",
                        ORTE_NAME_PRINT((orte_process_name_t*)peer));
    
    /* If we detect an exception on the RML connection to a peer,
     delete all of its subscriptions and publications.  Note that
     exceptions can be detected during a normal RML shutdown; they
     are recoverable events (no need to abort). */
    orte_iof_hnp_sub_delete_all(peer);
    orte_iof_hnp_pub_delete_all(peer);
    opal_output_verbose(1, orte_iof_base.iof_output, "deleted all pubs and subs\n");
    
    /* Find any streams on any endpoints for this peer and close them */
    while (NULL != 
           (endpoint = orte_iof_base_endpoint_match(peer, ORTE_NS_CMP_ALL,
                                                    ORTE_IOF_ANY))) {
        orte_iof_base_endpoint_closed(endpoint);
        
        /* Delete the endpoint that we just matched */
        orte_iof_base_endpoint_delete(peer, ORTE_NS_CMP_ALL, ORTE_IOF_ANY);
    }
#endif
    opal_output_verbose(1, orte_iof_base.iof_output, "done with exception handler\n");
}
Example #2
0
static void orte_iof_proxy_svc_ack(
    const orte_process_name_t* origin,
    orte_iof_base_msg_header_t* msg)
{
    orte_iof_base_endpoint_t* endpoint;
    /* Look for the endpoint corresponding to the tag in the ACK.  If
       we don't find the endpoint, this means that we have already
       unpublished the endpoint and this ACK must have already been
       enroute to us when we unpublished.  So just discard it. */
    endpoint = orte_iof_base_endpoint_match(&msg->msg_origin, ORTE_NS_CMP_ALL, msg->msg_tag);
    if(endpoint != NULL) {
        orte_iof_base_endpoint_ack(endpoint,msg->msg_seq + msg->msg_len);
        /* RELEASE the endpoint because endpoint_match() RETAINed it */
        OBJ_RELEASE(endpoint);
    }
}
Example #3
0
static void orte_iof_proxy_svc_msg(
    const orte_process_name_t* origin,
    orte_iof_base_msg_header_t* msg,
    unsigned char* data)
{
    orte_iof_base_endpoint_t* endpoint;

    /* Look for the endpoint corresponding to the tag in the message.
       If we don't find the endpoint, this means that we have already
       unpublished the endpoint and this message must have already
       been enroute to us when we unpublished.  So just discard it. */
    endpoint = orte_iof_base_endpoint_match(ORTE_NAME_WILDCARD, ORTE_NS_CMP_NONE, msg->msg_tag);
    if (NULL != endpoint) {
        orte_iof_base_endpoint_forward(endpoint,origin,msg,data);
        /* RELEASE the endpoint because endpoint_match() RETAINed it */
        OBJ_RELEASE(endpoint);
    }
}