• 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 
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