• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef COMMUNICATIONNETSTACK_SOCKET_MODULE_H
17 #define COMMUNICATIONNETSTACK_SOCKET_MODULE_H
18 
19 #include "napi/native_api.h"
20 
21 namespace OHOS::NetStack::Socket {
22 class SocketModuleExports {
23 public:
24     class UDPSocket {
25     public:
26         static constexpr const char *FUNCTION_BIND = "bind";
27         static constexpr const char *FUNCTION_SEND = "send";
28         static constexpr const char *FUNCTION_CLOSE = "close";
29         static constexpr const char *FUNCTION_GET_STATE = "getState";
30         static constexpr const char *FUNCTION_SET_EXTRA_OPTIONS = "setExtraOptions";
31         static constexpr const char *FUNCTION_GET_SOCKET_FD = "getSocketFd";
32         static constexpr const char *FUNCTION_ON = "on";
33         static constexpr const char *FUNCTION_OFF = "off";
34 
35         static napi_value Bind(napi_env env, napi_callback_info info);
36         static napi_value Send(napi_env env, napi_callback_info info);
37         static napi_value Close(napi_env env, napi_callback_info info);
38         static napi_value GetState(napi_env env, napi_callback_info info);
39         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
40         static napi_value GetSocketFd(napi_env env, napi_callback_info info);
41         static napi_value On(napi_env env, napi_callback_info info);
42         static napi_value Off(napi_env env, napi_callback_info info);
43     };
44 
45     class TCPSocket {
46     public:
47         static constexpr const char *FUNCTION_BIND = "bind";
48         static constexpr const char *FUNCTION_CONNECT = "connect";
49         static constexpr const char *FUNCTION_SEND = "send";
50         static constexpr const char *FUNCTION_CLOSE = "close";
51         static constexpr const char *FUNCTION_GET_REMOTE_ADDRESS = "getRemoteAddress";
52         static constexpr const char *FUNCTION_GET_STATE = "getState";
53         static constexpr const char *FUNCTION_SET_EXTRA_OPTIONS = "setExtraOptions";
54         static constexpr const char *FUNCTION_GET_SOCKET_FD = "getSocketFd";
55         static constexpr const char *FUNCTION_ON = "on";
56         static constexpr const char *FUNCTION_OFF = "off";
57 
58         static napi_value Bind(napi_env env, napi_callback_info info);
59         static napi_value Connect(napi_env env, napi_callback_info info);
60         static napi_value Send(napi_env env, napi_callback_info info);
61         static napi_value Close(napi_env env, napi_callback_info info);
62         static napi_value GetRemoteAddress(napi_env env, napi_callback_info info);
63         static napi_value GetState(napi_env env, napi_callback_info info);
64         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
65         static napi_value GetSocketFd(napi_env env, napi_callback_info info);
66         static napi_value On(napi_env env, napi_callback_info info);
67         static napi_value Off(napi_env env, napi_callback_info info);
68     };
69 
70     class TCPConnection {
71     public:
72         static constexpr const char *PROPERTY_CLIENT_ID = "clientId";
73         static constexpr const char *FUNCTION_SEND = "send";
74         static constexpr const char *FUNCTION_CLOSE = "close";
75         static constexpr const char *FUNCTION_GET_REMOTE_ADDRESS = "getRemoteAddress";
76         static constexpr const char *FUNCTION_ON = "on";
77         static constexpr const char *FUNCTION_OFF = "off";
78 
79         static napi_value Send(napi_env env, napi_callback_info info);
80         static napi_value Close(napi_env env, napi_callback_info info);
81         static napi_value GetRemoteAddress(napi_env env, napi_callback_info info);
82         static napi_value On(napi_env env, napi_callback_info info);
83         static napi_value Off(napi_env env, napi_callback_info info);
84     };
85 
86     class TCPServerSocket {
87     public:
88         static constexpr const char *FUNCTION_LISTEN = "listen";
89         static constexpr const char *FUNCTION_GET_STATE = "getState";
90         static constexpr const char *FUNCTION_SET_EXTRA_OPTIONS = "setExtraOptions";
91         static constexpr const char *FUNCTION_ON = "on";
92         static constexpr const char *FUNCTION_OFF = "off";
93 
94         static napi_value Listen(napi_env env, napi_callback_info info);
95         static napi_value GetState(napi_env env, napi_callback_info info);
96         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
97         static napi_value On(napi_env env, napi_callback_info info);
98         static napi_value Off(napi_env env, napi_callback_info info);
99     };
100 
101     static constexpr const char *FUNCTION_CONSTRUCTOR_UDP_SOCKET_INSTANCE = "constructUDPSocketInstance";
102     static constexpr const char *FUNCTION_CONSTRUCTOR_TCP_SOCKET_INSTANCE = "constructTCPSocketInstance";
103     static constexpr const char *FUNCTION_CONSTRUCTOR_TCP_SOCKET_SERVER_INSTANCE = "constructTCPSocketServerInstance";
104     static constexpr const char *INTERFACE_UDP_SOCKET = "UDPSocket";
105     static constexpr const char *INTERFACE_TCP_SOCKET = "TCPSocket";
106     static constexpr const char *INTERFACE_TCP_SOCKET_SERVER = "TCPSocketServer";
107 
108     static napi_value InitSocketModule(napi_env env, napi_value exports);
109 
110 private:
111     static napi_value ConstructUDPSocketInstance(napi_env env, napi_callback_info info);
112 
113     static napi_value ConstructTCPSocketInstance(napi_env env, napi_callback_info info);
114 
115     static napi_value ConstructTCPSocketServerInstance(napi_env env, napi_callback_info info);
116 
117     static void DefineUDPSocketClass(napi_env env, napi_value exports);
118 
119     static void DefineTCPSocketClass(napi_env env, napi_value exports);
120 
121     static void DefineTCPServerSocketClass(napi_env env, napi_value exports);
122 
123     static void InitSocketProperties(napi_env env, napi_value exports);
124 };
125 } // namespace OHOS::NetStack::Socket
126 #endif // COMMUNICATIONNETSTACK_SOCKET_MODULE_H
127