|
|
|
@ -47,16 +47,14 @@ namespace Grpc.Core.Internal |
|
|
|
|
static readonly NativeMethods Native = NativeMethods.Get(); |
|
|
|
|
|
|
|
|
|
const uint GRPC_WRITE_BUFFER_HINT = 1; |
|
|
|
|
CompletionRegistry completionRegistry; |
|
|
|
|
CompletionQueueSafeHandle completionQueue; |
|
|
|
|
|
|
|
|
|
private CallSafeHandle() |
|
|
|
|
{ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void Initialize(CompletionRegistry completionRegistry, CompletionQueueSafeHandle completionQueue) |
|
|
|
|
public void Initialize(CompletionQueueSafeHandle completionQueue) |
|
|
|
|
{ |
|
|
|
|
this.completionRegistry = completionRegistry; |
|
|
|
|
this.completionQueue = completionQueue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -70,7 +68,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); |
|
|
|
|
Native.grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) |
|
|
|
|
.CheckOk(); |
|
|
|
|
} |
|
|
|
@ -90,7 +88,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); |
|
|
|
|
Native.grpcsharp_call_start_client_streaming(this, ctx, metadataArray).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -100,7 +98,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); |
|
|
|
|
Native.grpcsharp_call_start_server_streaming(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -110,7 +108,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); |
|
|
|
|
Native.grpcsharp_call_start_duplex_streaming(this, ctx, metadataArray).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -120,7 +118,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
Native.grpcsharp_call_send_message(this, ctx, payload, new UIntPtr((ulong)payload.Length), writeFlags, sendEmptyInitialMetadata).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -130,7 +128,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
Native.grpcsharp_call_send_close_from_client(this, ctx).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -142,7 +140,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
var optionalPayloadLength = optionalPayload != null ? new UIntPtr((ulong)optionalPayload.Length) : UIntPtr.Zero; |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
Native.grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata, |
|
|
|
|
optionalPayload, optionalPayloadLength, writeFlags).CheckOk(); |
|
|
|
|
} |
|
|
|
@ -153,7 +151,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedMessage())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedMessage())); |
|
|
|
|
Native.grpcsharp_call_recv_message(this, ctx).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -163,7 +161,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedInitialMetadata())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedInitialMetadata())); |
|
|
|
|
Native.grpcsharp_call_recv_initial_metadata(this, ctx).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -173,7 +171,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedCloseOnServerCancelled())); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedCloseOnServerCancelled())); |
|
|
|
|
Native.grpcsharp_call_start_serverside(this, ctx).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -183,7 +181,7 @@ namespace Grpc.Core.Internal |
|
|
|
|
using (completionQueue.NewScope()) |
|
|
|
|
{ |
|
|
|
|
var ctx = BatchContextSafeHandle.Create(); |
|
|
|
|
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
completionQueue.CompletionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); |
|
|
|
|
Native.grpcsharp_call_send_initial_metadata(this, ctx, metadataArray).CheckOk(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|