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 SetSocketState(SocketState state)95 void SetSocketState(SocketState state) 96 { 97 MEDIA_LOGD("trace."); 98 socketState_ = state; 99 } 100 GetSocketState()101 SocketState GetSocketState() const 102 { 103 MEDIA_LOGD("trace."); 104 return socketState_; 105 } 106 SetSocketType(SocketType type)107 void SetSocketType(SocketType type) 108 { 109 MEDIA_LOGD("trace."); 110 socketType_ = type; 111 } 112 GetSocketType()113 SocketType GetSocketType() 114 { 115 MEDIA_LOGD("trace."); 116 return socketType_; 117 } 118 119 public: 120 uint16_t peerPort_ = 0; 121 int32_t socketPeerFd_ = -1; 122 123 std::string peerIp_; 124 125 struct sockaddr_in udpClientAddr_; 126 socklen_t udpClientLen_ = sizeof(struct sockaddr_in); 127 128 protected: 129 uint16_t localPort_ = 0; 130 int32_t socketLocalFd_ = -1; 131 132 std::string localIp_; 133 134 SocketType socketType_ = SOCKET_TYPE_INVALID; 135 SocketState socketState_ = SOCKET_STATE_INIT; 136 }; 137 } // namespace Sharing 138 } // namespace OHOS 139 #endif