aboutsummaryrefslogtreecommitdiff
path: root/csharp/ProtocolBuffers/IRpcChannel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/ProtocolBuffers/IRpcChannel.cs')
-rw-r--r--csharp/ProtocolBuffers/IRpcChannel.cs21
1 files changed, 16 insertions, 5 deletions
diff --git a/csharp/ProtocolBuffers/IRpcChannel.cs b/csharp/ProtocolBuffers/IRpcChannel.cs
index 96c82e16..28b321c6 100644
--- a/csharp/ProtocolBuffers/IRpcChannel.cs
+++ b/csharp/ProtocolBuffers/IRpcChannel.cs
@@ -1,14 +1,25 @@
using System;
-using System.Collections.Generic;
-using System.Text;
using Google.ProtocolBuffers.Descriptors;
namespace Google.ProtocolBuffers {
/// <summary>
- /// TODO(jonskeet): Do this properly.
+ /// Interface for an RPC channel. A channel represents a communication line to
+ /// a service (IService implementation) which can be used to call that service's
+ /// methods. The service may be running on another machine. Normally, you should
+ /// not call an IRpcChannel directly, but instead construct a stub wrapping it.
+ /// Generated service classes contain a CreateStub method for precisely this purpose.
/// </summary>
public interface IRpcChannel {
- void CallMethod<T>(MethodDescriptor method, IRpcController controller,
- IMessage request, IMessage responsePrototype, Action<T> done);
+ /// <summary>
+ /// Calls the given method of the remote service. This method is similar
+ /// to <see cref="IService.CallMethod" /> with one important difference: the
+ /// caller decides the types of the IMessage objects, not the implementation.
+ /// The request may be of any type as long as <c>request.Descriptor == method.InputType</c>.
+ /// The response passed to the callback will be of the same type as
+ /// <paramref name="responsePrototype"/> (which must be such that
+ /// <c>responsePrototype.Descriptor == method.OutputType</c>).
+ /// </summary>
+ void CallMethod(MethodDescriptor method, IRpcController controller,
+ IMessage request, IMessage responsePrototype, Action<IMessage> done);
}
}