public virtual Task Egress(IAsyncStreamReader<EgressResponse> requestStream, IServerStreamWriter<EgressRequest> responseStream, ServerCallContext context)
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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThis document provides reference documentation for the \u003ccode\u003eTether.TetherBase\u003c/code\u003e class within the Google Cloud Apigee Connect v1 API.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eTether.TetherBase\u003c/code\u003e class is the base for server-side implementations of the Tether service, inheriting from the \u003ccode\u003eobject\u003c/code\u003e class.\u003c/p\u003e\n"],["\u003cp\u003eThe API offers a method called \u003ccode\u003eEgress\u003c/code\u003e, which facilitates streaming of egress requests and responses, utilizing streaming to invert the client-server gRPC relationship.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of this API is version 2.4.0, but various previous versions, ranging from 1.0.0 to 2.3.0, are also available.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eEgress\u003c/code\u003e method uses \u003ccode\u003eIAsyncStreamReader\u003c/code\u003e and \u003ccode\u003eIServerStreamWriter\u003c/code\u003e for handling request and response streams, respectively, and requires a \u003ccode\u003eServerCallContext\u003c/code\u003e for managing the server-side call.\u003c/p\u003e\n"]]],[],null,["# Apigee Connect v1 API - Class Tether.TetherBase (2.4.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.4.0 (latest)](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/latest/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/2.3.0/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase)\n- [2.2.0](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/2.2.0/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase)\n- [2.1.0](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/2.1.0/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase)\n- [2.0.0](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/2.0.0/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase)\n- [1.1.0](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/1.1.0/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase)\n- [1.0.0](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/1.0.0/Google.Cloud.ApigeeConnect.V1.Tether.TetherBase) \n\n [BindServiceMethod(typeof(Tether), \"BindService\")]\n public abstract class Tether.TetherBase\n\nReference documentation and code samples for the Apigee Connect v1 API class Tether.TetherBase.\n\nBase class for server-side implementations of Tether \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e Tether.TetherBase \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.ApigeeConnect.V1](/dotnet/docs/reference/Google.Cloud.ApigeeConnect.V1/latest/Google.Cloud.ApigeeConnect.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.ApigeeConnect.V1.dll\n\nMethods\n-------\n\n### Egress(IAsyncStreamReader\\\u003cEgressResponse\\\u003e, IServerStreamWriter\\\u003cEgressRequest\\\u003e, ServerCallContext)\n\n public virtual Task Egress(IAsyncStreamReader\u003cEgressResponse\u003e requestStream, IServerStreamWriter\u003cEgressRequest\u003e responseStream, ServerCallContext context)\n\nEgress streams egress requests and responses. Logically, this is not\nactually a streaming request, but uses streaming as a mechanism to flip\nthe client-server relationship of gRPC so that the server can act as a\nclient.\nThe listener, the RPC server, accepts connections from the dialer,\nthe RPC client.\nThe listener streams http requests and the dialer streams http responses."]]