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