1cc290419Sopenharmony_ci/* 2cc290419Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 3cc290419Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4cc290419Sopenharmony_ci * you may not use this file except in compliance with the License. 5cc290419Sopenharmony_ci * You may obtain a copy of the License at 6cc290419Sopenharmony_ci * 7cc290419Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8cc290419Sopenharmony_ci * 9cc290419Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10cc290419Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11cc290419Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12cc290419Sopenharmony_ci * See the License for the specific language governing permissions and 13cc290419Sopenharmony_ci * limitations under the License. 14cc290419Sopenharmony_ci */ 15cc290419Sopenharmony_ci#ifndef HDC_TCP_H 16cc290419Sopenharmony_ci#define HDC_TCP_H 17cc290419Sopenharmony_ci#include "common.h" 18cc290419Sopenharmony_ci 19cc290419Sopenharmony_cinamespace Hdc { 20cc290419Sopenharmony_ciclass HdcTCPBase { 21cc290419Sopenharmony_cipublic: 22cc290419Sopenharmony_ci HdcTCPBase(const bool serverOrDaemonIn, void *ptrMainBase); 23cc290419Sopenharmony_ci virtual ~HdcTCPBase(); 24cc290419Sopenharmony_ci static void ReadStream(uv_stream_t *tcp, ssize_t nread, const uv_buf_t *buf); 25cc290419Sopenharmony_ci int WriteUvTcpFd(uv_tcp_t *tcp, uint8_t *buf, int size); 26cc290419Sopenharmony_ci 27cc290419Sopenharmony_ciprotected: 28cc290419Sopenharmony_ci virtual void RecvUDPEntry(const sockaddr *addrSrc, uv_udp_t *handle, const uv_buf_t *rcvbuf) 29cc290419Sopenharmony_ci { 30cc290419Sopenharmony_ci } 31cc290419Sopenharmony_ci static void RecvUDP( 32cc290419Sopenharmony_ci uv_udp_t *handle, ssize_t nread, const uv_buf_t *rcvbuf, const struct sockaddr *addr, unsigned flags); 33cc290419Sopenharmony_ci static void SendUDPFinish(uv_udp_send_t *req, int status); 34cc290419Sopenharmony_ci static void AllocStreamUDP(uv_handle_t *handle, size_t sizeWanted, uv_buf_t *buf); 35cc290419Sopenharmony_ci 36cc290419Sopenharmony_ci void *clsMainBase; 37cc290419Sopenharmony_ci bool serverOrDaemon; 38cc290419Sopenharmony_ci std::mutex writeTCPMutex; 39cc290419Sopenharmony_ci 40cc290419Sopenharmony_ciprivate: 41cc290419Sopenharmony_ci void InitialChildClass(const bool serverOrDaemonIn, void *ptrMainBase); 42cc290419Sopenharmony_ci}; 43cc290419Sopenharmony_ci} // namespace Hdc 44cc290419Sopenharmony_ci 45cc290419Sopenharmony_ci#endif 46