~ubuntu-branches/ubuntu/wily/grpc/wily

« back to all changes in this revision

Viewing changes to src/csharp/Grpc.Core/Method.cs

  • Committer: Package Import Robot
  • Author(s): Andrew Pollock
  • Date: 2015-05-07 13:28:11 UTC
  • Revision ID: package-import@ubuntu.com-20150507132811-ybm4hfq73tnvvd2e
Tags: upstream-0.10.0
ImportĀ upstreamĀ versionĀ 0.10.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#region Copyright notice and license
 
2
 
 
3
// Copyright 2015, Google Inc.
 
4
// All rights reserved.
 
5
//
 
6
// Redistribution and use in source and binary forms, with or without
 
7
// modification, are permitted provided that the following conditions are
 
8
// met:
 
9
//
 
10
//     * Redistributions of source code must retain the above copyright
 
11
// notice, this list of conditions and the following disclaimer.
 
12
//     * Redistributions in binary form must reproduce the above
 
13
// copyright notice, this list of conditions and the following disclaimer
 
14
// in the documentation and/or other materials provided with the
 
15
// distribution.
 
16
//     * Neither the name of Google Inc. nor the names of its
 
17
// contributors may be used to endorse or promote products derived from
 
18
// this software without specific prior written permission.
 
19
//
 
20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
21
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
22
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
23
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
24
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
25
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
26
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
27
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
28
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
29
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
30
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
31
 
 
32
#endregion
 
33
 
 
34
using System;
 
35
using Grpc.Core.Utils;
 
36
 
 
37
namespace Grpc.Core
 
38
{
 
39
    /// <summary>
 
40
    /// Method types supported by gRPC.
 
41
    /// </summary>
 
42
    public enum MethodType
 
43
    {
 
44
        Unary,  // Unary request, unary response.
 
45
        ClientStreaming,  // Streaming request, unary response.
 
46
        ServerStreaming,  // Unary request, streaming response.
 
47
        DuplexStreaming  // Streaming request, streaming response.
 
48
    }
 
49
 
 
50
    /// <summary>
 
51
    /// A description of a service method.
 
52
    /// </summary>
 
53
    public class Method<TRequest, TResponse>
 
54
    {
 
55
        readonly MethodType type;
 
56
        readonly string name;
 
57
        readonly Marshaller<TRequest> requestMarshaller;
 
58
        readonly Marshaller<TResponse> responseMarshaller;
 
59
 
 
60
        public Method(MethodType type, string name, Marshaller<TRequest> requestMarshaller, Marshaller<TResponse> responseMarshaller)
 
61
        {
 
62
            this.type = type;
 
63
            this.name = name;
 
64
            this.requestMarshaller = requestMarshaller;
 
65
            this.responseMarshaller = responseMarshaller;
 
66
        }
 
67
 
 
68
        public MethodType Type
 
69
        {
 
70
            get
 
71
            {
 
72
                return this.type;
 
73
            }
 
74
        }
 
75
 
 
76
        public string Name
 
77
        {
 
78
            get
 
79
            {
 
80
                return this.name;
 
81
            }
 
82
        }
 
83
 
 
84
        public Marshaller<TRequest> RequestMarshaller
 
85
        {
 
86
            get
 
87
            {
 
88
                return this.requestMarshaller;
 
89
            }
 
90
        }
 
91
 
 
92
        public Marshaller<TResponse> ResponseMarshaller
 
93
        {
 
94
            get
 
95
            {
 
96
                return this.responseMarshaller;
 
97
            }
 
98
        }
 
99
 
 
100
        /// <summary>
 
101
        /// Gets full name of the method including the service name.
 
102
        /// </summary>
 
103
        internal string GetFullName(string serviceName)
 
104
        {
 
105
            return "/" + Preconditions.CheckNotNull(serviceName) + "/" + this.Name;
 
106
        }
 
107
    }
 
108
}