gRPC
0.6.0
Main Page
Related Pages
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Functions
Variables
Enumerations
Properties
Pages
src
node
ext
completion_queue_async_worker.h
1
/*
2
*
3
* Copyright 2015, Google Inc.
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions are
8
* met:
9
*
10
* * Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* * Redistributions in binary form must reproduce the above
13
* copyright notice, this list of conditions and the following disclaimer
14
* in the documentation and/or other materials provided with the
15
* distribution.
16
* * Neither the name of Google Inc. nor the names of its
17
* contributors may be used to endorse or promote products derived from
18
* this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*
32
*/
33
34
#ifndef NET_GRPC_NODE_COMPLETION_QUEUE_ASYNC_WORKER_H_
35
#define NET_GRPC_NODE_COMPLETION_QUEUE_ASYNC_WORKER_H_
36
#include <nan.h>
37
38
#include "grpc/grpc.h"
39
40
namespace
grpc {
41
namespace
node {
42
43
/* A worker that asynchronously calls completion_queue_next, and queues onto the
44
node event loop a call to the function stored in the event's tag. */
45
class
CompletionQueueAsyncWorker
:
public
NanAsyncWorker {
46
public
:
47
CompletionQueueAsyncWorker
();
48
49
~
CompletionQueueAsyncWorker
();
50
/* Calls completion_queue_next with the provided deadline, and stores the
51
event if there was one or sets an error message if there was not */
52
void
Execute();
53
54
/* Returns the completion queue attached to this class */
55
static
grpc_completion_queue
*GetQueue();
56
57
/* Convenience function to create a worker with the given arguments and queue
58
it to run asynchronously */
59
static
void
Next();
60
61
/* Initialize the CompletionQueueAsyncWorker class */
62
static
void
Init(v8::Handle<v8::Object> exports);
63
64
protected
:
65
/* Called when Execute has succeeded (completed without setting an error
66
message). Calls the saved callback with the event that came from
67
completion_queue_next */
68
void
HandleOKCallback();
69
70
void
HandleErrorCallback();
71
72
private
:
73
grpc_event
result;
74
75
static
grpc_completion_queue
*queue;
76
77
// Number of grpc_completion_queue_next calls in the thread pool
78
static
int
current_threads;
79
// Number of grpc_completion_queue_next calls waiting to enter the thread pool
80
static
int
waiting_next_calls;
81
};
82
83
}
// namespace node
84
}
// namespace grpc
85
86
#endif // NET_GRPC_NODE_COMPLETION_QUEUE_ASYNC_WORKER_H_
grpc_event
Definition:
grpc.h:201
grpc::node::CompletionQueueAsyncWorker
Definition:
completion_queue_async_worker.h:45
grpc_completion_queue
Definition:
completion_queue.c:61
Generated on Mon May 18 2015 22:48:28 for gRPC by
1.8.6