From a7baac5280e8b368a889cfe2e7ee5b6091c14c3c Mon Sep 17 00:00:00 2001
From: mlumish <mlumish@google.com>
Date: Tue, 16 Dec 2014 09:23:51 -0800
Subject: [PATCH] Added support for trailing metadata, fixed status support 
 Change on 2014/12/16 by mlumish <mlumish@google.com> ------------- Created by
 MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82239977

---
 src/php/ext/grpc/call.c         | 8 ++++----
 src/php/ext/grpc/event.c        | 5 ++++-
 src/php/lib/Grpc/ActiveCall.php | 4 ++--
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index be7969f927..cc87e214c9 100755
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -376,12 +376,12 @@ PHP_METHOD(Call, start_write_status){
   long status_code;
   int status_details_length;
   long tag;
-  grpc_status status;
+  char *status_details;
   /* "lsl" == 1 long, 1 string, 1 long */
   if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                            "lsl",
                            &status_code,
-                           &status.details, &status_details_length,
+                           &status_details, &status_details_length,
                            &tag) == FAILURE){
     zend_throw_exception(
         spl_ce_InvalidArgumentException,
@@ -389,9 +389,9 @@ PHP_METHOD(Call, start_write_status){
         1 TSRMLS_CC);
     return;
   }
-  status.code = (gpr_uint32)status_code;
   RETURN_LONG(grpc_call_start_write_status(call->wrapped,
-                                           status,
+                                           (grpc_status_code)status_code,
+                                           status_details,
                                            (void*)tag));
 }
 
diff --git a/src/php/ext/grpc/event.c b/src/php/ext/grpc/event.c
index 8ec29c915c..23ce2c8343 100755
--- a/src/php/ext/grpc/event.c
+++ b/src/php/ext/grpc/event.c
@@ -130,7 +130,7 @@ PHP_METHOD(Event, get_data){
     case GRPC_FINISHED:
       MAKE_STD_ZVAL(retval);
       object_init(retval);
-      add_property_long(retval, "code", event->data.finished.code);
+      add_property_long(retval, "code", event->data.finished.status);
       if(event->data.finished.details == NULL){
         add_property_null(retval, "details");
       } else {
@@ -142,6 +142,9 @@ PHP_METHOD(Event, get_data){
                             detail_string,
                             true);
       }
+      add_property_zval(retval, "metadata", grpc_call_create_metadata_array(
+          event->data.finished.metadata_count,
+          event->data.finished.metadata_elements));
       break;
     case GRPC_SERVER_RPC_NEW:
       MAKE_STD_ZVAL(retval);
diff --git a/src/php/lib/Grpc/ActiveCall.php b/src/php/lib/Grpc/ActiveCall.php
index 10a37cdb16..63877e3f6b 100755
--- a/src/php/lib/Grpc/ActiveCall.php
+++ b/src/php/lib/Grpc/ActiveCall.php
@@ -87,8 +87,8 @@ class ActiveCall {
 
   /**
    * Wait for the server to send the status, and return it.
-   * @return object The status object, with integer $code and string $details
-   *     members
+   * @return object The status object, with integer $code, string $details,
+   *     and array $metadata members
    */
   public function getStatus() {
     $status_event = $this->completion_queue->pluck(FINISHED,
-- 
GitLab