aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples/csharp/route_guide/RouteGuide
diff options
context:
space:
mode:
authorGravatar Jorge Canizales <jcanizales@google.com>2016-06-24 12:48:43 -0700
committerGravatar Jorge Canizales <jcanizales@google.com>2016-06-24 12:48:43 -0700
commit8a556b7fe34355faf6573d8958cdb0730dd41956 (patch)
tree06ca945c0cb9d31c640b13eda3fcb1de4b084aff /examples/csharp/route_guide/RouteGuide
parentfa70dacf95b93486b7dfe0c21ada90d75a5d5bcd (diff)
parent0140f7c9e6c20fe78035d9635a3f5725d51ad35a (diff)
Merge master into let-invalidate-channels
Had to manually resolve import conflicts in InteropTests.m To be fair, the merge algorithm should have been able to do it.
Diffstat (limited to 'examples/csharp/route_guide/RouteGuide')
-rw-r--r--examples/csharp/route_guide/RouteGuide/RouteGuide.csproj10
-rw-r--r--examples/csharp/route_guide/RouteGuide/RouteGuideGrpc.cs368
-rw-r--r--examples/csharp/route_guide/RouteGuide/packages.config5
3 files changed, 332 insertions, 51 deletions
diff --git a/examples/csharp/route_guide/RouteGuide/RouteGuide.csproj b/examples/csharp/route_guide/RouteGuide/RouteGuide.csproj
index eba1226b90..4f7222ebba 100644
--- a/examples/csharp/route_guide/RouteGuide/RouteGuide.csproj
+++ b/examples/csharp/route_guide/RouteGuide/RouteGuide.csproj
@@ -11,7 +11,7 @@
<AssemblyName>RouteGuide</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
- <NuGetPackageImportStamp>e1e648e7</NuGetPackageImportStamp>
+ <NuGetPackageImportStamp>0a9fcb7a</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -35,9 +35,9 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0-beta2\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath>
</Reference>
- <Reference Include="Grpc.Core, Version=0.13.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
+ <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\Grpc.Core.0.13.1\lib\net45\Grpc.Core.dll</HintPath>
+ <HintPath>..\packages\Grpc.Core.0.14.0\lib\net45\Grpc.Core.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@@ -74,12 +74,12 @@
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <Import Project="..\packages\grpc.native.csharp.0.13.1\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets" Condition="Exists('..\packages\grpc.native.csharp.0.13.1\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets')" />
+ <Import Project="..\packages\Grpc.Core.0.14.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.0.14.0\build\net45\Grpc.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
- <Error Condition="!Exists('..\packages\grpc.native.csharp.0.13.1\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.native.csharp.0.13.1\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets'))" />
+ <Error Condition="!Exists('..\packages\Grpc.Core.0.14.0\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.0.14.0\build\net45\Grpc.Core.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/examples/csharp/route_guide/RouteGuide/RouteGuideGrpc.cs b/examples/csharp/route_guide/RouteGuide/RouteGuideGrpc.cs
index 66d1c07978..a59906d9c1 100644
--- a/examples/csharp/route_guide/RouteGuide/RouteGuideGrpc.cs
+++ b/examples/csharp/route_guide/RouteGuide/RouteGuideGrpc.cs
@@ -1,5 +1,35 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: route_guide.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
#region Designer generated code
using System;
@@ -8,6 +38,9 @@ using System.Threading.Tasks;
using Grpc.Core;
namespace Routeguide {
+ /// <summary>
+ /// Interface exported by the server.
+ /// </summary>
public static class RouteGuide
{
static readonly string __ServiceName = "routeguide.RouteGuide";
@@ -46,96 +79,339 @@ namespace Routeguide {
__Marshaller_RouteNote,
__Marshaller_RouteNote);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Routeguide.RouteGuideReflection.Descriptor.Services[0]; }
}
- // client interface
+ /// <summary>Client for RouteGuide</summary>
+ [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IRouteGuideClient
{
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
global::Routeguide.Feature GetFeature(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
global::Routeguide.Feature GetFeature(global::Routeguide.Point request, CallOptions options);
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, CallOptions options);
+ /// <summary>
+ /// A server-to-client streaming RPC.
+ ///
+ /// Obtains the Features available within the given Rectangle. Results are
+ /// streamed rather than returned at once (e.g. in a response message with a
+ /// repeated field), as the rectangle may cover a large area and contain a
+ /// huge number of features.
+ /// </summary>
AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A server-to-client streaming RPC.
+ ///
+ /// Obtains the Features available within the given Rectangle. Results are
+ /// streamed rather than returned at once (e.g. in a response message with a
+ /// repeated field), as the rectangle may cover a large area and contain a
+ /// huge number of features.
+ /// </summary>
AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, CallOptions options);
+ /// <summary>
+ /// A client-to-server streaming RPC.
+ ///
+ /// Accepts a stream of Points on a route being traversed, returning a
+ /// RouteSummary when traversal is completed.
+ /// </summary>
AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A client-to-server streaming RPC.
+ ///
+ /// Accepts a stream of Points on a route being traversed, returning a
+ /// RouteSummary when traversal is completed.
+ /// </summary>
AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(CallOptions options);
+ /// <summary>
+ /// A Bidirectional streaming RPC.
+ ///
+ /// Accepts a stream of RouteNotes sent while a route is being traversed,
+ /// while receiving other RouteNotes (e.g. from other users).
+ /// </summary>
AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A Bidirectional streaming RPC.
+ ///
+ /// Accepts a stream of RouteNotes sent while a route is being traversed,
+ /// while receiving other RouteNotes (e.g. from other users).
+ /// </summary>
AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of RouteGuide</summary>
+ [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IRouteGuide
{
- Task<global::Routeguide.Feature> GetFeature(global::Routeguide.Point request, ServerCallContext context);
- Task ListFeatures(global::Routeguide.Rectangle request, IServerStreamWriter<global::Routeguide.Feature> responseStream, ServerCallContext context);
- Task<global::Routeguide.RouteSummary> RecordRoute(IAsyncStreamReader<global::Routeguide.Point> requestStream, ServerCallContext context);
- Task RouteChat(IAsyncStreamReader<global::Routeguide.RouteNote> requestStream, IServerStreamWriter<global::Routeguide.RouteNote> responseStream, ServerCallContext context);
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Routeguide.Feature> GetFeature(global::Routeguide.Point request, ServerCallContext context);
+ /// <summary>
+ /// A server-to-client streaming RPC.
+ ///
+ /// Obtains the Features available within the given Rectangle. Results are
+ /// streamed rather than returned at once (e.g. in a response message with a
+ /// repeated field), as the rectangle may cover a large area and contain a
+ /// huge number of features.
+ /// </summary>
+ global::System.Threading.Tasks.Task ListFeatures(global::Routeguide.Rectangle request, IServerStreamWriter<global::Routeguide.Feature> responseStream, ServerCallContext context);
+ /// <summary>
+ /// A client-to-server streaming RPC.
+ ///
+ /// Accepts a stream of Points on a route being traversed, returning a
+ /// RouteSummary when traversal is completed.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Routeguide.RouteSummary> RecordRoute(IAsyncStreamReader<global::Routeguide.Point> requestStream, ServerCallContext context);
+ /// <summary>
+ /// A Bidirectional streaming RPC.
+ ///
+ /// Accepts a stream of RouteNotes sent while a route is being traversed,
+ /// while receiving other RouteNotes (e.g. from other users).
+ /// </summary>
+ global::System.Threading.Tasks.Task RouteChat(IAsyncStreamReader<global::Routeguide.RouteNote> requestStream, IServerStreamWriter<global::Routeguide.RouteNote> responseStream, ServerCallContext context);
}
- // client stub
- public class RouteGuideClient : ClientBase, IRouteGuideClient
+ /// <summary>Base class for server-side implementations of RouteGuide</summary>
+ public abstract class RouteGuideBase
+ {
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Routeguide.Feature> GetFeature(global::Routeguide.Point request, ServerCallContext context)
+ {
+ throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ }
+
+ /// <summary>
+ /// A server-to-client streaming RPC.
+ ///
+ /// Obtains the Features available within the given Rectangle. Results are
+ /// streamed rather than returned at once (e.g. in a response message with a
+ /// repeated field), as the rectangle may cover a large area and contain a
+ /// huge number of features.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task ListFeatures(global::Routeguide.Rectangle request, IServerStreamWriter<global::Routeguide.Feature> responseStream, ServerCallContext context)
+ {
+ throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ }
+
+ /// <summary>
+ /// A client-to-server streaming RPC.
+ ///
+ /// Accepts a stream of Points on a route being traversed, returning a
+ /// RouteSummary when traversal is completed.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Routeguide.RouteSummary> RecordRoute(IAsyncStreamReader<global::Routeguide.Point> requestStream, ServerCallContext context)
+ {
+ throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ }
+
+ /// <summary>
+ /// A Bidirectional streaming RPC.
+ ///
+ /// Accepts a stream of RouteNotes sent while a route is being traversed,
+ /// while receiving other RouteNotes (e.g. from other users).
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task RouteChat(IAsyncStreamReader<global::Routeguide.RouteNote> requestStream, IServerStreamWriter<global::Routeguide.RouteNote> responseStream, ServerCallContext context)
+ {
+ throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ }
+
+ }
+
+ /// <summary>Client for RouteGuide</summary>
+ #pragma warning disable 0618
+ public class RouteGuideClient : ClientBase<RouteGuideClient>, IRouteGuideClient
+ #pragma warning restore 0618
{
public RouteGuideClient(Channel channel) : base(channel)
{
}
- public global::Routeguide.Feature GetFeature(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public RouteGuideClient(CallInvoker callInvoker) : base(callInvoker)
+ {
+ }
+ ///<summary>Protected parameterless constructor to allow creation of test doubles.</summary>
+ protected RouteGuideClient() : base()
+ {
+ }
+ ///<summary>Protected constructor to allow creation of configured clients.</summary>
+ protected RouteGuideClient(ClientBaseConfiguration configuration) : base(configuration)
{
- var call = CreateCall(__Method_GetFeature, new CallOptions(headers, deadline, cancellationToken));
- return Calls.BlockingUnaryCall(call, request);
}
- public global::Routeguide.Feature GetFeature(global::Routeguide.Point request, CallOptions options)
+
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
+ public virtual global::Routeguide.Feature GetFeature(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- var call = CreateCall(__Method_GetFeature, options);
- return Calls.BlockingUnaryCall(call, request);
+ return GetFeature(request, new CallOptions(headers, deadline, cancellationToken));
}
- public AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
+ public virtual global::Routeguide.Feature GetFeature(global::Routeguide.Point request, CallOptions options)
{
- var call = CreateCall(__Method_GetFeature, new CallOptions(headers, deadline, cancellationToken));
- return Calls.AsyncUnaryCall(call, request);
+ return CallInvoker.BlockingUnaryCall(__Method_GetFeature, null, options, request);
}
- public AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, CallOptions options)
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
+ public virtual AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- var call = CreateCall(__Method_GetFeature, options);
- return Calls.AsyncUnaryCall(call, request);
+ return GetFeatureAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
- public AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ /// <summary>
+ /// A simple RPC.
+ ///
+ /// Obtains the feature at a given position.
+ ///
+ /// A feature with an empty name is returned if there's no feature at the given
+ /// position.
+ /// </summary>
+ public virtual AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, CallOptions options)
{
- var call = CreateCall(__Method_ListFeatures, new CallOptions(headers, deadline, cancellationToken));
- return Calls.AsyncServerStreamingCall(call, request);
+ return CallInvoker.AsyncUnaryCall(__Method_GetFeature, null, options, request);
}
- public AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, CallOptions options)
+ /// <summary>
+ /// A server-to-client streaming RPC.
+ ///
+ /// Obtains the Features available within the given Rectangle. Results are
+ /// streamed rather than returned at once (e.g. in a response message with a
+ /// repeated field), as the rectangle may cover a large area and contain a
+ /// huge number of features.
+ /// </summary>
+ public virtual AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- var call = CreateCall(__Method_ListFeatures, options);
- return Calls.AsyncServerStreamingCall(call, request);
+ return ListFeatures(request, new CallOptions(headers, deadline, cancellationToken));
}
- public AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ /// <summary>
+ /// A server-to-client streaming RPC.
+ ///
+ /// Obtains the Features available within the given Rectangle. Results are
+ /// streamed rather than returned at once (e.g. in a response message with a
+ /// repeated field), as the rectangle may cover a large area and contain a
+ /// huge number of features.
+ /// </summary>
+ public virtual AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, CallOptions options)
{
- var call = CreateCall(__Method_RecordRoute, new CallOptions(headers, deadline, cancellationToken));
- return Calls.AsyncClientStreamingCall(call);
+ return CallInvoker.AsyncServerStreamingCall(__Method_ListFeatures, null, options, request);
}
- public AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(CallOptions options)
+ /// <summary>
+ /// A client-to-server streaming RPC.
+ ///
+ /// Accepts a stream of Points on a route being traversed, returning a
+ /// RouteSummary when traversal is completed.
+ /// </summary>
+ public virtual AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- var call = CreateCall(__Method_RecordRoute, options);
- return Calls.AsyncClientStreamingCall(call);
+ return RecordRoute(new CallOptions(headers, deadline, cancellationToken));
}
- public AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ /// <summary>
+ /// A client-to-server streaming RPC.
+ ///
+ /// Accepts a stream of Points on a route being traversed, returning a
+ /// RouteSummary when traversal is completed.
+ /// </summary>
+ public virtual AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(CallOptions options)
{
- var call = CreateCall(__Method_RouteChat, new CallOptions(headers, deadline, cancellationToken));
- return Calls.AsyncDuplexStreamingCall(call);
+ return CallInvoker.AsyncClientStreamingCall(__Method_RecordRoute, null, options);
}
- public AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(CallOptions options)
+ /// <summary>
+ /// A Bidirectional streaming RPC.
+ ///
+ /// Accepts a stream of RouteNotes sent while a route is being traversed,
+ /// while receiving other RouteNotes (e.g. from other users).
+ /// </summary>
+ public virtual AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- var call = CreateCall(__Method_RouteChat, options);
- return Calls.AsyncDuplexStreamingCall(call);
+ return RouteChat(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// A Bidirectional streaming RPC.
+ ///
+ /// Accepts a stream of RouteNotes sent while a route is being traversed,
+ /// while receiving other RouteNotes (e.g. from other users).
+ /// </summary>
+ public virtual AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(CallOptions options)
+ {
+ return CallInvoker.AsyncDuplexStreamingCall(__Method_RouteChat, null, options);
+ }
+ protected override RouteGuideClient NewInstance(ClientBaseConfiguration configuration)
+ {
+ return new RouteGuideClient(configuration);
+ }
+ }
+
+ /// <summary>Creates a new client for RouteGuide</summary>
+ public static RouteGuideClient NewClient(Channel channel)
+ {
+ return new RouteGuideClient(channel);
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IRouteGuide serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_GetFeature, serviceImpl.GetFeature)
@@ -144,10 +420,16 @@ namespace Routeguide {
.AddMethod(__Method_RouteChat, serviceImpl.RouteChat).Build();
}
- // creates a new client
- public static RouteGuideClient NewClient(Channel channel)
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
+ public static ServerServiceDefinition BindService(RouteGuideBase serviceImpl)
+ #pragma warning restore 0618
{
- return new RouteGuideClient(channel);
+ return ServerServiceDefinition.CreateBuilder(__ServiceName)
+ .AddMethod(__Method_GetFeature, serviceImpl.GetFeature)
+ .AddMethod(__Method_ListFeatures, serviceImpl.ListFeatures)
+ .AddMethod(__Method_RecordRoute, serviceImpl.RecordRoute)
+ .AddMethod(__Method_RouteChat, serviceImpl.RouteChat).Build();
}
}
diff --git a/examples/csharp/route_guide/RouteGuide/packages.config b/examples/csharp/route_guide/RouteGuide/packages.config
index c79aef1165..b16bfedd31 100644
--- a/examples/csharp/route_guide/RouteGuide/packages.config
+++ b/examples/csharp/route_guide/RouteGuide/packages.config
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Google.Protobuf" version="3.0.0-beta2" targetFramework="net45" />
- <package id="Grpc" version="0.13.1" targetFramework="net45" />
- <package id="Grpc.Core" version="0.13.1" targetFramework="net45" />
- <package id="grpc.native.csharp" version="0.13.1" targetFramework="net45" />
+ <package id="Grpc" version="0.14.0" targetFramework="net45" />
+ <package id="Grpc.Core" version="0.14.0" targetFramework="net45" />
<package id="Ix-Async" version="1.2.5" targetFramework="net45" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
</packages> \ No newline at end of file