aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/node/ext/completion_queue.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/node/ext/completion_queue.cc')
-rw-r--r--src/node/ext/completion_queue.cc80
1 files changed, 0 insertions, 80 deletions
diff --git a/src/node/ext/completion_queue.cc b/src/node/ext/completion_queue.cc
deleted file mode 100644
index a08febbb2c..0000000000
--- a/src/node/ext/completion_queue.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *
- * Copyright 2016 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/grpc.h>
-#include <node.h>
-#include <uv.h>
-#include <v8.h>
-
-#include "call.h"
-#include "completion_queue.h"
-
-namespace grpc {
-namespace node {
-
-using v8::Local;
-using v8::Object;
-using v8::Value;
-
-grpc_completion_queue *queue;
-uv_prepare_t prepare;
-int pending_batches;
-
-void drain_completion_queue(uv_prepare_t *handle) {
- Nan::HandleScope scope;
- grpc_event event;
- (void)handle;
- do {
- event = grpc_completion_queue_next(queue, gpr_inf_past(GPR_CLOCK_MONOTONIC),
- NULL);
-
- if (event.type == GRPC_OP_COMPLETE) {
- const char *error_message;
- if (event.success) {
- error_message = NULL;
- } else {
- error_message = "The async function encountered an error";
- }
- CompleteTag(event.tag, error_message);
- grpc::node::DestroyTag(event.tag);
- pending_batches--;
- if (pending_batches == 0) {
- uv_prepare_stop(&prepare);
- }
- }
- } while (event.type != GRPC_QUEUE_TIMEOUT);
-}
-
-grpc_completion_queue *GetCompletionQueue() { return queue; }
-
-void CompletionQueueNext() {
- if (pending_batches == 0) {
- GPR_ASSERT(!uv_is_active((uv_handle_t *)&prepare));
- uv_prepare_start(&prepare, drain_completion_queue);
- }
- pending_batches++;
-}
-
-void CompletionQueueInit(Local<Object> exports) {
- queue = grpc_completion_queue_create_for_next(NULL);
- uv_prepare_init(uv_default_loop(), &prepare);
- pending_batches = 0;
-}
-
-} // namespace node
-} // namespace grpc