From 7a3ac62d9cdd1392b06a4bb94c57a4828ec0b32e Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Thu, 23 Jul 2015 18:40:48 -0700 Subject: [PATCH] explicitly convert deadline for server handlers to realtime --- src/csharp/Grpc.Core/Internal/ServerCallHandler.cs | 4 +++- src/csharp/Grpc.Core/Internal/Timespec.cs | 11 +++++++++++ src/csharp/ext/grpc_csharp_ext.c | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs index 9bbcb17266..93e1c0b294 100644 --- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs +++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs @@ -297,8 +297,10 @@ namespace Grpc.Core.Internal public static ServerCallContext NewContext(ServerRpcNew newRpc, CancellationToken cancellationToken) { + DateTime realtimeDeadline = newRpc.Deadline.ToClockType(GPRClockType.Realtime).ToDateTime(); + return new ServerCallContext( - newRpc.Method, newRpc.Host, newRpc.Deadline.ToDateTime(), + newRpc.Method, newRpc.Host, realtimeDeadline, newRpc.RequestMetadata, cancellationToken); } } diff --git a/src/csharp/Grpc.Core/Internal/Timespec.cs b/src/csharp/Grpc.Core/Internal/Timespec.cs index 0e58e2048d..e83d21f4a4 100644 --- a/src/csharp/Grpc.Core/Internal/Timespec.cs +++ b/src/csharp/Grpc.Core/Internal/Timespec.cs @@ -57,6 +57,9 @@ namespace Grpc.Core.Internal [DllImport("grpc_csharp_ext.dll")] static extern Timespec gprsharp_inf_past(GPRClockType clockType); + [DllImport("grpc_csharp_ext.dll")] + static extern Timespec gprsharp_convert_clock_type(Timespec t, GPRClockType targetClock); + [DllImport("grpc_csharp_ext.dll")] static extern int gprsharp_sizeof_timespec(); @@ -131,6 +134,14 @@ namespace Grpc.Core.Internal return tv_nsec; } } + + /// <summary> + /// Converts the timespec to desired clock type. + /// </summary> + public Timespec ToClockType(GPRClockType targetClock) + { + return gprsharp_convert_clock_type(this, targetClock); + } /// <summary> /// Converts Timespec to DateTime. diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c index 1cc44ebda7..7e30a84a62 100644 --- a/src/csharp/ext/grpc_csharp_ext.c +++ b/src/csharp/ext/grpc_csharp_ext.c @@ -445,6 +445,10 @@ GPR_EXPORT gpr_timespec GPR_CALLTYPE gprsharp_inf_past(gpr_clock_type clock_type return gpr_inf_past(clock_type); } +GPR_EXPORT gpr_timespec GPR_CALLTYPE gprsharp_convert_clock_type(gpr_timespec t, gpr_clock_type target_clock) { + return gpr_convert_clock_type(t, target_clock); +} + GPR_EXPORT gpr_int32 GPR_CALLTYPE gprsharp_sizeof_timespec(void) { return sizeof(gpr_timespec); } -- GitLab