Example #1
0
File: writing.c Project: bjori/grpc
void grpc_chttp2_perform_writes(
    grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_writing *transport_writing,
    grpc_endpoint *endpoint) {
  GPR_ASSERT(transport_writing->outbuf.count > 0 ||
             grpc_chttp2_list_have_writing_streams(transport_writing));

  finalize_outbuf(transport_writing);

  GPR_ASSERT(transport_writing->outbuf.count > 0);
  GPR_ASSERT(endpoint);

  grpc_endpoint_write(exec_ctx, endpoint, &transport_writing->outbuf,
                      &transport_writing->done_cb);
}
Example #2
0
void grpc_chttp2_perform_writes(
    grpc_chttp2_transport_writing *transport_writing, grpc_endpoint *endpoint) {
    GPR_ASSERT(transport_writing->outbuf.count > 0 ||
               grpc_chttp2_list_have_writing_streams(transport_writing));

    finalize_outbuf(transport_writing);

    GPR_ASSERT(transport_writing->outbuf.count > 0);
    GPR_ASSERT(endpoint);

    switch (grpc_endpoint_write(endpoint, transport_writing->outbuf.slices,
                                transport_writing->outbuf.count, finish_write_cb,
                                transport_writing)) {
    case GRPC_ENDPOINT_WRITE_DONE:
        grpc_chttp2_terminate_writing(transport_writing, 1);
        break;
    case GRPC_ENDPOINT_WRITE_ERROR:
        grpc_chttp2_terminate_writing(transport_writing, 0);
        break;
    case GRPC_ENDPOINT_WRITE_PENDING:
        break;
    }
}