| // Copyright (c) 2017, the gRPC project authors. Please see the AUTHORS file |
| // for details. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| /// Server-side context for a gRPC call. |
| /// |
| /// Gives the method handler access to custom metadata from the client, and |
| /// ability to set custom metadata on the header/trailer sent to the client. |
| abstract class ServiceCall { |
| /// Custom metadata from the client. |
| Map<String, String> get clientMetadata; |
| |
| /// Custom metadata to be sent to the client. Will be [null] once the headers |
| /// have been sent, either when [sendHeaders] is called, or when the first |
| /// response message is sent. |
| Map<String, String> get headers; |
| |
| /// Custom metadata to be sent to the client after all response messages. |
| Map<String, String> get trailers; |
| |
| /// Deadline for this call. If the call is still active after this time, then |
| /// the client or server may cancel it. |
| DateTime get deadline; |
| |
| /// Returns [true] if the [deadline] has been exceeded. |
| bool get isTimedOut; |
| |
| /// Returns [true] if the client has canceled this call. |
| bool get isCanceled; |
| |
| /// Send response headers. This is done automatically before sending the first |
| /// response message, but can be done manually before the first response is |
| /// ready, if necessary. |
| void sendHeaders(); |
| |
| /// Send response trailers. A trailer indicating success ([status] == 0) will |
| /// be sent automatically when all responses are sent. This method can be used |
| /// to send a different status code, if needed. |
| /// |
| /// The call will be closed after calling this method, and no further |
| /// responses can be sent. |
| void sendTrailers({int status, String message}); |
| } |