public abstract class TetherClient
Reference documentation and code samples for the Apigee Connect v1 API class TetherClient.
Tether client wrapper, for convenient use.
Derived Types
Namespace
Google.Cloud.ApigeeConnect.V1Assembly
Google.Cloud.ApigeeConnect.V1.dll
Remarks
Tether provides a way for the control plane to send HTTP API requests to services in data planes that runs in a remote datacenter without requiring customers to open firewalls on their runtime plane.
Properties
DefaultEndpoint
public static string DefaultEndpoint { get; }
The default endpoint for the Tether service, which is a host of "apigeeconnect.googleapis.com" and a port of 443.
Property Value | |
---|---|
Type | Description |
string |
DefaultScopes
public static IReadOnlyList<string> DefaultScopes { get; }
The default Tether scopes.
Property Value | |
---|---|
Type | Description |
IReadOnlyListstring |
The default Tether scopes are:
GrpcClient
public virtual Tether.TetherClient GrpcClient { get; }
The underlying gRPC Tether client
Property Value | |
---|---|
Type | Description |
TetherTetherClient |
ServiceMetadata
public static ServiceMetadata ServiceMetadata { get; }
The service metadata associated with this client type.
Property Value | |
---|---|
Type | Description |
ServiceMetadata |
Methods
Create()
public static TetherClient Create()
Synchronously creates a TetherClient using the default credentials, endpoint and settings. To specify custom credentials or other settings, use TetherClientBuilder.
Returns | |
---|---|
Type | Description |
TetherClient | The created TetherClient. |
CreateAsync(CancellationToken)
public static Task<TetherClient> CreateAsync(CancellationToken cancellationToken = default)
Asynchronously creates a TetherClient using the default credentials, endpoint and settings. To specify custom credentials or other settings, use TetherClientBuilder.
Parameter | |
---|---|
Name | Description |
cancellationToken | CancellationToken The CancellationToken to use while creating the client. |
Returns | |
---|---|
Type | Description |
TaskTetherClient | The task representing the created TetherClient. |
Egress(CallSettings, BidirectionalStreamingSettings)
public virtual TetherClient.EgressStream Egress(CallSettings callSettings = null, BidirectionalStreamingSettings streamingSettings = null)
Egress streams egress requests and responses. Logically, this is not actually a streaming request, but uses streaming as a mechanism to flip the client-server relationship of gRPC so that the server can act as a client. The listener, the RPC server, accepts connections from the dialer, the RPC client. The listener streams http requests and the dialer streams http responses.
Parameters | |
---|---|
Name | Description |
callSettings | CallSettings If not null, applies overrides to this RPC call. |
streamingSettings | BidirectionalStreamingSettings If not null, applies streaming overrides to this RPC call. |
Returns | |
---|---|
Type | Description |
TetherClientEgressStream | The client-server stream. |
// Create client
gcav::TetherClient tetherClient = gcav::TetherClient.Create();
// Initialize streaming call, retrieving the stream object
using gcav::TetherClient.EgressStream response = tetherClient.Egress();
// Sending requests and retrieving responses can be arbitrarily interleaved
// Exact sequence will depend on client/server behavior
// Create task to do something with responses from server
Task responseHandlerTask = Task.Run(async () =>
{
// Note that C# 8 code can use await foreach
AsyncResponseStream<gcav::EgressRequest> responseStream = response.GetResponseStream();
while (await responseStream.MoveNextAsync())
{
gcav::EgressRequest responseItem = responseStream.Current;
// Do something with streamed response
}
// The response stream has completed
});
// Send requests to the server
bool done = false;
while (!done)
{
// Initialize a request
gcav::EgressResponse request = new gcav::EgressResponse
{
Id = "",
HttpResponse = new gcav::HttpResponse(),
Status = new Status(),
Project = "",
TraceId = "",
Endpoint = gcav::TetherEndpoint.Unspecified,
Name = "",
};
// Stream a request to the server
await response.WriteAsync(request);
// Set "done" to true when sending requests is complete
}
// Complete writing requests to the stream
await response.WriteCompleteAsync();
// Await the response handler
// This will complete once all server responses have been processed
await responseHandlerTask;
ShutdownDefaultChannelsAsync()
public static Task ShutdownDefaultChannelsAsync()
Shuts down any channels automatically created by Create() and CreateAsync(CancellationToken). Channels which weren't automatically created are not affected.
Returns | |
---|---|
Type | Description |
Task | A task representing the asynchronous shutdown operation. |
After calling this method, further calls to Create() and CreateAsync(CancellationToken) will create new channels, which could in turn be shut down by another call to this method.