Allow for multiple channels for the same channel "name" - could be both input and output channels
This commit was SVN r23498.
Этот коммит содержится в:
родитель
6158cab2e1
Коммит
0c201486e4
@ -712,9 +712,13 @@ static int open_channel(orte_rmcast_channel_t channel, char *name,
|
|||||||
|
|
||||||
if (0 == strcasecmp(chan->name, name)) {
|
if (0 == strcasecmp(chan->name, name)) {
|
||||||
/* check the channel, if one was given */
|
/* check the channel, if one was given */
|
||||||
if (ORTE_RMCAST_INVALID_CHANNEL != channel &&
|
if (ORTE_RMCAST_INVALID_CHANNEL != channel) {
|
||||||
ORTE_RMCAST_INVALID_CHANNEL == chan->channel) {
|
if (ORTE_RMCAST_INVALID_CHANNEL == chan->channel) {
|
||||||
chan->channel = channel;
|
chan->channel = channel;
|
||||||
|
} else if (chan->channel != channel) {
|
||||||
|
/* another channel for this name */
|
||||||
|
goto newchan;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* all setup - nothing to do */
|
/* all setup - nothing to do */
|
||||||
OPAL_OUTPUT_VERBOSE((2, orte_rmcast_base.rmcast_output,
|
OPAL_OUTPUT_VERBOSE((2, orte_rmcast_base.rmcast_output,
|
||||||
@ -724,6 +728,7 @@ static int open_channel(orte_rmcast_channel_t channel, char *name,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
newchan:
|
||||||
/* we didn't find an existing match, so create a new channel */
|
/* we didn't find an existing match, so create a new channel */
|
||||||
OPAL_OUTPUT_VERBOSE((2, orte_rmcast_base.rmcast_output,
|
OPAL_OUTPUT_VERBOSE((2, orte_rmcast_base.rmcast_output,
|
||||||
"%s creating new channel %d for %s",
|
"%s creating new channel %d for %s",
|
||||||
@ -740,14 +745,14 @@ static int open_channel(orte_rmcast_channel_t channel, char *name,
|
|||||||
OPAL_OUTPUT_VERBOSE((2, orte_rmcast_base.rmcast_output,
|
OPAL_OUTPUT_VERBOSE((2, orte_rmcast_base.rmcast_output,
|
||||||
"%s rmcast:tcp opening new channel for%s%s",
|
"%s rmcast:tcp opening new channel for%s%s",
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
(ORTE_RMCAST_RECV & direction) ? " RECV" : " ",
|
(ORTE_RMCAST_RECV & direction) ? " RECV" : " ",
|
||||||
(ORTE_RMCAST_XMIT & direction) ? " XMIT" : " "));
|
(ORTE_RMCAST_XMIT & direction) ? " XMIT" : " "));
|
||||||
|
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**** LOCAL FUNCTIONS ****/
|
/**** LOCAL FUNCTIONS ****/
|
||||||
|
|
||||||
static void process_recv(int fd, short event, void *cbdata)
|
static void process_recv(int fd, short event, void *cbdata)
|
||||||
{
|
{
|
||||||
@ -776,7 +781,7 @@ static void process_recv(int fd, short event, void *cbdata)
|
|||||||
/* process the receive */
|
/* process the receive */
|
||||||
orte_rmcast_base_process_recv(mev);
|
orte_rmcast_base_process_recv(mev);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
OBJ_RELEASE(mev);
|
OBJ_RELEASE(mev);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user