Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / grpc-cloned / ext / util.h
1 /*
2  *
3  * Copyright 2018 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18
19 #ifndef NET_GRPC_NODE_UTIL_H_
20 #define NET_GRPC_NODE_UTIL_H_
21
22 #include <node.h>
23 #include <nan.h>
24
25 #include <string>
26
27 namespace grpc {
28 namespace node {
29
30 class StringOrNull {
31  public:
32   StringOrNull() : assigned(false) { }
33   void assign(v8::Local<v8::Value> buffer) {
34     str_ = std::string(::node::Buffer::Data(buffer),
35                        ::node::Buffer::Length(buffer));
36     assigned = true;
37   }
38   const char * get() {
39     return assigned ? str_.c_str() : NULL;
40   }
41   bool isAssigned() {
42     return assigned;
43   }
44  private:
45   std::string str_;
46   bool assigned;
47 };
48
49 }  // namespace node
50 }  // namespace grpc
51
52 #endif  // NET_GRPC_NODE_UTIL_H_