| NAME |
| SCI_Filter_bcast - Used in a message filter to broadcasts messages to some successors |
| |
| C Syntax |
| #include <sci.h> |
| int SCI_Filter_bcast(int filter_id, int num_successors, int *successor_list, int num_bufs, void *bufs[], int sizes[]) |
| |
| INPUT PARAMETERS |
| filter_id |
| The filter id of the messages to be broadcasted (IN). |
| num_successors |
| Number of successors (IN). |
| successor_list |
| The successor id list (IN). |
| num_bufs |
| The number of buffers of current message segment (IN). |
| bufs |
| The array of buffer locations of current message segment (IN). |
| sizes |
| The array of buffer sizes of current message segment (IN). |
| |
| DESCRIPTION |
| This subroutine is used to broadcast messages to all or part of successors |
| in a message filter. A successor id can be an agent id or a back end id, |
| because a SCI execution environment is organized in a tree style, successor |
| means children. |
| |
| The agent id can be queried by SCI_Query using query type AGENT_ID, and the |
| successor id list can be queried using query type NUM_SUCCESSORS and |
| SUCCESSOR_IDLIST. |
| |
| The filter_id can be set to SCI_FILTER_NULL, means the downward messages will |
| use the current filter id, otherwise the new filter id will be used. |
| |
| This is a non-blocking call. The caller cannot assume that message transfer |
| has completed upon the return of the function. Instead, the handler function |
| defined in sci_info_t should be used to ensure the message arrival in the |
| destination sides. |
| |
| For more information, please refer to SCI's online documents. |
| |
| EXAMPLE |
| { |
| char msg[256]; |
| int num_successors, *successor_list, sizes[1]; |
| void *bufs[1]; |
| ... |
| SCI_Query(NUM_SUCCESSORS, &num_successors); |
| successor_list = (int *)malloc(sizeof(int)*num_successors); |
| SCI_Query(SUCCESSOR_IDLIST, successor_list); |
| ... |
| bufs[0] = msg; |
| sizes[0] = strlen(msg) + 1; |
| SCI_Filter_bcast(SCI_FILTER_NULL, num_successors, successor_list, 1, bufs, sizes); |
| } |
| |
| ERRORS |
| All SCI routines return an error value. |
| |
| SCI_ERR_UNINTIALIZED |
| Uninitialized SCI execution environment |
| SCI_ERR_INVALID_CALLER |
| Can only be called in the filter |
| SCI_ERR_INVALID_SUCCESSOR |
| The successor id list contains non-existed successor id |
| SCI_ERR_NO_MEM |
| Out of memory |
| |
| SEE ALSO |
| SCI_Filter_upload(3) |