1# Copyright 2015 gRPC authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14"""Utilities for RPC Framework's Face interface.""" 15 16import collections 17 18# stream is referenced from specification in this module. 19from grpc.framework.common import cardinality 20from grpc.framework.common import style 21from grpc.framework.foundation import stream # pylint: disable=unused-import 22from grpc.framework.interfaces.face import face 23 24 25class _MethodImplementation(face.MethodImplementation, 26 collections.namedtuple('_MethodImplementation', [ 27 'cardinality', 28 'style', 29 'unary_unary_inline', 30 'unary_stream_inline', 31 'stream_unary_inline', 32 'stream_stream_inline', 33 'unary_unary_event', 34 'unary_stream_event', 35 'stream_unary_event', 36 'stream_stream_event', 37 ])): 38 pass 39 40 41def unary_unary_inline(behavior): 42 """Creates an face.MethodImplementation for the given behavior. 43 44 Args: 45 behavior: The implementation of a unary-unary RPC method as a callable value 46 that takes a request value and an face.ServicerContext object and 47 returns a response value. 48 49 Returns: 50 An face.MethodImplementation derived from the given behavior. 51 """ 52 return _MethodImplementation(cardinality.Cardinality.UNARY_UNARY, 53 style.Service.INLINE, behavior, None, None, 54 None, None, None, None, None) 55 56 57def unary_stream_inline(behavior): 58 """Creates an face.MethodImplementation for the given behavior. 59 60 Args: 61 behavior: The implementation of a unary-stream RPC method as a callable 62 value that takes a request value and an face.ServicerContext object and 63 returns an iterator of response values. 64 65 Returns: 66 An face.MethodImplementation derived from the given behavior. 67 """ 68 return _MethodImplementation(cardinality.Cardinality.UNARY_STREAM, 69 style.Service.INLINE, None, behavior, None, 70 None, None, None, None, None) 71 72 73def stream_unary_inline(behavior): 74 """Creates an face.MethodImplementation for the given behavior. 75 76 Args: 77 behavior: The implementation of a stream-unary RPC method as a callable 78 value that takes an iterator of request values and an 79 face.ServicerContext object and returns a response value. 80 81 Returns: 82 An face.MethodImplementation derived from the given behavior. 83 """ 84 return _MethodImplementation(cardinality.Cardinality.STREAM_UNARY, 85 style.Service.INLINE, None, None, behavior, 86 None, None, None, None, None) 87 88 89def stream_stream_inline(behavior): 90 """Creates an face.MethodImplementation for the given behavior. 91 92 Args: 93 behavior: The implementation of a stream-stream RPC method as a callable 94 value that takes an iterator of request values and an 95 face.ServicerContext object and returns an iterator of response values. 96 97 Returns: 98 An face.MethodImplementation derived from the given behavior. 99 """ 100 return _MethodImplementation(cardinality.Cardinality.STREAM_STREAM, 101 style.Service.INLINE, None, None, None, 102 behavior, None, None, None, None) 103 104 105def unary_unary_event(behavior): 106 """Creates an face.MethodImplementation for the given behavior. 107 108 Args: 109 behavior: The implementation of a unary-unary RPC method as a callable 110 value that takes a request value, a response callback to which to pass 111 the response value of the RPC, and an face.ServicerContext. 112 113 Returns: 114 An face.MethodImplementation derived from the given behavior. 115 """ 116 return _MethodImplementation(cardinality.Cardinality.UNARY_UNARY, 117 style.Service.EVENT, None, None, None, None, 118 behavior, None, None, None) 119 120 121def unary_stream_event(behavior): 122 """Creates an face.MethodImplementation for the given behavior. 123 124 Args: 125 behavior: The implementation of a unary-stream RPC method as a callable 126 value that takes a request value, a stream.Consumer to which to pass the 127 the response values of the RPC, and an face.ServicerContext. 128 129 Returns: 130 An face.MethodImplementation derived from the given behavior. 131 """ 132 return _MethodImplementation(cardinality.Cardinality.UNARY_STREAM, 133 style.Service.EVENT, None, None, None, None, 134 None, behavior, None, None) 135 136 137def stream_unary_event(behavior): 138 """Creates an face.MethodImplementation for the given behavior. 139 140 Args: 141 behavior: The implementation of a stream-unary RPC method as a callable 142 value that takes a response callback to which to pass the response value 143 of the RPC and an face.ServicerContext and returns a stream.Consumer to 144 which the request values of the RPC should be passed. 145 146 Returns: 147 An face.MethodImplementation derived from the given behavior. 148 """ 149 return _MethodImplementation(cardinality.Cardinality.STREAM_UNARY, 150 style.Service.EVENT, None, None, None, None, 151 None, None, behavior, None) 152 153 154def stream_stream_event(behavior): 155 """Creates an face.MethodImplementation for the given behavior. 156 157 Args: 158 behavior: The implementation of a stream-stream RPC method as a callable 159 value that takes a stream.Consumer to which to pass the response values 160 of the RPC and an face.ServicerContext and returns a stream.Consumer to 161 which the request values of the RPC should be passed. 162 163 Returns: 164 An face.MethodImplementation derived from the given behavior. 165 """ 166 return _MethodImplementation(cardinality.Cardinality.STREAM_STREAM, 167 style.Service.EVENT, None, None, None, None, 168 None, None, None, behavior) 169