add($delta); } else { $deadline = Timeval::infFuture(); } $this->call = new Call($channel, $method, $deadline); $this->deserialize = $deserialize; $this->metadata = null; $this->trailing_metadata = null; if (isset($options['call_credentials_callback']) && is_callable($call_credentials_callback = $options['call_credentials_callback'])) { $call_credentials = CallCredentials::createFromPlugin( $call_credentials_callback); $this->call->setCredentials($call_credentials); } } /** * @return The metadata sent by the server. */ public function getMetadata() { return $this->metadata; } /** * @return The trailing metadata sent by the server. */ public function getTrailingMetadata() { return $this->trailing_metadata; } /** * @return string The URI of the endpoint. */ public function getPeer() { return $this->call->getPeer(); } /** * Cancels the call. */ public function cancel() { $this->call->cancel(); } /** * Deserialize a response value to an object. * * @param string $value The binary value to deserialize * * @return The deserialized value */ protected function deserializeResponse($value) { if ($value === null) { return; } return call_user_func($this->deserialize, $value); } /** * Set the CallCredentials for the underlying Call. * * @param CallCredentials $call_credentials The CallCredentials * object */ public function setCallCredentials($call_credentials) { $this->call->setCredentials($call_credentials); } }