add($delta); } else { $deadline = Timeval::infFuture(); } $this->call = new Call($channel, $method, $deadline); $this->deserialize = $deserialize; $this->metadata = null; } /** * @return The metadata sent by the server. */ public function getMetadata() { return $this->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 null; } return call_user_func($this->deserialize, $value); } }