1 /* 2 * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development 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 OHOS_SHARING_SOCKET_INFO_H 17 #define OHOS_SHARING_SOCKET_INFO_H 18 19 #include <memory> 20 #include <netinet/in.h> 21 #include <string> 22 #include "common/media_log.h" 23 24 namespace OHOS { 25 namespace Sharing { 26 enum SocketType { SOCKET_TYPE_INVALID, SOCKET_TYPE_TCP, SOCKET_TYPE_UDP }; 27 28 enum SocketState { SOCKET_STATE_INIT, SOCKET_STATE_CONNECTED, SOCKET_STATE_LISTENING, SOCKET_STATE_CLOSED }; 29 30 class SocketInfo { 31 public: 32 using Ptr = std::shared_ptr<SocketInfo>; 33 using UniPtr = std::unique_ptr<SocketInfo>; 34 SocketInfo()35 SocketInfo() 36 { 37 MEDIA_LOGD("trace."); 38 } 39 SocketInfo(std::string localIp,std::string peerIp,int32_t socketLocalFd,int32_t socketPeerFd,uint16_t localPort,uint16_t peerPort)40 explicit SocketInfo(std::string localIp, std::string peerIp, int32_t socketLocalFd, int32_t socketPeerFd, 41 uint16_t localPort, uint16_t peerPort) 42 : peerPort_(peerPort), socketPeerFd_(socketPeerFd), peerIp_(peerIp), localPort_(localPort), 43 socketLocalFd_(socketLocalFd), localIp_(localIp) 44 { 45 MEDIA_LOGD("trace."); 46 } 47 ~SocketInfo()48 virtual ~SocketInfo() 49 { 50 MEDIA_LOGD("trace."); 51 } 52 GetLocalIp()53 std::string GetLocalIp() const 54 { 55 MEDIA_LOGD("trace."); 56 return localIp_; 57 } 58 GetPeerIp()59 std::string GetPeerIp() const 60 { 61 MEDIA_LOGD("trace."); 62 return peerIp_; 63 } 64 GetLocalPort()65 uint16_t GetLocalPort() 66 { 67 MEDIA_LOGD("trace."); 68 return localPort_; 69 } 70 GetPeerPort()71 uint16_t GetPeerPort() 72 { 73 MEDIA_LOGD("trace."); 74 return peerPort_; 75 } 76 GetSocketType()77 SocketType GetSocketType() const 78 { 79 MEDIA_LOGD("trace."); 80 return socketType_; 81 } 82 GetLocalFd()83 int32_t GetLocalFd() const 84 { 85 MEDIA_LOGD("trace."); 86 return socketLocalFd_; 87 } 88 GetPeerFd()89 int32_t GetPeerFd() const 90 { 91 MEDIA_LOGD("trace."); 92 return socketPeerFd_; 93 } 94 resetPeerFd()95 void resetPeerFd() 96 { 97 socketPeerFd_ = -1; 98 } 99 SetSocketState(SocketState state)100 void SetSocketState(SocketState state) 101 { 102 MEDIA_LOGD("trace."); 103 socketState_ = state; 104 } 105 GetSocketState()106 SocketState GetSocketState() const 107 { 108 MEDIA_LOGD("trace."); 109 return socketState_; 110 } 111 SetSocketType(SocketType type)112 void SetSocketType(SocketType type) 113 { 114 MEDIA_LOGD("trace."); 115 socketType_ = type; 116 } 117 GetSocketType()118 SocketType GetSocketType() 119 { 120 MEDIA_LOGD("trace."); 121 return socketType_; 122 } 123 124 public: 125 uint16_t peerPort_ = 0; 126 int32_t socketPeerFd_ = -1; 127 128 std::string peerIp_; 129 130 struct sockaddr_in udpClientAddr_ = {}; 131 socklen_t udpClientLen_ = sizeof(struct sockaddr_in); 132 133 protected: 134 uint16_t localPort_ = 0; 135 int32_t socketLocalFd_ = -1; 136 137 std::string localIp_; 138 139 SocketType socketType_ = SOCKET_TYPE_INVALID; 140 SocketState socketState_ = SOCKET_STATE_INIT; 141 }; 142 } // namespace Sharing 143 } // namespace OHOS 144 #endif