Merge github.com:grpc/grpc into slice_with_exec_ctx
This commit is contained in:
commit
b995e8bcda
25
BUILD
25
BUILD
|
|
@ -135,7 +135,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -559,6 +559,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -566,7 +567,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -957,6 +958,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -964,7 +966,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -1340,6 +1342,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -1347,7 +1350,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -1496,6 +1499,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -1503,7 +1507,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -1960,6 +1964,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -1967,7 +1972,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -2137,6 +2142,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -2144,7 +2150,7 @@ cc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -2307,7 +2313,7 @@ objc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -2567,6 +2573,7 @@ objc_library(
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h",
|
||||
|
|
@ -2574,7 +2581,7 @@ objc_library(
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -531,6 +531,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
include/grpc/impl/codegen/compression_types.h
|
||||
include/grpc/impl/codegen/connectivity_state.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/grpc_types.h
|
||||
include/grpc/impl/codegen/propagation_bits.h
|
||||
include/grpc/impl/codegen/status.h
|
||||
|
|
@ -538,7 +539,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -783,6 +784,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
include/grpc/impl/codegen/compression_types.h
|
||||
include/grpc/impl/codegen/connectivity_state.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/grpc_types.h
|
||||
include/grpc/impl/codegen/propagation_bits.h
|
||||
include/grpc/impl/codegen/status.h
|
||||
|
|
@ -790,7 +792,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -1035,6 +1037,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
include/grpc/impl/codegen/compression_types.h
|
||||
include/grpc/impl/codegen/connectivity_state.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/grpc_types.h
|
||||
include/grpc/impl/codegen/propagation_bits.h
|
||||
include/grpc/impl/codegen/status.h
|
||||
|
|
@ -1042,7 +1045,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -1199,6 +1202,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
include/grpc/impl/codegen/compression_types.h
|
||||
include/grpc/impl/codegen/connectivity_state.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/grpc_types.h
|
||||
include/grpc/impl/codegen/propagation_bits.h
|
||||
include/grpc/impl/codegen/status.h
|
||||
|
|
@ -1206,7 +1210,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -1533,6 +1537,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
include/grpc/impl/codegen/compression_types.h
|
||||
include/grpc/impl/codegen/connectivity_state.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/grpc_types.h
|
||||
include/grpc/impl/codegen/propagation_bits.h
|
||||
include/grpc/impl/codegen/status.h
|
||||
|
|
@ -1540,7 +1545,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -1740,6 +1745,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
include/grpc/impl/codegen/compression_types.h
|
||||
include/grpc/impl/codegen/connectivity_state.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/grpc_types.h
|
||||
include/grpc/impl/codegen/propagation_bits.h
|
||||
include/grpc/impl/codegen/status.h
|
||||
|
|
@ -1747,7 +1753,7 @@ foreach(_hdr
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
include/grpc/impl/codegen/atm_windows.h
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
include/grpc/impl/codegen/gpr_slice.h
|
||||
include/grpc/impl/codegen/gpr_types.h
|
||||
include/grpc/impl/codegen/port_platform.h
|
||||
include/grpc/impl/codegen/slice.h
|
||||
|
|
|
|||
28
Makefile
28
Makefile
|
|
@ -2552,7 +2552,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -2853,6 +2853,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -2860,7 +2861,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -3124,6 +3125,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -3131,7 +3133,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -3341,6 +3343,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -3348,7 +3351,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -3632,6 +3635,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -3639,7 +3643,7 @@ PUBLIC_HEADERS_C += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -3877,6 +3881,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -3884,7 +3889,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -4240,6 +4245,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -4247,7 +4253,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -4596,6 +4602,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -4603,7 +4610,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -4775,6 +4782,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -4782,7 +4790,7 @@ PUBLIC_HEADERS_CXX += \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -7216,6 +7224,7 @@ LIBEND2END_TESTS_SRC = \
|
|||
test/core/end2end/tests/request_with_payload.c \
|
||||
test/core/end2end/tests/resource_quota_server.c \
|
||||
test/core/end2end/tests/server_finishes_request.c \
|
||||
test/core/end2end/tests/short_deadlines.c \
|
||||
test/core/end2end/tests/shutdown_finishes_calls.c \
|
||||
test/core/end2end/tests/shutdown_finishes_tags.c \
|
||||
test/core/end2end/tests/simple_cacheable_request.c \
|
||||
|
|
@ -7302,6 +7311,7 @@ LIBEND2END_NOSEC_TESTS_SRC = \
|
|||
test/core/end2end/tests/request_with_payload.c \
|
||||
test/core/end2end/tests/resource_quota_server.c \
|
||||
test/core/end2end/tests/server_finishes_request.c \
|
||||
test/core/end2end/tests/short_deadlines.c \
|
||||
test/core/end2end/tests/shutdown_finishes_calls.c \
|
||||
test/core/end2end/tests/shutdown_finishes_tags.c \
|
||||
test/core/end2end/tests/simple_cacheable_request.c \
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ filegroups:
|
|||
- include/grpc/impl/codegen/atm_gcc_atomic.h
|
||||
- include/grpc/impl/codegen/atm_gcc_sync.h
|
||||
- include/grpc/impl/codegen/atm_windows.h
|
||||
- include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
- include/grpc/impl/codegen/gpr_slice.h
|
||||
- include/grpc/impl/codegen/gpr_types.h
|
||||
- include/grpc/impl/codegen/port_platform.h
|
||||
- include/grpc/impl/codegen/slice.h
|
||||
|
|
@ -423,6 +423,7 @@ filegroups:
|
|||
- include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
- include/grpc/impl/codegen/compression_types.h
|
||||
- include/grpc/impl/codegen/connectivity_state.h
|
||||
- include/grpc/impl/codegen/exec_ctx_fwd.h
|
||||
- include/grpc/impl/codegen/grpc_types.h
|
||||
- include/grpc/impl/codegen/propagation_bits.h
|
||||
- include/grpc/impl/codegen/status.h
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ reconnect, or in the case of HTTP/2 GO_AWAY, re-resolve the name and reconnect.
|
|||
|
||||
To hide the details of all this activity from the user of the gRPC API (i.e.,
|
||||
application code) while exposing meaningful information about the state of a
|
||||
channel, we use a state machine with four states, defined below:
|
||||
channel, we use a state machine with five states, defined below:
|
||||
|
||||
CONNECTING: The channel is trying to establish a connection and is waiting to
|
||||
make progress on one of the steps involved in name resolution, TCP connection
|
||||
|
|
@ -116,7 +116,7 @@ Channel State API
|
|||
|
||||
All gRPC libraries will expose a channel-level API method to poll the current
|
||||
state of a channel. In C++, this method is called GetCurrentState and returns
|
||||
an enum for one of the four legal states.
|
||||
an enum for one of the five legal states.
|
||||
|
||||
All libraries should also expose an API that enables the application (user of
|
||||
the gRPC API) to be notified when the channel state changes. Since state
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ Pod::Spec.new do |s|
|
|||
'include/grpc/impl/codegen/atm_gcc_atomic.h',
|
||||
'include/grpc/impl/codegen/atm_gcc_sync.h',
|
||||
'include/grpc/impl/codegen/atm_windows.h',
|
||||
'include/grpc/impl/codegen/exec_ctx_fwd.h',
|
||||
'include/grpc/impl/codegen/gpr_slice.h',
|
||||
'include/grpc/impl/codegen/gpr_types.h',
|
||||
'include/grpc/impl/codegen/port_platform.h',
|
||||
'include/grpc/impl/codegen/slice.h',
|
||||
|
|
@ -166,6 +166,7 @@ Pod::Spec.new do |s|
|
|||
'include/grpc/impl/codegen/byte_buffer_reader.h',
|
||||
'include/grpc/impl/codegen/compression_types.h',
|
||||
'include/grpc/impl/codegen/connectivity_state.h',
|
||||
'include/grpc/impl/codegen/exec_ctx_fwd.h',
|
||||
'include/grpc/impl/codegen/grpc_types.h',
|
||||
'include/grpc/impl/codegen/propagation_bits.h',
|
||||
'include/grpc/impl/codegen/status.h',
|
||||
|
|
@ -173,7 +174,7 @@ Pod::Spec.new do |s|
|
|||
'include/grpc/impl/codegen/atm_gcc_atomic.h',
|
||||
'include/grpc/impl/codegen/atm_gcc_sync.h',
|
||||
'include/grpc/impl/codegen/atm_windows.h',
|
||||
'include/grpc/impl/codegen/exec_ctx_fwd.h',
|
||||
'include/grpc/impl/codegen/gpr_slice.h',
|
||||
'include/grpc/impl/codegen/gpr_types.h',
|
||||
'include/grpc/impl/codegen/port_platform.h',
|
||||
'include/grpc/impl/codegen/slice.h',
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
|
||||
s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
|
||||
s.files += %w( include/grpc/impl/codegen/atm_windows.h )
|
||||
s.files += %w( include/grpc/impl/codegen/exec_ctx_fwd.h )
|
||||
s.files += %w( include/grpc/impl/codegen/gpr_slice.h )
|
||||
s.files += %w( include/grpc/impl/codegen/gpr_types.h )
|
||||
s.files += %w( include/grpc/impl/codegen/port_platform.h )
|
||||
s.files += %w( include/grpc/impl/codegen/slice.h )
|
||||
|
|
@ -149,6 +149,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( include/grpc/impl/codegen/byte_buffer_reader.h )
|
||||
s.files += %w( include/grpc/impl/codegen/compression_types.h )
|
||||
s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
|
||||
s.files += %w( include/grpc/impl/codegen/exec_ctx_fwd.h )
|
||||
s.files += %w( include/grpc/impl/codegen/grpc_types.h )
|
||||
s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
|
||||
s.files += %w( include/grpc/impl/codegen/status.h )
|
||||
|
|
@ -156,7 +157,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
|
||||
s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
|
||||
s.files += %w( include/grpc/impl/codegen/atm_windows.h )
|
||||
s.files += %w( include/grpc/impl/codegen/exec_ctx_fwd.h )
|
||||
s.files += %w( include/grpc/impl/codegen/gpr_slice.h )
|
||||
s.files += %w( include/grpc/impl/codegen/gpr_types.h )
|
||||
s.files += %w( include/grpc/impl/codegen/port_platform.h )
|
||||
s.files += %w( include/grpc/impl/codegen/slice.h )
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 2016, Google Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following disclaimer
|
||||
* in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* * Neither the name of Google Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#ifndef GRPC_IMPL_CODEGEN_GPR_SLICE_H
|
||||
#define GRPC_IMPL_CODEGEN_GPR_SLICE_H
|
||||
|
||||
/* WARNING: Please do not use this header. This was added as a temporary measure
|
||||
* to not break some of the external projects that depend on gpr_slice_*
|
||||
* functions. We are actively working on moving all the gpr_slice_* references
|
||||
* to grpc_slice_* and this file will be removed
|
||||
* */
|
||||
|
||||
/* TODO (sreek) - Allowed by default but will be very soon turned off */
|
||||
#define GRPC_ALLOW_GPR_SLICE_FUNCTIONS 1
|
||||
|
||||
#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS
|
||||
|
||||
#define gpr_slice_refcount grpc_slice_refcount
|
||||
#define gpr_slice grpc_slice
|
||||
#define gpr_slice_buffer grpc_slice_buffer
|
||||
|
||||
#define gpr_slice_ref grpc_slice_ref
|
||||
#define gpr_slice_unref grpc_slice_unref
|
||||
#define gpr_slice_new grpc_slice_new
|
||||
#define gpr_slice_new_with_user_data grpc_slice_new_with_user_data
|
||||
#define gpr_slice_new_with_len grpc_slice_new_with_len
|
||||
#define gpr_slice_malloc grpc_slice_malloc
|
||||
#define gpr_slice_from_copied_string grpc_slice_from_copied_string
|
||||
#define gpr_slice_from_copied_buffer grpc_slice_from_copied_buffer
|
||||
#define gpr_slice_from_static_string grpc_slice_from_static_string
|
||||
#define gpr_slice_sub grpc_slice_sub
|
||||
#define gpr_slice_sub_no_ref grpc_slice_sub_no_ref
|
||||
#define gpr_slice_split_tail grpc_slice_split_tail
|
||||
#define gpr_slice_split_head grpc_slice_split_head
|
||||
#define gpr_slice_cmp grpc_slice_cmp
|
||||
#define gpr_slice_str_cmp grpc_slice_str_cmp
|
||||
|
||||
#define gpr_slice_buffer grpc_slice_buffer
|
||||
#define gpr_slice_buffer_init grpc_slice_buffer_init
|
||||
#define gpr_slice_buffer_destroy grpc_slice_buffer_destroy
|
||||
#define gpr_slice_buffer_add grpc_slice_buffer_add
|
||||
#define gpr_slice_buffer_add_indexed grpc_slice_buffer_add_indexed
|
||||
#define gpr_slice_buffer_addn grpc_slice_buffer_addn
|
||||
#define gpr_slice_buffer_tiny_add grpc_slice_buffer_tiny_add
|
||||
#define gpr_slice_buffer_pop grpc_slice_buffer_pop
|
||||
#define gpr_slice_buffer_reset_and_unref grpc_slice_buffer_reset_and_unref
|
||||
#define gpr_slice_buffer_swap grpc_slice_buffer_swap
|
||||
#define gpr_slice_buffer_move_into grpc_slice_buffer_move_into
|
||||
#define gpr_slice_buffer_trim_end grpc_slice_buffer_trim_end
|
||||
#define gpr_slice_buffer_move_first grpc_slice_buffer_move_first
|
||||
#define gpr_slice_buffer_take_first grpc_slice_buffer_take_first
|
||||
|
||||
#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_GPR_SLICE_H */
|
||||
|
|
@ -38,6 +38,7 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include <grpc/impl/codegen/exec_ctx_fwd.h>
|
||||
#include <grpc/impl/codegen/gpr_slice.h>
|
||||
|
||||
/* Slice API
|
||||
|
||||
|
|
@ -117,4 +118,22 @@ typedef struct {
|
|||
GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice)
|
||||
#define GRPC_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0)
|
||||
|
||||
#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS
|
||||
|
||||
/* Duplicate GPR_* definitions */
|
||||
#define GPR_SLICE_START_PTR(slice) \
|
||||
((slice).refcount ? (slice).data.refcounted.bytes \
|
||||
: (slice).data.inlined.bytes)
|
||||
#define GPR_SLICE_LENGTH(slice) \
|
||||
((slice).refcount ? (slice).data.refcounted.length \
|
||||
: (slice).data.inlined.length)
|
||||
#define GPR_SLICE_SET_LENGTH(slice, newlen) \
|
||||
((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
|
||||
: ((slice).data.inlined.length = (uint8_t)(newlen)))
|
||||
#define GPR_SLICE_END_PTR(slice) \
|
||||
GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice)
|
||||
#define GPR_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0)
|
||||
|
||||
#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SLICE_H */
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
<file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/atm_windows.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/exec_ctx_fwd.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/gpr_slice.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/gpr_types.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
|
||||
|
|
@ -157,6 +157,7 @@
|
|||
<file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer_reader.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/exec_ctx_fwd.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
|
||||
|
|
@ -164,7 +165,7 @@
|
|||
<file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/atm_windows.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/exec_ctx_fwd.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/gpr_slice.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/gpr_types.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
|
||||
<file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
|
||||
|
|
|
|||
|
|
@ -687,9 +687,15 @@ static void subchannel_ready(grpc_exec_ctx *exec_ctx, void *arg,
|
|||
"Failed to create subchannel", &error, 1));
|
||||
} else if (GET_CALL(calld) == CANCELLED_CALL) {
|
||||
/* already cancelled before subchannel became ready */
|
||||
fail_locked(exec_ctx, calld,
|
||||
GRPC_ERROR_CREATE_REFERENCING(
|
||||
"Cancelled before creating subchannel", &error, 1));
|
||||
grpc_error *cancellation_error = GRPC_ERROR_CREATE_REFERENCING(
|
||||
"Cancelled before creating subchannel", &error, 1);
|
||||
/* if due to deadline, attach the deadline exceeded status to the error */
|
||||
if (gpr_time_cmp(calld->deadline, gpr_now(GPR_CLOCK_MONOTONIC)) < 0) {
|
||||
cancellation_error =
|
||||
grpc_error_set_int(cancellation_error, GRPC_ERROR_INT_GRPC_STATUS,
|
||||
GRPC_STATUS_DEADLINE_EXCEEDED);
|
||||
}
|
||||
fail_locked(exec_ctx, calld, cancellation_error);
|
||||
} else {
|
||||
/* Create call on subchannel. */
|
||||
grpc_subchannel_call *subchannel_call = NULL;
|
||||
|
|
@ -813,7 +819,6 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
|
|||
initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
||||
}
|
||||
}
|
||||
// TODO(dgq): make this deadline configurable somehow.
|
||||
const grpc_lb_policy_pick_args inputs = {
|
||||
initial_metadata, initial_metadata_flags, &calld->lb_token_mdelem,
|
||||
gpr_inf_future(GPR_CLOCK_MONOTONIC)};
|
||||
|
|
|
|||
|
|
@ -60,8 +60,8 @@ typedef struct {
|
|||
bool connecting;
|
||||
|
||||
char *server_name;
|
||||
grpc_chttp2_create_handshakers_func create_handshakers;
|
||||
void *create_handshakers_user_data;
|
||||
grpc_chttp2_add_handshakers_func add_handshakers;
|
||||
void *add_handshakers_user_data;
|
||||
|
||||
grpc_closure *notify;
|
||||
grpc_connect_in_args args;
|
||||
|
|
@ -161,9 +161,9 @@ static void start_handshake_locked(grpc_exec_ctx *exec_ctx,
|
|||
grpc_http_connect_handshaker_create(proxy_name, c->server_name));
|
||||
gpr_free(proxy_name);
|
||||
}
|
||||
if (c->create_handshakers != NULL) {
|
||||
c->create_handshakers(exec_ctx, c->create_handshakers_user_data,
|
||||
c->handshake_mgr);
|
||||
if (c->add_handshakers != NULL) {
|
||||
c->add_handshakers(exec_ctx, c->add_handshakers_user_data,
|
||||
c->handshake_mgr);
|
||||
}
|
||||
grpc_handshake_manager_do_handshake(
|
||||
exec_ctx, c->handshake_mgr, c->endpoint, c->args.channel_args,
|
||||
|
|
@ -256,15 +256,15 @@ static const grpc_connector_vtable chttp2_connector_vtable = {
|
|||
|
||||
grpc_connector *grpc_chttp2_connector_create(
|
||||
grpc_exec_ctx *exec_ctx, const char *server_name,
|
||||
grpc_chttp2_create_handshakers_func create_handshakers,
|
||||
void *create_handshakers_user_data) {
|
||||
grpc_chttp2_add_handshakers_func add_handshakers,
|
||||
void *add_handshakers_user_data) {
|
||||
chttp2_connector *c = gpr_malloc(sizeof(*c));
|
||||
memset(c, 0, sizeof(*c));
|
||||
c->base.vtable = &chttp2_connector_vtable;
|
||||
gpr_mu_init(&c->mu);
|
||||
gpr_ref_init(&c->refs, 1);
|
||||
c->server_name = gpr_strdup(server_name);
|
||||
c->create_handshakers = create_handshakers;
|
||||
c->create_handshakers_user_data = create_handshakers_user_data;
|
||||
c->add_handshakers = add_handshakers;
|
||||
c->add_handshakers_user_data = add_handshakers_user_data;
|
||||
return &c->base;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,15 +38,15 @@
|
|||
#include "src/core/lib/channel/handshaker.h"
|
||||
#include "src/core/lib/iomgr/exec_ctx.h"
|
||||
|
||||
typedef void (*grpc_chttp2_create_handshakers_func)(
|
||||
typedef void (*grpc_chttp2_add_handshakers_func)(
|
||||
grpc_exec_ctx* exec_ctx, void* user_data,
|
||||
grpc_handshake_manager* handshake_mgr);
|
||||
|
||||
/// If \a create_handshakers is non-NULL, it will be called with
|
||||
/// \a create_handshakers_user_data to add handshakers.
|
||||
/// If \a add_handshakers is non-NULL, it will be called with
|
||||
/// \a add_handshakers_user_data to add handshakers.
|
||||
grpc_connector* grpc_chttp2_connector_create(
|
||||
grpc_exec_ctx* exec_ctx, const char* server_name,
|
||||
grpc_chttp2_create_handshakers_func create_handshakers,
|
||||
void* create_handshakers_user_data);
|
||||
grpc_chttp2_add_handshakers_func add_handshakers,
|
||||
void* add_handshakers_user_data);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_CLIENT_CHTTP2_CONNECTOR_H */
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ static grpc_subchannel *client_channel_factory_create_subchannel(
|
|||
grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory,
|
||||
const grpc_subchannel_args *args) {
|
||||
grpc_connector *connector = grpc_chttp2_connector_create(
|
||||
exec_ctx, args->server_name, NULL /* create_handshakers */,
|
||||
exec_ctx, args->server_name, NULL /* add_handshakers */,
|
||||
NULL /* user_data */);
|
||||
grpc_subchannel *s = grpc_subchannel_create(exec_ctx, connector, args);
|
||||
grpc_connector_unref(exec_ctx, connector);
|
||||
|
|
|
|||
|
|
@ -69,11 +69,10 @@ static void client_channel_factory_unref(
|
|||
}
|
||||
}
|
||||
|
||||
static void create_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
void *security_connector,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_channel_security_connector_create_handshakers(
|
||||
exec_ctx, security_connector, handshake_mgr);
|
||||
static void add_handshakers(grpc_exec_ctx *exec_ctx, void *security_connector,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_channel_security_connector_add_handshakers(exec_ctx, security_connector,
|
||||
handshake_mgr);
|
||||
}
|
||||
|
||||
static grpc_subchannel *client_channel_factory_create_subchannel(
|
||||
|
|
@ -81,7 +80,7 @@ static grpc_subchannel *client_channel_factory_create_subchannel(
|
|||
const grpc_subchannel_args *args) {
|
||||
client_channel_factory *f = (client_channel_factory *)cc_factory;
|
||||
grpc_connector *connector = grpc_chttp2_connector_create(
|
||||
exec_ctx, args->server_name, create_handshakers, f->security_connector);
|
||||
exec_ctx, args->server_name, add_handshakers, f->security_connector);
|
||||
grpc_subchannel *s = grpc_subchannel_create(exec_ctx, connector, args);
|
||||
grpc_connector_unref(exec_ctx, connector);
|
||||
return s;
|
||||
|
|
|
|||
|
|
@ -54,13 +54,13 @@
|
|||
#include "src/core/lib/surface/api_trace.h"
|
||||
#include "src/core/lib/surface/server.h"
|
||||
|
||||
void grpc_chttp2_server_handshaker_factory_create_handshakers(
|
||||
void grpc_chttp2_server_handshaker_factory_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx,
|
||||
grpc_chttp2_server_handshaker_factory *handshaker_factory,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
if (handshaker_factory != NULL) {
|
||||
handshaker_factory->vtable->create_handshakers(exec_ctx, handshaker_factory,
|
||||
handshake_mgr);
|
||||
handshaker_factory->vtable->add_handshakers(exec_ctx, handshaker_factory,
|
||||
handshake_mgr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
|
|||
const char *error_str = grpc_error_string(error);
|
||||
gpr_log(GPR_ERROR, "Handshaking failed: %s", error_str);
|
||||
grpc_error_free_string(error_str);
|
||||
if (error == GRPC_ERROR_NONE) {
|
||||
if (error == GRPC_ERROR_NONE && args->endpoint != NULL) {
|
||||
// We were shut down after handshaking completed successfully, so
|
||||
// destroy the endpoint here.
|
||||
// TODO(ctiller): It is currently necessary to shutdown endpoints
|
||||
|
|
@ -154,19 +154,26 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
|
|||
gpr_free(args->read_buffer);
|
||||
}
|
||||
} else {
|
||||
grpc_transport *transport =
|
||||
grpc_create_chttp2_transport(exec_ctx, args->args, args->endpoint, 0);
|
||||
grpc_server_setup_transport(
|
||||
exec_ctx, connection_state->server_state->server, transport,
|
||||
connection_state->accepting_pollset, args->args);
|
||||
grpc_chttp2_transport_start_reading(exec_ctx, transport, args->read_buffer);
|
||||
grpc_channel_args_destroy(exec_ctx, args->args);
|
||||
// If the handshaking succeeded but there is no endpoint, then the
|
||||
// handshaker may have handed off the connection to some external
|
||||
// code, so we can just clean up here without creating a transport.
|
||||
if (args->endpoint != NULL) {
|
||||
grpc_transport *transport =
|
||||
grpc_create_chttp2_transport(exec_ctx, args->args, args->endpoint, 0);
|
||||
grpc_server_setup_transport(
|
||||
exec_ctx, connection_state->server_state->server, transport,
|
||||
connection_state->accepting_pollset, args->args);
|
||||
grpc_chttp2_transport_start_reading(exec_ctx, transport,
|
||||
args->read_buffer);
|
||||
grpc_channel_args_destroy(args->args);
|
||||
}
|
||||
}
|
||||
pending_handshake_manager_remove_locked(connection_state->server_state,
|
||||
connection_state->handshake_mgr);
|
||||
gpr_mu_unlock(&connection_state->server_state->mu);
|
||||
grpc_handshake_manager_destroy(exec_ctx, connection_state->handshake_mgr);
|
||||
grpc_tcp_server_unref(exec_ctx, connection_state->server_state->tcp_server);
|
||||
gpr_free(connection_state->acceptor);
|
||||
gpr_free(connection_state);
|
||||
}
|
||||
|
||||
|
|
@ -178,6 +185,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
|
|||
if (state->shutdown) {
|
||||
gpr_mu_unlock(&state->mu);
|
||||
grpc_endpoint_destroy(exec_ctx, tcp);
|
||||
gpr_free(acceptor);
|
||||
return;
|
||||
}
|
||||
grpc_handshake_manager *handshake_mgr = grpc_handshake_manager_create();
|
||||
|
|
@ -190,7 +198,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
|
|||
connection_state->accepting_pollset = accepting_pollset;
|
||||
connection_state->acceptor = acceptor;
|
||||
connection_state->handshake_mgr = handshake_mgr;
|
||||
grpc_chttp2_server_handshaker_factory_create_handshakers(
|
||||
grpc_chttp2_server_handshaker_factory_add_handshakers(
|
||||
exec_ctx, state->handshaker_factory, connection_state->handshake_mgr);
|
||||
// TODO(roth): We should really get this timeout value from channel
|
||||
// args instead of hard-coding it.
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ typedef struct grpc_chttp2_server_handshaker_factory
|
|||
grpc_chttp2_server_handshaker_factory;
|
||||
|
||||
typedef struct {
|
||||
void (*create_handshakers)(
|
||||
void (*add_handshakers)(
|
||||
grpc_exec_ctx *exec_ctx,
|
||||
grpc_chttp2_server_handshaker_factory *handshaker_factory,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
|
|
@ -57,7 +57,7 @@ struct grpc_chttp2_server_handshaker_factory {
|
|||
const grpc_chttp2_server_handshaker_factory_vtable *vtable;
|
||||
};
|
||||
|
||||
void grpc_chttp2_server_handshaker_factory_create_handshakers(
|
||||
void grpc_chttp2_server_handshaker_factory_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx,
|
||||
grpc_chttp2_server_handshaker_factory *handshaker_factory,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
|
|
|
|||
|
|
@ -54,12 +54,12 @@ typedef struct {
|
|||
grpc_server_security_connector *security_connector;
|
||||
} server_security_handshaker_factory;
|
||||
|
||||
static void server_security_handshaker_factory_create_handshakers(
|
||||
static void server_security_handshaker_factory_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_chttp2_server_handshaker_factory *hf,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
server_security_handshaker_factory *handshaker_factory =
|
||||
(server_security_handshaker_factory *)hf;
|
||||
grpc_server_security_connector_create_handshakers(
|
||||
grpc_server_security_connector_add_handshakers(
|
||||
exec_ctx, handshaker_factory->security_connector, handshake_mgr);
|
||||
}
|
||||
|
||||
|
|
@ -74,7 +74,7 @@ static void server_security_handshaker_factory_destroy(
|
|||
|
||||
static const grpc_chttp2_server_handshaker_factory_vtable
|
||||
server_security_handshaker_factory_vtable = {
|
||||
server_security_handshaker_factory_create_handshakers,
|
||||
server_security_handshaker_factory_add_handshakers,
|
||||
server_security_handshaker_factory_destroy};
|
||||
|
||||
int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr,
|
||||
|
|
|
|||
|
|
@ -49,21 +49,21 @@ void grpc_handshaker_init(const grpc_handshaker_vtable* vtable,
|
|||
handshaker->vtable = vtable;
|
||||
}
|
||||
|
||||
static void grpc_handshaker_destroy(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker) {
|
||||
void grpc_handshaker_destroy(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker) {
|
||||
handshaker->vtable->destroy(exec_ctx, handshaker);
|
||||
}
|
||||
|
||||
static void grpc_handshaker_shutdown(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker) {
|
||||
void grpc_handshaker_shutdown(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker) {
|
||||
handshaker->vtable->shutdown(exec_ctx, handshaker);
|
||||
}
|
||||
|
||||
static void grpc_handshaker_do_handshake(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker,
|
||||
grpc_tcp_server_acceptor* acceptor,
|
||||
grpc_closure* on_handshake_done,
|
||||
grpc_handshaker_args* args) {
|
||||
void grpc_handshaker_do_handshake(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker,
|
||||
grpc_tcp_server_acceptor* acceptor,
|
||||
grpc_closure* on_handshake_done,
|
||||
grpc_handshaker_args* args) {
|
||||
handshaker->vtable->do_handshake(exec_ctx, handshaker, acceptor,
|
||||
on_handshake_done, args);
|
||||
}
|
||||
|
|
@ -157,10 +157,11 @@ static bool call_next_handshaker_locked(grpc_exec_ctx* exec_ctx,
|
|||
grpc_handshake_manager* mgr,
|
||||
grpc_error* error) {
|
||||
GPR_ASSERT(mgr->index <= mgr->count);
|
||||
// If we got an error or we've been shut down or we've finished the last
|
||||
// handshaker, invoke the on_handshake_done callback. Otherwise, call the
|
||||
// next handshaker.
|
||||
if (error != GRPC_ERROR_NONE || mgr->shutdown || mgr->index == mgr->count) {
|
||||
// If we got an error or we've been shut down or we're exiting early or
|
||||
// we've finished the last handshaker, invoke the on_handshake_done
|
||||
// callback. Otherwise, call the next handshaker.
|
||||
if (error != GRPC_ERROR_NONE || mgr->shutdown || mgr->args.exit_early ||
|
||||
mgr->index == mgr->count) {
|
||||
// Cancel deadline timer, since we're invoking the on_handshake_done
|
||||
// callback now.
|
||||
grpc_timer_cancel(exec_ctx, &mgr->deadline_timer);
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@ typedef struct {
|
|||
grpc_endpoint* endpoint;
|
||||
grpc_channel_args* args;
|
||||
grpc_slice_buffer* read_buffer;
|
||||
// A handshaker may set this to true before invoking on_handshake_done
|
||||
// to indicate that subsequent handshakers should be skipped.
|
||||
bool exit_early;
|
||||
// User data passed through the handshake manager. Not used by
|
||||
// individual handshakers.
|
||||
void* user_data;
|
||||
|
|
@ -105,6 +108,16 @@ struct grpc_handshaker {
|
|||
void grpc_handshaker_init(const grpc_handshaker_vtable* vtable,
|
||||
grpc_handshaker* handshaker);
|
||||
|
||||
void grpc_handshaker_destroy(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker);
|
||||
void grpc_handshaker_shutdown(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker);
|
||||
void grpc_handshaker_do_handshake(grpc_exec_ctx* exec_ctx,
|
||||
grpc_handshaker* handshaker,
|
||||
grpc_tcp_server_acceptor* acceptor,
|
||||
grpc_closure* on_handshake_done,
|
||||
grpc_handshaker_args* args);
|
||||
|
||||
///
|
||||
/// grpc_handshake_manager
|
||||
///
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ static void httpcli_ssl_destroy(grpc_exec_ctx *exec_ctx,
|
|||
gpr_free(sc);
|
||||
}
|
||||
|
||||
static void httpcli_ssl_create_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
static void httpcli_ssl_add_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_httpcli_ssl_channel_security_connector *c =
|
||||
(grpc_httpcli_ssl_channel_security_connector *)sc;
|
||||
tsi_handshaker *handshaker = NULL;
|
||||
|
|
@ -76,8 +76,9 @@ static void httpcli_ssl_create_handshakers(
|
|||
tsi_result_to_string(result));
|
||||
}
|
||||
}
|
||||
grpc_security_create_handshakers(exec_ctx, handshaker, &sc->base,
|
||||
handshake_mgr);
|
||||
grpc_handshake_manager_add(
|
||||
handshake_mgr,
|
||||
grpc_security_handshaker_create(exec_ctx, handshaker, &sc->base));
|
||||
}
|
||||
|
||||
static void httpcli_ssl_check_peer(grpc_exec_ctx *exec_ctx,
|
||||
|
|
@ -135,7 +136,7 @@ static grpc_security_status httpcli_ssl_channel_security_connector_create(
|
|||
*sc = NULL;
|
||||
return GRPC_SECURITY_ERROR;
|
||||
}
|
||||
c->base.create_handshakers = httpcli_ssl_create_handshakers;
|
||||
c->base.add_handshakers = httpcli_ssl_add_handshakers;
|
||||
*sc = &c->base;
|
||||
return GRPC_SECURITY_OK;
|
||||
}
|
||||
|
|
@ -188,8 +189,8 @@ static void ssl_handshake(grpc_exec_ctx *exec_ctx, void *arg,
|
|||
GPR_ASSERT(httpcli_ssl_channel_security_connector_create(
|
||||
exec_ctx, pem_root_certs, pem_root_certs_size, host, &sc) ==
|
||||
GRPC_SECURITY_OK);
|
||||
grpc_channel_security_connector_create_handshakers(exec_ctx, sc,
|
||||
c->handshake_mgr);
|
||||
grpc_channel_security_connector_add_handshakers(exec_ctx, sc,
|
||||
c->handshake_mgr);
|
||||
grpc_handshake_manager_do_handshake(
|
||||
exec_ctx, c->handshake_mgr, tcp, NULL /* channel_args */, deadline,
|
||||
NULL /* acceptor */, on_handshake_done, c /* user_data */);
|
||||
|
|
|
|||
|
|
@ -68,6 +68,9 @@ static int grpc_polling_trace = 0; /* Disabled by default */
|
|||
gpr_log(GPR_INFO, (fmt), __VA_ARGS__); \
|
||||
}
|
||||
|
||||
/* Uncomment the following enable extra checks on poll_object operations */
|
||||
/* #define PO_DEBUG */
|
||||
|
||||
static int grpc_wakeup_signal = -1;
|
||||
static bool is_grpc_wakeup_signal_initialized = false;
|
||||
|
||||
|
|
@ -94,10 +97,42 @@ void grpc_use_signal(int signum) {
|
|||
|
||||
struct polling_island;
|
||||
|
||||
typedef enum {
|
||||
POLL_OBJ_FD,
|
||||
POLL_OBJ_POLLSET,
|
||||
POLL_OBJ_POLLSET_SET
|
||||
} poll_obj_type;
|
||||
|
||||
typedef struct poll_obj {
|
||||
#ifdef PO_DEBUG
|
||||
poll_obj_type obj_type;
|
||||
#endif
|
||||
gpr_mu mu;
|
||||
struct polling_island *pi;
|
||||
} poll_obj;
|
||||
|
||||
const char *poll_obj_string(poll_obj_type po_type) {
|
||||
switch (po_type) {
|
||||
case POLL_OBJ_FD:
|
||||
return "fd";
|
||||
case POLL_OBJ_POLLSET:
|
||||
return "pollset";
|
||||
case POLL_OBJ_POLLSET_SET:
|
||||
return "pollset_set";
|
||||
}
|
||||
|
||||
GPR_UNREACHABLE_CODE(return "UNKNOWN");
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Fd Declarations
|
||||
*/
|
||||
|
||||
#define FD_FROM_PO(po) ((grpc_fd *)(po))
|
||||
|
||||
struct grpc_fd {
|
||||
poll_obj po;
|
||||
|
||||
int fd;
|
||||
/* refst format:
|
||||
bit 0 : 1=Active / 0=Orphaned
|
||||
|
|
@ -105,8 +140,6 @@ struct grpc_fd {
|
|||
Ref/Unref by two to avoid altering the orphaned bit */
|
||||
gpr_atm refst;
|
||||
|
||||
gpr_mu mu;
|
||||
|
||||
/* Indicates that the fd is shutdown and that any pending read/write closures
|
||||
should fail */
|
||||
bool shutdown;
|
||||
|
|
@ -119,9 +152,6 @@ struct grpc_fd {
|
|||
grpc_closure *read_closure;
|
||||
grpc_closure *write_closure;
|
||||
|
||||
/* The polling island to which this fd belongs to (protected by mu) */
|
||||
struct polling_island *polling_island;
|
||||
|
||||
struct grpc_fd *freelist_next;
|
||||
grpc_closure *on_done_closure;
|
||||
|
||||
|
|
@ -224,41 +254,21 @@ struct grpc_pollset_worker {
|
|||
};
|
||||
|
||||
struct grpc_pollset {
|
||||
gpr_mu mu;
|
||||
poll_obj po;
|
||||
|
||||
grpc_pollset_worker root_worker;
|
||||
bool kicked_without_pollers;
|
||||
|
||||
bool shutting_down; /* Is the pollset shutting down ? */
|
||||
bool finish_shutdown_called; /* Is the 'finish_shutdown_locked()' called ? */
|
||||
grpc_closure *shutdown_done; /* Called after after shutdown is complete */
|
||||
|
||||
/* The polling island to which this pollset belongs to */
|
||||
struct polling_island *polling_island;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
* Pollset-set Declarations
|
||||
*/
|
||||
/* TODO: sreek - Change the pollset_set implementation such that a pollset_set
|
||||
* directly points to a polling_island (and adding an fd/pollset/pollset_set to
|
||||
* the current pollset_set would result in polling island merges. This would
|
||||
* remove the need to maintain fd_count here. This will also significantly
|
||||
* simplify the grpc_fd structure since we would no longer need to explicitly
|
||||
* maintain the orphaned state */
|
||||
struct grpc_pollset_set {
|
||||
gpr_mu mu;
|
||||
|
||||
size_t pollset_count;
|
||||
size_t pollset_capacity;
|
||||
grpc_pollset **pollsets;
|
||||
|
||||
size_t pollset_set_count;
|
||||
size_t pollset_set_capacity;
|
||||
struct grpc_pollset_set **pollset_sets;
|
||||
|
||||
size_t fd_count;
|
||||
size_t fd_capacity;
|
||||
grpc_fd **fds;
|
||||
poll_obj po;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
@ -914,7 +924,7 @@ static void fd_global_shutdown(void) {
|
|||
while (fd_freelist != NULL) {
|
||||
grpc_fd *fd = fd_freelist;
|
||||
fd_freelist = fd_freelist->freelist_next;
|
||||
gpr_mu_destroy(&fd->mu);
|
||||
gpr_mu_destroy(&fd->po.mu);
|
||||
gpr_free(fd);
|
||||
}
|
||||
gpr_mu_destroy(&fd_freelist_mu);
|
||||
|
|
@ -932,13 +942,17 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|||
|
||||
if (new_fd == NULL) {
|
||||
new_fd = gpr_malloc(sizeof(grpc_fd));
|
||||
gpr_mu_init(&new_fd->mu);
|
||||
gpr_mu_init(&new_fd->po.mu);
|
||||
}
|
||||
|
||||
/* Note: It is not really needed to get the new_fd->mu lock here. If this is a
|
||||
newly created fd (or an fd we got from the freelist), no one else would be
|
||||
holding a lock to it anyway. */
|
||||
gpr_mu_lock(&new_fd->mu);
|
||||
/* Note: It is not really needed to get the new_fd->po.mu lock here. If this
|
||||
* is a newly created fd (or an fd we got from the freelist), no one else
|
||||
* would be holding a lock to it anyway. */
|
||||
gpr_mu_lock(&new_fd->po.mu);
|
||||
new_fd->po.pi = NULL;
|
||||
#ifdef PO_DEBUG
|
||||
new_fd->po.obj_type = POLL_OBJ_FD;
|
||||
#endif
|
||||
|
||||
gpr_atm_rel_store(&new_fd->refst, (gpr_atm)1);
|
||||
new_fd->fd = fd;
|
||||
|
|
@ -946,12 +960,11 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|||
new_fd->orphaned = false;
|
||||
new_fd->read_closure = CLOSURE_NOT_READY;
|
||||
new_fd->write_closure = CLOSURE_NOT_READY;
|
||||
new_fd->polling_island = NULL;
|
||||
new_fd->freelist_next = NULL;
|
||||
new_fd->on_done_closure = NULL;
|
||||
new_fd->read_notifier_pollset = NULL;
|
||||
|
||||
gpr_mu_unlock(&new_fd->mu);
|
||||
gpr_mu_unlock(&new_fd->po.mu);
|
||||
|
||||
char *fd_name;
|
||||
gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
|
||||
|
|
@ -963,17 +976,13 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|||
return new_fd;
|
||||
}
|
||||
|
||||
static bool fd_is_orphaned(grpc_fd *fd) {
|
||||
return (gpr_atm_acq_load(&fd->refst) & 1) == 0;
|
||||
}
|
||||
|
||||
static int fd_wrapped_fd(grpc_fd *fd) {
|
||||
int ret_fd = -1;
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
if (!fd->orphaned) {
|
||||
ret_fd = fd->fd;
|
||||
}
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
|
||||
return ret_fd;
|
||||
}
|
||||
|
|
@ -985,7 +994,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|||
grpc_error *error = GRPC_ERROR_NONE;
|
||||
polling_island *unref_pi = NULL;
|
||||
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
fd->on_done_closure = on_done;
|
||||
|
||||
/* If release_fd is not NULL, we should be relinquishing control of the file
|
||||
|
|
@ -1005,25 +1014,25 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|||
|
||||
/* Remove the fd from the polling island:
|
||||
- Get a lock on the latest polling island (i.e the last island in the
|
||||
linked list pointed by fd->polling_island). This is the island that
|
||||
linked list pointed by fd->po.pi). This is the island that
|
||||
would actually contain the fd
|
||||
- Remove the fd from the latest polling island
|
||||
- Unlock the latest polling island
|
||||
- Set fd->polling_island to NULL (but remove the ref on the polling island
|
||||
- Set fd->po.pi to NULL (but remove the ref on the polling island
|
||||
before doing this.) */
|
||||
if (fd->polling_island != NULL) {
|
||||
polling_island *pi_latest = polling_island_lock(fd->polling_island);
|
||||
if (fd->po.pi != NULL) {
|
||||
polling_island *pi_latest = polling_island_lock(fd->po.pi);
|
||||
polling_island_remove_fd_locked(pi_latest, fd, is_fd_closed, &error);
|
||||
gpr_mu_unlock(&pi_latest->mu);
|
||||
|
||||
unref_pi = fd->polling_island;
|
||||
fd->polling_island = NULL;
|
||||
unref_pi = fd->po.pi;
|
||||
fd->po.pi = NULL;
|
||||
}
|
||||
|
||||
grpc_exec_ctx_sched(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error),
|
||||
NULL);
|
||||
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
UNREF_BY(fd, 2, reason); /* Drop the reference */
|
||||
if (unref_pi != NULL) {
|
||||
/* Unref stale polling island here, outside the fd lock above.
|
||||
|
|
@ -1088,23 +1097,23 @@ static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx,
|
|||
grpc_fd *fd) {
|
||||
grpc_pollset *notifier = NULL;
|
||||
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
notifier = fd->read_notifier_pollset;
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
|
||||
return notifier;
|
||||
}
|
||||
|
||||
static bool fd_is_shutdown(grpc_fd *fd) {
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
const bool r = fd->shutdown;
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Might be called multiple times */
|
||||
static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
/* Do the actual shutdown only once */
|
||||
if (!fd->shutdown) {
|
||||
fd->shutdown = true;
|
||||
|
|
@ -1115,28 +1124,28 @@ static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
|||
set_ready_locked(exec_ctx, fd, &fd->read_closure);
|
||||
set_ready_locked(exec_ctx, fd, &fd->write_closure);
|
||||
}
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
}
|
||||
|
||||
static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
||||
grpc_closure *closure) {
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
notify_on_locked(exec_ctx, fd, &fd->read_closure, closure);
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
}
|
||||
|
||||
static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
||||
grpc_closure *closure) {
|
||||
gpr_mu_lock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
notify_on_locked(exec_ctx, fd, &fd->write_closure, closure);
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
}
|
||||
|
||||
static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
|
||||
gpr_mu_lock(&fd->mu);
|
||||
grpc_workqueue *workqueue = GRPC_WORKQUEUE_REF(
|
||||
(grpc_workqueue *)fd->polling_island, "fd_get_workqueue");
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
grpc_workqueue *workqueue =
|
||||
GRPC_WORKQUEUE_REF((grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
return workqueue;
|
||||
}
|
||||
|
||||
|
|
@ -1276,8 +1285,12 @@ static grpc_error *kick_poller(void) {
|
|||
}
|
||||
|
||||
static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
|
||||
gpr_mu_init(&pollset->mu);
|
||||
*mu = &pollset->mu;
|
||||
gpr_mu_init(&pollset->po.mu);
|
||||
*mu = &pollset->po.mu;
|
||||
pollset->po.pi = NULL;
|
||||
#ifdef PO_DEBUG
|
||||
pollset->po.obj_type = POLL_OBJ_POLLSET;
|
||||
#endif
|
||||
|
||||
pollset->root_worker.next = pollset->root_worker.prev = &pollset->root_worker;
|
||||
pollset->kicked_without_pollers = false;
|
||||
|
|
@ -1285,8 +1298,6 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
|
|||
pollset->shutting_down = false;
|
||||
pollset->finish_shutdown_called = false;
|
||||
pollset->shutdown_done = NULL;
|
||||
|
||||
pollset->polling_island = NULL;
|
||||
}
|
||||
|
||||
/* Convert a timespec to milliseconds:
|
||||
|
|
@ -1316,26 +1327,26 @@ static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
|
|||
|
||||
static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
||||
grpc_pollset *notifier) {
|
||||
/* Need the fd->mu since we might be racing with fd_notify_on_read */
|
||||
gpr_mu_lock(&fd->mu);
|
||||
/* Need the fd->po.mu since we might be racing with fd_notify_on_read */
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
set_ready_locked(exec_ctx, fd, &fd->read_closure);
|
||||
fd->read_notifier_pollset = notifier;
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
}
|
||||
|
||||
static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
||||
/* Need the fd->mu since we might be racing with fd_notify_on_write */
|
||||
gpr_mu_lock(&fd->mu);
|
||||
/* Need the fd->po.mu since we might be racing with fd_notify_on_write */
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
set_ready_locked(exec_ctx, fd, &fd->write_closure);
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
}
|
||||
|
||||
static void pollset_release_polling_island(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset *ps, char *reason) {
|
||||
if (ps->polling_island != NULL) {
|
||||
PI_UNREF(exec_ctx, ps->polling_island, reason);
|
||||
if (ps->po.pi != NULL) {
|
||||
PI_UNREF(exec_ctx, ps->po.pi, reason);
|
||||
}
|
||||
ps->polling_island = NULL;
|
||||
ps->po.pi = NULL;
|
||||
}
|
||||
|
||||
static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx,
|
||||
|
|
@ -1345,12 +1356,12 @@ static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx,
|
|||
|
||||
pollset->finish_shutdown_called = true;
|
||||
|
||||
/* Release the ref and set pollset->polling_island to NULL */
|
||||
/* Release the ref and set pollset->po.pi to NULL */
|
||||
pollset_release_polling_island(exec_ctx, pollset, "ps_shutdown");
|
||||
grpc_exec_ctx_sched(exec_ctx, pollset->shutdown_done, GRPC_ERROR_NONE, NULL);
|
||||
}
|
||||
|
||||
/* pollset->mu lock must be held by the caller before calling this */
|
||||
/* pollset->po.mu lock must be held by the caller before calling this */
|
||||
static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
||||
grpc_closure *closure) {
|
||||
GPR_TIMER_BEGIN("pollset_shutdown", 0);
|
||||
|
|
@ -1375,7 +1386,7 @@ static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|||
* here */
|
||||
static void pollset_destroy(grpc_pollset *pollset) {
|
||||
GPR_ASSERT(!pollset_has_workers(pollset));
|
||||
gpr_mu_destroy(&pollset->mu);
|
||||
gpr_mu_destroy(&pollset->po.mu);
|
||||
}
|
||||
|
||||
static void pollset_reset(grpc_pollset *pollset) {
|
||||
|
|
@ -1385,7 +1396,7 @@ static void pollset_reset(grpc_pollset *pollset) {
|
|||
pollset->finish_shutdown_called = false;
|
||||
pollset->kicked_without_pollers = false;
|
||||
pollset->shutdown_done = NULL;
|
||||
GPR_ASSERT(pollset->polling_island == NULL);
|
||||
GPR_ASSERT(pollset->po.pi == NULL);
|
||||
}
|
||||
|
||||
static bool maybe_do_workqueue_work(grpc_exec_ctx *exec_ctx,
|
||||
|
|
@ -1425,7 +1436,7 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
|
|||
GPR_TIMER_BEGIN("pollset_work_and_unlock", 0);
|
||||
|
||||
/* We need to get the epoll_fd to wait on. The epoll_fd is in inside the
|
||||
latest polling island pointed by pollset->polling_island.
|
||||
latest polling island pointed by pollset->po.pi
|
||||
|
||||
Since epoll_fd is immutable, we can read it without obtaining the polling
|
||||
island lock. There is however a possibility that the polling island (from
|
||||
|
|
@ -1434,36 +1445,36 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
|
|||
right-away from epoll_wait() and pick up the latest polling_island the next
|
||||
this function (i.e pollset_work_and_unlock()) is called */
|
||||
|
||||
if (pollset->polling_island == NULL) {
|
||||
pollset->polling_island = polling_island_create(exec_ctx, NULL, error);
|
||||
if (pollset->polling_island == NULL) {
|
||||
if (pollset->po.pi == NULL) {
|
||||
pollset->po.pi = polling_island_create(exec_ctx, NULL, error);
|
||||
if (pollset->po.pi == NULL) {
|
||||
GPR_TIMER_END("pollset_work_and_unlock", 0);
|
||||
return; /* Fatal error. We cannot continue */
|
||||
}
|
||||
|
||||
PI_ADD_REF(pollset->polling_island, "ps");
|
||||
PI_ADD_REF(pollset->po.pi, "ps");
|
||||
GRPC_POLLING_TRACE("pollset_work: pollset: %p created new pi: %p",
|
||||
(void *)pollset, (void *)pollset->polling_island);
|
||||
(void *)pollset, (void *)pollset->po.pi);
|
||||
}
|
||||
|
||||
pi = polling_island_maybe_get_latest(pollset->polling_island);
|
||||
pi = polling_island_maybe_get_latest(pollset->po.pi);
|
||||
epoll_fd = pi->epoll_fd;
|
||||
|
||||
/* Update the pollset->polling_island since the island being pointed by
|
||||
pollset->polling_island maybe older than the one pointed by pi) */
|
||||
if (pollset->polling_island != pi) {
|
||||
/* Update the pollset->po.pi since the island being pointed by
|
||||
pollset->po.pi maybe older than the one pointed by pi) */
|
||||
if (pollset->po.pi != pi) {
|
||||
/* Always do PI_ADD_REF before PI_UNREF because PI_UNREF may cause the
|
||||
polling island to be deleted */
|
||||
PI_ADD_REF(pi, "ps");
|
||||
PI_UNREF(exec_ctx, pollset->polling_island, "ps");
|
||||
pollset->polling_island = pi;
|
||||
PI_UNREF(exec_ctx, pollset->po.pi, "ps");
|
||||
pollset->po.pi = pi;
|
||||
}
|
||||
|
||||
/* Add an extra ref so that the island does not get destroyed (which means
|
||||
the epoll_fd won't be closed) while we are are doing an epoll_wait() on the
|
||||
epoll_fd */
|
||||
PI_ADD_REF(pi, "ps_work");
|
||||
gpr_mu_unlock(&pollset->mu);
|
||||
gpr_mu_unlock(&pollset->po.mu);
|
||||
|
||||
/* If we get some workqueue work to do, it might end up completing an item on
|
||||
the completion queue, so there's no need to poll... so we skip that and
|
||||
|
|
@ -1536,17 +1547,17 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
|
|||
GPR_ASSERT(pi != NULL);
|
||||
|
||||
/* Before leaving, release the extra ref we added to the polling island. It
|
||||
is important to use "pi" here (i.e our old copy of pollset->polling_island
|
||||
is important to use "pi" here (i.e our old copy of pollset->po.pi
|
||||
that we got before releasing the polling island lock). This is because
|
||||
pollset->polling_island pointer might get udpated in other parts of the
|
||||
pollset->po.pi pointer might get udpated in other parts of the
|
||||
code when there is an island merge while we are doing epoll_wait() above */
|
||||
PI_UNREF(exec_ctx, pi, "ps_work");
|
||||
|
||||
GPR_TIMER_END("pollset_work_and_unlock", 0);
|
||||
}
|
||||
|
||||
/* pollset->mu lock must be held by the caller before calling this.
|
||||
The function pollset_work() may temporarily release the lock (pollset->mu)
|
||||
/* pollset->po.mu lock must be held by the caller before calling this.
|
||||
The function pollset_work() may temporarily release the lock (pollset->po.mu)
|
||||
during the course of its execution but it will always re-acquire the lock and
|
||||
ensure that it is held by the time the function returns */
|
||||
static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
||||
|
|
@ -1616,7 +1627,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|||
&g_orig_sigmask, &error);
|
||||
grpc_exec_ctx_flush(exec_ctx);
|
||||
|
||||
gpr_mu_lock(&pollset->mu);
|
||||
gpr_mu_lock(&pollset->po.mu);
|
||||
|
||||
/* Note: There is no need to reset worker.is_kicked to 0 since we are no
|
||||
longer going to use this worker */
|
||||
|
|
@ -1636,9 +1647,9 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|||
GPR_TIMER_MARK("pollset_work.finish_shutdown_locked", 0);
|
||||
finish_shutdown_locked(exec_ctx, pollset);
|
||||
|
||||
gpr_mu_unlock(&pollset->mu);
|
||||
gpr_mu_unlock(&pollset->po.mu);
|
||||
grpc_exec_ctx_flush(exec_ctx);
|
||||
gpr_mu_lock(&pollset->mu);
|
||||
gpr_mu_lock(&pollset->po.mu);
|
||||
}
|
||||
|
||||
*worker_hdl = NULL;
|
||||
|
|
@ -1652,130 +1663,160 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|||
return error;
|
||||
}
|
||||
|
||||
static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
||||
grpc_fd *fd) {
|
||||
GPR_TIMER_BEGIN("pollset_add_fd", 0);
|
||||
static void add_poll_object(grpc_exec_ctx *exec_ctx, poll_obj *bag,
|
||||
poll_obj_type bag_type, poll_obj *item,
|
||||
poll_obj_type item_type) {
|
||||
GPR_TIMER_BEGIN("add_poll_object", 0);
|
||||
|
||||
#ifdef PO_DEBUG
|
||||
GPR_ASSERT(item->obj_type == item_type);
|
||||
GPR_ASSERT(bag->obj_type == bag_type);
|
||||
#endif
|
||||
|
||||
grpc_error *error = GRPC_ERROR_NONE;
|
||||
|
||||
gpr_mu_lock(&pollset->mu);
|
||||
gpr_mu_lock(&fd->mu);
|
||||
|
||||
polling_island *pi_new = NULL;
|
||||
|
||||
gpr_mu_lock(&bag->mu);
|
||||
gpr_mu_lock(&item->mu);
|
||||
|
||||
retry:
|
||||
/* 1) If fd->polling_island and pollset->polling_island are both non-NULL and
|
||||
* equal, do nothing.
|
||||
* 2) If fd->polling_island and pollset->polling_island are both NULL, create
|
||||
* a new polling island (with a refcount of 2) and make the polling_island
|
||||
* fields in both fd and pollset to point to the new island
|
||||
* 3) If one of fd->polling_island or pollset->polling_island is NULL, update
|
||||
* the NULL polling_island field to point to the non-NULL polling_island
|
||||
* field (ensure that the refcount on the polling island is incremented by
|
||||
* 1 to account for the newly added reference)
|
||||
* 4) Finally, if fd->polling_island and pollset->polling_island are non-NULL
|
||||
* and different, merge both the polling islands and update the
|
||||
* polling_island fields in both fd and pollset to point to the merged
|
||||
* polling island.
|
||||
/*
|
||||
* 1) If item->pi and bag->pi are both non-NULL and equal, do nothing
|
||||
* 2) If item->pi and bag->pi are both NULL, create a new polling island (with
|
||||
* a refcount of 2) and point item->pi and bag->pi to the new island
|
||||
* 3) If exactly one of item->pi or bag->pi is NULL, update it to point to
|
||||
* the other's non-NULL pi
|
||||
* 4) Finally if item->pi and bag-pi are non-NULL and not-equal, merge the
|
||||
* polling islands and update item->pi and bag->pi to point to the new
|
||||
* island
|
||||
*/
|
||||
|
||||
if (fd->orphaned) {
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&pollset->mu);
|
||||
/* early out */
|
||||
/* Early out if we are trying to add an 'fd' to a 'bag' but the fd is already
|
||||
* orphaned */
|
||||
if (item_type == POLL_OBJ_FD && (FD_FROM_PO(item))->orphaned) {
|
||||
gpr_mu_unlock(&item->mu);
|
||||
gpr_mu_unlock(&bag->mu);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fd->polling_island == pollset->polling_island) {
|
||||
pi_new = fd->polling_island;
|
||||
if (item->pi == bag->pi) {
|
||||
pi_new = item->pi;
|
||||
if (pi_new == NULL) {
|
||||
/* Unlock before creating a new polling island: the polling island will
|
||||
create a workqueue which creates a file descriptor, and holding an fd
|
||||
lock here can eventually cause a loop to appear to TSAN (making it
|
||||
unhappy). We don't think it's a real loop (there's an epoch point where
|
||||
that loop possibility disappears), but the advantages of keeping TSAN
|
||||
happy outweigh any performance advantage we might have by keeping the
|
||||
lock held. */
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
pi_new = polling_island_create(exec_ctx, fd, &error);
|
||||
gpr_mu_lock(&fd->mu);
|
||||
/* Need to reverify any assumptions made between the initial lock and
|
||||
getting to this branch: if they've changed, we need to throw away our
|
||||
work and figure things out again. */
|
||||
if (fd->polling_island != NULL) {
|
||||
GRPC_POLLING_TRACE(
|
||||
"pollset_add_fd: Raced creating new polling island. pi_new: %p "
|
||||
"(fd: %d, pollset: %p)",
|
||||
(void *)pi_new, fd->fd, (void *)pollset);
|
||||
/* GPR_ASSERT(item->pi == bag->pi == NULL) */
|
||||
|
||||
/* No need to lock 'pi_new' here since this is a new polling island and
|
||||
* no one has a reference to it yet */
|
||||
polling_island_remove_all_fds_locked(pi_new, true, &error);
|
||||
/* If we are adding an fd to a bag (i.e pollset or pollset_set), then
|
||||
* we need to do some extra work to make TSAN happy */
|
||||
if (item_type == POLL_OBJ_FD) {
|
||||
/* Unlock before creating a new polling island: the polling island will
|
||||
create a workqueue which creates a file descriptor, and holding an fd
|
||||
lock here can eventually cause a loop to appear to TSAN (making it
|
||||
unhappy). We don't think it's a real loop (there's an epoch point
|
||||
where that loop possibility disappears), but the advantages of
|
||||
keeping TSAN happy outweigh any performance advantage we might have
|
||||
by keeping the lock held. */
|
||||
gpr_mu_unlock(&item->mu);
|
||||
pi_new = polling_island_create(exec_ctx, FD_FROM_PO(item), &error);
|
||||
gpr_mu_lock(&item->mu);
|
||||
|
||||
/* Ref and unref so that the polling island gets deleted during unref */
|
||||
PI_ADD_REF(pi_new, "dance_of_destruction");
|
||||
PI_UNREF(exec_ctx, pi_new, "dance_of_destruction");
|
||||
goto retry;
|
||||
/* Need to reverify any assumptions made between the initial lock and
|
||||
getting to this branch: if they've changed, we need to throw away our
|
||||
work and figure things out again. */
|
||||
if (item->pi != NULL) {
|
||||
GRPC_POLLING_TRACE(
|
||||
"add_poll_object: Raced creating new polling island. pi_new: %p "
|
||||
"(fd: %d, %s: %p)",
|
||||
(void *)pi_new, FD_FROM_PO(item)->fd, poll_obj_string(bag_type),
|
||||
(void *)bag);
|
||||
/* No need to lock 'pi_new' here since this is a new polling island
|
||||
* and no one has a reference to it yet */
|
||||
polling_island_remove_all_fds_locked(pi_new, true, &error);
|
||||
|
||||
/* Ref and unref so that the polling island gets deleted during unref
|
||||
*/
|
||||
PI_ADD_REF(pi_new, "dance_of_destruction");
|
||||
PI_UNREF(exec_ctx, pi_new, "dance_of_destruction");
|
||||
goto retry;
|
||||
}
|
||||
} else {
|
||||
GRPC_POLLING_TRACE(
|
||||
"pollset_add_fd: Created new polling island. pi_new: %p (fd: %d, "
|
||||
"pollset: %p)",
|
||||
(void *)pi_new, fd->fd, (void *)pollset);
|
||||
pi_new = polling_island_create(exec_ctx, NULL, &error);
|
||||
}
|
||||
|
||||
GRPC_POLLING_TRACE(
|
||||
"add_poll_object: Created new polling island. pi_new: %p (%s: %p, "
|
||||
"%s: %p)",
|
||||
(void *)pi_new, poll_obj_string(item_type), (void *)item,
|
||||
poll_obj_string(bag_type), (void *)bag);
|
||||
} else {
|
||||
GRPC_POLLING_TRACE(
|
||||
"add_poll_object: Same polling island. pi: %p (%s, %s)",
|
||||
(void *)pi_new, poll_obj_string(item_type),
|
||||
poll_obj_string(bag_type));
|
||||
}
|
||||
} else if (fd->polling_island == NULL) {
|
||||
pi_new = polling_island_lock(pollset->polling_island);
|
||||
polling_island_add_fds_locked(pi_new, &fd, 1, true, &error);
|
||||
gpr_mu_unlock(&pi_new->mu);
|
||||
} else if (item->pi == NULL) {
|
||||
/* GPR_ASSERT(bag->pi != NULL) */
|
||||
/* Make pi_new point to latest pi*/
|
||||
pi_new = polling_island_lock(bag->pi);
|
||||
|
||||
GRPC_POLLING_TRACE(
|
||||
"pollset_add_fd: fd->pi was NULL. pi_new: %p (fd: %d, pollset: %p, "
|
||||
"pollset->pi: %p)",
|
||||
(void *)pi_new, fd->fd, (void *)pollset,
|
||||
(void *)pollset->polling_island);
|
||||
} else if (pollset->polling_island == NULL) {
|
||||
pi_new = polling_island_lock(fd->polling_island);
|
||||
gpr_mu_unlock(&pi_new->mu);
|
||||
if (item_type == POLL_OBJ_FD) {
|
||||
grpc_fd *fd = FD_FROM_PO(item);
|
||||
polling_island_add_fds_locked(pi_new, &fd, 1, true, &error);
|
||||
}
|
||||
|
||||
gpr_mu_unlock(&pi_new->mu);
|
||||
GRPC_POLLING_TRACE(
|
||||
"pollset_add_fd: pollset->pi was NULL. pi_new: %p (fd: %d, pollset: "
|
||||
"%p, fd->pi: %p",
|
||||
(void *)pi_new, fd->fd, (void *)pollset, (void *)fd->polling_island);
|
||||
"add_poll_obj: item->pi was NULL. pi_new: %p (item(%s): %p, "
|
||||
"bag(%s): %p)",
|
||||
(void *)pi_new, poll_obj_string(item_type), (void *)item,
|
||||
poll_obj_string(bag_type), (void *)bag);
|
||||
} else if (bag->pi == NULL) {
|
||||
/* GPR_ASSERT(item->pi != NULL) */
|
||||
/* Make pi_new to point to latest pi */
|
||||
pi_new = polling_island_lock(item->pi);
|
||||
gpr_mu_unlock(&pi_new->mu);
|
||||
GRPC_POLLING_TRACE(
|
||||
"add_poll_obj: bag->pi was NULL. pi_new: %p (item(%s): %p, "
|
||||
"bag(%s): %p)",
|
||||
(void *)pi_new, poll_obj_string(item_type), (void *)item,
|
||||
poll_obj_string(bag_type), (void *)bag);
|
||||
} else {
|
||||
pi_new = polling_island_merge(fd->polling_island, pollset->polling_island,
|
||||
&error);
|
||||
pi_new = polling_island_merge(item->pi, bag->pi, &error);
|
||||
GRPC_POLLING_TRACE(
|
||||
"pollset_add_fd: polling islands merged. pi_new: %p (fd: %d, pollset: "
|
||||
"%p, fd->pi: %p, pollset->pi: %p)",
|
||||
(void *)pi_new, fd->fd, (void *)pollset, (void *)fd->polling_island,
|
||||
(void *)pollset->polling_island);
|
||||
"add_poll_obj: polling islands merged. pi_new: %p (item(%s): %p, "
|
||||
"bag(%s): %p)",
|
||||
(void *)pi_new, poll_obj_string(item_type), (void *)item,
|
||||
poll_obj_string(bag_type), (void *)bag);
|
||||
}
|
||||
|
||||
/* At this point, pi_new is the polling island that both fd->polling_island
|
||||
and pollset->polling_island must be pointing to */
|
||||
/* At this point, pi_new is the polling island that both item->pi and bag->pi
|
||||
MUST be pointing to */
|
||||
|
||||
if (fd->polling_island != pi_new) {
|
||||
PI_ADD_REF(pi_new, "fd");
|
||||
if (fd->polling_island != NULL) {
|
||||
PI_UNREF(exec_ctx, fd->polling_island, "fd");
|
||||
if (item->pi != pi_new) {
|
||||
PI_ADD_REF(pi_new, poll_obj_string(item_type));
|
||||
if (item->pi != NULL) {
|
||||
PI_UNREF(exec_ctx, item->pi, poll_obj_string(item_type));
|
||||
}
|
||||
fd->polling_island = pi_new;
|
||||
item->pi = pi_new;
|
||||
}
|
||||
|
||||
if (pollset->polling_island != pi_new) {
|
||||
PI_ADD_REF(pi_new, "ps");
|
||||
if (pollset->polling_island != NULL) {
|
||||
PI_UNREF(exec_ctx, pollset->polling_island, "ps");
|
||||
if (bag->pi != pi_new) {
|
||||
PI_ADD_REF(pi_new, poll_obj_string(bag_type));
|
||||
if (bag->pi != NULL) {
|
||||
PI_UNREF(exec_ctx, bag->pi, poll_obj_string(bag_type));
|
||||
}
|
||||
pollset->polling_island = pi_new;
|
||||
bag->pi = pi_new;
|
||||
}
|
||||
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_unlock(&pollset->mu);
|
||||
gpr_mu_unlock(&item->mu);
|
||||
gpr_mu_unlock(&bag->mu);
|
||||
|
||||
GRPC_LOG_IF_ERROR("pollset_add_fd", error);
|
||||
GRPC_LOG_IF_ERROR("add_poll_object", error);
|
||||
GPR_TIMER_END("add_poll_object", 0);
|
||||
}
|
||||
|
||||
GPR_TIMER_END("pollset_add_fd", 0);
|
||||
static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
||||
grpc_fd *fd) {
|
||||
add_poll_object(exec_ctx, &pollset->po, POLL_OBJ_POLLSET, &fd->po,
|
||||
POLL_OBJ_FD);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
@ -1783,142 +1824,60 @@ retry:
|
|||
*/
|
||||
|
||||
static grpc_pollset_set *pollset_set_create(void) {
|
||||
grpc_pollset_set *pollset_set = gpr_malloc(sizeof(*pollset_set));
|
||||
memset(pollset_set, 0, sizeof(*pollset_set));
|
||||
gpr_mu_init(&pollset_set->mu);
|
||||
return pollset_set;
|
||||
grpc_pollset_set *pss = gpr_malloc(sizeof(*pss));
|
||||
gpr_mu_init(&pss->po.mu);
|
||||
pss->po.pi = NULL;
|
||||
#ifdef PO_DEBUG
|
||||
pss->po.obj_type = POLL_OBJ_POLLSET_SET;
|
||||
#endif
|
||||
return pss;
|
||||
}
|
||||
|
||||
static void pollset_set_destroy(grpc_pollset_set *pollset_set) {
|
||||
size_t i;
|
||||
gpr_mu_destroy(&pollset_set->mu);
|
||||
for (i = 0; i < pollset_set->fd_count; i++) {
|
||||
GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set");
|
||||
static void pollset_set_destroy(grpc_pollset_set *pss) {
|
||||
gpr_mu_destroy(&pss->po.mu);
|
||||
|
||||
if (pss->po.pi != NULL) {
|
||||
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
||||
PI_UNREF(&exec_ctx, pss->po.pi, "pss_destroy");
|
||||
grpc_exec_ctx_finish(&exec_ctx);
|
||||
}
|
||||
gpr_free(pollset_set->pollsets);
|
||||
gpr_free(pollset_set->pollset_sets);
|
||||
gpr_free(pollset_set->fds);
|
||||
gpr_free(pollset_set);
|
||||
|
||||
gpr_free(pss);
|
||||
}
|
||||
|
||||
static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset_set *pollset_set, grpc_fd *fd) {
|
||||
size_t i;
|
||||
gpr_mu_lock(&pollset_set->mu);
|
||||
if (pollset_set->fd_count == pollset_set->fd_capacity) {
|
||||
pollset_set->fd_capacity = GPR_MAX(8, 2 * pollset_set->fd_capacity);
|
||||
pollset_set->fds = gpr_realloc(
|
||||
pollset_set->fds, pollset_set->fd_capacity * sizeof(*pollset_set->fds));
|
||||
}
|
||||
GRPC_FD_REF(fd, "pollset_set");
|
||||
pollset_set->fds[pollset_set->fd_count++] = fd;
|
||||
for (i = 0; i < pollset_set->pollset_count; i++) {
|
||||
pollset_add_fd(exec_ctx, pollset_set->pollsets[i], fd);
|
||||
}
|
||||
for (i = 0; i < pollset_set->pollset_set_count; i++) {
|
||||
pollset_set_add_fd(exec_ctx, pollset_set->pollset_sets[i], fd);
|
||||
}
|
||||
gpr_mu_unlock(&pollset_set->mu);
|
||||
static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss,
|
||||
grpc_fd *fd) {
|
||||
add_poll_object(exec_ctx, &pss->po, POLL_OBJ_POLLSET_SET, &fd->po,
|
||||
POLL_OBJ_FD);
|
||||
}
|
||||
|
||||
static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset_set *pollset_set, grpc_fd *fd) {
|
||||
size_t i;
|
||||
gpr_mu_lock(&pollset_set->mu);
|
||||
for (i = 0; i < pollset_set->fd_count; i++) {
|
||||
if (pollset_set->fds[i] == fd) {
|
||||
pollset_set->fd_count--;
|
||||
GPR_SWAP(grpc_fd *, pollset_set->fds[i],
|
||||
pollset_set->fds[pollset_set->fd_count]);
|
||||
GRPC_FD_UNREF(fd, "pollset_set");
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < pollset_set->pollset_set_count; i++) {
|
||||
pollset_set_del_fd(exec_ctx, pollset_set->pollset_sets[i], fd);
|
||||
}
|
||||
gpr_mu_unlock(&pollset_set->mu);
|
||||
static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss,
|
||||
grpc_fd *fd) {
|
||||
/* Nothing to do */
|
||||
}
|
||||
|
||||
static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset_set *pollset_set,
|
||||
grpc_pollset *pollset) {
|
||||
size_t i, j;
|
||||
gpr_mu_lock(&pollset_set->mu);
|
||||
if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
|
||||
pollset_set->pollset_capacity =
|
||||
GPR_MAX(8, 2 * pollset_set->pollset_capacity);
|
||||
pollset_set->pollsets =
|
||||
gpr_realloc(pollset_set->pollsets, pollset_set->pollset_capacity *
|
||||
sizeof(*pollset_set->pollsets));
|
||||
}
|
||||
pollset_set->pollsets[pollset_set->pollset_count++] = pollset;
|
||||
for (i = 0, j = 0; i < pollset_set->fd_count; i++) {
|
||||
if (fd_is_orphaned(pollset_set->fds[i])) {
|
||||
GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set");
|
||||
} else {
|
||||
pollset_add_fd(exec_ctx, pollset, pollset_set->fds[i]);
|
||||
pollset_set->fds[j++] = pollset_set->fds[i];
|
||||
}
|
||||
}
|
||||
pollset_set->fd_count = j;
|
||||
gpr_mu_unlock(&pollset_set->mu);
|
||||
grpc_pollset_set *pss, grpc_pollset *ps) {
|
||||
add_poll_object(exec_ctx, &pss->po, POLL_OBJ_POLLSET_SET, &ps->po,
|
||||
POLL_OBJ_POLLSET);
|
||||
}
|
||||
|
||||
static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset_set *pollset_set,
|
||||
grpc_pollset *pollset) {
|
||||
size_t i;
|
||||
gpr_mu_lock(&pollset_set->mu);
|
||||
for (i = 0; i < pollset_set->pollset_count; i++) {
|
||||
if (pollset_set->pollsets[i] == pollset) {
|
||||
pollset_set->pollset_count--;
|
||||
GPR_SWAP(grpc_pollset *, pollset_set->pollsets[i],
|
||||
pollset_set->pollsets[pollset_set->pollset_count]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
gpr_mu_unlock(&pollset_set->mu);
|
||||
grpc_pollset_set *pss, grpc_pollset *ps) {
|
||||
/* Nothing to do */
|
||||
}
|
||||
|
||||
static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset_set *bag,
|
||||
grpc_pollset_set *item) {
|
||||
size_t i, j;
|
||||
gpr_mu_lock(&bag->mu);
|
||||
if (bag->pollset_set_count == bag->pollset_set_capacity) {
|
||||
bag->pollset_set_capacity = GPR_MAX(8, 2 * bag->pollset_set_capacity);
|
||||
bag->pollset_sets =
|
||||
gpr_realloc(bag->pollset_sets,
|
||||
bag->pollset_set_capacity * sizeof(*bag->pollset_sets));
|
||||
}
|
||||
bag->pollset_sets[bag->pollset_set_count++] = item;
|
||||
for (i = 0, j = 0; i < bag->fd_count; i++) {
|
||||
if (fd_is_orphaned(bag->fds[i])) {
|
||||
GRPC_FD_UNREF(bag->fds[i], "pollset_set");
|
||||
} else {
|
||||
pollset_set_add_fd(exec_ctx, item, bag->fds[i]);
|
||||
bag->fds[j++] = bag->fds[i];
|
||||
}
|
||||
}
|
||||
bag->fd_count = j;
|
||||
gpr_mu_unlock(&bag->mu);
|
||||
add_poll_object(exec_ctx, &bag->po, POLL_OBJ_POLLSET_SET, &item->po,
|
||||
POLL_OBJ_POLLSET_SET);
|
||||
}
|
||||
|
||||
static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx,
|
||||
grpc_pollset_set *bag,
|
||||
grpc_pollset_set *item) {
|
||||
size_t i;
|
||||
gpr_mu_lock(&bag->mu);
|
||||
for (i = 0; i < bag->pollset_set_count; i++) {
|
||||
if (bag->pollset_sets[i] == item) {
|
||||
bag->pollset_set_count--;
|
||||
GPR_SWAP(grpc_pollset_set *, bag->pollset_sets[i],
|
||||
bag->pollset_sets[bag->pollset_set_count]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
gpr_mu_unlock(&bag->mu);
|
||||
/* Nothing to do */
|
||||
}
|
||||
|
||||
/* Test helper functions
|
||||
|
|
@ -1926,9 +1885,9 @@ static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx,
|
|||
void *grpc_fd_get_polling_island(grpc_fd *fd) {
|
||||
polling_island *pi;
|
||||
|
||||
gpr_mu_lock(&fd->mu);
|
||||
pi = fd->polling_island;
|
||||
gpr_mu_unlock(&fd->mu);
|
||||
gpr_mu_lock(&fd->po.mu);
|
||||
pi = fd->po.pi;
|
||||
gpr_mu_unlock(&fd->po.mu);
|
||||
|
||||
return pi;
|
||||
}
|
||||
|
|
@ -1936,9 +1895,9 @@ void *grpc_fd_get_polling_island(grpc_fd *fd) {
|
|||
void *grpc_pollset_get_polling_island(grpc_pollset *ps) {
|
||||
polling_island *pi;
|
||||
|
||||
gpr_mu_lock(&ps->mu);
|
||||
pi = ps->polling_island;
|
||||
gpr_mu_unlock(&ps->mu);
|
||||
gpr_mu_lock(&ps->po.mu);
|
||||
pi = ps->po.pi;
|
||||
gpr_mu_unlock(&ps->po.mu);
|
||||
|
||||
return pi;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -377,6 +377,11 @@ static bool tcp_flush(grpc_tcp *tcp, grpc_error **error) {
|
|||
tcp->outgoing_slice_idx = unwind_slice_idx;
|
||||
tcp->outgoing_byte_idx = unwind_byte_idx;
|
||||
return false;
|
||||
} else if (errno == EPIPE) {
|
||||
*error = grpc_error_set_int(GRPC_OS_ERROR(errno, "sendmsg"),
|
||||
GRPC_ERROR_INT_GRPC_STATUS,
|
||||
GRPC_STATUS_UNAVAILABLE);
|
||||
return true;
|
||||
} else {
|
||||
*error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ typedef struct grpc_tcp_server_acceptor {
|
|||
unsigned fd_index;
|
||||
} grpc_tcp_server_acceptor;
|
||||
|
||||
/* Called for newly connected TCP connections. */
|
||||
/* Called for newly connected TCP connections.
|
||||
Takes ownership of acceptor. */
|
||||
typedef void (*grpc_tcp_server_cb)(grpc_exec_ctx *exec_ctx, void *arg,
|
||||
grpc_endpoint *ep,
|
||||
grpc_pollset *accepting_pollset,
|
||||
|
|
|
|||
|
|
@ -381,16 +381,12 @@ error:
|
|||
/* event manager callback when reads are ready */
|
||||
static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) {
|
||||
grpc_tcp_listener *sp = arg;
|
||||
grpc_tcp_server_acceptor acceptor = {sp->server, sp->port_index,
|
||||
sp->fd_index};
|
||||
grpc_pollset *read_notifier_pollset = NULL;
|
||||
grpc_fd *fdobj;
|
||||
|
||||
if (err != GRPC_ERROR_NONE) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
read_notifier_pollset =
|
||||
grpc_pollset *read_notifier_pollset =
|
||||
sp->server->pollsets[(size_t)gpr_atm_no_barrier_fetch_add(
|
||||
&sp->server->next_pollset_to_assign, 1) %
|
||||
sp->server->pollset_count];
|
||||
|
|
@ -426,7 +422,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) {
|
|||
gpr_log(GPR_DEBUG, "SERVER_CONNECT: incoming connection: %s", addr_str);
|
||||
}
|
||||
|
||||
fdobj = grpc_fd_create(fd, name);
|
||||
grpc_fd *fdobj = grpc_fd_create(fd, name);
|
||||
|
||||
if (read_notifier_pollset == NULL) {
|
||||
gpr_log(GPR_ERROR, "Read notifier pollset is not set on the fd");
|
||||
|
|
@ -435,11 +431,17 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) {
|
|||
|
||||
grpc_pollset_add_fd(exec_ctx, read_notifier_pollset, fdobj);
|
||||
|
||||
// Create acceptor.
|
||||
grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
|
||||
acceptor->from_server = sp->server;
|
||||
acceptor->port_index = sp->port_index;
|
||||
acceptor->fd_index = sp->fd_index;
|
||||
|
||||
sp->server->on_accept_cb(
|
||||
exec_ctx, sp->server->on_accept_cb_arg,
|
||||
grpc_tcp_create(fdobj, sp->server->resource_quota,
|
||||
GRPC_TCP_DEFAULT_READ_SLICE_SIZE, addr_str),
|
||||
read_notifier_pollset, &acceptor);
|
||||
read_notifier_pollset, acceptor);
|
||||
|
||||
gpr_free(name);
|
||||
gpr_free(addr_str);
|
||||
|
|
|
|||
|
|
@ -188,7 +188,6 @@ static void accepted_connection_close_cb(uv_handle_t *handle) {
|
|||
|
||||
static void on_connect(uv_stream_t *server, int status) {
|
||||
grpc_tcp_listener *sp = (grpc_tcp_listener *)server->data;
|
||||
grpc_tcp_server_acceptor acceptor = {sp->server, sp->port_index, 0};
|
||||
uv_tcp_t *client;
|
||||
grpc_endpoint *ep = NULL;
|
||||
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
||||
|
|
@ -201,6 +200,7 @@ static void on_connect(uv_stream_t *server, int status) {
|
|||
uv_strerror(status));
|
||||
return;
|
||||
}
|
||||
|
||||
client = gpr_malloc(sizeof(uv_tcp_t));
|
||||
uv_tcp_init(uv_default_loop(), client);
|
||||
// UV documentation says this is guaranteed to succeed
|
||||
|
|
@ -220,8 +220,13 @@ static void on_connect(uv_stream_t *server, int status) {
|
|||
gpr_log(GPR_INFO, "uv_tcp_getpeername error: %s", uv_strerror(status));
|
||||
}
|
||||
ep = grpc_tcp_create(client, sp->server->resource_quota, peer_name_string);
|
||||
// Create acceptor.
|
||||
grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
|
||||
acceptor->from_server = sp->server;
|
||||
acceptor->port_index = sp->port_index;
|
||||
acceptor->fd_index = 0;
|
||||
sp->server->on_accept_cb(&exec_ctx, sp->server->on_accept_cb_arg, ep, NULL,
|
||||
&acceptor);
|
||||
acceptor);
|
||||
grpc_exec_ctx_finish(&exec_ctx);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -323,7 +323,6 @@ failure:
|
|||
/* Event manager callback when reads are ready. */
|
||||
static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
||||
grpc_tcp_listener *sp = arg;
|
||||
grpc_tcp_server_acceptor acceptor = {sp->server, sp->port_index, 0};
|
||||
SOCKET sock = sp->new_socket;
|
||||
grpc_winsocket_callback_info *info = &sp->socket->read_info;
|
||||
grpc_endpoint *ep = NULL;
|
||||
|
|
@ -396,8 +395,13 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|||
/* The only time we should call our callback, is where we successfully
|
||||
managed to accept a connection, and created an endpoint. */
|
||||
if (ep) {
|
||||
// Create acceptor.
|
||||
grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
|
||||
acceptor->from_server = sp->server;
|
||||
acceptor->port_index = sp->port_index;
|
||||
acceptor->fd_index = 0;
|
||||
sp->server->on_accept_cb(exec_ctx, sp->server->on_accept_cb_arg, ep, NULL,
|
||||
&acceptor);
|
||||
acceptor);
|
||||
}
|
||||
/* As we were notified from the IOCP of one and exactly one accept,
|
||||
the former socked we created has now either been destroy or assigned
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
#include <grpc/support/string_util.h>
|
||||
|
||||
#include "src/core/ext/transport/chttp2/alpn/alpn.h"
|
||||
#include "src/core/lib/channel/handshaker.h"
|
||||
#include "src/core/lib/iomgr/load_file.h"
|
||||
#include "src/core/lib/security/context/security_context.h"
|
||||
#include "src/core/lib/security/credentials/credentials.h"
|
||||
|
|
@ -111,19 +112,19 @@ const tsi_peer_property *tsi_peer_get_property_by_name(const tsi_peer *peer,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void grpc_channel_security_connector_create_handshakers(
|
||||
void grpc_channel_security_connector_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *connector,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
if (connector != NULL) {
|
||||
connector->create_handshakers(exec_ctx, connector, handshake_mgr);
|
||||
connector->add_handshakers(exec_ctx, connector, handshake_mgr);
|
||||
}
|
||||
}
|
||||
|
||||
void grpc_server_security_connector_create_handshakers(
|
||||
void grpc_server_security_connector_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_server_security_connector *connector,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
if (connector != NULL) {
|
||||
connector->create_handshakers(exec_ctx, connector, handshake_mgr);
|
||||
connector->add_handshakers(exec_ctx, connector, handshake_mgr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -291,20 +292,24 @@ static void fake_channel_check_call_host(grpc_exec_ctx *exec_ctx,
|
|||
cb(exec_ctx, user_data, GRPC_SECURITY_OK);
|
||||
}
|
||||
|
||||
static void fake_channel_create_handshakers(
|
||||
static void fake_channel_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_security_create_handshakers(
|
||||
exec_ctx, tsi_create_fake_handshaker(true /* is_client */), &sc->base,
|
||||
handshake_mgr);
|
||||
grpc_handshake_manager_add(
|
||||
handshake_mgr,
|
||||
grpc_security_handshaker_create(
|
||||
exec_ctx, tsi_create_fake_handshaker(true /* is_client */),
|
||||
&sc->base));
|
||||
}
|
||||
|
||||
static void fake_server_create_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_security_create_handshakers(
|
||||
exec_ctx, tsi_create_fake_handshaker(false /* is_client */), &sc->base,
|
||||
handshake_mgr);
|
||||
static void fake_server_add_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_handshake_manager_add(
|
||||
handshake_mgr,
|
||||
grpc_security_handshaker_create(
|
||||
exec_ctx, tsi_create_fake_handshaker(false /* is_client */),
|
||||
&sc->base));
|
||||
}
|
||||
|
||||
static grpc_security_connector_vtable fake_channel_vtable = {
|
||||
|
|
@ -322,7 +327,7 @@ grpc_channel_security_connector *grpc_fake_channel_security_connector_create(
|
|||
c->base.vtable = &fake_channel_vtable;
|
||||
c->request_metadata_creds = grpc_call_credentials_ref(request_metadata_creds);
|
||||
c->check_call_host = fake_channel_check_call_host;
|
||||
c->create_handshakers = fake_channel_create_handshakers;
|
||||
c->add_handshakers = fake_channel_add_handshakers;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
|
@ -334,7 +339,7 @@ grpc_server_security_connector *grpc_fake_server_security_connector_create(
|
|||
gpr_ref_init(&c->base.refcount, 1);
|
||||
c->base.vtable = &fake_server_vtable;
|
||||
c->base.url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
|
||||
c->create_handshakers = fake_server_create_handshakers;
|
||||
c->add_handshakers = fake_server_add_handshakers;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
|
@ -390,9 +395,9 @@ static grpc_security_status ssl_create_handshaker(
|
|||
return GRPC_SECURITY_OK;
|
||||
}
|
||||
|
||||
static void ssl_channel_create_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
static void ssl_channel_add_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_ssl_channel_security_connector *c =
|
||||
(grpc_ssl_channel_security_connector *)sc;
|
||||
// Instantiate TSI handshaker.
|
||||
|
|
@ -403,12 +408,13 @@ static void ssl_channel_create_handshakers(
|
|||
: c->target_name,
|
||||
&tsi_hs);
|
||||
// Create handshakers.
|
||||
grpc_security_create_handshakers(exec_ctx, tsi_hs, &sc->base, handshake_mgr);
|
||||
grpc_handshake_manager_add(handshake_mgr, grpc_security_handshaker_create(
|
||||
exec_ctx, tsi_hs, &sc->base));
|
||||
}
|
||||
|
||||
static void ssl_server_create_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
static void ssl_server_add_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
grpc_ssl_server_security_connector *c =
|
||||
(grpc_ssl_server_security_connector *)sc;
|
||||
// Instantiate TSI handshaker.
|
||||
|
|
@ -416,7 +422,8 @@ static void ssl_server_create_handshakers(
|
|||
ssl_create_handshaker(c->handshaker_factory, false /* is_client */,
|
||||
NULL /* peer_name */, &tsi_hs);
|
||||
// Create handshakers.
|
||||
grpc_security_create_handshakers(exec_ctx, tsi_hs, &sc->base, handshake_mgr);
|
||||
grpc_handshake_manager_add(handshake_mgr, grpc_security_handshaker_create(
|
||||
exec_ctx, tsi_hs, &sc->base));
|
||||
}
|
||||
|
||||
static int ssl_host_matches_name(const tsi_peer *peer, const char *peer_name) {
|
||||
|
|
@ -716,7 +723,7 @@ grpc_security_status grpc_ssl_channel_security_connector_create(
|
|||
c->base.request_metadata_creds =
|
||||
grpc_call_credentials_ref(request_metadata_creds);
|
||||
c->base.check_call_host = ssl_channel_check_call_host;
|
||||
c->base.create_handshakers = ssl_channel_create_handshakers;
|
||||
c->base.add_handshakers = ssl_channel_add_handshakers;
|
||||
gpr_split_host_port(target_name, &c->target_name, &port);
|
||||
gpr_free(port);
|
||||
if (overridden_target_name != NULL) {
|
||||
|
|
@ -792,7 +799,7 @@ grpc_security_status grpc_ssl_server_security_connector_create(
|
|||
*sc = NULL;
|
||||
goto error;
|
||||
}
|
||||
c->base.create_handshakers = ssl_server_create_handshakers;
|
||||
c->base.add_handshakers = ssl_server_add_handshakers;
|
||||
*sc = &c->base;
|
||||
gpr_free((void *)alpn_protocol_strings);
|
||||
gpr_free(alpn_protocol_string_lengths);
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx,
|
|||
#endif
|
||||
|
||||
/* Check the peer. Callee takes ownership of the peer object.
|
||||
Sets *auth_context and invokes on_peer_checked when done. */
|
||||
When done, sets *auth_context and invokes on_peer_checked. */
|
||||
void grpc_security_connector_check_peer(grpc_exec_ctx *exec_ctx,
|
||||
grpc_security_connector *sc,
|
||||
tsi_peer peer,
|
||||
|
|
@ -136,9 +136,9 @@ struct grpc_channel_security_connector {
|
|||
grpc_channel_security_connector *sc, const char *host,
|
||||
grpc_auth_context *auth_context,
|
||||
grpc_security_call_host_check_cb cb, void *user_data);
|
||||
void (*create_handshakers)(grpc_exec_ctx *exec_ctx,
|
||||
grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
void (*add_handshakers)(grpc_exec_ctx *exec_ctx,
|
||||
grpc_channel_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
};
|
||||
|
||||
/* Checks that the host that will be set for a call is acceptable. */
|
||||
|
|
@ -148,7 +148,7 @@ void grpc_channel_security_connector_check_call_host(
|
|||
grpc_security_call_host_check_cb cb, void *user_data);
|
||||
|
||||
/* Registers handshakers with \a handshake_mgr. */
|
||||
void grpc_channel_security_connector_create_handshakers(
|
||||
void grpc_channel_security_connector_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *connector,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
|
||||
|
|
@ -161,12 +161,12 @@ typedef struct grpc_server_security_connector grpc_server_security_connector;
|
|||
|
||||
struct grpc_server_security_connector {
|
||||
grpc_security_connector base;
|
||||
void (*create_handshakers)(grpc_exec_ctx *exec_ctx,
|
||||
grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
void (*add_handshakers)(grpc_exec_ctx *exec_ctx,
|
||||
grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
};
|
||||
|
||||
void grpc_server_security_connector_create_handshakers(
|
||||
void grpc_server_security_connector_add_handshakers(
|
||||
grpc_exec_ctx *exec_ctx, grpc_server_security_connector *sc,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
|
||||
|
|
|
|||
|
|
@ -132,7 +132,14 @@ static void security_handshake_failed_locked(grpc_exec_ctx *exec_ctx,
|
|||
grpc_endpoint_shutdown(exec_ctx, h->args->endpoint);
|
||||
// Not shutting down, so the write failed. Clean up before
|
||||
// invoking the callback.
|
||||
<<<<<<< HEAD
|
||||
cleanup_args_for_failure_locked(exec_ctx, h);
|
||||
=======
|
||||
cleanup_args_for_failure_locked(h);
|
||||
// Set shutdown to true so that subsequent calls to
|
||||
// security_handshaker_shutdown() do nothing.
|
||||
h->shutdown = true;
|
||||
>>>>>>> b62bffbea5eef106bfbe644e8af161889c927401
|
||||
}
|
||||
// Invoke callback.
|
||||
grpc_exec_ctx_sched(exec_ctx, h->on_handshake_done, error, NULL);
|
||||
|
|
@ -436,17 +443,14 @@ static grpc_handshaker *fail_handshaker_create() {
|
|||
// exported functions
|
||||
//
|
||||
|
||||
void grpc_security_create_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
tsi_handshaker *handshaker,
|
||||
grpc_security_connector *connector,
|
||||
grpc_handshake_manager *handshake_mgr) {
|
||||
// If no TSI handshaker was created, add a handshaker that always fails.
|
||||
// Otherwise, add a real security handshaker.
|
||||
grpc_handshaker *grpc_security_handshaker_create(
|
||||
grpc_exec_ctx *exec_ctx, tsi_handshaker *handshaker,
|
||||
grpc_security_connector *connector) {
|
||||
// If no TSI handshaker was created, return a handshaker that always fails.
|
||||
// Otherwise, return a real security handshaker.
|
||||
if (handshaker == NULL) {
|
||||
grpc_handshake_manager_add(handshake_mgr, fail_handshaker_create());
|
||||
return fail_handshaker_create();
|
||||
} else {
|
||||
grpc_handshake_manager_add(
|
||||
handshake_mgr,
|
||||
security_handshaker_create(exec_ctx, handshaker, connector));
|
||||
return security_handshaker_create(exec_ctx, handshaker, connector);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,14 +34,13 @@
|
|||
#ifndef GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H
|
||||
#define GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H
|
||||
|
||||
#include "src/core/lib/iomgr/endpoint.h"
|
||||
#include "src/core/lib/channel/handshaker.h"
|
||||
#include "src/core/lib/iomgr/exec_ctx.h"
|
||||
#include "src/core/lib/security/transport/security_connector.h"
|
||||
|
||||
/// Creates any necessary security handshakers and adds them to
|
||||
/// \a handshake_mgr.
|
||||
void grpc_security_create_handshakers(grpc_exec_ctx *exec_ctx,
|
||||
tsi_handshaker *handshaker,
|
||||
grpc_security_connector *connector,
|
||||
grpc_handshake_manager *handshake_mgr);
|
||||
/// Creates a security handshaker using \a handshaker.
|
||||
grpc_handshaker *grpc_security_handshaker_create(
|
||||
grpc_exec_ctx *exec_ctx, tsi_handshaker *handshaker,
|
||||
grpc_security_connector *connector);
|
||||
|
||||
#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H */
|
||||
|
|
|
|||
|
|
@ -36,8 +36,6 @@
|
|||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <grpc/slice.h>
|
||||
#include <grpc/slice_buffer.h>
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -36,8 +36,6 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <grpc/slice.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -29,15 +29,6 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Net" />
|
||||
|
|
|
|||
|
|
@ -25,15 +25,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="nunit.framework">
|
||||
|
|
|
|||
|
|
@ -27,16 +27,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<DefineConstants>SIGNED</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Interactive.Async">
|
||||
|
|
|
|||
|
|
@ -4,13 +4,11 @@
|
|||
<PropertyGroup Condition=" '$(NativeDependenciesConfiguration)' == '' ">
|
||||
<NativeDependenciesConfiguration Condition=" '$(Configuration)' == 'Debug' ">Debug</NativeDependenciesConfiguration>
|
||||
<NativeDependenciesConfiguration Condition=" '$(Configuration)' == 'Release' ">Release</NativeDependenciesConfiguration>
|
||||
<NativeDependenciesConfiguration Condition=" '$(Configuration)' == 'ReleaseSigned' ">Release</NativeDependenciesConfiguration>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(NativeDependenciesConfigurationUnix)' == '' ">
|
||||
<NativeDependenciesConfigurationUnix Condition=" '$(Configuration)' == 'Debug' ">dbg</NativeDependenciesConfigurationUnix>
|
||||
<NativeDependenciesConfigurationUnix Condition=" '$(Configuration)' == 'Release' ">opt</NativeDependenciesConfigurationUnix>
|
||||
<NativeDependenciesConfigurationUnix Condition=" '$(Configuration)' == 'ReleaseSigned' ">opt</NativeDependenciesConfigurationUnix>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Autodetect platform -->
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -25,15 +25,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="nunit.framework">
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="nunit.framework">
|
||||
<HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath>
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
|||
|
|
@ -28,15 +28,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
|||
|
|
@ -29,15 +29,6 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Net" />
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -29,15 +29,6 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Net" />
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -28,15 +28,6 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Net" />
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
|||
|
|
@ -28,15 +28,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\ReleaseSigned</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<SignAssembly>True</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
|||
|
|
@ -44,105 +44,72 @@ Global
|
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
ReleaseSigned|Any CPU = ReleaseSigned|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{4F18CF52-B3DB-4A77-97C5-7F7F4B6C1715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4F18CF52-B3DB-4A77-97C5-7F7F4B6C1715}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4F18CF52-B3DB-4A77-97C5-7F7F4B6C1715}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4F18CF52-B3DB-4A77-97C5-7F7F4B6C1715}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4F18CF52-B3DB-4A77-97C5-7F7F4B6C1715}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{4F18CF52-B3DB-4A77-97C5-7F7F4B6C1715}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{7DC1433E-3225-42C7-B7EA-546D56E27A4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7DC1433E-3225-42C7-B7EA-546D56E27A4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7DC1433E-3225-42C7-B7EA-546D56E27A4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7DC1433E-3225-42C7-B7EA-546D56E27A4B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7DC1433E-3225-42C7-B7EA-546D56E27A4B}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{7DC1433E-3225-42C7-B7EA-546D56E27A4B}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{ADEBA147-80AE-4710-82E9-5B7F93690266}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ADEBA147-80AE-4710-82E9-5B7F93690266}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ADEBA147-80AE-4710-82E9-5B7F93690266}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ADEBA147-80AE-4710-82E9-5B7F93690266}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ADEBA147-80AE-4710-82E9-5B7F93690266}.ReleaseSigned|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ADEBA147-80AE-4710-82E9-5B7F93690266}.ReleaseSigned|Any CPU.Build.0 = Release|Any CPU
|
||||
{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}.ReleaseSigned|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}.ReleaseSigned|Any CPU.Build.0 = Release|Any CPU
|
||||
{B88F91D6-436D-4C78-8B99-47800FA8DE03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B88F91D6-436D-4C78-8B99-47800FA8DE03}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B88F91D6-436D-4C78-8B99-47800FA8DE03}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B88F91D6-436D-4C78-8B99-47800FA8DE03}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B88F91D6-436D-4C78-8B99-47800FA8DE03}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{B88F91D6-436D-4C78-8B99-47800FA8DE03}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{BF62FE08-373A-43D6-9D73-41CAA38B7011}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BF62FE08-373A-43D6-9D73-41CAA38B7011}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BF62FE08-373A-43D6-9D73-41CAA38B7011}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BF62FE08-373A-43D6-9D73-41CAA38B7011}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BF62FE08-373A-43D6-9D73-41CAA38B7011}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{BF62FE08-373A-43D6-9D73-41CAA38B7011}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{C61154BA-DD4A-4838-8420-0162A28925E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C61154BA-DD4A-4838-8420-0162A28925E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C61154BA-DD4A-4838-8420-0162A28925E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C61154BA-DD4A-4838-8420-0162A28925E0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C61154BA-DD4A-4838-8420-0162A28925E0}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{C61154BA-DD4A-4838-8420-0162A28925E0}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
{F8C6D937-C44B-4EE3-A431-B0FBAEACE47D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F8C6D937-C44B-4EE3-A431-B0FBAEACE47D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F8C6D937-C44B-4EE3-A431-B0FBAEACE47D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F8C6D937-C44B-4EE3-A431-B0FBAEACE47D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F8C6D937-C44B-4EE3-A431-B0FBAEACE47D}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
|
||||
{F8C6D937-C44B-4EE3-A431-B0FBAEACE47D}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
EndGlobalSection
|
||||
|
|
|
|||
|
|
@ -849,6 +849,26 @@ class GenericRpcHandler(six.with_metaclass(abc.ABCMeta)):
|
|||
raise NotImplementedError()
|
||||
|
||||
|
||||
class ServiceRpcHandler(six.with_metaclass(abc.ABCMeta, GenericRpcHandler)):
|
||||
"""An implementation of RPC methods belonging to a service.
|
||||
|
||||
A service handles RPC methods with structured names of the form
|
||||
'/Service.Name/Service.MethodX', where 'Service.Name' is the value
|
||||
returned by service_name(), and 'Service.MethodX' is the service method
|
||||
name. A service can have multiple service methods names, but only a single
|
||||
service name.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def service_name(self):
|
||||
"""Returns this services name.
|
||||
|
||||
Returns:
|
||||
The service name.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
############################# Server Interface ###############################
|
||||
|
||||
|
||||
|
|
@ -1304,6 +1324,7 @@ __all__ = (
|
|||
'RpcMethodHandler',
|
||||
'HandlerCallDetails',
|
||||
'GenericRpcHandler',
|
||||
'ServiceRpcHandler',
|
||||
'Server',
|
||||
'unary_unary_rpc_method_handler',
|
||||
'unary_stream_rpc_method_handler',
|
||||
|
|
|
|||
|
|
@ -53,13 +53,17 @@ class RpcMethodHandler(
|
|||
pass
|
||||
|
||||
|
||||
class DictionaryGenericHandler(grpc.GenericRpcHandler):
|
||||
class DictionaryGenericHandler(grpc.ServiceRpcHandler):
|
||||
|
||||
def __init__(self, service, method_handlers):
|
||||
self._name = service
|
||||
self._method_handlers = {
|
||||
_common.fully_qualified_method(service, method): method_handler
|
||||
for method, method_handler in six.iteritems(method_handlers)}
|
||||
|
||||
def service_name(self):
|
||||
return self._name
|
||||
|
||||
def service(self, handler_call_details):
|
||||
return self._method_handlers.get(handler_call_details.method)
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ class AllTest(unittest.TestCase):
|
|||
'RpcMethodHandler',
|
||||
'HandlerCallDetails',
|
||||
'GenericRpcHandler',
|
||||
'ServiceRpcHandler',
|
||||
'Server',
|
||||
'unary_unary_rpc_method_handler',
|
||||
'unary_stream_rpc_method_handler',
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<ItemDefinitionGroup>
|
||||
<Link>
|
||||
<AdditionalDependencies>libprotobuf.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\build\solution\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libprotoc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\build\solution\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|||
static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
|
||||
grpc_pollset *accepting_pollset,
|
||||
grpc_tcp_server_acceptor *acceptor) {
|
||||
gpr_free(acceptor);
|
||||
test_tcp_server *server = arg;
|
||||
grpc_closure_init(&on_read, handle_read, NULL);
|
||||
grpc_slice_buffer_init(&state.incoming_buffer);
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|||
static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
|
||||
grpc_pollset *accepting_pollset,
|
||||
grpc_tcp_server_acceptor *acceptor) {
|
||||
gpr_free(acceptor);
|
||||
test_tcp_server *server = arg;
|
||||
grpc_closure_init(&on_read, handle_read, NULL);
|
||||
grpc_closure_init(&on_write, done_write, NULL);
|
||||
|
|
|
|||
|
|
@ -119,6 +119,8 @@ extern void resource_quota_server(grpc_end2end_test_config config);
|
|||
extern void resource_quota_server_pre_init(void);
|
||||
extern void server_finishes_request(grpc_end2end_test_config config);
|
||||
extern void server_finishes_request_pre_init(void);
|
||||
extern void short_deadlines(grpc_end2end_test_config config);
|
||||
extern void short_deadlines_pre_init(void);
|
||||
extern void shutdown_finishes_calls(grpc_end2end_test_config config);
|
||||
extern void shutdown_finishes_calls_pre_init(void);
|
||||
extern void shutdown_finishes_tags(grpc_end2end_test_config config);
|
||||
|
|
@ -177,6 +179,7 @@ void grpc_end2end_tests_pre_init(void) {
|
|||
request_with_payload_pre_init();
|
||||
resource_quota_server_pre_init();
|
||||
server_finishes_request_pre_init();
|
||||
short_deadlines_pre_init();
|
||||
shutdown_finishes_calls_pre_init();
|
||||
shutdown_finishes_tags_pre_init();
|
||||
simple_cacheable_request_pre_init();
|
||||
|
|
@ -232,6 +235,7 @@ void grpc_end2end_tests(int argc, char **argv,
|
|||
request_with_payload(config);
|
||||
resource_quota_server(config);
|
||||
server_finishes_request(config);
|
||||
short_deadlines(config);
|
||||
shutdown_finishes_calls(config);
|
||||
shutdown_finishes_tags(config);
|
||||
simple_cacheable_request(config);
|
||||
|
|
@ -396,6 +400,10 @@ void grpc_end2end_tests(int argc, char **argv,
|
|||
server_finishes_request(config);
|
||||
continue;
|
||||
}
|
||||
if (0 == strcmp("short_deadlines", argv[i])) {
|
||||
short_deadlines(config);
|
||||
continue;
|
||||
}
|
||||
if (0 == strcmp("shutdown_finishes_calls", argv[i])) {
|
||||
shutdown_finishes_calls(config);
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -121,6 +121,8 @@ extern void resource_quota_server(grpc_end2end_test_config config);
|
|||
extern void resource_quota_server_pre_init(void);
|
||||
extern void server_finishes_request(grpc_end2end_test_config config);
|
||||
extern void server_finishes_request_pre_init(void);
|
||||
extern void short_deadlines(grpc_end2end_test_config config);
|
||||
extern void short_deadlines_pre_init(void);
|
||||
extern void shutdown_finishes_calls(grpc_end2end_test_config config);
|
||||
extern void shutdown_finishes_calls_pre_init(void);
|
||||
extern void shutdown_finishes_tags(grpc_end2end_test_config config);
|
||||
|
|
@ -180,6 +182,7 @@ void grpc_end2end_tests_pre_init(void) {
|
|||
request_with_payload_pre_init();
|
||||
resource_quota_server_pre_init();
|
||||
server_finishes_request_pre_init();
|
||||
short_deadlines_pre_init();
|
||||
shutdown_finishes_calls_pre_init();
|
||||
shutdown_finishes_tags_pre_init();
|
||||
simple_cacheable_request_pre_init();
|
||||
|
|
@ -236,6 +239,7 @@ void grpc_end2end_tests(int argc, char **argv,
|
|||
request_with_payload(config);
|
||||
resource_quota_server(config);
|
||||
server_finishes_request(config);
|
||||
short_deadlines(config);
|
||||
shutdown_finishes_calls(config);
|
||||
shutdown_finishes_tags(config);
|
||||
simple_cacheable_request(config);
|
||||
|
|
@ -404,6 +408,10 @@ void grpc_end2end_tests(int argc, char **argv,
|
|||
server_finishes_request(config);
|
||||
continue;
|
||||
}
|
||||
if (0 == strcmp("short_deadlines", argv[i])) {
|
||||
short_deadlines(config);
|
||||
continue;
|
||||
}
|
||||
if (0 == strcmp("shutdown_finishes_calls", argv[i])) {
|
||||
shutdown_finishes_calls(config);
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -370,6 +370,7 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg,
|
|||
static void on_accept(grpc_exec_ctx* exec_ctx, void* arg,
|
||||
grpc_endpoint* endpoint, grpc_pollset* accepting_pollset,
|
||||
grpc_tcp_server_acceptor* acceptor) {
|
||||
gpr_free(acceptor);
|
||||
grpc_end2end_http_proxy* proxy = arg;
|
||||
// Instantiate proxy_connection.
|
||||
proxy_connection* conn = gpr_malloc(sizeof(*conn));
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ END2END_TESTS = {
|
|||
'max_concurrent_streams': default_test_options._replace(proxyable=False),
|
||||
'max_message_length': default_test_options,
|
||||
'negative_deadline': default_test_options,
|
||||
'short_deadlines': default_test_options,
|
||||
'network_status_change': default_test_options,
|
||||
'no_logging': default_test_options._replace(traceable=False),
|
||||
'no_op': default_test_options,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,203 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 2016, Google Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following disclaimer
|
||||
* in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* * Neither the name of Google Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "test/core/end2end/end2end_tests.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <grpc/byte_buffer.h>
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpc/support/alloc.h>
|
||||
#include <grpc/support/log.h>
|
||||
#include <grpc/support/time.h>
|
||||
#include <grpc/support/useful.h>
|
||||
#include "src/core/lib/support/string.h"
|
||||
#include "test/core/end2end/cq_verifier.h"
|
||||
|
||||
static void *tag(intptr_t t) { return (void *)t; }
|
||||
|
||||
static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
|
||||
const char *test_name,
|
||||
grpc_channel_args *client_args,
|
||||
grpc_channel_args *server_args) {
|
||||
grpc_end2end_test_fixture f;
|
||||
gpr_log(GPR_INFO, "%s/%s", test_name, config.name);
|
||||
f = config.create_fixture(client_args, server_args);
|
||||
config.init_server(&f, server_args);
|
||||
config.init_client(&f, client_args);
|
||||
return f;
|
||||
}
|
||||
|
||||
static gpr_timespec n_seconds_time(int n) {
|
||||
return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
|
||||
}
|
||||
|
||||
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
|
||||
|
||||
static void drain_cq(grpc_completion_queue *cq) {
|
||||
grpc_event ev;
|
||||
do {
|
||||
ev = grpc_completion_queue_next(cq, five_seconds_time(), NULL);
|
||||
} while (ev.type != GRPC_QUEUE_SHUTDOWN);
|
||||
}
|
||||
|
||||
static void shutdown_server(grpc_end2end_test_fixture *f) {
|
||||
if (!f->server) return;
|
||||
grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000));
|
||||
GPR_ASSERT(grpc_completion_queue_pluck(
|
||||
f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL)
|
||||
.type == GRPC_OP_COMPLETE);
|
||||
grpc_server_destroy(f->server);
|
||||
f->server = NULL;
|
||||
}
|
||||
|
||||
static void shutdown_client(grpc_end2end_test_fixture *f) {
|
||||
if (!f->client) return;
|
||||
grpc_channel_destroy(f->client);
|
||||
f->client = NULL;
|
||||
}
|
||||
|
||||
static void end_test(grpc_end2end_test_fixture *f) {
|
||||
shutdown_server(f);
|
||||
shutdown_client(f);
|
||||
|
||||
grpc_completion_queue_shutdown(f->cq);
|
||||
drain_cq(f->cq);
|
||||
grpc_completion_queue_destroy(f->cq);
|
||||
}
|
||||
|
||||
static void simple_request_body_with_deadline(grpc_end2end_test_config config,
|
||||
grpc_end2end_test_fixture f,
|
||||
size_t num_ops, int deadline_ms) {
|
||||
grpc_call *c;
|
||||
const gpr_timespec deadline =
|
||||
gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
|
||||
gpr_time_from_millis(deadline_ms, GPR_TIMESPAN));
|
||||
|
||||
cq_verifier *cqv = cq_verifier_create(f.cq);
|
||||
grpc_op ops[6];
|
||||
grpc_op *op;
|
||||
grpc_metadata_array initial_metadata_recv;
|
||||
grpc_metadata_array trailing_metadata_recv;
|
||||
grpc_status_code status;
|
||||
grpc_call_error error;
|
||||
char *details = NULL;
|
||||
size_t details_capacity = 0;
|
||||
|
||||
gpr_log(GPR_DEBUG, "test with %" PRIuPTR " ops, %d ms deadline", num_ops,
|
||||
deadline_ms);
|
||||
|
||||
c = grpc_channel_create_call(
|
||||
f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq, "/foo",
|
||||
get_host_override_string("foo.test.google.fr:1234", config), deadline,
|
||||
NULL);
|
||||
GPR_ASSERT(c);
|
||||
|
||||
grpc_metadata_array_init(&initial_metadata_recv);
|
||||
grpc_metadata_array_init(&trailing_metadata_recv);
|
||||
|
||||
memset(ops, 0, sizeof(ops));
|
||||
op = ops;
|
||||
op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
|
||||
op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv;
|
||||
op->data.recv_status_on_client.status = &status;
|
||||
op->data.recv_status_on_client.status_details = &details;
|
||||
op->data.recv_status_on_client.status_details_capacity = &details_capacity;
|
||||
op->flags = 0;
|
||||
op->reserved = NULL;
|
||||
op++;
|
||||
op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
||||
op->data.recv_initial_metadata = &initial_metadata_recv;
|
||||
op->flags = 0;
|
||||
op->reserved = NULL;
|
||||
op++;
|
||||
op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
||||
op->data.send_initial_metadata.count = 0;
|
||||
op->flags = 0;
|
||||
op->reserved = NULL;
|
||||
op++;
|
||||
op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
|
||||
op->flags = 0;
|
||||
op->reserved = NULL;
|
||||
op++;
|
||||
GPR_ASSERT(num_ops <= (size_t)(op - ops));
|
||||
error = grpc_call_start_batch(c, ops, num_ops, tag(1), NULL);
|
||||
GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
|
||||
/* because there's no logic here to move along the server side of the call,
|
||||
* client calls are always going to timeout */
|
||||
|
||||
CQ_EXPECT_COMPLETION(cqv, tag(1), 1);
|
||||
cq_verify(cqv);
|
||||
|
||||
if (status != GRPC_STATUS_DEADLINE_EXCEEDED) {
|
||||
gpr_log(GPR_ERROR,
|
||||
"Expected GRPC_STATUS_DEADLINE_EXCEEDED (code %d), got code %d",
|
||||
GRPC_STATUS_DEADLINE_EXCEEDED, status);
|
||||
abort();
|
||||
}
|
||||
|
||||
gpr_free(details);
|
||||
grpc_metadata_array_destroy(&initial_metadata_recv);
|
||||
grpc_metadata_array_destroy(&trailing_metadata_recv);
|
||||
|
||||
grpc_call_destroy(c);
|
||||
|
||||
cq_verifier_destroy(cqv);
|
||||
}
|
||||
|
||||
static void test_invoke_short_deadline_request(grpc_end2end_test_config config,
|
||||
size_t num_ops,
|
||||
int deadline_ms) {
|
||||
grpc_end2end_test_fixture f;
|
||||
|
||||
f = begin_test(config, "test_invoke_short_deadline_request", NULL, NULL);
|
||||
simple_request_body_with_deadline(config, f, num_ops, deadline_ms);
|
||||
end_test(&f);
|
||||
config.tear_down_data(&f);
|
||||
}
|
||||
|
||||
void short_deadlines(grpc_end2end_test_config config) {
|
||||
size_t i;
|
||||
for (i = 1; i <= 4; i++) {
|
||||
test_invoke_short_deadline_request(config, i, 0);
|
||||
test_invoke_short_deadline_request(config, i, 1);
|
||||
test_invoke_short_deadline_request(config, i, 5);
|
||||
test_invoke_short_deadline_request(config, i, 10);
|
||||
test_invoke_short_deadline_request(config, i, 15);
|
||||
test_invoke_short_deadline_request(config, i, 30);
|
||||
}
|
||||
}
|
||||
|
||||
void short_deadlines_pre_init(void) {}
|
||||
|
|
@ -126,6 +126,7 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
|
|||
|
||||
on_connect_result temp_result;
|
||||
on_connect_result_set(&temp_result, acceptor);
|
||||
gpr_free(acceptor);
|
||||
|
||||
gpr_mu_lock(g_mu);
|
||||
g_result = temp_result;
|
||||
|
|
|
|||
|
|
@ -111,8 +111,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||
struct handshake_state state;
|
||||
state.done_callback_called = false;
|
||||
grpc_handshake_manager *handshake_mgr = grpc_handshake_manager_create();
|
||||
grpc_server_security_connector_create_handshakers(&exec_ctx, sc,
|
||||
handshake_mgr);
|
||||
grpc_server_security_connector_add_handshakers(&exec_ctx, sc, handshake_mgr);
|
||||
grpc_handshake_manager_do_handshake(
|
||||
&exec_ctx, handshake_mgr, mock_endpoint, NULL /* channel_args */,
|
||||
deadline, NULL /* acceptor */, on_handshake_done, &state);
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ void server_thread(void *vargs) {
|
|||
static void on_connect(grpc_exec_ctx *exec_ctx, void *vargs, grpc_endpoint *tcp,
|
||||
grpc_pollset *accepting_pollset,
|
||||
grpc_tcp_server_acceptor *acceptor) {
|
||||
gpr_free(acceptor);
|
||||
struct server_thread_args *args = (struct server_thread_args *)vargs;
|
||||
(void)acceptor;
|
||||
grpc_endpoint_shutdown(exec_ctx, tcp);
|
||||
grpc_endpoint_destroy(exec_ctx, tcp);
|
||||
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL));
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
#include <grpc/impl/codegen/compression_types.h>
|
||||
#include <grpc/impl/codegen/connectivity_state.h>
|
||||
#include <grpc/impl/codegen/exec_ctx_fwd.h>
|
||||
#include <grpc/impl/codegen/gpr_slice.h>
|
||||
#include <grpc/impl/codegen/gpr_types.h>
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ static void pretty_print_backoffs(reconnect_server *server) {
|
|||
static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
|
||||
grpc_pollset *accepting_pollset,
|
||||
grpc_tcp_server_acceptor *acceptor) {
|
||||
gpr_free(acceptor);
|
||||
char *peer;
|
||||
char *last_colon;
|
||||
reconnect_server *server = (reconnect_server *)arg;
|
||||
|
|
|
|||
|
|
@ -414,6 +414,7 @@ bool GrpcTool::CallMethod(int argc, const char** argv,
|
|||
grpc::string request_text;
|
||||
grpc::string server_address(argv[0]);
|
||||
grpc::string method_name(argv[1]);
|
||||
grpc::string formatted_method_name;
|
||||
std::unique_ptr<grpc::testing::ProtoFileParser> parser;
|
||||
grpc::string serialized_request_proto;
|
||||
|
||||
|
|
@ -450,7 +451,9 @@ bool GrpcTool::CallMethod(int argc, const char** argv,
|
|||
|
||||
if (FLAGS_binary_input) {
|
||||
serialized_request_proto = request_text;
|
||||
formatted_method_name = method_name;
|
||||
} else {
|
||||
formatted_method_name = parser->GetFormattedMethodName(method_name);
|
||||
serialized_request_proto = parser->GetSerializedProtoFromMethod(
|
||||
method_name, request_text, true /* is_request */);
|
||||
if (parser->HasError()) {
|
||||
|
|
@ -466,9 +469,9 @@ bool GrpcTool::CallMethod(int argc, const char** argv,
|
|||
ParseMetadataFlag(&client_metadata);
|
||||
PrintMetadata(client_metadata, "Sending client initial metadata:");
|
||||
grpc::Status status = grpc::testing::CliCall::Call(
|
||||
channel, parser->GetFormatedMethodName(method_name),
|
||||
serialized_request_proto, &serialized_response_proto, client_metadata,
|
||||
&server_initial_metadata, &server_trailing_metadata);
|
||||
channel, formatted_method_name, serialized_request_proto,
|
||||
&serialized_response_proto, client_metadata, &server_initial_metadata,
|
||||
&server_trailing_metadata);
|
||||
PrintMetadata(server_initial_metadata,
|
||||
"Received initial metadata from server:");
|
||||
PrintMetadata(server_trailing_metadata,
|
||||
|
|
|
|||
|
|
@ -172,19 +172,19 @@ grpc::string ProtoFileParser::GetFullMethodName(const grpc::string& method) {
|
|||
return method_descriptor->full_name();
|
||||
}
|
||||
|
||||
grpc::string ProtoFileParser::GetFormatedMethodName(
|
||||
grpc::string ProtoFileParser::GetFormattedMethodName(
|
||||
const grpc::string& method) {
|
||||
has_error_ = false;
|
||||
grpc::string formated_method_name = GetFullMethodName(method);
|
||||
grpc::string formatted_method_name = GetFullMethodName(method);
|
||||
if (has_error_) {
|
||||
return "";
|
||||
}
|
||||
size_t last_dot = formated_method_name.find_last_of('.');
|
||||
size_t last_dot = formatted_method_name.find_last_of('.');
|
||||
if (last_dot != grpc::string::npos) {
|
||||
formated_method_name[last_dot] = '/';
|
||||
formatted_method_name[last_dot] = '/';
|
||||
}
|
||||
formated_method_name.insert(formated_method_name.begin(), '/');
|
||||
return formated_method_name;
|
||||
formatted_method_name.insert(formatted_method_name.begin(), '/');
|
||||
return formatted_method_name;
|
||||
}
|
||||
|
||||
grpc::string ProtoFileParser::GetMessageTypeFromMethod(
|
||||
|
|
|
|||
|
|
@ -64,9 +64,9 @@ class ProtoFileParser {
|
|||
// descriptor database queries.
|
||||
grpc::string GetFullMethodName(const grpc::string& method);
|
||||
|
||||
// Formated method name is in the form of /Service/Method, it's good to be
|
||||
// Formatted method name is in the form of /Service/Method, it's good to be
|
||||
// used as the argument of Stub::Call()
|
||||
grpc::string GetFormatedMethodName(const grpc::string& method);
|
||||
grpc::string GetFormattedMethodName(const grpc::string& method);
|
||||
|
||||
grpc::string GetSerializedProtoFromMethod(
|
||||
const grpc::string& method, const grpc::string& text_format_proto,
|
||||
|
|
|
|||
|
|
@ -833,6 +833,7 @@ include/grpc++/impl/codegen/time.h \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -840,7 +841,7 @@ include/grpc/impl/codegen/atm.h \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
|
|||
|
|
@ -833,6 +833,7 @@ include/grpc++/impl/codegen/time.h \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -840,7 +841,7 @@ include/grpc/impl/codegen/atm.h \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
|
|||
|
|
@ -772,6 +772,7 @@ include/grpc/status.h \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -779,7 +780,7 @@ include/grpc/impl/codegen/atm.h \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -819,7 +820,7 @@ include/grpc/impl/codegen/atm.h \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
|
|||
|
|
@ -772,6 +772,7 @@ include/grpc/status.h \
|
|||
include/grpc/impl/codegen/byte_buffer_reader.h \
|
||||
include/grpc/impl/codegen/compression_types.h \
|
||||
include/grpc/impl/codegen/connectivity_state.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/grpc_types.h \
|
||||
include/grpc/impl/codegen/propagation_bits.h \
|
||||
include/grpc/impl/codegen/status.h \
|
||||
|
|
@ -779,7 +780,7 @@ include/grpc/impl/codegen/atm.h \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
@ -1214,7 +1215,7 @@ include/grpc/impl/codegen/atm.h \
|
|||
include/grpc/impl/codegen/atm_gcc_atomic.h \
|
||||
include/grpc/impl/codegen/atm_gcc_sync.h \
|
||||
include/grpc/impl/codegen/atm_windows.h \
|
||||
include/grpc/impl/codegen/exec_ctx_fwd.h \
|
||||
include/grpc/impl/codegen/gpr_slice.h \
|
||||
include/grpc/impl/codegen/gpr_types.h \
|
||||
include/grpc/impl/codegen/port_platform.h \
|
||||
include/grpc/impl/codegen/slice.h \
|
||||
|
|
|
|||
|
|
@ -30,15 +30,16 @@
|
|||
mkdir artifacts
|
||||
|
||||
setlocal
|
||||
cd third_party/protobuf
|
||||
cd third_party/protobuf/cmake
|
||||
|
||||
cd cmake
|
||||
cmake -G "%generator%" -Dprotobuf_BUILD_TESTS=OFF || goto :error
|
||||
mkdir build & cd build
|
||||
mkdir solution & cd solution
|
||||
cmake -G "%generator%" -Dprotobuf_BUILD_TESTS=OFF ../.. || goto :error
|
||||
endlocal
|
||||
|
||||
call vsprojects/build_plugins.bat || goto :error
|
||||
|
||||
xcopy /Y third_party\protobuf\cmake\Release\protoc.exe artifacts\ || goto :error
|
||||
xcopy /Y third_party\protobuf\cmake\build\solution\Release\protoc.exe artifacts\ || goto :error
|
||||
xcopy /Y vsprojects\Release\*_plugin.exe artifacts\ || xcopy /Y vsprojects\x64\Release\*_plugin.exe artifacts\ || goto :error
|
||||
|
||||
goto :EOF
|
||||
|
|
|
|||
|
|
@ -139,16 +139,16 @@ def message(tag, msg, explanatory_text=None, do_newline=False):
|
|||
if explanatory_text:
|
||||
print(explanatory_text)
|
||||
print('%s: %s' % (tag, msg))
|
||||
return
|
||||
sys.stdout.write('%s%s%s\x1b[%d;%dm%s\x1b[0m: %s%s' % (
|
||||
_BEGINNING_OF_LINE,
|
||||
_CLEAR_LINE,
|
||||
'\n%s' % explanatory_text if explanatory_text is not None else '',
|
||||
_COLORS[_TAG_COLOR[tag]][1],
|
||||
_COLORS[_TAG_COLOR[tag]][0],
|
||||
tag,
|
||||
msg,
|
||||
'\n' if do_newline or explanatory_text is not None else ''))
|
||||
else:
|
||||
sys.stdout.write('%s%s%s\x1b[%d;%dm%s\x1b[0m: %s%s' % (
|
||||
_BEGINNING_OF_LINE,
|
||||
_CLEAR_LINE,
|
||||
'\n%s' % explanatory_text if explanatory_text is not None else '',
|
||||
_COLORS[_TAG_COLOR[tag]][1],
|
||||
_COLORS[_TAG_COLOR[tag]][0],
|
||||
tag,
|
||||
msg,
|
||||
'\n' if do_newline or explanatory_text is not None else ''))
|
||||
sys.stdout.flush()
|
||||
except:
|
||||
pass
|
||||
|
|
@ -406,7 +406,7 @@ class Jobset(object):
|
|||
self.resultset[job.GetSpec().shortname].append(job.result)
|
||||
self._running.remove(job)
|
||||
if dead: return
|
||||
if (not self._travis):
|
||||
if not self._travis and platform_string() != 'windows':
|
||||
rstr = '' if self._remaining is None else '%d queued, ' % self._remaining
|
||||
if self._remaining is not None and self._completed > 0:
|
||||
now = time.time()
|
||||
|
|
|
|||
|
|
@ -6355,6 +6355,7 @@
|
|||
"test/core/end2end/tests/request_with_payload.c",
|
||||
"test/core/end2end/tests/resource_quota_server.c",
|
||||
"test/core/end2end/tests/server_finishes_request.c",
|
||||
"test/core/end2end/tests/short_deadlines.c",
|
||||
"test/core/end2end/tests/shutdown_finishes_calls.c",
|
||||
"test/core/end2end/tests/shutdown_finishes_tags.c",
|
||||
"test/core/end2end/tests/simple_cacheable_request.c",
|
||||
|
|
@ -6424,6 +6425,7 @@
|
|||
"test/core/end2end/tests/request_with_payload.c",
|
||||
"test/core/end2end/tests/resource_quota_server.c",
|
||||
"test/core/end2end/tests/server_finishes_request.c",
|
||||
"test/core/end2end/tests/short_deadlines.c",
|
||||
"test/core/end2end/tests/shutdown_finishes_calls.c",
|
||||
"test/core/end2end/tests/shutdown_finishes_tags.c",
|
||||
"test/core/end2end/tests/simple_cacheable_request.c",
|
||||
|
|
@ -6631,7 +6633,7 @@
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -6648,7 +6650,7 @@
|
|||
"include/grpc/impl/codegen/atm_gcc_atomic.h",
|
||||
"include/grpc/impl/codegen/atm_gcc_sync.h",
|
||||
"include/grpc/impl/codegen/atm_windows.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/gpr_slice.h",
|
||||
"include/grpc/impl/codegen/gpr_types.h",
|
||||
"include/grpc/impl/codegen/port_platform.h",
|
||||
"include/grpc/impl/codegen/slice.h",
|
||||
|
|
@ -7072,6 +7074,7 @@
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h"
|
||||
|
|
@ -7083,6 +7086,7 @@
|
|||
"include/grpc/impl/codegen/byte_buffer_reader.h",
|
||||
"include/grpc/impl/codegen/compression_types.h",
|
||||
"include/grpc/impl/codegen/connectivity_state.h",
|
||||
"include/grpc/impl/codegen/exec_ctx_fwd.h",
|
||||
"include/grpc/impl/codegen/grpc_types.h",
|
||||
"include/grpc/impl/codegen/propagation_bits.h",
|
||||
"include/grpc/impl/codegen/status.h"
|
||||
|
|
|
|||
|
|
@ -5896,6 +5896,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_census_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -6979,6 +7002,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_compress_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -8023,6 +8069,28 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_fakesec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -9004,6 +9072,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_fd_test",
|
||||
"platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -10064,6 +10155,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_full_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -10989,6 +11103,25 @@
|
|||
"linux"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"linux"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_full+pipe_test",
|
||||
"platforms": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -11994,6 +12127,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_full+trace_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -13114,6 +13270,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_http_proxy_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -14205,6 +14385,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_load_reporting_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -15325,6 +15528,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_oauth2_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -16285,6 +16512,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_proxy_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -17317,6 +17568,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_sockpair_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -18253,6 +18528,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_sockpair+trace_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -19305,6 +19604,32 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [
|
||||
"msan"
|
||||
],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_sockpair_1byte_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -20386,6 +20711,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_ssl_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -21469,6 +21817,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_ssl_cert_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -22421,6 +22792,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_ssl_proxy_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -23487,6 +23882,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_uds_test",
|
||||
"platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -24547,6 +24965,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_census_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -25607,6 +26048,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_compress_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -26573,6 +27037,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_fd_nosec_test",
|
||||
"platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -27610,6 +28097,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_full_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -28516,6 +29026,25 @@
|
|||
"linux"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"linux"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_full+pipe_nosec_test",
|
||||
"platforms": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -29498,6 +30027,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_full+trace_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -30594,6 +31146,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_http_proxy_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -31662,6 +32238,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_load_reporting_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -32590,6 +33189,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_proxy_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -33598,6 +34221,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_sockpair_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -34510,6 +35157,30 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_sockpair+trace_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -35536,6 +36207,32 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [
|
||||
"msan"
|
||||
],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_sockpair_1byte_nosec_test",
|
||||
"platforms": [
|
||||
"windows",
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
@ -36569,6 +37266,29 @@
|
|||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"short_deadlines"
|
||||
],
|
||||
"ci_platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [
|
||||
"uv"
|
||||
],
|
||||
"flaky": false,
|
||||
"language": "c",
|
||||
"name": "h2_uds_nosec_test",
|
||||
"platforms": [
|
||||
"linux",
|
||||
"mac",
|
||||
"posix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"shutdown_finishes_calls"
|
||||
|
|
|
|||
|
|
@ -83,10 +83,12 @@ Windows .exe binaries of gRPC protoc plugins.
|
|||
1. Follow instructions in `third_party\protobuf\cmake\README.md` to create Visual Studio 2013 projects for protobuf.
|
||||
```
|
||||
$ cd third_party/protobuf/cmake
|
||||
$ cmake -G "Visual Studio 12 2013"
|
||||
$ mkdir build & cd build
|
||||
$ mkdir solution & cd solution
|
||||
$ cmake -G "Visual Studio 12 2013" -Dprotobuf_BUILD_TESTS=OFF ../..
|
||||
```
|
||||
|
||||
2. Open solution `third_party\protobuf\cmake\protobuf.sln` and build it in Release mode. That will build libraries `libprotobuf.lib` and `libprotoc.lib` needed for the next step.
|
||||
2. Open solution `third_party\protobuf\cmake\build\solution\protobuf.sln` and build it in Release mode. That will build libraries `libprotobuf.lib` and `libprotoc.lib` needed for the next step.
|
||||
|
||||
3. Open solution `vsprojects\grpc_protoc_plugins.sln` and build it in Release mode. As a result, you should obtain a set of gRPC protoc plugin binaries (`grpc_cpp_plugin.exe`, `grpc_csharp_plugin.exe`, ...)
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ cd /d %~dp0
|
|||
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
|
||||
|
||||
@rem Build third_party/protobuf
|
||||
msbuild ..\third_party\protobuf\cmake\protobuf.sln /p:Configuration=Release || goto :error
|
||||
msbuild ..\third_party\protobuf\cmake\build\solution\protobuf.sln /p:Configuration=Release || goto :error
|
||||
|
||||
@rem Build the C# protoc plugins
|
||||
msbuild grpc_protoc_plugins.sln /p:Configuration=Release || goto :error
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup> <Link> <AdditionalDependencies>libprotobuf.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
|
||||
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup> <Link> <AdditionalDependencies>libprotobuf.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\build\solution\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
|
||||
|
|
@ -1 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup> <ClCompile> <DisableSpecificWarnings>4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <AdditionalDependencies>libprotoc.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
|
||||
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup> <ClCompile> <DisableSpecificWarnings>4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <AdditionalDependencies>libprotoc.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\build\solution\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -338,7 +339,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -333,6 +333,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -354,7 +357,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -185,7 +186,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -126,6 +126,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -147,7 +150,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -338,7 +339,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -318,6 +318,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -339,7 +342,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -279,6 +279,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -286,7 +287,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -684,6 +684,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -705,7 +708,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -166,7 +167,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -435,6 +435,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -456,7 +459,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -270,6 +270,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -277,7 +278,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -600,6 +600,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -621,7 +624,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -191,6 +191,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -198,7 +199,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
|
|
@ -114,6 +114,9 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -135,7 +138,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h">
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h">
|
||||
<Filter>include\grpc\impl\codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h">
|
||||
|
|
|
|||
|
|
@ -191,6 +191,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
|
||||
|
|
@ -198,7 +199,7 @@
|
|||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_windows.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\exec_ctx_fwd.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_slice.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\gpr_types.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
|
||||
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue