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