1
1
# Protocol Buffers - Google's data interchange format
2
# Copyright 2008 Google Inc.
2
# Copyright 2008 Google Inc. All rights reserved.
3
3
# http://code.google.com/p/protobuf/
5
# Licensed under the Apache License, Version 2.0 (the "License");
6
# you may not use this file except in compliance with the License.
7
# You may obtain a copy of the License at
9
# http://www.apache.org/licenses/LICENSE-2.0
11
# Unless required by applicable law or agreed to in writing, software
12
# distributed under the License is distributed on an "AS IS" BASIS,
13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
# See the License for the specific language governing permissions and
15
# limitations under the License.
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions are
9
# * Redistributions of source code must retain the above copyright
10
# notice, this list of conditions and the following disclaimer.
11
# * Redistributions in binary form must reproduce the above
12
# copyright notice, this list of conditions and the following disclaimer
13
# in the documentation and/or other materials provided with the
15
# * Neither the name of Google Inc. nor the names of its
16
# contributors may be used to endorse or promote products derived from
17
# this software without specific prior written permission.
19
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17
31
"""Declares the RPC service interfaces.
86
100
class RpcController(object):
88
"""Abstract interface for an RPC channel.
90
An RpcChannel represents a communication line to a service which can be used
91
to call that service's methods. The service may be running on another
92
machine. Normally, you should not use an RpcChannel directly, but instead
93
construct a stub {@link Service} wrapping it. Example:
96
RpcChannel channel = rpcImpl.Channel("remotehost.example.com:1234")
97
RpcController controller = rpcImpl.Controller()
98
MyService service = MyService_Stub(channel)
99
service.MyMethod(controller, request, callback)
102
"""An RpcController mediates a single method call.
104
The primary purpose of the controller is to provide a way to manipulate
105
settings specific to the RPC implementation and to find out about RPC-level
106
errors. The methods provided by the RpcController interface are intended
107
to be a "least common denominator" set of features which we expect all
108
implementations to support. Specific implementations may provide more
109
advanced features (e.g. deadline propagation).
102
112
# Client-side methods below
173
183
class RpcChannel(object):
175
"""An RpcController mediates a single method call.
177
The primary purpose of the controller is to provide a way to manipulate
178
settings specific to the RPC implementation and to find out about RPC-level
179
errors. The methods provided by the RpcController interface are intended
180
to be a "least common denominator" set of features which we expect all
181
implementations to support. Specific implementations may provide more
182
advanced features (e.g. deadline propagation).
185
"""Abstract interface for an RPC channel.
187
An RpcChannel represents a communication line to a service which can be used
188
to call that service's methods. The service may be running on another
189
machine. Normally, you should not use an RpcChannel directly, but instead
190
construct a stub {@link Service} wrapping it. Example:
193
RpcChannel channel = rpcImpl.Channel("remotehost.example.com:1234")
194
RpcController controller = rpcImpl.Controller()
195
MyService service = MyService_Stub(channel)
196
service.MyMethod(controller, request, callback)
185
199
def CallMethod(self, method_descriptor, rpc_controller,