diff options
Diffstat (limited to 'csharp/ProtocolBuffers/IRpcChannel.cs')
-rw-r--r-- | csharp/ProtocolBuffers/IRpcChannel.cs | 21 |
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); } } |