| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- *
- * Copyright 2015 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.
- *
- */
- #ifndef NET_GRPC_NODE_SERVER_H_
- #define NET_GRPC_NODE_SERVER_H_
- #include <nan.h>
- #include <node.h>
- #include "grpc/grpc.h"
- namespace grpc {
- namespace node {
- /* Wraps grpc_server as a JavaScript object. Provides a constructor
- and wrapper methods for grpc_server_create, grpc_server_request_call,
- grpc_server_add_http2_port, and grpc_server_start. */
- class Server : public Nan::ObjectWrap {
- public:
- /* Initializes the Server class and exposes the constructor and
- wrapper methods to JavaScript */
- static void Init(v8::Local<v8::Object> exports);
- /* Tests whether the given value was constructed by this class's
- JavaScript constructor */
- static bool HasInstance(v8::Local<v8::Value> val);
- void DestroyWrappedServer();
- private:
- explicit Server(grpc_server *server);
- ~Server();
- // Prevent copying
- Server(const Server &);
- Server &operator=(const Server &);
- void ShutdownServer();
- static NAN_METHOD(New);
- static NAN_METHOD(RequestCall);
- static NAN_METHOD(AddHttp2Port);
- static NAN_METHOD(Start);
- static NAN_METHOD(TryShutdown);
- static NAN_METHOD(ForceShutdown);
- static Nan::Callback *constructor;
- static Nan::Persistent<v8::FunctionTemplate> fun_tpl;
- grpc_server *wrapped_server;
- grpc_completion_queue *shutdown_queue;
- };
- } // namespace node
- } // namespace grpc
- #endif // NET_GRPC_NODE_SERVER_H_
|