• 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 MulticastSocket : public UDPSocket {
46     public:
47         static constexpr char FUNCTION_ADD_MEMBER_SHIP[] = "addMembership";
48         static constexpr char FUNCTION_DROP_MEMBER_SHIP[] = "dropMembership";
49         static constexpr char FUNCTION_SET_MULTICAST_TTL[] = "setMulticastTTL";
50         static constexpr char FUNCTION_GET_MULTICAST_TTL[] = "getMulticastTTL";
51         static constexpr char FUNCTION_SET_LOOPBACK_MODE[] = "setLoopbackMode";
52         static constexpr char FUNCTION_GET_LOOPBACK_MODE[] = "getLoopbackMode";
53 
54         static napi_value AddMembership(napi_env env, napi_callback_info info);
55         static napi_value DropMembership(napi_env env, napi_callback_info info);
56         static napi_value SetMulticastTTL(napi_env env, napi_callback_info info);
57         static napi_value GetMulticastTTL(napi_env env, napi_callback_info info);
58         static napi_value SetLoopbackMode(napi_env env, napi_callback_info info);
59         static napi_value GetLoopbackMode(napi_env env, napi_callback_info info);
60     };
61 
62     class LocalSocket {
63     public:
64         static constexpr char FUNCTION_BIND[] = "bind";
65         static constexpr char FUNCTION_CONNECT[] = "connect";
66         static constexpr char FUNCTION_SEND[] = "send";
67         static constexpr char FUNCTION_CLOSE[] = "close";
68         static constexpr char FUNCTION_GET_STATE[] = "getState";
69         static constexpr char FUNCTION_GET_SOCKET_FD[] = "getSocketFd";
70         static constexpr char FUNCTION_SET_EXTRA_OPTIONS[] = "setExtraOptions";
71         static constexpr char FUNCTION_GET_EXTRA_OPTIONS[] = "getExtraOptions";
72         static constexpr char FUNCTION_ON[] = "on";
73         static constexpr char FUNCTION_OFF[] = "off";
74 
75         static napi_value Bind(napi_env env, napi_callback_info info);
76         static napi_value Connect(napi_env env, napi_callback_info info);
77         static napi_value Send(napi_env env, napi_callback_info info);
78         static napi_value Close(napi_env env, napi_callback_info info);
79         static napi_value GetState(napi_env env, napi_callback_info info);
80         static napi_value GetSocketFd(napi_env env, napi_callback_info info);
81         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
82         static napi_value GetExtraOptions(napi_env env, napi_callback_info info);
83         static napi_value On(napi_env env, napi_callback_info info);
84         static napi_value Off(napi_env env, napi_callback_info info);
85     };
86 
87     class LocalSocketServer {
88     public:
89         static constexpr char FUNCTION_LISTEN[] = "listen";
90         static constexpr char FUNCTION_GET_STATE[] = "getState";
91         static constexpr char FUNCTION_SET_EXTRA_OPTIONS[] = "setExtraOptions";
92         static constexpr char FUNCTION_GET_EXTRA_OPTIONS[] = "getExtraOptions";
93         static constexpr char FUNCTION_ON[] = "on";
94         static constexpr char FUNCTION_OFF[] = "off";
95 
96         static napi_value Listen(napi_env env, napi_callback_info info);
97         static napi_value GetState(napi_env env, napi_callback_info info);
98         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
99         static napi_value GetExtraOptions(napi_env env, napi_callback_info info);
100         static napi_value On(napi_env env, napi_callback_info info);
101         static napi_value Off(napi_env env, napi_callback_info info);
102     };
103 
104     class LocalSocketConnection {
105     public:
106         static constexpr char PROPERTY_CLIENT_ID[] = "clientId";
107         static constexpr char FUNCTION_SEND[] = "send";
108         static constexpr char FUNCTION_CLOSE[] = "close";
109         static constexpr char FUNCTION_ON[] = "on";
110         static constexpr char FUNCTION_OFF[] = "off";
111 
112         static napi_value Send(napi_env env, napi_callback_info info);
113         static napi_value Close(napi_env env, napi_callback_info info);
114         static napi_value On(napi_env env, napi_callback_info info);
115         static napi_value Off(napi_env env, napi_callback_info info);
116     };
117 
118     class TCPSocket {
119     public:
120         static constexpr const char *FUNCTION_BIND = "bind";
121         static constexpr const char *FUNCTION_CONNECT = "connect";
122         static constexpr const char *FUNCTION_SEND = "send";
123         static constexpr const char *FUNCTION_CLOSE = "close";
124         static constexpr const char *FUNCTION_GET_REMOTE_ADDRESS = "getRemoteAddress";
125         static constexpr const char *FUNCTION_GET_STATE = "getState";
126         static constexpr const char *FUNCTION_SET_EXTRA_OPTIONS = "setExtraOptions";
127         static constexpr const char *FUNCTION_GET_SOCKET_FD = "getSocketFd";
128         static constexpr const char *FUNCTION_ON = "on";
129         static constexpr const char *FUNCTION_OFF = "off";
130 
131         static napi_value Bind(napi_env env, napi_callback_info info);
132         static napi_value Connect(napi_env env, napi_callback_info info);
133         static napi_value Send(napi_env env, napi_callback_info info);
134         static napi_value Close(napi_env env, napi_callback_info info);
135         static napi_value GetRemoteAddress(napi_env env, napi_callback_info info);
136         static napi_value GetState(napi_env env, napi_callback_info info);
137         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
138         static napi_value GetSocketFd(napi_env env, napi_callback_info info);
139         static napi_value On(napi_env env, napi_callback_info info);
140         static napi_value Off(napi_env env, napi_callback_info info);
141     };
142 
143     class TCPConnection {
144     public:
145         static constexpr const char *PROPERTY_CLIENT_ID = "clientId";
146         static constexpr const char *FUNCTION_SEND = "send";
147         static constexpr const char *FUNCTION_CLOSE = "close";
148         static constexpr const char *FUNCTION_GET_REMOTE_ADDRESS = "getRemoteAddress";
149         static constexpr const char *FUNCTION_ON = "on";
150         static constexpr const char *FUNCTION_OFF = "off";
151 
152         static napi_value Send(napi_env env, napi_callback_info info);
153         static napi_value Close(napi_env env, napi_callback_info info);
154         static napi_value GetRemoteAddress(napi_env env, napi_callback_info info);
155         static napi_value On(napi_env env, napi_callback_info info);
156         static napi_value Off(napi_env env, napi_callback_info info);
157     };
158 
159     class TCPServerSocket {
160     public:
161         static constexpr const char *FUNCTION_LISTEN = "listen";
162         static constexpr const char *FUNCTION_GET_STATE = "getState";
163         static constexpr const char *FUNCTION_SET_EXTRA_OPTIONS = "setExtraOptions";
164         static constexpr const char *FUNCTION_ON = "on";
165         static constexpr const char *FUNCTION_OFF = "off";
166 
167         static napi_value Listen(napi_env env, napi_callback_info info);
168         static napi_value GetState(napi_env env, napi_callback_info info);
169         static napi_value SetExtraOptions(napi_env env, napi_callback_info info);
170         static napi_value On(napi_env env, napi_callback_info info);
171         static napi_value Off(napi_env env, napi_callback_info info);
172     };
173 
174     static constexpr const char *FUNCTION_CONSTRUCTOR_UDP_SOCKET_INSTANCE = "constructUDPSocketInstance";
175     static constexpr const char *FUNCTION_CONSTRUCTOR_MULTICAST_SOCKET_INSTANCE = "constructMulticastSocketInstance";
176     static constexpr const char *FUNCTION_CONSTRUCTOR_TCP_SOCKET_INSTANCE = "constructTCPSocketInstance";
177     static constexpr const char *FUNCTION_CONSTRUCTOR_TCP_SOCKET_SERVER_INSTANCE = "constructTCPSocketServerInstance";
178     static constexpr const char *FUNCTION_CONSTRUCTOR_LOCAL_SOCKET_INSTANCE = "constructLocalSocketInstance";
179     static constexpr const char *FUNCTION_CONSTRUCTOR_LOCAL_SOCKET_SERVER_INSTANCE =
180         "constructLocalSocketServerInstance";
181     static constexpr const char *INTERFACE_UDP_SOCKET = "UDPSocket";
182     static constexpr const char *INTERFACE_MULTICAST_SOCKET = "MulticastSocket";
183     static constexpr const char *INTERFACE_TCP_SOCKET = "TCPSocket";
184     static constexpr const char *INTERFACE_TCP_SOCKET_SERVER = "TCPSocketServer";
185     static constexpr const char *INTERFACE_LOCAL_SOCKET = "LocalSocket";
186     static constexpr const char *INTERFACE_LOCAL_SOCKET_SERVER = "LocalSocketServer";
187 
188     static napi_value InitSocketModule(napi_env env, napi_value exports);
189 
190 private:
191     static napi_value ConstructUDPSocketInstance(napi_env env, napi_callback_info info);
192 
193     static napi_value ConstructMulticastSocketInstance(napi_env env, napi_callback_info info);
194 
195     static napi_value ConstructTCPSocketInstance(napi_env env, napi_callback_info info);
196 
197     static napi_value ConstructTCPSocketServerInstance(napi_env env, napi_callback_info info);
198 
199     static napi_value ConstructLocalSocketInstance(napi_env env, napi_callback_info info);
200 
201     static napi_value ConstructLocalSocketServerInstance(napi_env env, napi_callback_info info);
202 
203     static void DefineUDPSocketClass(napi_env env, napi_value exports);
204 
205     static void DefineMulticastSocketClass(napi_env env, napi_value exports);
206 
207     static void DefineTCPSocketClass(napi_env env, napi_value exports);
208 
209     static void DefineTCPServerSocketClass(napi_env env, napi_value exports);
210 
211     static void DefineLocalSocketClass(napi_env env, napi_value exports);
212 
213     static void DefineLocalSocketServerClass(napi_env env, napi_value exports);
214 
215     static void InitSocketProperties(napi_env env, napi_value exports);
216 };
217 } // namespace OHOS::NetStack::Socket
218 #endif // COMMUNICATIONNETSTACK_SOCKET_MODULE_H
219