Resources are serialized as their URN, ID, and package version. Each Pulumi package is expected to register itself with the SDK. The package will be invoked to construct appropriate instances of rehydrated resources. Packages are distinguished by their name and their version. This is the foundation of cross-process resources. Related to #2430. Co-authored-by: Mikhail Shilkov <github@mikhail.io> Co-authored-by: Luke Hoban <luke@pulumi.com> Co-authored-by: Levi Blackstone <levi@pulumi.com>
37 lines
1.6 KiB
C#
37 lines
1.6 KiB
C#
// Copyright 2016-2020, Pulumi Corporation
|
|
|
|
using System.Threading.Tasks;
|
|
using System.Collections.Generic;
|
|
using Grpc.Core;
|
|
using Pulumirpc;
|
|
|
|
namespace Pulumi
|
|
{
|
|
internal class GrpcMonitor : IMonitor
|
|
{
|
|
private readonly ResourceMonitor.ResourceMonitorClient _client;
|
|
|
|
public GrpcMonitor(string monitor)
|
|
{
|
|
// maxRpcMessageSize raises the gRPC Max Message size from `4194304` (4mb) to `419430400` (400mb)
|
|
var maxRpcMessageSize = 400 * 1024 * 1024;
|
|
var grpcChannelOptions = new List<ChannelOption> { new ChannelOption(ChannelOptions.MaxReceiveMessageLength, maxRpcMessageSize)};
|
|
this._client = new ResourceMonitor.ResourceMonitorClient(new Channel(monitor, ChannelCredentials.Insecure, grpcChannelOptions));
|
|
}
|
|
|
|
public async Task<SupportsFeatureResponse> SupportsFeatureAsync(SupportsFeatureRequest request)
|
|
=> await this._client.SupportsFeatureAsync(request);
|
|
|
|
public async Task<InvokeResponse> InvokeAsync(InvokeRequest request)
|
|
=> await this._client.InvokeAsync(request);
|
|
|
|
public async Task<ReadResourceResponse> ReadResourceAsync(Resource resource, ReadResourceRequest request)
|
|
=> await this._client.ReadResourceAsync(request);
|
|
|
|
public async Task<RegisterResourceResponse> RegisterResourceAsync(Resource resource, RegisterResourceRequest request)
|
|
=> await this._client.RegisterResourceAsync(request);
|
|
|
|
public async Task RegisterResourceOutputsAsync(RegisterResourceOutputsRequest request)
|
|
=> await this._client.RegisterResourceOutputsAsync(request);
|
|
}
|
|
}
|