瀏覽代碼

Use factories to create completion queues.

Tim Burks 8 年之前
父節點
當前提交
7f7a8d6e2a
共有 3 個文件被更改,包括 30 次插入5 次删除
  1. 12 2
      Sources/CgRPC/shim/channel.c
  2. 6 1
      Sources/CgRPC/shim/handler.c
  3. 12 2
      Sources/CgRPC/shim/server.c

+ 12 - 2
Sources/CgRPC/shim/channel.c

@@ -29,7 +29,12 @@ cgrpc_channel *cgrpc_channel_create(const char *address) {
   grpc_channel_args channel_args;
   channel_args.num_args = 0;
   c->channel = grpc_insecure_channel_create(address, &channel_args, NULL);
-  c->completion_queue = grpc_completion_queue_create(NULL, NULL, NULL);
+  grpc_completion_queue_attributes attr;
+  attr.version = 1;
+  attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
+  attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
+  grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
+  c->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
   return c;
 }
 
@@ -61,7 +66,12 @@ cgrpc_channel *cgrpc_channel_create_secure(const char *address,
 
   grpc_channel_credentials *creds = grpc_ssl_credentials_create(pem_root_certs, NULL, NULL);
   c->channel = grpc_secure_channel_create(creds, address, channelArgs, NULL);
-  c->completion_queue = grpc_completion_queue_create(NULL, NULL, NULL);
+  grpc_completion_queue_attributes attr;
+  attr.version = 1;
+  attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
+  attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
+  grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
+  c->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
   return c;
 }
 

+ 6 - 1
Sources/CgRPC/shim/handler.c

@@ -27,7 +27,12 @@ cgrpc_handler *cgrpc_handler_create_with_server(cgrpc_server *server) {
   handler->server = server;
   grpc_metadata_array_init(&(handler->request_metadata_recv));
   grpc_call_details_init(&(handler->call_details));
-  handler->completion_queue = grpc_completion_queue_create(NULL, NULL, NULL);
+  grpc_completion_queue_attributes attr;
+  attr.version = 1;
+  attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
+  attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
+  grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
+  handler->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
   return handler;
 }
 

+ 12 - 2
Sources/CgRPC/shim/server.c

@@ -24,7 +24,12 @@
 cgrpc_server *cgrpc_server_create(const char *address) {
   cgrpc_server *server = (cgrpc_server *) malloc(sizeof (cgrpc_server));
   server->server = grpc_server_create(NULL, NULL);
-  server->completion_queue = grpc_completion_queue_create(NULL, NULL, NULL);
+  grpc_completion_queue_attributes attr;
+  attr.version = 1;
+  attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
+  attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
+  grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
+  server->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
   grpc_server_register_completion_queue(server->server, server->completion_queue, NULL);
   // prepare the server to listen
   server->port = grpc_server_add_insecure_http2_port(server->server, address);
@@ -36,7 +41,12 @@ cgrpc_server *cgrpc_server_create_secure(const char *address,
                                          const char *cert_chain) {
   cgrpc_server *server = (cgrpc_server *) malloc(sizeof (cgrpc_server));
   server->server = grpc_server_create(NULL, NULL);
-  server->completion_queue = grpc_completion_queue_create(NULL, NULL, NULL);
+  grpc_completion_queue_attributes attr;
+  attr.version = 1;
+  attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
+  attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
+  grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
+  server->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
   grpc_server_register_completion_queue(server->server, server->completion_queue, NULL);
 
   grpc_ssl_pem_key_cert_pair server_credentials;