同步操作将从 sulayman_tien/poco 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//// StreamSocket.cpp//// Library: Net// Package: Sockets// Module: StreamSocket//// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.// and Contributors.//// SPDX-License-Identifier: BSL-1.0//#include "Poco/Net/StreamSocket.h"#include "Poco/Net/StreamSocketImpl.h"#include "Poco/FIFOBuffer.h"#include "Poco/Mutex.h"#include "Poco/Exception.h"using Poco::InvalidArgumentException;using Poco::Mutex;using Poco::ScopedLock;namespace Poco {namespace Net {StreamSocket::StreamSocket(): Socket(new StreamSocketImpl){}StreamSocket::StreamSocket(const SocketAddress& address): Socket(new StreamSocketImpl(address.family())){connect(address);}StreamSocket::StreamSocket(SocketAddress::Family family): Socket(new StreamSocketImpl(family)){}StreamSocket::StreamSocket(const Socket& socket): Socket(socket){if (!dynamic_cast<StreamSocketImpl*>(impl()))throw InvalidArgumentException("Cannot assign incompatible socket");}StreamSocket::StreamSocket(const StreamSocket& socket): Socket(socket){}StreamSocket::StreamSocket(SocketImpl* pImpl): Socket(pImpl){if (!dynamic_cast<StreamSocketImpl*>(impl()))throw InvalidArgumentException("Cannot assign incompatible socket");}StreamSocket::~StreamSocket(){}StreamSocket& StreamSocket::operator = (const Socket& socket){if (dynamic_cast<StreamSocketImpl*>(socket.impl()))Socket::operator = (socket);elsethrow InvalidArgumentException("Cannot assign incompatible socket");return *this;}StreamSocket& StreamSocket::operator = (const StreamSocket& socket){Socket::operator = (socket);return *this;}#if POCO_NEW_STATE_ON_MOVEStreamSocket::StreamSocket(Socket&& socket): Socket(std::move(socket)){if (!dynamic_cast<StreamSocketImpl*>(impl()))throw InvalidArgumentException("Cannot assign incompatible socket");}StreamSocket::StreamSocket(StreamSocket&& socket): Socket(std::move(socket)){}StreamSocket& StreamSocket::operator = (Socket&& socket){Socket::operator = (std::move(socket));return *this;}StreamSocket& StreamSocket::operator = (StreamSocket&& socket){Socket::operator = (std::move(socket));return *this;}#endif // POCO_NEW_STATE_ON_MOVEvoid StreamSocket::bind(const SocketAddress& address, bool reuseAddress, bool ipV6Only){if (address.family() == IPAddress::IPv4)impl()->bind(address, reuseAddress);elseimpl()->bind6(address, reuseAddress, ipV6Only);}void StreamSocket::connect(const SocketAddress& address){impl()->connect(address);}void StreamSocket::connect(const SocketAddress& address, const Poco::Timespan& timeout){impl()->connect(address, timeout);}void StreamSocket::connectNB(const SocketAddress& address){impl()->connectNB(address);}void StreamSocket::shutdownReceive(){impl()->shutdownReceive();}void StreamSocket::shutdownSend(){impl()->shutdownSend();}void StreamSocket::shutdown(){impl()->shutdown();}int StreamSocket::sendBytes(const void* buffer, int length, int flags){return impl()->sendBytes(buffer, length, flags);}int StreamSocket::sendBytes(const SocketBufVec& buffers, int flags){return impl()->sendBytes(buffers, flags);}int StreamSocket::sendBytes(FIFOBuffer& fifoBuf){ScopedLock<Mutex> l(fifoBuf.mutex());int ret = impl()->sendBytes(fifoBuf.begin(), (int) fifoBuf.used());if (ret > 0) fifoBuf.drain(ret);return ret;}int StreamSocket::receiveBytes(void* buffer, int length, int flags){return impl()->receiveBytes(buffer, length, flags);}int StreamSocket::receiveBytes(SocketBufVec& buffers, int flags){return impl()->receiveBytes(buffers, flags);}int StreamSocket::receiveBytes(Poco::Buffer<char>& buffer, int flags, const Poco::Timespan& timeout){return impl()->receiveBytes(buffer, flags, timeout);}int StreamSocket::receiveBytes(FIFOBuffer& fifoBuf){ScopedLock<Mutex> l(fifoBuf.mutex());int ret = impl()->receiveBytes(fifoBuf.next(), (int)fifoBuf.available());if (ret > 0) fifoBuf.advance(ret);return ret;}void StreamSocket::sendUrgent(unsigned char data){impl()->sendUrgent(data);}} } // namespace Poco::Net
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。