diff options
author | Jon Skeet <skeet@pobox.com> | 2008-08-14 20:35:31 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2008-08-14 20:35:31 +0100 |
commit | 3ae573c17475021046f3d3b2b5f01de91c80aa1d (patch) | |
tree | afbb78dc737e949a7aa0da2859d4589ca81ce7fb /csharp/ProtocolBuffers/IRpcChannel.cs | |
parent | 1e42fdde2ebf34dddf1297bbecc56439ecef323f (diff) | |
download | protobuf-3ae573c17475021046f3d3b2b5f01de91c80aa1d.tar.gz protobuf-3ae573c17475021046f3d3b2b5f01de91c80aa1d.tar.bz2 protobuf-3ae573c17475021046f3d3b2b5f01de91c80aa1d.zip |
Fleshed out service interfaces, and wrote the simpler service tests. Mocking tests still to be done.
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); } } |