call->startBatch([OP_SEND_INITIAL_METADATA => $metadata]); } /** * Write a single message to the server. This cannot be called after * wait is called. * @param ByteBuffer $data The data to write * @param array $options an array of options */ public function write($data, $options = array()) { $message_array = ['message' => $data->serialize()]; if ($grpc_write_flags = self::getGrpcWriteFlags($options)) { $message_array['flags'] = $grpc_write_flags; } $this->call->startBatch([OP_SEND_MESSAGE => $message_array]); } /** * Wait for the server to respond with data and a status * @return [response data, status] */ public function wait() { $event = $this->call->startBatch([ OP_SEND_CLOSE_FROM_CLIENT => true, OP_RECV_INITIAL_METADATA => true, OP_RECV_MESSAGE => true, OP_RECV_STATUS_ON_CLIENT => true]); $this->metadata = $event->metadata; return array($this->deserializeResponse($event->message), $event->status); } }