| 
					
				 | 
			
			
				@@ -17,86 +17,10 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "call.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "timeval.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/* Frees and finishes a wrapped instance of grpc_event */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void free_wrapped_grpc_event(void *object TSRMLS_DC){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *event = (wrapped_grpc_event*)object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(event->wrapped != NULL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_event_finish(event->wrapped); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  efree(event); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/* Initializes an instance of wrapped_grpc_channel to be associated with an 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * object of a class specified by class_type */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-zend_object_value create_wrapped_grpc_event( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    zend_class_entry *class_type TSRMLS_DC){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zend_object_value retval; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *intern; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  intern = (wrapped_grpc_event*)emalloc(sizeof(wrapped_grpc_event)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  memset(intern, 0, sizeof(wrapped_grpc_event)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zend_object_std_init(&intern->std, class_type TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  object_properties_init(&intern->std, class_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  retval.handle = zend_objects_store_put( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      intern, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (zend_objects_store_dtor_t)zend_objects_destroy_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      free_wrapped_grpc_event, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      NULL TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  retval.handlers = zend_get_std_object_handlers(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return retval; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-zval *grpc_php_wrap_event(grpc_event *wrapped){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zval *event_object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  MAKE_STD_ZVAL(event_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  object_init_ex(event_object, grpc_ce_event); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *event = (wrapped_grpc_event*)zend_object_store_get_object( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      event_object TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  event->wrapped = wrapped; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return event_object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Get the type of the event 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return long Integer representing the type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-PHP_METHOD(Event, get_type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *event = (wrapped_grpc_event*)zend_object_store_get_object( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getThis() TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  RETURN_LONG((long)(event->wrapped->type)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Get the tag of the event 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return long The event's tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-PHP_METHOD(Event, get_tag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *event = (wrapped_grpc_event*)zend_object_store_get_object( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getThis() TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  RETURN_LONG((long)(event->wrapped->tag)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Get the call associated with the event 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return Call The call 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-PHP_METHOD(Event, get_call){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *event = (wrapped_grpc_event*)zend_object_store_get_object( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getThis() TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zval *call_obj = grpc_php_wrap_call(event->wrapped->call); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  RETURN_DESTROY_ZVAL(call_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Get the data associated with the event 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return object The data, with type depending on the type field 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-PHP_METHOD(Event, get_data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zval *retval; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  wrapped_grpc_event *wrapped_event = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (wrapped_grpc_event*)zend_object_store_get_object( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        getThis() TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc_event *event = wrapped_event->wrapped; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Create a new PHP object containing the event data in the event struct. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   event must not be used after this function is called */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+zval *grpc_php_convert_event(grpc_event *event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  zval *data_object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char *detail_string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   size_t detail_len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char *method_string; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -106,89 +30,103 @@ PHP_METHOD(Event, get_data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char *read_string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   size_t read_len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  zval *event_object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(event == NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  MAKE_STD_ZVAL(event_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  object_init(event_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  add_property_zval(event_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "call", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    grpc_php_wrap_call(event->call, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                       event->type==GRPC_SERVER_RPC_NEW)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  add_property_long(event_object, "type", event->type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  add_property_long(event_object, "tag", (long)event->tag); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   switch(event->type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    case GRPC_QUEUE_SHUTDOWN: RETURN_NULL(); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    case GRPC_QUEUE_SHUTDOWN: add_property_null(event_object, "data"); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_READ: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if(event->data.read == NULL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        RETURN_NULL(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        add_property_null(event_object, "data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         byte_buffer_to_string(event->data.read, &read_string, &read_len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        RETURN_STRINGL(read_string, read_len, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        add_property_stringl(event_object, "data", read_string, read_len, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_INVOKE_ACCEPTED: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RETURN_LONG((long)event->data.invoke_accepted); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_long(event_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "data", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        (long)event->data.invoke_accepted); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_WRITE_ACCEPTED: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RETURN_LONG((long)event->data.write_accepted); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_long(event_object, "data", (long)event->data.write_accepted); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_FINISH_ACCEPTED: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RETURN_LONG((long)event->data.finish_accepted); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_long(event_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "data", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        (long)event->data.finish_accepted); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_CLIENT_METADATA_READ: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      retval = grpc_call_create_metadata_array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data_object = grpc_call_create_metadata_array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           event->data.client_metadata_read.count, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           event->data.client_metadata_read.elements); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_zval(event_object, "data", data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_FINISHED: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      MAKE_STD_ZVAL(retval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      object_init(retval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      add_property_long(retval, "code", event->data.finished.status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MAKE_STD_ZVAL(data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      object_init(data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_long(data_object, "code", event->data.finished.status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if(event->data.finished.details == NULL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        add_property_null(retval, "details"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        add_property_null(data_object, "details"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         detail_len = strlen(event->data.finished.details); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         detail_string = ecalloc(detail_len+1, sizeof(char)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memcpy(detail_string, event->data.finished.details, detail_len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        add_property_string(retval, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        add_property_string(data_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             "details", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             detail_string, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      add_property_zval(retval, "metadata", grpc_call_create_metadata_array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          event->data.finished.metadata_count, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          event->data.finished.metadata_elements)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_zval(data_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "metadata", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        grpc_call_create_metadata_array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            event->data.finished.metadata_count, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            event->data.finished.metadata_elements)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_zval(event_object, "data", data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_SERVER_RPC_NEW: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      MAKE_STD_ZVAL(retval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      object_init(retval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MAKE_STD_ZVAL(data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      object_init(data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       method_len = strlen(event->data.server_rpc_new.method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       method_string = ecalloc(method_len+1, sizeof(char)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       memcpy(method_string, event->data.server_rpc_new.method, method_len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      add_property_string(retval, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_string(data_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "method", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           method_string, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       host_len = strlen(event->data.server_rpc_new.host); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       host_string = ecalloc(host_len+1, sizeof(char)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       memcpy(host_string, event->data.server_rpc_new.host, host_len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      add_property_string(retval, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_string(data_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "host", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           host_string, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      add_property_zval(retval, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_zval(data_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         "absolute_timeout", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         grpc_php_wrap_timeval( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             event->data.server_rpc_new.deadline)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      add_property_zval(retval, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_zval(data_object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         "metadata", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         grpc_call_create_metadata_array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             event->data.server_rpc_new.metadata_count, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             event->data.server_rpc_new.metadata_elements)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      add_property_zval(event_object, "data", data_object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    default: RETURN_NULL(); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    default: add_property_null(event_object, "data"); break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  RETURN_DESTROY_ZVAL(retval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-static zend_function_entry event_methods[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  PHP_ME(Event, get_call, NULL, ZEND_ACC_PUBLIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  PHP_ME(Event, get_data, NULL, ZEND_ACC_PUBLIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  PHP_ME(Event, get_tag, NULL, ZEND_ACC_PUBLIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  PHP_ME(Event, get_type, NULL, ZEND_ACC_PUBLIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  PHP_FE_END 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void grpc_init_event(TSRMLS_D){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zend_class_entry ce; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  INIT_CLASS_ENTRY(ce, "Grpc\\Event", event_methods); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ce.create_object = create_wrapped_grpc_event; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc_ce_event = zend_register_internal_class(&ce TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  grpc_event_finish(event); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return event_object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |