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