diff --git a/cbits/grpc_haskell.c b/cbits/grpc_haskell.c index 72a9a44..27c65cd 100644 --- a/cbits/grpc_haskell.c +++ b/cbits/grpc_haskell.c @@ -11,3 +11,14 @@ grpc_event grpc_completion_queue_pluck_(grpc_completion_queue *cq, void *tag, void *reserved) { return grpc_completion_queue_pluck(cq, tag, *deadline, reserved); } + +grpc_call *grpc_channel_create_call_(grpc_channel *channel, + grpc_call *parent_call, + uint32_t propagation_mask, + grpc_completion_queue *completion_queue, + const char *method, const char *host, + gpr_timespec *deadline, void *reserved) { + return grpc_channel_create_call(channel, parent_call, propagation_mask, + completion_queue, method, host, *deadline, + reserved); +} diff --git a/grpc-haskell.cabal b/grpc-haskell.cabal index 75b3283..10d0b65 100644 --- a/grpc-haskell.cabal +++ b/grpc-haskell.cabal @@ -39,7 +39,8 @@ library test-suite test build-depends: base - , QuickCheck + , QuickCheck + , grpc-haskell default-language: Haskell2010 ghc-options: -Wall -fwarn-incomplete-patterns -O2 -threaded -rtsopts hs-source-dirs: tests diff --git a/include/grpc_haskell.h b/include/grpc_haskell.h index 2c206e3..b25d364 100644 --- a/include/grpc_haskell.h +++ b/include/grpc_haskell.h @@ -7,6 +7,8 @@ grpc_event *grpc_completion_queue_pluck_(grpc_completion_queue *cq, void *tag, gpr_timespec *deadline); grpc_call *grpc_channel_create_call_(grpc_channel *channel, - grpc_completion_queue *completion_queue, - const char *method, const char *host, - gpr_timespec *deadline); + grpc_call *parent_call, + uint32_t propagation_mask, + grpc_completion_queue *completion_queue, + const char *method, const char *host, + gpr_timespec *deadline, void *reserved); diff --git a/src/Network/GRPC/Core.chs b/src/Network/GRPC/Core.chs index fa5a1cc..92b2ddf 100644 --- a/src/Network/GRPC/Core.chs +++ b/src/Network/GRPC/Core.chs @@ -44,7 +44,7 @@ data ArgValue = ArgString String | ArgInt Int {#pointer *grpc_op as Op newtype #} {#fun grpc_init as ^ {} -> `()'#} -{#fun grpc_shutdown as ^ {} -> `()'#} +{#fun grpc_shutdown as ^ {} -> `()'#} {#fun grpc_completion_queue_create as ^ {`Ptr ()'} -> `CompletionQueue'#} @@ -54,7 +54,7 @@ data ArgValue = ArgString String | ArgInt Int {#fun grpc_completion_queue_shutdown as ^ {`CompletionQueue'} -> `()'#} {#fun grpc_completion_queue_destroy as ^ {`CompletionQueue'} -> `()'#} -{#fun grpc_channel_create_call_ as ^ {`Channel', `CompletionQueue', `String', `String', `CTimeSpecPtr'} -> `Call'#} +{#fun grpc_channel_create_call_ as ^ {`Channel', `Call', `Int', `CompletionQueue', `String', `String', `CTimeSpecPtr', `Ptr ()'} -> `Call'#} {#fun grpc_insecure_channel_create as ^ {`String', `ChannelArgsPtr', `Ptr ()'} -> `Channel'#} {#fun grpc_channel_destroy as ^ {`Channel'} -> `()'#} diff --git a/src/Network/GRPC/Core/Constants.hsc b/src/Network/GRPC/Core/Constants.hsc index eea2307..0ff3b59 100644 --- a/src/Network/GRPC/Core/Constants.hsc +++ b/src/Network/GRPC/Core/Constants.hsc @@ -1,6 +1,7 @@ module Network.GRPC.Core.Constants where #include "grpc/grpc.h" +#include "grpc/impl/codegen/propagation_bits.h" argEnableCensus :: Int argEnableCensus = #const GRPC_ARG_ENABLE_CENSUS @@ -16,3 +17,18 @@ writeBufferHint = #const GRPC_WRITE_BUFFER_HINT writeNoCompress :: Int writeNoCompress = #const GRPC_WRITE_NO_COMPRESS + +newtype PropagationMask = PropagationMask {unPropagationMask :: Int} + deriving (Show, Eq, Ord) + +propagateDeadline :: Int +propagateDeadline = #const GRPC_PROPAGATE_DEADLINE + +propagateCensusStatsContext :: Int +propagateCensusStatsContext = #const GRPC_PROPAGATE_CENSUS_STATS_CONTEXT + +propagateCensusTracingContext :: Int +propagateCensusTracingContext = #const GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT + +propagateCancellation :: Int +propagateCancellation = #const GRPC_PROPAGATE_CANCELLATION