Progress on chttp2 integration

reviewable/pr8239/r2
Craig Tiller 9 years ago
parent 25f29afa84
commit 7f58f5d1cb
  1. 1
      src/core/ext/transport/chttp2/transport/chttp2_transport.c
  2. 11
      src/core/ext/transport/chttp2/transport/stream_map.c

@ -1339,6 +1339,7 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) { if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
if (!t->benign_reclaimer_registered) { if (!t->benign_reclaimer_registered) {
t->benign_reclaimer_registered = true; t->benign_reclaimer_registered = true;
GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
grpc_buffer_user_post_reclaimer(exec_ctx, grpc_buffer_user_post_reclaimer(exec_ctx,
grpc_endpoint_get_buffer_user(t->ep), grpc_endpoint_get_buffer_user(t->ep),
false, &t->benign_reclaimer); false, &t->benign_reclaimer);

@ -151,6 +151,17 @@ size_t grpc_chttp2_stream_map_size(grpc_chttp2_stream_map *map) {
return map->count - map->free; return map->count - map->free;
} }
void *grpc_chttp2_stream_map_rand(grpc_chttp2_stream_map *map) {
if (map->count == map->free) {
return NULL;
}
if (map->free != 0) {
map->count = compact(map->keys, map->values, map->count);
map->free = 0;
}
return map->values[((size_t)rand()) % map->count];
}
void grpc_chttp2_stream_map_for_each(grpc_chttp2_stream_map *map, void grpc_chttp2_stream_map_for_each(grpc_chttp2_stream_map *map,
void (*f)(void *user_data, uint32_t key, void (*f)(void *user_data, uint32_t key,
void *value), void *value),

Loading…
Cancel
Save