Lines Matching defs:end
498 _channelend *end = PyMem_NEW(_channelend, 1);
499 if (end == NULL) {
503 end->next = NULL;
504 end->interp = interp;
505 end->open = 1;
506 return end;
510 _channelend_free(_channelend *end)
512 PyMem_Free(end);
516 _channelend_free_all(_channelend *end)
518 while (end != NULL) {
519 _channelend *last = end;
520 end = end->next;
529 _channelend *end = first;
530 while (end != NULL) {
531 if (end->interp == interp) {
534 prev = end;
535 end = end->next;
540 return end;
591 _channelend *end = _channelend_new(interp);
592 if (end == NULL) {
598 ends->send = end;
601 ends->recv = end;
605 prev->next = end;
613 return end;
620 _channelend *end = _channelend_find(send ? ends->send : ends->recv,
622 if (end != NULL) {
623 if (!end->open) {
649 _channelends_close_end(_channelends *ends, _channelend *end, int send)
651 end->open = 0;
664 _channelend *end;
666 end = _channelend_find(ends->send, interp, &prev);
667 if (end == NULL) {
669 end = _channelends_add(ends, prev, interp, 1);
670 if (end == NULL) {
674 _channelends_close_end(ends, end, 1);
677 end = _channelend_find(ends->recv, interp, &prev);
678 if (end == NULL) {
680 end = _channelends_add(ends, prev, interp, 0);
681 if (end == NULL) {
685 _channelends_close_end(ends, end, 0);
697 _channelend *end;
698 for (end = ends->send; end != NULL; end = end->next) {
699 _channelends_close_end(ends, end, 1);
703 for (end = ends->recv; end != NULL; end = end->next) {
704 _channelends_close_end(ends, end, 0);
819 _channel_close_interpreter(_PyChannelState *chan, int64_t interp, int end)
829 if (_channelends_close_interpreter(chan->ends, interp, end) != 0) {
841 _channel_close_all(_PyChannelState *chan, int end, int force)
861 _channelends_close_all(chan->ends, end, force);
1034 int end, int force)
1052 else if (!force && end == CHANNEL_SEND && ref->chan->closing != NULL) {
1057 if (_channel_close_all(ref->chan, end, force) != 0) {
1058 if (end == CHANNEL_SEND &&
1389 _channel_close(_channels *channels, int64_t id, int end, int force)
1391 return _channels_close(channels, id, NULL, end, force);
1406 _channelend *end = _channelend_find(send ? chan->ends->send : chan->ends->recv,
1409 return (end != NULL && end->open);
1419 int end;
1453 newchannelid(PyTypeObject *cls, int64_t cid, int end, _channels *channels,
1461 self->end = end;
1501 int end = 0;
1504 end = CHANNEL_SEND;
1508 end = CHANNEL_RECV;
1511 return (PyObject *)newchannelid(cls, cid, end, _global_channels(),
1533 if (cid->end == CHANNEL_SEND) {
1536 else if (cid->end == CHANNEL_RECV) {
1627 equal = (cid->end == othercid->end) && (cid->id == othercid->id);
1658 _channel_from_cid(PyObject *cid, int end)
1668 const char *clsname = (end == CHANNEL_RECV) ? "RecvChannel" :
1685 int end;
1694 PyObject *cid = (PyObject *)newchannelid(&ChannelIDtype, xid->id, xid->end,
1696 if (xid->end == 0) {
1703 /* Try returning a high-level channel end but fall back to the ID. */
1704 PyObject *chan = _channel_from_cid(cid, xid->end);
1721 xid->end = ((channelid *)obj)->end;
1733 channelid_end(PyObject *self, void *end)
1737 if (end != NULL) {
1738 return (PyObject *)newchannelid(Py_TYPE(self), cid->id, *(int *)end,
1742 if (cid->end == CHANNEL_SEND) {
1745 if (cid->end == CHANNEL_RECV) {
1755 {"end", (getter)channelid_end, NULL,
1758 PyDoc_STR("the 'send' end of the channel"), &_channelid_end_send},
1760 PyDoc_STR("the 'recv' end of the channel"), &_channelid_end_recv},
2343 int send = 0; /* Send or receive end? */
2394 Return the list of all interpreter IDs associated with an end of the channel.\n\
2397 receive end.");
2495 - fully close the 'send' end\n\
2496 - close the 'recv' end to interpreters not already receiving\n\
2537 ends are closed. Closing an already closed end is a noop.");