• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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