Lines Matching defs:channels

708 /* channels */
869 /* the set of channels */
939 _channels_init(_channels *channels)
941 if (channels->mutex == NULL) {
942 channels->mutex = PyThread_allocate_lock();
943 if (channels->mutex == NULL) {
949 channels->head = NULL;
950 channels->numopen = 0;
951 channels->next_id = 0;
956 _channels_next_id(_channels *channels) // needs lock
958 int64_t id = channels->next_id;
965 channels->next_id += 1;
970 _channels_lookup(_channels *channels, int64_t id, PyThread_type_lock *pmutex)
973 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
978 _channelref *ref = _channelref_find(channels->head, id, NULL);
990 *pmutex = channels->mutex;
996 PyThread_release_lock(channels->mutex);
1002 _channels_add(_channels *channels, _PyChannelState *chan)
1005 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
1008 int64_t id = _channels_next_id(channels);
1019 ref->next = channels->head;
1020 channels->head = ref;
1021 channels->numopen += 1;
1025 PyThread_release_lock(channels->mutex);
1033 _channels_close(_channels *channels, int64_t cid, _PyChannelState **pchan,
1037 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
1042 _channelref *ref = _channelref_find(channels->head, cid, NULL);
1068 if (_channel_set_closing(ref, channels->mutex) != 0) {
1089 PyThread_release_lock(channels->mutex);
1094 _channels_remove_ref(_channels *channels, _channelref *ref, _channelref *prev,
1097 if (ref == channels->head) {
1098 channels->head = ref->next;
1103 channels->numopen -= 1;
1112 _channels_remove(_channels *channels, int64_t id, _PyChannelState **pchan)
1115 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
1122 _channelref *ref = _channelref_find(channels->head, id, &prev);
1128 _channels_remove_ref(channels, ref, prev, pchan);
1132 PyThread_release_lock(channels->mutex);
1137 _channels_add_id_object(_channels *channels, int64_t id)
1140 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
1142 _channelref *ref = _channelref_find(channels->head, id, NULL);
1151 PyThread_release_lock(channels->mutex);
1156 _channels_drop_id_object(_channels *channels, int64_t id)
1158 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
1161 _channelref *ref = _channelref_find(channels->head, id, &prev);
1171 _channels_remove_ref(channels, ref, prev, &chan);
1178 PyThread_release_lock(channels->mutex);
1182 _channels_list_all(_channels *channels, int64_t *count)
1185 PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
1186 int64_t *ids = PyMem_NEW(int64_t, (Py_ssize_t)(channels->numopen));
1190 _channelref *ref = channels->head;
1194 *count = channels->numopen;
1198 PyThread_release_lock(channels->mutex);
1202 /* support for closing non-empty channels */
1259 _channel_create(_channels *channels)
1265 int64_t id = _channels_add(channels, chan);
1274 _channel_destroy(_channels *channels, int64_t id)
1277 if (_channels_remove(channels, id, &chan) != 0) {
1287 _channel_send(_channels *channels, int64_t id, PyObject *obj)
1296 _PyChannelState *chan = _channels_lookup(channels, id, &mutex);
1333 _channel_recv(_channels *channels, int64_t id)
1342 _PyChannelState *chan = _channels_lookup(channels, id, &mutex);
1367 _channel_drop(_channels *channels, int64_t id, int send, int recv)
1376 _PyChannelState *chan = _channels_lookup(channels, id, &mutex);
1389 _channel_close(_channels *channels, int64_t id, int end, int force)
1391 return _channels_close(channels, id, NULL, end, force);
1395 _channel_is_associated(_channels *channels, int64_t cid, int64_t interp,
1398 _PyChannelState *chan = _channels_lookup(channels, cid, NULL);
1421 _channels *channels;
1453 newchannelid(PyTypeObject *cls, int64_t cid, int end, _channels *channels,
1463 self->channels = channels;
1465 if (_channels_add_id_object(channels, cid) != 0) {
1519 _channels *channels = ((channelid *)v)->channels;
1522 _channels_drop_id_object(channels, cid);
1739 cid->channels, force, cid->resolve);
1976 _channels channels;
1982 if (_channels_init(&_globals.channels) != 0) {
1990 return &_globals.channels;
2258 int64_t cid = _channel_create(&_globals.channels);
2263 &_globals.channels, 0, 0);
2265 if (_channel_destroy(&_globals.channels, cid) != 0) {
2270 assert(((channelid *)id)->channels != NULL);
2289 if (_channel_destroy(&_globals.channels, cid) != 0) {
2305 int64_t *cids = _channels_list_all(&_globals.channels, &count);
2319 &_globals.channels, 0, 0);
2336 Return the list of all IDs for active channels.");
2363 int res = _channel_is_associated(&_globals.channels, cid, id, send);
2411 if (_channel_send(&_globals.channels, cid, obj) != 0) {
2434 PyObject *obj = _channel_recv(&_globals.channels, cid);
2471 if (_channel_close(&_globals.channels, cid, send-recv, force) != 0) {
2526 if (_channel_drop(&_globals.channels, cid, send, recv) != 0) {