| 
					
				 | 
			
			
				@@ -51,6 +51,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <grpc/support/log.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <grpc/grpc_security.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "completion_queue.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "server.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "channel.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "server_credentials.h" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,13 +62,6 @@ zend_class_entry *grpc_ce_server; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /* Frees and destroys an instance of wrapped_grpc_server */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void free_wrapped_grpc_server(void *object TSRMLS_DC) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   wrapped_grpc_server *server = (wrapped_grpc_server *)object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (server->queue != NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_completion_queue_shutdown(server->queue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    while (grpc_completion_queue_next(server->queue, gpr_inf_future).type != 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           GRPC_QUEUE_SHUTDOWN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_completion_queue_destroy(server->queue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (server->wrapped != NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_server_shutdown(server->wrapped); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_server_destroy(server->wrapped); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -96,7 +90,6 @@ zend_object_value create_wrapped_grpc_server(zend_class_entry *class_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Constructs a new instance of the Server class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param CompletionQueue $queue The completion queue to use with the server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $args The arguments to pass to the server (optional) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 PHP_METHOD(Server, __construct) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -112,7 +105,6 @@ PHP_METHOD(Server, __construct) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                          1 TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  server->queue = grpc_completion_queue_create(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (args_array == NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     server->wrapped = grpc_server_create(NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -120,7 +112,7 @@ PHP_METHOD(Server, __construct) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     server->wrapped = grpc_server_create(&args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     efree(args.args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc_server_register_completion_queue(server->wrapped, server->queue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  grpc_server_register_completion_queue(server->wrapped, completion_queue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -144,21 +136,20 @@ PHP_METHOD(Server, requestCall) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_metadata_array_init(&metadata); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   error_code = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       grpc_server_request_call(server->wrapped, &call, &details, &metadata, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               server->queue, server->queue, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               completion_queue, completion_queue, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (error_code != GRPC_CALL_OK) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     zend_throw_exception(spl_ce_LogicException, "request_call failed", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                          (long)error_code TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto cleanup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  event = grpc_completion_queue_pluck(server->queue, NULL, gpr_inf_future); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  event = grpc_completion_queue_pluck(completion_queue, NULL, gpr_inf_future); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!event.success) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     zend_throw_exception(spl_ce_LogicException, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                          "Failed to request a call for some reason", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                          1 TSRMLS_CC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto cleanup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  add_property_zval(result, "call", grpc_php_wrap_call(call, server->queue, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                       true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  add_property_zval(result, "call", grpc_php_wrap_call(call, true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   add_property_string(result, "method", details.method, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   add_property_string(result, "host", details.host, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   add_property_zval(result, "absolute_deadline", 
			 |