aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Net/include/Poco
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:45:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:01 +0300
commit2d37894b1b037cf24231090eda8589bbb44fb6fc (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Net/include/Poco
parent718c552901d703c502ccbefdfc3c9028d608b947 (diff)
downloadydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Net/include/Poco')
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/AbstractHTTPRequestHandler.h272
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/DNS.h406
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/DatagramSocket.h336
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/DatagramSocketImpl.h110
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/DialogSocket.h420
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/FTPClientSession.h806
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/FTPStreamFactory.h240
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/FilePartSource.h154
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTMLForm.h544
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPAuthenticationParams.h206
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPBasicCredentials.h246
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPBasicStreamBuf.h72
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPBufferAllocator.h100
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPChunkedStream.h210
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPClientSession.h782
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPCookie.h544
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPCredentials.h412
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPDigestCredentials.h372
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPFixedLengthStream.h220
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPHeaderStream.h204
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPIOStream.h176
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPMessage.h370
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPRequest.h400
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandler.h134
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandlerFactory.h156
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPResponse.h598
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServer.h206
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnection.h130
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnectionFactory.h110
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerParams.h308
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequest.h160
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequestImpl.h284
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponse.h254
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponseImpl.h302
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPServerSession.h152
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPSession.h500
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPSessionFactory.h310
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPSessionInstantiator.h234
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPStream.h206
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HTTPStreamFactory.h184
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/HostEntry.h230
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPClient.h192
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPEventArgs.h326
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPPacket.h178
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPPacketImpl.h282
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPSocket.h182
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPSocketImpl.h188
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ICMPv4PacketImpl.h346
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/IPAddress.h900
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/IPAddressImpl.h358
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MailMessage.h628
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MailRecipient.h240
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MailStream.h292
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MediaType.h338
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MessageHeader.h334
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MulticastSocket.h270
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MultipartReader.h320
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/MultipartWriter.h218
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NTPClient.h128
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NTPEventArgs.h168
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NTPPacket.h414
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NameValueCollection.h252
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/Net.h244
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NetException.h120
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NetworkInterface.h698
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/NullPartHandler.h94
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/OAuth10Credentials.h546
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/OAuth20Credentials.h264
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/POP3ClientSession.h370
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ParallelSocketAcceptor.h462
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ParallelSocketReactor.h180
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/PartHandler.h136
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/PartSource.h220
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/PartStore.h212
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/PollSet.h172
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableDecoder.h172
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableEncoder.h170
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/RawSocket.h322
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/RawSocketImpl.h112
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogChannel.h316
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogListener.h242
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SMTPChannel.h216
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SMTPClientSession.h468
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ServerSocket.h460
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/ServerSocketImpl.h90
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/Socket.h1260
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketAcceptor.h388
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketAddress.h602
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketAddressImpl.h516
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketConnector.h424
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketDefs.h770
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketImpl.h998
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketNotification.h306
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketNotifier.h220
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketReactor.h466
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/SocketStream.h354
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/StreamSocket.h360
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/StreamSocketImpl.h118
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/StringPartSource.h142
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/TCPServer.h520
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/TCPServerConnection.h172
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/TCPServerConnectionFactory.h178
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/TCPServerDispatcher.h260
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/TCPServerParams.h272
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/WebSocket.h594
-rw-r--r--contrib/libs/poco/Net/include/Poco/Net/WebSocketImpl.h284
106 files changed, 17052 insertions, 17052 deletions
diff --git a/contrib/libs/poco/Net/include/Poco/Net/AbstractHTTPRequestHandler.h b/contrib/libs/poco/Net/include/Poco/Net/AbstractHTTPRequestHandler.h
index 710ef68702..7bbc174c81 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/AbstractHTTPRequestHandler.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/AbstractHTTPRequestHandler.h
@@ -1,136 +1,136 @@
-//
-// AbstractHTTPRequestHandler.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: AbstractHTTPRequestHandler
-//
-// Definition of the AbstractHTTPRequestHandler class.
-//
-// Copyright (c) 2007, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_AbstractHTTPRequestHandler_INCLUDED
-#define Net_AbstractHTTPRequestHandler_INCLUDED
-
-
-#include "Poco/Net/HTTPRequestHandler.h"
-#include "Poco/Net/HTTPResponse.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTMLForm;
-
-
-class Net_API AbstractHTTPRequestHandler: public HTTPRequestHandler
- /// The abstract base class for AbstractHTTPRequestHandlers
- /// created by HTTPServer.
- ///
- /// Derived classes must override the run() method.
-
- /// Contrary to a HTTPRequestHandler, an AbstractHTTPRequestHandler
- /// stores request and response as member variables to avoid having
- /// to pass them around as method parameters. Additionally, a
- /// HTMLForm object is created for use by subclasses.
- ///
- /// The run() method must perform the complete handling
- /// of the HTTP request connection. As soon as the run()
- /// method returns, the request handler object is destroyed.
- ///
- /// A new AbstractHTTPRequestHandler object will be created for
- /// each new HTTP request that is received by the HTTPServer.
-{
-public:
- AbstractHTTPRequestHandler();
- /// Creates the AbstractHTTPRequestHandler.
-
- virtual ~AbstractHTTPRequestHandler();
- /// Destroys the AbstractHTTPRequestHandler.
-
- void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response);
- /// This class implements some common behavior,
- /// before calling run() to actually handle the request:
- /// - save request and response objects;
- /// - call authorize();
- /// - if authorize() returns true call run(),
- /// else send 401 (Unauthorized) response.
- ///
- /// If run() throws an exception and the response has not been
- /// sent yet, sends a 500 (Internal Server Error) response with
- /// the exception's display text.
-
- HTTPServerRequest& request();
- /// Returns the request.
-
- HTTPServerResponse& response();
- /// Returns the response.
-
- HTMLForm& form();
- /// Returns a HTMLForm for the given request.
- /// The HTMLForm object is created when this
- /// member function is executed the first time.
-
- void sendErrorResponse(HTTPResponse::HTTPStatus status, const std::string& message);
- /// Sends a HTML error page for the given status code.
- /// The given message is added to the page:
- /// <HTML>
- /// <HEAD>
- /// <TITLE>status - reason</TITLE>
- /// </HEAD>
- /// <BODY>
- /// <H1>status - reason</H1>
- /// <P>message</P>
- /// </BODY>
- /// </HTML>
-
-protected:
- virtual void run() = 0;
- /// Must be overridden by subclasses.
- ///
- /// Handles the given request.
-
- virtual bool authenticate();
- /// Check authentication; returns true if okay, false if failed to authenticate.
- /// The default implementation always returns true.
- ///
- /// Subclasses can override this member function to perform
- /// some form of client or request authentication before
- /// the request is actually handled.
-
-private:
- HTTPServerRequest* _pRequest;
- HTTPServerResponse* _pResponse;
- HTMLForm* _pForm;
-};
-
-
-//
-// inlines
-//
-inline HTTPServerRequest& AbstractHTTPRequestHandler::request()
-{
- poco_check_ptr (_pRequest);
-
- return *_pRequest;
-}
-
-
-inline HTTPServerResponse& AbstractHTTPRequestHandler::response()
-{
- poco_check_ptr (_pResponse);
-
- return *_pResponse;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_AbstractHTTPRequestHandler_INCLUDED
+//
+// AbstractHTTPRequestHandler.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: AbstractHTTPRequestHandler
+//
+// Definition of the AbstractHTTPRequestHandler class.
+//
+// Copyright (c) 2007, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_AbstractHTTPRequestHandler_INCLUDED
+#define Net_AbstractHTTPRequestHandler_INCLUDED
+
+
+#include "Poco/Net/HTTPRequestHandler.h"
+#include "Poco/Net/HTTPResponse.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTMLForm;
+
+
+class Net_API AbstractHTTPRequestHandler: public HTTPRequestHandler
+ /// The abstract base class for AbstractHTTPRequestHandlers
+ /// created by HTTPServer.
+ ///
+ /// Derived classes must override the run() method.
+
+ /// Contrary to a HTTPRequestHandler, an AbstractHTTPRequestHandler
+ /// stores request and response as member variables to avoid having
+ /// to pass them around as method parameters. Additionally, a
+ /// HTMLForm object is created for use by subclasses.
+ ///
+ /// The run() method must perform the complete handling
+ /// of the HTTP request connection. As soon as the run()
+ /// method returns, the request handler object is destroyed.
+ ///
+ /// A new AbstractHTTPRequestHandler object will be created for
+ /// each new HTTP request that is received by the HTTPServer.
+{
+public:
+ AbstractHTTPRequestHandler();
+ /// Creates the AbstractHTTPRequestHandler.
+
+ virtual ~AbstractHTTPRequestHandler();
+ /// Destroys the AbstractHTTPRequestHandler.
+
+ void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response);
+ /// This class implements some common behavior,
+ /// before calling run() to actually handle the request:
+ /// - save request and response objects;
+ /// - call authorize();
+ /// - if authorize() returns true call run(),
+ /// else send 401 (Unauthorized) response.
+ ///
+ /// If run() throws an exception and the response has not been
+ /// sent yet, sends a 500 (Internal Server Error) response with
+ /// the exception's display text.
+
+ HTTPServerRequest& request();
+ /// Returns the request.
+
+ HTTPServerResponse& response();
+ /// Returns the response.
+
+ HTMLForm& form();
+ /// Returns a HTMLForm for the given request.
+ /// The HTMLForm object is created when this
+ /// member function is executed the first time.
+
+ void sendErrorResponse(HTTPResponse::HTTPStatus status, const std::string& message);
+ /// Sends a HTML error page for the given status code.
+ /// The given message is added to the page:
+ /// <HTML>
+ /// <HEAD>
+ /// <TITLE>status - reason</TITLE>
+ /// </HEAD>
+ /// <BODY>
+ /// <H1>status - reason</H1>
+ /// <P>message</P>
+ /// </BODY>
+ /// </HTML>
+
+protected:
+ virtual void run() = 0;
+ /// Must be overridden by subclasses.
+ ///
+ /// Handles the given request.
+
+ virtual bool authenticate();
+ /// Check authentication; returns true if okay, false if failed to authenticate.
+ /// The default implementation always returns true.
+ ///
+ /// Subclasses can override this member function to perform
+ /// some form of client or request authentication before
+ /// the request is actually handled.
+
+private:
+ HTTPServerRequest* _pRequest;
+ HTTPServerResponse* _pResponse;
+ HTMLForm* _pForm;
+};
+
+
+//
+// inlines
+//
+inline HTTPServerRequest& AbstractHTTPRequestHandler::request()
+{
+ poco_check_ptr (_pRequest);
+
+ return *_pRequest;
+}
+
+
+inline HTTPServerResponse& AbstractHTTPRequestHandler::response()
+{
+ poco_check_ptr (_pResponse);
+
+ return *_pResponse;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_AbstractHTTPRequestHandler_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/DNS.h b/contrib/libs/poco/Net/include/Poco/Net/DNS.h
index 27d700ec5c..f896862d9f 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/DNS.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/DNS.h
@@ -1,203 +1,203 @@
-//
-// DNS.h
-//
-// Library: Net
-// Package: NetCore
-// Module: DNS
-//
-// Definition of the DNS class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_DNS_INCLUDED
-#define Net_DNS_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketDefs.h"
-#include "Poco/Net/IPAddress.h"
-#include "Poco/Net/HostEntry.h"
-
-#include "Poco/Timespan.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API DNS
- /// This class provides an interface to the
- /// domain name service.
- ///
- /// Starting with POCO C++ Libraries release 1.9.0,
- /// this class also supports Internationalized Domain Names (IDNs).
- ///
- /// Regarding IDNs, the following rules apply:
- ///
- /// * An IDN passed to hostByName() must be encoded manually, by calling
- /// encodeIDN() (after testing with isIDN() first).
- /// * An UTF-8 IDN passed to resolve() or resolveOne() is automatically encoded.
- /// * IDNs returned in HostEntry objects are never decoded. They can be
- /// decoded by calling decodeIDN() (after testing for an encoded IDN by
- /// calling isEncodedIDN()).
-{
-public:
- enum HintFlag
- {
- DNS_HINT_NONE = 0,
-#ifdef POCO_HAVE_ADDRINFO
- DNS_HINT_AI_PASSIVE = AI_PASSIVE, /// Socket address will be used in bind() call
- DNS_HINT_AI_CANONNAME = AI_CANONNAME, /// Return canonical name in first ai_canonname
- DNS_HINT_AI_NUMERICHOST = AI_NUMERICHOST, /// Nodename must be a numeric address string
- DNS_HINT_AI_NUMERICSERV = AI_NUMERICSERV, /// Servicename must be a numeric port number
- DNS_HINT_AI_ALL = AI_ALL, /// Query both IP6 and IP4 with AI_V4MAPPED
- DNS_HINT_AI_ADDRCONFIG = AI_ADDRCONFIG, /// Resolution only if global address configured
- DNS_HINT_AI_V4MAPPED = AI_V4MAPPED /// On v6 failure, query v4 and convert to V4MAPPED format
-#endif
- };
-
- static const Poco::Timespan DEFAULT_DNS_TIMEOUT;
-
- static HostEntry hostByName(const std::string& hostname, const Poco::Timespan * timeout_ = &DEFAULT_DNS_TIMEOUT, unsigned hintFlags =
-#ifdef POCO_HAVE_ADDRINFO
- DNS_HINT_AI_CANONNAME | DNS_HINT_AI_ADDRCONFIG
-#else
- DNS_HINT_NONE
-#endif
- );
- /// Returns a HostEntry object containing the DNS information
- /// for the host with the given name. HintFlag argument is only
- /// used on platforms that have getaddrinfo().
- ///
- /// Note that Internationalized Domain Names must be encoded
- /// using Punycode (see encodeIDN()) before calling this method.
- ///
- /// Throws a HostNotFoundException if a host with the given
- /// name cannot be found.
- ///
- /// Throws a NoAddressFoundException if no address can be
- /// found for the hostname.
- ///
- /// Throws a DNSException in case of a general DNS error.
- ///
- /// Throws an IOException in case of any other error.
-
- static HostEntry hostByAddress(const IPAddress& address, const Poco::Timespan * timeout_ = &DEFAULT_DNS_TIMEOUT, unsigned hintFlags =
-#ifdef POCO_HAVE_ADDRINFO
- DNS_HINT_AI_CANONNAME | DNS_HINT_AI_ADDRCONFIG
-#else
- DNS_HINT_NONE
-#endif
- );
- /// Returns a HostEntry object containing the DNS information
- /// for the host with the given IP address. HintFlag argument is only
- /// used on platforms that have getaddrinfo().
- ///
- /// Throws a HostNotFoundException if a host with the given
- /// name cannot be found.
- ///
- /// Throws a DNSException in case of a general DNS error.
- ///
- /// Throws an IOException in case of any other error.
-
- static HostEntry resolve(const std::string& address);
- /// Returns a HostEntry object containing the DNS information
- /// for the host with the given IP address or host name.
- ///
- /// If address contains a UTF-8 encoded IDN (internationalized
- /// domain name), the domain name will be encoded first using
- /// Punycode.
- ///
- /// Throws a HostNotFoundException if a host with the given
- /// name cannot be found.
- ///
- /// Throws a NoAddressFoundException if no address can be
- /// found for the hostname.
- ///
- /// Throws a DNSException in case of a general DNS error.
- ///
- /// Throws an IOException in case of any other error.
-
- static IPAddress resolveOne(const std::string& address);
- /// Convenience method that calls resolve(address) and returns
- /// the first address from the HostInfo.
-
- static HostEntry thisHost();
- /// Returns a HostEntry object containing the DNS information
- /// for this host.
- ///
- /// Throws a HostNotFoundException if DNS information
- /// for this host cannot be found.
- ///
- /// Throws a NoAddressFoundException if no address can be
- /// found for this host.
- ///
- /// Throws a DNSException in case of a general DNS error.
- ///
- /// Throws an IOException in case of any other error.
-
- static void reload();
- /// Reloads the resolver configuration.
- ///
- /// This method will call res_init() if the Net library
- /// has been compiled with -DPOCO_HAVE_LIBRESOLV. Otherwise
- /// it will do nothing.
-
- static std::string hostName();
- /// Returns the host name of this host.
-
- static bool isIDN(const std::string& hostname);
- /// Returns true if the given hostname is an internationalized
- /// domain name (IDN) containing non-ASCII characters, otherwise false.
- ///
- /// The IDN must be UTF-8 encoded.
-
- static bool isEncodedIDN(const std::string& hostname);
- /// Returns true if the given hostname is an Punycode-encoded
- /// internationalized domain name (IDN), otherwise false.
- ///
- /// An encoded IDN starts with the character sequence "xn--".
-
- static std::string encodeIDN(const std::string& idn);
- /// Encodes the given IDN (internationalized domain name), which must
- /// be in UTF-8 encoding.
- ///
- /// The resulting string will be encoded according to Punycode.
-
- static std::string decodeIDN(const std::string& encodedIDN);
- /// Decodes the given Punycode-encoded IDN (internationalized domain name).
- ///
- /// The resulting string will be UTF-8 encoded.
-
-protected:
- static int lastError();
- /// Returns the code of the last error.
-
- static void error(int code, const std::string& arg);
- /// Throws an exception according to the error code.
-
- static void aierror(int code, const std::string& arg);
- /// Throws an exception according to the getaddrinfo() error code.
-
- static std::string encodeIDNLabel(const std::string& idn);
- /// Encodes the given IDN (internationalized domain name) label, which must
- /// be in UTF-8 encoding.
- ///
- /// The resulting string will be encoded according to Punycode.
-
- static std::string decodeIDNLabel(const std::string& encodedIDN);
- /// Decodes the given Punycode-encoded IDN (internationalized domain name) label.
- ///
- /// The resulting string will be UTF-8 encoded.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_DNS_INCLUDED
+//
+// DNS.h
+//
+// Library: Net
+// Package: NetCore
+// Module: DNS
+//
+// Definition of the DNS class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_DNS_INCLUDED
+#define Net_DNS_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketDefs.h"
+#include "Poco/Net/IPAddress.h"
+#include "Poco/Net/HostEntry.h"
+
+#include "Poco/Timespan.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API DNS
+ /// This class provides an interface to the
+ /// domain name service.
+ ///
+ /// Starting with POCO C++ Libraries release 1.9.0,
+ /// this class also supports Internationalized Domain Names (IDNs).
+ ///
+ /// Regarding IDNs, the following rules apply:
+ ///
+ /// * An IDN passed to hostByName() must be encoded manually, by calling
+ /// encodeIDN() (after testing with isIDN() first).
+ /// * An UTF-8 IDN passed to resolve() or resolveOne() is automatically encoded.
+ /// * IDNs returned in HostEntry objects are never decoded. They can be
+ /// decoded by calling decodeIDN() (after testing for an encoded IDN by
+ /// calling isEncodedIDN()).
+{
+public:
+ enum HintFlag
+ {
+ DNS_HINT_NONE = 0,
+#ifdef POCO_HAVE_ADDRINFO
+ DNS_HINT_AI_PASSIVE = AI_PASSIVE, /// Socket address will be used in bind() call
+ DNS_HINT_AI_CANONNAME = AI_CANONNAME, /// Return canonical name in first ai_canonname
+ DNS_HINT_AI_NUMERICHOST = AI_NUMERICHOST, /// Nodename must be a numeric address string
+ DNS_HINT_AI_NUMERICSERV = AI_NUMERICSERV, /// Servicename must be a numeric port number
+ DNS_HINT_AI_ALL = AI_ALL, /// Query both IP6 and IP4 with AI_V4MAPPED
+ DNS_HINT_AI_ADDRCONFIG = AI_ADDRCONFIG, /// Resolution only if global address configured
+ DNS_HINT_AI_V4MAPPED = AI_V4MAPPED /// On v6 failure, query v4 and convert to V4MAPPED format
+#endif
+ };
+
+ static const Poco::Timespan DEFAULT_DNS_TIMEOUT;
+
+ static HostEntry hostByName(const std::string& hostname, const Poco::Timespan * timeout_ = &DEFAULT_DNS_TIMEOUT, unsigned hintFlags =
+#ifdef POCO_HAVE_ADDRINFO
+ DNS_HINT_AI_CANONNAME | DNS_HINT_AI_ADDRCONFIG
+#else
+ DNS_HINT_NONE
+#endif
+ );
+ /// Returns a HostEntry object containing the DNS information
+ /// for the host with the given name. HintFlag argument is only
+ /// used on platforms that have getaddrinfo().
+ ///
+ /// Note that Internationalized Domain Names must be encoded
+ /// using Punycode (see encodeIDN()) before calling this method.
+ ///
+ /// Throws a HostNotFoundException if a host with the given
+ /// name cannot be found.
+ ///
+ /// Throws a NoAddressFoundException if no address can be
+ /// found for the hostname.
+ ///
+ /// Throws a DNSException in case of a general DNS error.
+ ///
+ /// Throws an IOException in case of any other error.
+
+ static HostEntry hostByAddress(const IPAddress& address, const Poco::Timespan * timeout_ = &DEFAULT_DNS_TIMEOUT, unsigned hintFlags =
+#ifdef POCO_HAVE_ADDRINFO
+ DNS_HINT_AI_CANONNAME | DNS_HINT_AI_ADDRCONFIG
+#else
+ DNS_HINT_NONE
+#endif
+ );
+ /// Returns a HostEntry object containing the DNS information
+ /// for the host with the given IP address. HintFlag argument is only
+ /// used on platforms that have getaddrinfo().
+ ///
+ /// Throws a HostNotFoundException if a host with the given
+ /// name cannot be found.
+ ///
+ /// Throws a DNSException in case of a general DNS error.
+ ///
+ /// Throws an IOException in case of any other error.
+
+ static HostEntry resolve(const std::string& address);
+ /// Returns a HostEntry object containing the DNS information
+ /// for the host with the given IP address or host name.
+ ///
+ /// If address contains a UTF-8 encoded IDN (internationalized
+ /// domain name), the domain name will be encoded first using
+ /// Punycode.
+ ///
+ /// Throws a HostNotFoundException if a host with the given
+ /// name cannot be found.
+ ///
+ /// Throws a NoAddressFoundException if no address can be
+ /// found for the hostname.
+ ///
+ /// Throws a DNSException in case of a general DNS error.
+ ///
+ /// Throws an IOException in case of any other error.
+
+ static IPAddress resolveOne(const std::string& address);
+ /// Convenience method that calls resolve(address) and returns
+ /// the first address from the HostInfo.
+
+ static HostEntry thisHost();
+ /// Returns a HostEntry object containing the DNS information
+ /// for this host.
+ ///
+ /// Throws a HostNotFoundException if DNS information
+ /// for this host cannot be found.
+ ///
+ /// Throws a NoAddressFoundException if no address can be
+ /// found for this host.
+ ///
+ /// Throws a DNSException in case of a general DNS error.
+ ///
+ /// Throws an IOException in case of any other error.
+
+ static void reload();
+ /// Reloads the resolver configuration.
+ ///
+ /// This method will call res_init() if the Net library
+ /// has been compiled with -DPOCO_HAVE_LIBRESOLV. Otherwise
+ /// it will do nothing.
+
+ static std::string hostName();
+ /// Returns the host name of this host.
+
+ static bool isIDN(const std::string& hostname);
+ /// Returns true if the given hostname is an internationalized
+ /// domain name (IDN) containing non-ASCII characters, otherwise false.
+ ///
+ /// The IDN must be UTF-8 encoded.
+
+ static bool isEncodedIDN(const std::string& hostname);
+ /// Returns true if the given hostname is an Punycode-encoded
+ /// internationalized domain name (IDN), otherwise false.
+ ///
+ /// An encoded IDN starts with the character sequence "xn--".
+
+ static std::string encodeIDN(const std::string& idn);
+ /// Encodes the given IDN (internationalized domain name), which must
+ /// be in UTF-8 encoding.
+ ///
+ /// The resulting string will be encoded according to Punycode.
+
+ static std::string decodeIDN(const std::string& encodedIDN);
+ /// Decodes the given Punycode-encoded IDN (internationalized domain name).
+ ///
+ /// The resulting string will be UTF-8 encoded.
+
+protected:
+ static int lastError();
+ /// Returns the code of the last error.
+
+ static void error(int code, const std::string& arg);
+ /// Throws an exception according to the error code.
+
+ static void aierror(int code, const std::string& arg);
+ /// Throws an exception according to the getaddrinfo() error code.
+
+ static std::string encodeIDNLabel(const std::string& idn);
+ /// Encodes the given IDN (internationalized domain name) label, which must
+ /// be in UTF-8 encoding.
+ ///
+ /// The resulting string will be encoded according to Punycode.
+
+ static std::string decodeIDNLabel(const std::string& encodedIDN);
+ /// Decodes the given Punycode-encoded IDN (internationalized domain name) label.
+ ///
+ /// The resulting string will be UTF-8 encoded.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_DNS_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/DatagramSocket.h b/contrib/libs/poco/Net/include/Poco/Net/DatagramSocket.h
index 143381ddee..17d0253155 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/DatagramSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/DatagramSocket.h
@@ -1,168 +1,168 @@
-//
-// DatagramSocket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: DatagramSocket
-//
-// Definition of the DatagramSocket class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_DatagramSocket_INCLUDED
-#define Net_DatagramSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API DatagramSocket: public Socket
- /// This class provides an interface to an
- /// UDP stream socket.
-{
-public:
- DatagramSocket();
- /// Creates an unconnected, unbound datagram socket.
- ///
- /// Before the datagram socket can be used, bind(),
- /// bind6() or connect() must be called.
- ///
- /// Notice: The behavior of this constructor has changed
- /// in release 2.0. Previously, the constructor created
- /// an unbound IPv4 datagram socket.
-
- explicit DatagramSocket(SocketAddress::Family family);
- /// Creates an unconnected datagram socket.
- ///
- /// The socket will be created for the
- /// given address family.
-
- DatagramSocket(const SocketAddress& address, bool reuseAddress = false);
- /// Creates a datagram socket and binds it
- /// to the given address.
- ///
- /// Depending on the address family, the socket
- /// will be either an IPv4 or an IPv6 socket.
-
- DatagramSocket(const Socket& socket);
- /// Creates the DatagramSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a DatagramSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- ~DatagramSocket();
- /// Destroys the DatagramSocket.
-
- DatagramSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- void connect(const SocketAddress& address);
- /// Restricts incoming and outgoing
- /// packets to the specified address.
- ///
- /// Calls to connect() cannot come before calls to bind().
-
- void bind(const SocketAddress& address, bool reuseAddress = false);
- /// Bind a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// Calls to connect cannot() come before calls to bind().
-
- void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
- /// Bind a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
- ///
- /// Calls to connect cannot() come before calls to bind().
-
- int sendBytes(const void* buffer, int length, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
-
- int receiveBytes(void* buffer, int length, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- ///
- /// Returns the number of bytes received.
-
- int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket to the given address.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
-
- int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- /// Stores the address of the sender in address.
- ///
- /// Returns the number of bytes received.
-
- void setBroadcast(bool flag);
- /// Sets the value of the SO_BROADCAST socket option.
- ///
- /// Setting this flag allows sending datagrams to
- /// the broadcast address.
-
- bool getBroadcast() const;
- /// Returns the value of the SO_BROADCAST socket option.
-
-protected:
- DatagramSocket(SocketImpl* pImpl);
- /// Creates the Socket and attaches the given SocketImpl.
- /// The socket takes ownership of the SocketImpl.
- ///
- /// The SocketImpl must be a StreamSocketImpl, otherwise
- /// an InvalidArgumentException will be thrown.
-};
-
-
-//
-// inlines
-//
-inline void DatagramSocket::setBroadcast(bool flag)
-{
- impl()->setBroadcast(flag);
-}
-
-
-inline bool DatagramSocket::getBroadcast() const
-{
- return impl()->getBroadcast();
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_DatagramSocket_INCLUDED
+//
+// DatagramSocket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: DatagramSocket
+//
+// Definition of the DatagramSocket class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_DatagramSocket_INCLUDED
+#define Net_DatagramSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API DatagramSocket: public Socket
+ /// This class provides an interface to an
+ /// UDP stream socket.
+{
+public:
+ DatagramSocket();
+ /// Creates an unconnected, unbound datagram socket.
+ ///
+ /// Before the datagram socket can be used, bind(),
+ /// bind6() or connect() must be called.
+ ///
+ /// Notice: The behavior of this constructor has changed
+ /// in release 2.0. Previously, the constructor created
+ /// an unbound IPv4 datagram socket.
+
+ explicit DatagramSocket(SocketAddress::Family family);
+ /// Creates an unconnected datagram socket.
+ ///
+ /// The socket will be created for the
+ /// given address family.
+
+ DatagramSocket(const SocketAddress& address, bool reuseAddress = false);
+ /// Creates a datagram socket and binds it
+ /// to the given address.
+ ///
+ /// Depending on the address family, the socket
+ /// will be either an IPv4 or an IPv6 socket.
+
+ DatagramSocket(const Socket& socket);
+ /// Creates the DatagramSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a DatagramSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ ~DatagramSocket();
+ /// Destroys the DatagramSocket.
+
+ DatagramSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ void connect(const SocketAddress& address);
+ /// Restricts incoming and outgoing
+ /// packets to the specified address.
+ ///
+ /// Calls to connect() cannot come before calls to bind().
+
+ void bind(const SocketAddress& address, bool reuseAddress = false);
+ /// Bind a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// Calls to connect cannot() come before calls to bind().
+
+ void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
+ /// Bind a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+ ///
+ /// Calls to connect cannot() come before calls to bind().
+
+ int sendBytes(const void* buffer, int length, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+
+ int receiveBytes(void* buffer, int length, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ ///
+ /// Returns the number of bytes received.
+
+ int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket to the given address.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+
+ int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ /// Stores the address of the sender in address.
+ ///
+ /// Returns the number of bytes received.
+
+ void setBroadcast(bool flag);
+ /// Sets the value of the SO_BROADCAST socket option.
+ ///
+ /// Setting this flag allows sending datagrams to
+ /// the broadcast address.
+
+ bool getBroadcast() const;
+ /// Returns the value of the SO_BROADCAST socket option.
+
+protected:
+ DatagramSocket(SocketImpl* pImpl);
+ /// Creates the Socket and attaches the given SocketImpl.
+ /// The socket takes ownership of the SocketImpl.
+ ///
+ /// The SocketImpl must be a StreamSocketImpl, otherwise
+ /// an InvalidArgumentException will be thrown.
+};
+
+
+//
+// inlines
+//
+inline void DatagramSocket::setBroadcast(bool flag)
+{
+ impl()->setBroadcast(flag);
+}
+
+
+inline bool DatagramSocket::getBroadcast() const
+{
+ return impl()->getBroadcast();
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_DatagramSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/DatagramSocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/DatagramSocketImpl.h
index 6bf7bc8fd8..f9d280aa1b 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/DatagramSocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/DatagramSocketImpl.h
@@ -1,55 +1,55 @@
-//
-// DatagramSocketImpl.h
-//
-// Library: Net
-// Package: Sockets
-// Module: DatagramSocketImpl
-//
-// Definition of the DatagramSocketImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_DatagramSocketImpl_INCLUDED
-#define Net_DatagramSocketImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketImpl.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API DatagramSocketImpl: public SocketImpl
- /// This class implements an UDP socket.
-{
-public:
- DatagramSocketImpl();
- /// Creates an unconnected, unbound datagram socket.
-
- explicit DatagramSocketImpl(SocketAddress::Family family);
- /// Creates an unconnected datagram socket.
- ///
- /// The socket will be created for the
- /// given address family.
-
- DatagramSocketImpl(poco_socket_t sockfd);
- /// Creates a StreamSocketImpl using the given native socket.
-
-protected:
- void init(int af);
-
- ~DatagramSocketImpl();
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_DatagramSocketImpl_INCLUDED
+//
+// DatagramSocketImpl.h
+//
+// Library: Net
+// Package: Sockets
+// Module: DatagramSocketImpl
+//
+// Definition of the DatagramSocketImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_DatagramSocketImpl_INCLUDED
+#define Net_DatagramSocketImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketImpl.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API DatagramSocketImpl: public SocketImpl
+ /// This class implements an UDP socket.
+{
+public:
+ DatagramSocketImpl();
+ /// Creates an unconnected, unbound datagram socket.
+
+ explicit DatagramSocketImpl(SocketAddress::Family family);
+ /// Creates an unconnected datagram socket.
+ ///
+ /// The socket will be created for the
+ /// given address family.
+
+ DatagramSocketImpl(poco_socket_t sockfd);
+ /// Creates a StreamSocketImpl using the given native socket.
+
+protected:
+ void init(int af);
+
+ ~DatagramSocketImpl();
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_DatagramSocketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/DialogSocket.h b/contrib/libs/poco/Net/include/Poco/Net/DialogSocket.h
index 93fa8c36db..ca47b73ba6 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/DialogSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/DialogSocket.h
@@ -1,211 +1,211 @@
-//
-// DialogSocket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: DialogSocket
-//
-// Definition of the DialogSocket class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_DialogSocket_INCLUDED
-#define Net_DialogSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/StreamSocket.h"
-#include <cstdlib>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API DialogSocket: public StreamSocket
- /// DialogSocket is a subclass of StreamSocket that
- /// can be used for implementing request-response
- /// based client server connections.
- ///
- /// A request is always a single-line command terminated
- /// by CR-LF.
- ///
- /// A response can either be a single line of text terminated
- /// by CR-LF, or multiple lines of text in the format used
- /// by the FTP and SMTP protocols.
- ///
- /// Limited support for the TELNET protocol (RFC 854) is
- /// available.
- ///
- /// Warning: Do not call receiveBytes() on a DialogSocket.
- /// Due to internal buffering in DialogSocket, receiveBytes()
- /// may return an unexpected result and interfere with
- /// DialogSocket's buffering. Use receiveRawBytes() instead.
-{
-public:
- DialogSocket();
- /// Creates an unconnected stream socket.
+//
+// DialogSocket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: DialogSocket
+//
+// Definition of the DialogSocket class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_DialogSocket_INCLUDED
+#define Net_DialogSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/StreamSocket.h"
+#include <cstdlib>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API DialogSocket: public StreamSocket
+ /// DialogSocket is a subclass of StreamSocket that
+ /// can be used for implementing request-response
+ /// based client server connections.
+ ///
+ /// A request is always a single-line command terminated
+ /// by CR-LF.
+ ///
+ /// A response can either be a single line of text terminated
+ /// by CR-LF, or multiple lines of text in the format used
+ /// by the FTP and SMTP protocols.
+ ///
+ /// Limited support for the TELNET protocol (RFC 854) is
+ /// available.
+ ///
+ /// Warning: Do not call receiveBytes() on a DialogSocket.
+ /// Due to internal buffering in DialogSocket, receiveBytes()
+ /// may return an unexpected result and interfere with
+ /// DialogSocket's buffering. Use receiveRawBytes() instead.
+{
+public:
+ DialogSocket();
+ /// Creates an unconnected stream socket.
+ ///
+ /// Before sending or receiving data, the socket
+ /// must be connected with a call to connect().
+
+ explicit DialogSocket(const SocketAddress& address);
+ /// Creates a stream socket and connects it to
+ /// the socket specified by address.
+
+ DialogSocket(const Socket& socket);
+ /// Creates the DialogSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a StreamSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ DialogSocket(const DialogSocket& socket);
+ /// Creates the DialogSocket as copy of another dialog socket.
+
+ ~DialogSocket();
+ /// Destroys the DialogSocket.
+
+ DialogSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ DialogSocket& operator = (const DialogSocket& socket);
+ /// Assignment operator.
+
+ void sendByte(unsigned char ch);
+ /// Sends a single byte over the socket connection.
+
+ void sendString(const char* str);
+ /// Sends the given null-terminated string over
+ /// the socket connection.
+
+ void sendString(const std::string& str);
+ /// Sends the given string over the socket connection.
+
+ void sendMessage(const std::string& message);
+ /// Appends a CR-LF sequence to the message and sends it
+ /// over the socket connection.
+
+ void sendMessage(const std::string& message, const std::string& arg);
+ /// Concatenates message and arg, separated by a space, appends a
+ /// CR-LF sequence, and sends the result over the socket connection.
+
+ void sendMessage(const std::string& message, const std::string& arg1, const std::string& arg2);
+ /// Concatenates message and args, separated by a space, appends a
+ /// CR-LF sequence, and sends the result over the socket connection.
+
+ bool receiveMessage(std::string& message);
+ /// Receives a single-line message, terminated by CR-LF,
+ /// from the socket connection and appends it to response.
///
- /// Before sending or receiving data, the socket
- /// must be connected with a call to connect().
-
- explicit DialogSocket(const SocketAddress& address);
- /// Creates a stream socket and connects it to
- /// the socket specified by address.
-
- DialogSocket(const Socket& socket);
- /// Creates the DialogSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a StreamSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- DialogSocket(const DialogSocket& socket);
- /// Creates the DialogSocket as copy of another dialog socket.
-
- ~DialogSocket();
- /// Destroys the DialogSocket.
-
- DialogSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- DialogSocket& operator = (const DialogSocket& socket);
- /// Assignment operator.
-
- void sendByte(unsigned char ch);
- /// Sends a single byte over the socket connection.
-
- void sendString(const char* str);
- /// Sends the given null-terminated string over
- /// the socket connection.
-
- void sendString(const std::string& str);
- /// Sends the given string over the socket connection.
-
- void sendMessage(const std::string& message);
- /// Appends a CR-LF sequence to the message and sends it
- /// over the socket connection.
-
- void sendMessage(const std::string& message, const std::string& arg);
- /// Concatenates message and arg, separated by a space, appends a
- /// CR-LF sequence, and sends the result over the socket connection.
-
- void sendMessage(const std::string& message, const std::string& arg1, const std::string& arg2);
- /// Concatenates message and args, separated by a space, appends a
- /// CR-LF sequence, and sends the result over the socket connection.
-
- bool receiveMessage(std::string& message);
- /// Receives a single-line message, terminated by CR-LF,
- /// from the socket connection and appends it to response.
- ///
- /// Returns true if a message has been read or false if
- /// the connection has been closed by the peer.
-
- int receiveStatusMessage(std::string& message);
- /// Receives a single-line or multi-line response from
- /// the socket connection. The format must be according to
- /// one of the response formats specified in the FTP (RFC 959)
- /// or SMTP (RFC 2821) specifications.
- ///
- /// The first line starts with a 3-digit status code.
- /// Following the status code is either a space character (' ' )
- /// (in case of a single-line response) or a minus character ('-')
- /// in case of a multi-line response. The following lines can have
- /// a three-digit status code followed by a minus-sign and some
- /// text, or some arbitrary text only. The last line again begins
- /// with a three-digit status code (which must be the same as the
- /// one in the first line), followed by a space and some arbitrary
- /// text. All lines must be terminated by a CR-LF sequence.
- ///
- /// The response contains all response lines, separated by a newline
- /// character, including the status code. The status code is returned.
- /// If the response line does not contain a status code, 0 is returned.
-
- int get();
- /// Reads one character from the connection.
- ///
- /// Returns -1 (EOF_CHAR) if no more characters are available.
-
- int peek();
- /// Returns the character that would be returned by the next call
- /// to get(), without actually extracting the character from the
- /// buffer.
- ///
- /// Returns -1 (EOF_CHAR) if no more characters are available.
-
- int receiveRawBytes(void* buffer, int length);
- /// Read up to length bytes from the connection and place
- /// them into buffer. If there are data bytes in the internal
- /// buffer, these bytes are returned first.
- ///
- /// Use this member function instead of receiveBytes().
- ///
- /// Returns the number of bytes read, which may be
- /// less than requested.
-
- void synch();
- /// Sends a TELNET SYNCH signal over the connection.
- ///
- /// According to RFC 854, a TELNET_DM char is sent
- /// via sendUrgent().
-
- void sendTelnetCommand(unsigned char command);
- /// Sends a TELNET command sequence (TELNET_IAC followed
- /// by the given command) over the connection.
-
- void sendTelnetCommand(unsigned char command, unsigned char arg);
- /// Sends a TELNET command sequence (TELNET_IAC followed
- /// by the given command, followed by arg) over the connection.
-
- enum TelnetCodes
- {
- TELNET_SE = 240,
- TELNET_NOP = 241,
- TELNET_DM = 242,
- TELNET_BRK = 243,
- TELNET_IP = 244,
- TELNET_AO = 245,
- TELNET_AYT = 246,
- TELNET_EC = 247,
- TELNET_EL = 248,
- TELNET_GA = 249,
- TELNET_SB = 250,
- TELNET_WILL = 251,
- TELNET_WONT = 252,
- TELNET_DO = 253,
- TELNET_DONT = 254,
- TELNET_IAC = 255
- };
-
-protected:
- void allocBuffer();
- void refill();
- bool receiveLine(std::string& line, std::size_t lineLengthLimit = 0);
- int receiveStatusLine(std::string& line, std::size_t lineLengthLimit = 0);
-
-private:
- enum
- {
- RECEIVE_BUFFER_SIZE = 1024,
- MAX_LINE_LENGTH = 4096,
- EOF_CHAR = -1
- };
-
- char* _pBuffer;
- char* _pNext;
- char* _pEnd;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_DialogSocket_INCLUDED
+ /// Returns true if a message has been read or false if
+ /// the connection has been closed by the peer.
+
+ int receiveStatusMessage(std::string& message);
+ /// Receives a single-line or multi-line response from
+ /// the socket connection. The format must be according to
+ /// one of the response formats specified in the FTP (RFC 959)
+ /// or SMTP (RFC 2821) specifications.
+ ///
+ /// The first line starts with a 3-digit status code.
+ /// Following the status code is either a space character (' ' )
+ /// (in case of a single-line response) or a minus character ('-')
+ /// in case of a multi-line response. The following lines can have
+ /// a three-digit status code followed by a minus-sign and some
+ /// text, or some arbitrary text only. The last line again begins
+ /// with a three-digit status code (which must be the same as the
+ /// one in the first line), followed by a space and some arbitrary
+ /// text. All lines must be terminated by a CR-LF sequence.
+ ///
+ /// The response contains all response lines, separated by a newline
+ /// character, including the status code. The status code is returned.
+ /// If the response line does not contain a status code, 0 is returned.
+
+ int get();
+ /// Reads one character from the connection.
+ ///
+ /// Returns -1 (EOF_CHAR) if no more characters are available.
+
+ int peek();
+ /// Returns the character that would be returned by the next call
+ /// to get(), without actually extracting the character from the
+ /// buffer.
+ ///
+ /// Returns -1 (EOF_CHAR) if no more characters are available.
+
+ int receiveRawBytes(void* buffer, int length);
+ /// Read up to length bytes from the connection and place
+ /// them into buffer. If there are data bytes in the internal
+ /// buffer, these bytes are returned first.
+ ///
+ /// Use this member function instead of receiveBytes().
+ ///
+ /// Returns the number of bytes read, which may be
+ /// less than requested.
+
+ void synch();
+ /// Sends a TELNET SYNCH signal over the connection.
+ ///
+ /// According to RFC 854, a TELNET_DM char is sent
+ /// via sendUrgent().
+
+ void sendTelnetCommand(unsigned char command);
+ /// Sends a TELNET command sequence (TELNET_IAC followed
+ /// by the given command) over the connection.
+
+ void sendTelnetCommand(unsigned char command, unsigned char arg);
+ /// Sends a TELNET command sequence (TELNET_IAC followed
+ /// by the given command, followed by arg) over the connection.
+
+ enum TelnetCodes
+ {
+ TELNET_SE = 240,
+ TELNET_NOP = 241,
+ TELNET_DM = 242,
+ TELNET_BRK = 243,
+ TELNET_IP = 244,
+ TELNET_AO = 245,
+ TELNET_AYT = 246,
+ TELNET_EC = 247,
+ TELNET_EL = 248,
+ TELNET_GA = 249,
+ TELNET_SB = 250,
+ TELNET_WILL = 251,
+ TELNET_WONT = 252,
+ TELNET_DO = 253,
+ TELNET_DONT = 254,
+ TELNET_IAC = 255
+ };
+
+protected:
+ void allocBuffer();
+ void refill();
+ bool receiveLine(std::string& line, std::size_t lineLengthLimit = 0);
+ int receiveStatusLine(std::string& line, std::size_t lineLengthLimit = 0);
+
+private:
+ enum
+ {
+ RECEIVE_BUFFER_SIZE = 1024,
+ MAX_LINE_LENGTH = 4096,
+ EOF_CHAR = -1
+ };
+
+ char* _pBuffer;
+ char* _pNext;
+ char* _pEnd;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_DialogSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/FTPClientSession.h b/contrib/libs/poco/Net/include/Poco/Net/FTPClientSession.h
index ca69ef234f..1750cfc028 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/FTPClientSession.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/FTPClientSession.h
@@ -1,403 +1,403 @@
-//
-// FTPClientSession.h
-//
-// Library: Net
-// Package: FTP
-// Module: FTPClientSession
-//
-// Definition of the FTPClientSession class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_FTPClientSession_INCLUDED
-#define Net_FTPClientSession_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/DialogSocket.h"
-#include "Poco/Timespan.h"
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class SocketStream;
-
-
-class Net_API FTPClientSession
- /// This class implements an File Transfer Protocol
- /// (FTP, RFC 959) client.
- ///
- /// Most of the features of the FTP protocol, as specified
- /// in RFC 959, are supported. Not supported are EBCDIC and
- /// LOCAL data types and format control and structured files.
- ///
- /// Also supported are the EPRT and EPSV commands from
- /// RFC 1738 (FTP Extensions for IPv6 and NAT).
- /// The client will first attempt to use the EPRT and EPSV
- /// commands. If the server does not supports these commands,
- /// the client will fall back to PORT and PASV.
-{
-public:
- enum
- {
- FTP_PORT = 21
- };
-
- enum FileType
- {
- TYPE_TEXT, // TYPE A (ASCII)
- TYPE_BINARY // TYPE I (Image)
- };
-
- FTPClientSession();
- /// Creates an FTPClientSession.
- ///
- /// Passive mode will be used for data transfers.
-
- explicit FTPClientSession(const StreamSocket& socket);
- /// Creates an FTPClientSession using the given
- /// connected socket for the control connection.
- ///
- /// Passive mode will be used for data transfers.
-
- FTPClientSession(const std::string& host,
- Poco::UInt16 port = FTP_PORT,
- const std::string& username = "",
- const std::string& password = "");
- /// Creates an FTPClientSession using a socket connected
- /// to the given host and port. If username is supplied,
- /// login is attempted.
- ///
- /// Passive mode will be used for data transfers.
-
- virtual ~FTPClientSession();
- /// Destroys the FTPClientSession.
-
- void setTimeout(const Poco::Timespan& timeout);
- /// Sets the timeout for socket operations.
-
- Poco::Timespan getTimeout() const;
- /// Returns the timeout for socket operations.
-
- void setPassive(bool flag, bool useRFC1738 = true);
- /// Enables (default) or disables FTP passive mode for this session.
- ///
- /// If useRFC1738 is true (the default), the RFC 1738
- /// EPSV command is used (with a fallback to PASV if EPSV fails)
- /// for switching to passive mode. The same applies to
- /// EPRT and PORT for active connections.
-
- bool getPassive() const;
- /// Returns true iff passive mode is enabled for this connection.
-
- void open(const std::string& host,
- Poco::UInt16 port,
- const std::string& username = "",
- const std::string& password = "");
- /// Opens the FTP connection to the given host and port.
- /// If username is supplied, login is attempted.
-
- void login(const std::string& username, const std::string& password);
- /// Authenticates the user against the FTP server. Must be
- /// called before any other commands (except QUIT) can be sent.
- ///
- /// Sends a USER command followed by a PASS command with the
- /// respective arguments to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void logout();
-
- void close();
- /// Sends a QUIT command and closes the connection to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- std::string systemType();
- /// Returns the system type of the FTP server.
- ///
- /// Sends a SYST command to the server and returns the result.
-
- void setFileType(FileType type);
- /// Sets the file type for transferring files.
- ///
- /// Sends a TYPE command with a corresponding argument to the
- /// server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- FileType getFileType() const;
- /// Returns the file type for transferring files.
-
- void setWorkingDirectory(const std::string& path);
- /// Changes the current working directory on the server.
- ///
- /// Sends a CWD command with the given path as argument to the
- /// server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- std::string getWorkingDirectory();
- /// Returns the current working directory on the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void cdup();
- /// Moves one directory up from the current working directory
- /// on the server.
- ///
- /// Sends a CDUP command to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void rename(const std::string& oldName, const std::string& newName);
- /// Renames the file on the server given by oldName to newName.
- ///
- /// Sends a RNFR command, followed by a RNTO command to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void remove(const std::string& path);
- /// Deletes the file specified by path on the server.
- ///
- /// Sends a DELE command with path as argument to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void createDirectory(const std::string& path);
- /// Creates a new directory with the given path on the server.
- ///
- /// Sends a MKD command with path as argument to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void removeDirectory(const std::string& path);
- /// Removes the directory specified by path from the server.
- ///
- /// Sends a RMD command with path as argument to the server.
- ///
- /// Throws a FTPException in case of a FTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- std::istream& beginDownload(const std::string& path);
- /// Starts downloading the file with the given name.
- /// After all data has been read from the returned stream,
- /// endDownload() must be called to finish the download.
- ///
- /// A stream for reading the file's content is returned.
- /// The stream is valid until endDownload() is called.
- ///
- /// Creates a data connection between the client and the
- /// server. If passive mode is on, then the server waits for
- /// a connection request from the client. Otherwise, the
- /// client waits for a connection request from the server.
- /// After establishing the data connection, a SocketStream
- /// for transferring the data is created.
- ///
- /// If ASCII transfer mode is selected, the caller is
- /// responsible for converting the received data to
- /// the native text file format.
- /// The InputLineEndingConverter class from the Foundation
- /// library can be used for that purpose.
-
- void endDownload();
- /// Must be called to complete a download initiated with
- /// beginDownload().
-
- std::ostream& beginUpload(const std::string& path);
- /// Starts uploading the file with the given name.
- /// After all data has been written to the returned stream,
- /// endUpload() must be called to finish the upload.
- ///
- /// A stream for reading the file's content is returned.
- /// The stream is valid until endUpload() is called.
- ///
- /// Creates a data connection between the client and the
- /// server. If passive mode is on, then the server waits for
- /// a connection request from the client. Otherwise, the
- /// client waits for a connection request from the server.
- /// After establishing the data connection, a SocketStream
- /// for transferring the data is created.
- ///
- /// If ASCII transfer mode is selected, the caller is
- /// responsible for converting the data to be sent
- /// into network (CR-LF line endings) format.
- /// The OutputLineEndingConverter class from the Foundation
- /// library can be used for that purpose.
-
- void endUpload();
- /// Must be called to complete an upload initiated with
- /// beginUpload().
-
- std::istream& beginList(const std::string& path = "", bool extended = false);
- /// Starts downloading a directory listing.
- /// After all data has been read from the returned stream,
- /// endList() must be called to finish the download.
- ///
- /// A stream for reading the directory data is returned.
- /// The stream is valid until endList() is called.
- ///
- /// Optionally, a path to a directory or file can be specified.
- /// According to the FTP protocol, if a path to a filename is
- /// given, only information for the specific file is returned.
- /// If a path to a directory is given, a listing of that directory
- /// is returned. If no path is given, a listing of the current
- /// working directory is returned.
- ///
- /// If extended is false, only a filenames (one per line) are
- /// returned. Otherwise, a full directory listing including
- /// file attributes is returned. The format of this listing
- /// depends on the FTP server. No attempt is made to interpret
- /// this data.
- ///
- /// Creates a data connection between the client and the
- /// server. If passive mode is on, then the server waits for
- /// a connection request from the client. Otherwise, the
- /// client waits for a connection request from the server.
- /// After establishing the data connection, a SocketStream
- /// for transferring the data is created.
-
- void endList();
- /// Must be called to complete a directory listing download
- /// initiated with beginList().
-
- void abort();
- /// Aborts the download or upload currently in progress.
- ///
- /// Sends a TELNET IP/SYNCH sequence, followed by an ABOR
- /// command to the server.
- ///
- /// A separate call to endDownload() or endUpload() is
- /// not necessary.
-
- int sendCommand(const std::string& command, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
-
- int sendCommand(const std::string& command, const std::string& arg, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
-
- bool isOpen() const;
- /// Returns true if the connection with FTP server is opened.
-
- bool isLoggedIn() const;
- /// Returns true if the session is logged in.
-
-protected:
- enum StatusClass
- {
- FTP_POSITIVE_PRELIMINARY = 1,
- FTP_POSITIVE_COMPLETION = 2,
- FTP_POSITIVE_INTERMEDIATE = 3,
- FTP_TRANSIENT_NEGATIVE = 4,
- FTP_PERMANENT_NEGATIVE = 5
- };
- enum
- {
- DEFAULT_TIMEOUT = 30000000 // 30 seconds default timeout for socket operations
- };
-
- static bool isPositivePreliminary(int status);
- static bool isPositiveCompletion(int status);
- static bool isPositiveIntermediate(int status);
- static bool isTransientNegative(int status);
- static bool isPermanentNegative(int status);
- std::string extractPath(const std::string& response);
- StreamSocket establishDataConnection(const std::string& command, const std::string& arg);
- StreamSocket activeDataConnection(const std::string& command, const std::string& arg);
- StreamSocket passiveDataConnection(const std::string& command, const std::string& arg);
- void sendPortCommand(const SocketAddress& addr);
- SocketAddress sendPassiveCommand();
- bool sendEPRT(const SocketAddress& addr);
- void sendPORT(const SocketAddress& addr);
- bool sendEPSV(SocketAddress& addr);
- void sendPASV(SocketAddress& addr);
- void parseAddress(const std::string& str, SocketAddress& addr);
- void parseExtAddress(const std::string& str, SocketAddress& addr);
- void endTransfer();
-
-private:
- FTPClientSession(const FTPClientSession&);
- FTPClientSession& operator = (const FTPClientSession&);
-
- std::string _host;
- Poco::UInt16 _port;
- DialogSocket* _pControlSocket;
- SocketStream* _pDataStream;
- bool _passiveMode;
- FileType _fileType;
- bool _supports1738;
- bool _serverReady;
- bool _isLoggedIn;
- Poco::Timespan _timeout;
-};
-
-
-//
-// inlines
-//
-inline bool FTPClientSession::isPositivePreliminary(int status)
-{
- return status/100 == FTP_POSITIVE_PRELIMINARY;
-}
-
-
-inline bool FTPClientSession::isPositiveCompletion(int status)
-{
- return status/100 == FTP_POSITIVE_COMPLETION;
-}
-
-
-inline bool FTPClientSession::isPositiveIntermediate(int status)
-{
- return status/100 == FTP_POSITIVE_INTERMEDIATE;
-}
-
-
-inline bool FTPClientSession::isTransientNegative(int status)
-{
- return status/100 == FTP_TRANSIENT_NEGATIVE;
-}
-
-
-inline bool FTPClientSession::isPermanentNegative(int status)
-{
- return status/100 == FTP_PERMANENT_NEGATIVE;
-}
-
-
-inline bool FTPClientSession::isOpen() const
-{
- return _pControlSocket != 0;
-}
-
-
-inline bool FTPClientSession::isLoggedIn() const
-{
- return _isLoggedIn;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_FTPClientSession_INCLUDED
+//
+// FTPClientSession.h
+//
+// Library: Net
+// Package: FTP
+// Module: FTPClientSession
+//
+// Definition of the FTPClientSession class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_FTPClientSession_INCLUDED
+#define Net_FTPClientSession_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/DialogSocket.h"
+#include "Poco/Timespan.h"
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class SocketStream;
+
+
+class Net_API FTPClientSession
+ /// This class implements an File Transfer Protocol
+ /// (FTP, RFC 959) client.
+ ///
+ /// Most of the features of the FTP protocol, as specified
+ /// in RFC 959, are supported. Not supported are EBCDIC and
+ /// LOCAL data types and format control and structured files.
+ ///
+ /// Also supported are the EPRT and EPSV commands from
+ /// RFC 1738 (FTP Extensions for IPv6 and NAT).
+ /// The client will first attempt to use the EPRT and EPSV
+ /// commands. If the server does not supports these commands,
+ /// the client will fall back to PORT and PASV.
+{
+public:
+ enum
+ {
+ FTP_PORT = 21
+ };
+
+ enum FileType
+ {
+ TYPE_TEXT, // TYPE A (ASCII)
+ TYPE_BINARY // TYPE I (Image)
+ };
+
+ FTPClientSession();
+ /// Creates an FTPClientSession.
+ ///
+ /// Passive mode will be used for data transfers.
+
+ explicit FTPClientSession(const StreamSocket& socket);
+ /// Creates an FTPClientSession using the given
+ /// connected socket for the control connection.
+ ///
+ /// Passive mode will be used for data transfers.
+
+ FTPClientSession(const std::string& host,
+ Poco::UInt16 port = FTP_PORT,
+ const std::string& username = "",
+ const std::string& password = "");
+ /// Creates an FTPClientSession using a socket connected
+ /// to the given host and port. If username is supplied,
+ /// login is attempted.
+ ///
+ /// Passive mode will be used for data transfers.
+
+ virtual ~FTPClientSession();
+ /// Destroys the FTPClientSession.
+
+ void setTimeout(const Poco::Timespan& timeout);
+ /// Sets the timeout for socket operations.
+
+ Poco::Timespan getTimeout() const;
+ /// Returns the timeout for socket operations.
+
+ void setPassive(bool flag, bool useRFC1738 = true);
+ /// Enables (default) or disables FTP passive mode for this session.
+ ///
+ /// If useRFC1738 is true (the default), the RFC 1738
+ /// EPSV command is used (with a fallback to PASV if EPSV fails)
+ /// for switching to passive mode. The same applies to
+ /// EPRT and PORT for active connections.
+
+ bool getPassive() const;
+ /// Returns true iff passive mode is enabled for this connection.
+
+ void open(const std::string& host,
+ Poco::UInt16 port,
+ const std::string& username = "",
+ const std::string& password = "");
+ /// Opens the FTP connection to the given host and port.
+ /// If username is supplied, login is attempted.
+
+ void login(const std::string& username, const std::string& password);
+ /// Authenticates the user against the FTP server. Must be
+ /// called before any other commands (except QUIT) can be sent.
+ ///
+ /// Sends a USER command followed by a PASS command with the
+ /// respective arguments to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void logout();
+
+ void close();
+ /// Sends a QUIT command and closes the connection to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ std::string systemType();
+ /// Returns the system type of the FTP server.
+ ///
+ /// Sends a SYST command to the server and returns the result.
+
+ void setFileType(FileType type);
+ /// Sets the file type for transferring files.
+ ///
+ /// Sends a TYPE command with a corresponding argument to the
+ /// server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ FileType getFileType() const;
+ /// Returns the file type for transferring files.
+
+ void setWorkingDirectory(const std::string& path);
+ /// Changes the current working directory on the server.
+ ///
+ /// Sends a CWD command with the given path as argument to the
+ /// server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ std::string getWorkingDirectory();
+ /// Returns the current working directory on the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void cdup();
+ /// Moves one directory up from the current working directory
+ /// on the server.
+ ///
+ /// Sends a CDUP command to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void rename(const std::string& oldName, const std::string& newName);
+ /// Renames the file on the server given by oldName to newName.
+ ///
+ /// Sends a RNFR command, followed by a RNTO command to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void remove(const std::string& path);
+ /// Deletes the file specified by path on the server.
+ ///
+ /// Sends a DELE command with path as argument to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void createDirectory(const std::string& path);
+ /// Creates a new directory with the given path on the server.
+ ///
+ /// Sends a MKD command with path as argument to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void removeDirectory(const std::string& path);
+ /// Removes the directory specified by path from the server.
+ ///
+ /// Sends a RMD command with path as argument to the server.
+ ///
+ /// Throws a FTPException in case of a FTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ std::istream& beginDownload(const std::string& path);
+ /// Starts downloading the file with the given name.
+ /// After all data has been read from the returned stream,
+ /// endDownload() must be called to finish the download.
+ ///
+ /// A stream for reading the file's content is returned.
+ /// The stream is valid until endDownload() is called.
+ ///
+ /// Creates a data connection between the client and the
+ /// server. If passive mode is on, then the server waits for
+ /// a connection request from the client. Otherwise, the
+ /// client waits for a connection request from the server.
+ /// After establishing the data connection, a SocketStream
+ /// for transferring the data is created.
+ ///
+ /// If ASCII transfer mode is selected, the caller is
+ /// responsible for converting the received data to
+ /// the native text file format.
+ /// The InputLineEndingConverter class from the Foundation
+ /// library can be used for that purpose.
+
+ void endDownload();
+ /// Must be called to complete a download initiated with
+ /// beginDownload().
+
+ std::ostream& beginUpload(const std::string& path);
+ /// Starts uploading the file with the given name.
+ /// After all data has been written to the returned stream,
+ /// endUpload() must be called to finish the upload.
+ ///
+ /// A stream for reading the file's content is returned.
+ /// The stream is valid until endUpload() is called.
+ ///
+ /// Creates a data connection between the client and the
+ /// server. If passive mode is on, then the server waits for
+ /// a connection request from the client. Otherwise, the
+ /// client waits for a connection request from the server.
+ /// After establishing the data connection, a SocketStream
+ /// for transferring the data is created.
+ ///
+ /// If ASCII transfer mode is selected, the caller is
+ /// responsible for converting the data to be sent
+ /// into network (CR-LF line endings) format.
+ /// The OutputLineEndingConverter class from the Foundation
+ /// library can be used for that purpose.
+
+ void endUpload();
+ /// Must be called to complete an upload initiated with
+ /// beginUpload().
+
+ std::istream& beginList(const std::string& path = "", bool extended = false);
+ /// Starts downloading a directory listing.
+ /// After all data has been read from the returned stream,
+ /// endList() must be called to finish the download.
+ ///
+ /// A stream for reading the directory data is returned.
+ /// The stream is valid until endList() is called.
+ ///
+ /// Optionally, a path to a directory or file can be specified.
+ /// According to the FTP protocol, if a path to a filename is
+ /// given, only information for the specific file is returned.
+ /// If a path to a directory is given, a listing of that directory
+ /// is returned. If no path is given, a listing of the current
+ /// working directory is returned.
+ ///
+ /// If extended is false, only a filenames (one per line) are
+ /// returned. Otherwise, a full directory listing including
+ /// file attributes is returned. The format of this listing
+ /// depends on the FTP server. No attempt is made to interpret
+ /// this data.
+ ///
+ /// Creates a data connection between the client and the
+ /// server. If passive mode is on, then the server waits for
+ /// a connection request from the client. Otherwise, the
+ /// client waits for a connection request from the server.
+ /// After establishing the data connection, a SocketStream
+ /// for transferring the data is created.
+
+ void endList();
+ /// Must be called to complete a directory listing download
+ /// initiated with beginList().
+
+ void abort();
+ /// Aborts the download or upload currently in progress.
+ ///
+ /// Sends a TELNET IP/SYNCH sequence, followed by an ABOR
+ /// command to the server.
+ ///
+ /// A separate call to endDownload() or endUpload() is
+ /// not necessary.
+
+ int sendCommand(const std::string& command, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+
+ int sendCommand(const std::string& command, const std::string& arg, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+
+ bool isOpen() const;
+ /// Returns true if the connection with FTP server is opened.
+
+ bool isLoggedIn() const;
+ /// Returns true if the session is logged in.
+
+protected:
+ enum StatusClass
+ {
+ FTP_POSITIVE_PRELIMINARY = 1,
+ FTP_POSITIVE_COMPLETION = 2,
+ FTP_POSITIVE_INTERMEDIATE = 3,
+ FTP_TRANSIENT_NEGATIVE = 4,
+ FTP_PERMANENT_NEGATIVE = 5
+ };
+ enum
+ {
+ DEFAULT_TIMEOUT = 30000000 // 30 seconds default timeout for socket operations
+ };
+
+ static bool isPositivePreliminary(int status);
+ static bool isPositiveCompletion(int status);
+ static bool isPositiveIntermediate(int status);
+ static bool isTransientNegative(int status);
+ static bool isPermanentNegative(int status);
+ std::string extractPath(const std::string& response);
+ StreamSocket establishDataConnection(const std::string& command, const std::string& arg);
+ StreamSocket activeDataConnection(const std::string& command, const std::string& arg);
+ StreamSocket passiveDataConnection(const std::string& command, const std::string& arg);
+ void sendPortCommand(const SocketAddress& addr);
+ SocketAddress sendPassiveCommand();
+ bool sendEPRT(const SocketAddress& addr);
+ void sendPORT(const SocketAddress& addr);
+ bool sendEPSV(SocketAddress& addr);
+ void sendPASV(SocketAddress& addr);
+ void parseAddress(const std::string& str, SocketAddress& addr);
+ void parseExtAddress(const std::string& str, SocketAddress& addr);
+ void endTransfer();
+
+private:
+ FTPClientSession(const FTPClientSession&);
+ FTPClientSession& operator = (const FTPClientSession&);
+
+ std::string _host;
+ Poco::UInt16 _port;
+ DialogSocket* _pControlSocket;
+ SocketStream* _pDataStream;
+ bool _passiveMode;
+ FileType _fileType;
+ bool _supports1738;
+ bool _serverReady;
+ bool _isLoggedIn;
+ Poco::Timespan _timeout;
+};
+
+
+//
+// inlines
+//
+inline bool FTPClientSession::isPositivePreliminary(int status)
+{
+ return status/100 == FTP_POSITIVE_PRELIMINARY;
+}
+
+
+inline bool FTPClientSession::isPositiveCompletion(int status)
+{
+ return status/100 == FTP_POSITIVE_COMPLETION;
+}
+
+
+inline bool FTPClientSession::isPositiveIntermediate(int status)
+{
+ return status/100 == FTP_POSITIVE_INTERMEDIATE;
+}
+
+
+inline bool FTPClientSession::isTransientNegative(int status)
+{
+ return status/100 == FTP_TRANSIENT_NEGATIVE;
+}
+
+
+inline bool FTPClientSession::isPermanentNegative(int status)
+{
+ return status/100 == FTP_PERMANENT_NEGATIVE;
+}
+
+
+inline bool FTPClientSession::isOpen() const
+{
+ return _pControlSocket != 0;
+}
+
+
+inline bool FTPClientSession::isLoggedIn() const
+{
+ return _isLoggedIn;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_FTPClientSession_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/FTPStreamFactory.h b/contrib/libs/poco/Net/include/Poco/Net/FTPStreamFactory.h
index f59fbe6bfd..4f33f19c19 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/FTPStreamFactory.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/FTPStreamFactory.h
@@ -1,120 +1,120 @@
-//
-// FTPStreamFactory.h
-//
-// Library: Net
-// Package: FTP
-// Module: FTPStreamFactory
-//
-// Definition of the FTPStreamFactory class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_FTPStreamFactory_INCLUDED
-#define Net_FTPStreamFactory_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPSession.h"
-#include "Poco/URIStreamFactory.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API FTPPasswordProvider
- /// The base class for all password providers.
- /// An instance of a subclass of this class can be
- /// registered with the FTPStreamFactory to
- /// provide a password
-{
-public:
- virtual std::string password(const std::string& username, const std::string& host) = 0;
- /// Provide the password for the given user on the given host.
-
-protected:
- FTPPasswordProvider();
- virtual ~FTPPasswordProvider();
-};
-
-
-class Net_API FTPStreamFactory: public Poco::URIStreamFactory
- /// An implementation of the URIStreamFactory interface
- /// that handles File Transfer Protocol (ftp) URIs.
- ///
- /// The URI's path may end with an optional type specification
- /// in the form (;type=<typecode>), where <typecode> is
- /// one of a, i or d. If type=a, the file identified by the path
- /// is transferred in ASCII (text) mode. If type=i, the file
- /// is transferred in Image (binary) mode. If type=d, a directory
- /// listing (in NLST format) is returned. This corresponds with
- /// the FTP URL format specified in RFC 1738.
- ///
- /// If the URI does not contain a username and password, the
- /// username "anonymous" and the password "
-{
-public:
- FTPStreamFactory();
- /// Creates the FTPStreamFactory.
-
- ~FTPStreamFactory();
- /// Destroys the FTPStreamFactory.
-
- std::istream* open(const Poco::URI& uri);
- /// Creates and opens a HTTP stream for the given URI.
- /// The URI must be a ftp://... URI.
- ///
- /// Throws a NetException if anything goes wrong.
-
- static void setAnonymousPassword(const std::string& password);
- /// Sets the password used for anonymous FTP.
- ///
- /// WARNING: Setting the anonymous password is not
- /// thread-safe, so it's best to call this method
- /// during application initialization, before the
- /// FTPStreamFactory is used for the first time.
-
- static const std::string& getAnonymousPassword();
- /// Returns the password used for anonymous FTP.
-
- static void setPasswordProvider(FTPPasswordProvider* pProvider);
- /// Sets the FTPPasswordProvider. If NULL is given,
- /// no password provider is used.
- ///
- /// WARNING: Setting the password provider is not
- /// thread-safe, so it's best to call this method
- /// during application initialization, before the
- /// FTPStreamFactory is used for the first time.
-
- static FTPPasswordProvider* getPasswordProvider();
- /// Returns the FTPPasswordProvider currently in use,
- /// or NULL if no one has been set.
-
- static void registerFactory();
- /// Registers the FTPStreamFactory with the
- /// default URIStreamOpener instance.
-
- static void unregisterFactory();
- /// Unregisters the FTPStreamFactory with the
- /// default URIStreamOpener instance.
-
-protected:
- static void splitUserInfo(const std::string& userInfo, std::string& username, std::string& password);
- static void getUserInfo(const Poco::URI& uri, std::string& username, std::string& password);
- static void getPathAndType(const Poco::URI& uri, std::string& path, char& type);
-
-private:
- static std::string _anonymousPassword;
- static FTPPasswordProvider* _pPasswordProvider;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_FTPStreamFactory_INCLUDED
+//
+// FTPStreamFactory.h
+//
+// Library: Net
+// Package: FTP
+// Module: FTPStreamFactory
+//
+// Definition of the FTPStreamFactory class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_FTPStreamFactory_INCLUDED
+#define Net_FTPStreamFactory_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPSession.h"
+#include "Poco/URIStreamFactory.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API FTPPasswordProvider
+ /// The base class for all password providers.
+ /// An instance of a subclass of this class can be
+ /// registered with the FTPStreamFactory to
+ /// provide a password
+{
+public:
+ virtual std::string password(const std::string& username, const std::string& host) = 0;
+ /// Provide the password for the given user on the given host.
+
+protected:
+ FTPPasswordProvider();
+ virtual ~FTPPasswordProvider();
+};
+
+
+class Net_API FTPStreamFactory: public Poco::URIStreamFactory
+ /// An implementation of the URIStreamFactory interface
+ /// that handles File Transfer Protocol (ftp) URIs.
+ ///
+ /// The URI's path may end with an optional type specification
+ /// in the form (;type=<typecode>), where <typecode> is
+ /// one of a, i or d. If type=a, the file identified by the path
+ /// is transferred in ASCII (text) mode. If type=i, the file
+ /// is transferred in Image (binary) mode. If type=d, a directory
+ /// listing (in NLST format) is returned. This corresponds with
+ /// the FTP URL format specified in RFC 1738.
+ ///
+ /// If the URI does not contain a username and password, the
+ /// username "anonymous" and the password "
+{
+public:
+ FTPStreamFactory();
+ /// Creates the FTPStreamFactory.
+
+ ~FTPStreamFactory();
+ /// Destroys the FTPStreamFactory.
+
+ std::istream* open(const Poco::URI& uri);
+ /// Creates and opens a HTTP stream for the given URI.
+ /// The URI must be a ftp://... URI.
+ ///
+ /// Throws a NetException if anything goes wrong.
+
+ static void setAnonymousPassword(const std::string& password);
+ /// Sets the password used for anonymous FTP.
+ ///
+ /// WARNING: Setting the anonymous password is not
+ /// thread-safe, so it's best to call this method
+ /// during application initialization, before the
+ /// FTPStreamFactory is used for the first time.
+
+ static const std::string& getAnonymousPassword();
+ /// Returns the password used for anonymous FTP.
+
+ static void setPasswordProvider(FTPPasswordProvider* pProvider);
+ /// Sets the FTPPasswordProvider. If NULL is given,
+ /// no password provider is used.
+ ///
+ /// WARNING: Setting the password provider is not
+ /// thread-safe, so it's best to call this method
+ /// during application initialization, before the
+ /// FTPStreamFactory is used for the first time.
+
+ static FTPPasswordProvider* getPasswordProvider();
+ /// Returns the FTPPasswordProvider currently in use,
+ /// or NULL if no one has been set.
+
+ static void registerFactory();
+ /// Registers the FTPStreamFactory with the
+ /// default URIStreamOpener instance.
+
+ static void unregisterFactory();
+ /// Unregisters the FTPStreamFactory with the
+ /// default URIStreamOpener instance.
+
+protected:
+ static void splitUserInfo(const std::string& userInfo, std::string& username, std::string& password);
+ static void getUserInfo(const Poco::URI& uri, std::string& username, std::string& password);
+ static void getPathAndType(const Poco::URI& uri, std::string& path, char& type);
+
+private:
+ static std::string _anonymousPassword;
+ static FTPPasswordProvider* _pPasswordProvider;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_FTPStreamFactory_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/FilePartSource.h b/contrib/libs/poco/Net/include/Poco/Net/FilePartSource.h
index c99b8bbedb..056718541d 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/FilePartSource.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/FilePartSource.h
@@ -1,77 +1,77 @@
-//
-// FilePartSource.h
-//
-// Library: Net
-// Package: Messages
-// Module: FilePartSource
-//
-// Definition of the FilePartSource class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_FilePartSource_INCLUDED
-#define Net_FilePartSource_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/PartSource.h"
-#include "Poco/FileStream.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API FilePartSource: public PartSource
- /// An implementation of PartSource for
- /// plain files.
-{
-public:
- FilePartSource(const std::string& path);
- /// Creates the FilePartSource for the given path.
- ///
- /// The MIME type is set to application/octet-stream.
- ///
- /// Throws an OpenFileException if the file cannot be opened.
-
- FilePartSource(const std::string& path, const std::string& mediaType);
- /// Creates the FilePartSource for the given
- /// path and MIME type.
- ///
- /// Throws an OpenFileException if the file cannot be opened.
-
- FilePartSource(const std::string& path, const std::string& filename, const std::string& mediaType);
- /// Creates the FilePartSource for the given
- /// path and MIME type. The given filename is
- /// used as part filename (see filename()) only.
- ///
- /// Throws an OpenFileException if the file cannot be opened.
-
- ~FilePartSource();
- /// Destroys the FilePartSource.
-
- std::istream& stream();
- /// Returns a file input stream for the given file.
-
- const std::string& filename() const;
- /// Returns the filename portion of the path.
-
- std::streamsize getContentLength() const;
- /// Returns the file size.
-
-private:
- std::string _path;
- std::string _filename;
- Poco::FileInputStream _istr;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_FilePartSource_INCLUDED
+//
+// FilePartSource.h
+//
+// Library: Net
+// Package: Messages
+// Module: FilePartSource
+//
+// Definition of the FilePartSource class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_FilePartSource_INCLUDED
+#define Net_FilePartSource_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/PartSource.h"
+#include "Poco/FileStream.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API FilePartSource: public PartSource
+ /// An implementation of PartSource for
+ /// plain files.
+{
+public:
+ FilePartSource(const std::string& path);
+ /// Creates the FilePartSource for the given path.
+ ///
+ /// The MIME type is set to application/octet-stream.
+ ///
+ /// Throws an OpenFileException if the file cannot be opened.
+
+ FilePartSource(const std::string& path, const std::string& mediaType);
+ /// Creates the FilePartSource for the given
+ /// path and MIME type.
+ ///
+ /// Throws an OpenFileException if the file cannot be opened.
+
+ FilePartSource(const std::string& path, const std::string& filename, const std::string& mediaType);
+ /// Creates the FilePartSource for the given
+ /// path and MIME type. The given filename is
+ /// used as part filename (see filename()) only.
+ ///
+ /// Throws an OpenFileException if the file cannot be opened.
+
+ ~FilePartSource();
+ /// Destroys the FilePartSource.
+
+ std::istream& stream();
+ /// Returns a file input stream for the given file.
+
+ const std::string& filename() const;
+ /// Returns the filename portion of the path.
+
+ std::streamsize getContentLength() const;
+ /// Returns the file size.
+
+private:
+ std::string _path;
+ std::string _filename;
+ Poco::FileInputStream _istr;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_FilePartSource_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTMLForm.h b/contrib/libs/poco/Net/include/Poco/Net/HTMLForm.h
index 160c0d0d8e..a4649dd2c2 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTMLForm.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTMLForm.h
@@ -1,272 +1,272 @@
-//
-// HTMLForm.h
-//
-// Library: Net
-// Package: HTML
-// Module: HTMLForm
-//
-// Definition of the HTMLForm class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTMLForm_INCLUDED
-#define Net_HTMLForm_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/NameValueCollection.h"
-#include <ostream>
-#include <istream>
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-class PartHandler;
-class PartSource;
-
-
-class Net_API HTMLForm: public NameValueCollection
- /// HTMLForm is a helper class for working with HTML forms,
- /// both on the client and on the server side.
- ///
- /// The maximum number of form fields can be restricted
- /// by calling setFieldLimit(). This is useful to
- /// defend against certain kinds of denial-of-service
- /// attacks. The limit is only enforced when parsing
- /// form data from a stream or string, not when adding
- /// form fields programmatically. The default limit is 100.
-{
-public:
- enum Options
- {
- OPT_USE_CONTENT_LENGTH = 0x01
- /// Don't use Chunked Transfer-Encoding for multipart requests.
- };
-
- HTMLForm();
- /// Creates an empty HTMLForm and sets the
- /// encoding to "application/x-www-form-urlencoded".
-
- explicit HTMLForm(const std::string& encoding);
- /// Creates an empty HTMLForm that uses
- /// the given encoding.
- ///
- /// Encoding must be either "application/x-www-form-urlencoded"
- /// (which is the default) or "multipart/form-data".
-
- HTMLForm(const HTTPRequest& request, std::istream& requestBody, PartHandler& handler);
- /// Creates a HTMLForm from the given HTTP request.
- ///
- /// Uploaded files are passed to the given PartHandler.
-
- HTMLForm(const HTTPRequest& request, std::istream& requestBody);
- /// Creates a HTMLForm from the given HTTP request.
- ///
- /// Uploaded files are silently discarded.
-
- explicit HTMLForm(const HTTPRequest& request);
- /// Creates a HTMLForm from the given HTTP request.
- ///
- /// The request must be a GET request and the form data
- /// must be in the query string (URL encoded).
- ///
- /// For POST requests, you must use one of the constructors
- /// taking an additional input stream for the request body.
-
- ~HTMLForm();
- /// Destroys the HTMLForm.
-
- void setEncoding(const std::string& encoding);
- /// Sets the encoding used for posting the form.
- ///
- /// Encoding must be either "application/x-www-form-urlencoded"
- /// (which is the default) or "multipart/form-data".
-
- const std::string& getEncoding() const;
- /// Returns the encoding used for posting the form.
-
- void addPart(const std::string& name, PartSource* pSource);
- /// Adds an part/attachment (file upload) to the form.
- ///
- /// The form takes ownership of the PartSource and deletes it
- /// when it is no longer needed.
- ///
- /// The part will only be sent if the encoding
- /// set for the form is "multipart/form-data"
-
- void load(const HTTPRequest& request, std::istream& requestBody, PartHandler& handler);
- /// Reads the form data from the given HTTP request.
- ///
- /// Uploaded files are passed to the given PartHandler.
-
- void load(const HTTPRequest& request, std::istream& requestBody);
- /// Reads the form data from the given HTTP request.
- ///
- /// Uploaded files are silently discarded.
-
- void load(const HTTPRequest& request);
- /// Reads the form data from the given HTTP request.
- ///
- /// The request must be a GET request and the form data
- /// must be in the query string (URL encoded).
- ///
- /// For POST requests, you must use one of the overloads
- /// taking an additional input stream for the request body.
-
- void read(std::istream& istr, PartHandler& handler);
- /// Reads the form data from the given input stream.
- ///
- /// The form data read from the stream must be
- /// in the encoding specified for the form.
- ///
- /// Note that read() does not clear the form before
- /// reading the new values.
-
- void read(std::istream& istr);
- /// Reads the URL-encoded form data from the given input stream.
- ///
- /// Note that read() does not clear the form before
- /// reading the new values.
-
- void read(const std::string& queryString);
- /// Reads the form data from the given HTTP query string.
- ///
- /// Note that read() does not clear the form before
- /// reading the new values.
-
- void prepareSubmit(HTTPRequest& request, int options = 0);
- /// Fills out the request object for submitting the form.
- ///
- /// If the request method is GET, the encoded form is appended to the
- /// request URI as query string. Otherwise (the method is
- /// POST), the form's content type is set to the form's encoding.
- /// The form's parameters must be written to the
- /// request body separately, with a call to write.
- /// If the request's HTTP version is HTTP/1.0:
- /// - persistent connections are disabled
- /// - the content transfer encoding is set to identity encoding
- /// Otherwise, if the request's HTTP version is HTTP/1.1:
- /// - the request's persistent connection state is left unchanged
- /// - the content transfer encoding is set to chunked, unless
- /// the OPT_USE_CONTENT_LENGTH is given in options
- ///
- /// Note: Not using chunked transfer encoding for multipart forms
- /// degrades performance, as the request content must be generated
- /// twice, first to determine its size, then to actually send it.
-
- std::streamsize calculateContentLength();
- /// Calculate the content length for the form.
- /// May be UNKNOWN_CONTENT_LENGTH if not possible
- /// to calculate
-
- void write(std::ostream& ostr, const std::string& boundary);
- /// Writes the form data to the given output stream,
- /// using the specified encoding.
-
- void write(std::ostream& ostr);
- /// Writes the form data to the given output stream,
- /// using the specified encoding.
-
- const std::string& boundary() const;
- /// Returns the MIME boundary used for writing
- /// multipart form data.
-
- int getFieldLimit() const;
- /// Returns the maximum number of header fields
- /// allowed.
- ///
- /// See setFieldLimit() for more information.
-
- void setFieldLimit(int limit);
- /// Sets the maximum number of header fields
- /// allowed. This limit is used to defend certain
- /// kinds of denial-of-service attacks.
- /// Specify 0 for unlimited (not recommended).
- ///
- /// The default limit is 100.
-
- void setValueLengthLimit(int limit);
- /// Sets the maximum size for form field values
- /// stored as strings.
-
- int getValueLengthLimit() const;
- /// Returns the maximum size for form field values
- /// stored as strings.
-
- static const std::string ENCODING_URL; /// "application/x-www-form-urlencoded"
- static const std::string ENCODING_MULTIPART; /// "multipart/form-data"
- static const int UNKNOWN_CONTENT_LENGTH;
-
-protected:
- void readUrl(std::istream& istr);
- void readMultipart(std::istream& istr, PartHandler& handler);
- void writeUrl(std::ostream& ostr);
- void writeMultipart(std::ostream& ostr);
-
-private:
- HTMLForm(const HTMLForm&);
- HTMLForm& operator = (const HTMLForm&);
-
- enum Limits
- {
- DFL_FIELD_LIMIT = 100,
- MAX_NAME_LENGTH = 1024,
- DFL_MAX_VALUE_LENGTH = 256*1024
- };
-
- struct Part
- {
- std::string name;
- PartSource* pSource;
- };
-
- typedef std::vector<Part> PartVec;
-
- int _fieldLimit;
- int _valueLengthLimit;
- std::string _encoding;
- std::string _boundary;
- PartVec _parts;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTMLForm::getEncoding() const
-{
- return _encoding;
-}
-
-
-inline const std::string& HTMLForm::boundary() const
-{
- return _boundary;
-}
-
-
-inline int HTMLForm::getFieldLimit() const
-{
- return _fieldLimit;
-}
-
-
-inline int HTMLForm::getValueLengthLimit() const
-{
- return _valueLengthLimit;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTMLForm_INCLUDED
+//
+// HTMLForm.h
+//
+// Library: Net
+// Package: HTML
+// Module: HTMLForm
+//
+// Definition of the HTMLForm class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTMLForm_INCLUDED
+#define Net_HTMLForm_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/NameValueCollection.h"
+#include <ostream>
+#include <istream>
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+class PartHandler;
+class PartSource;
+
+
+class Net_API HTMLForm: public NameValueCollection
+ /// HTMLForm is a helper class for working with HTML forms,
+ /// both on the client and on the server side.
+ ///
+ /// The maximum number of form fields can be restricted
+ /// by calling setFieldLimit(). This is useful to
+ /// defend against certain kinds of denial-of-service
+ /// attacks. The limit is only enforced when parsing
+ /// form data from a stream or string, not when adding
+ /// form fields programmatically. The default limit is 100.
+{
+public:
+ enum Options
+ {
+ OPT_USE_CONTENT_LENGTH = 0x01
+ /// Don't use Chunked Transfer-Encoding for multipart requests.
+ };
+
+ HTMLForm();
+ /// Creates an empty HTMLForm and sets the
+ /// encoding to "application/x-www-form-urlencoded".
+
+ explicit HTMLForm(const std::string& encoding);
+ /// Creates an empty HTMLForm that uses
+ /// the given encoding.
+ ///
+ /// Encoding must be either "application/x-www-form-urlencoded"
+ /// (which is the default) or "multipart/form-data".
+
+ HTMLForm(const HTTPRequest& request, std::istream& requestBody, PartHandler& handler);
+ /// Creates a HTMLForm from the given HTTP request.
+ ///
+ /// Uploaded files are passed to the given PartHandler.
+
+ HTMLForm(const HTTPRequest& request, std::istream& requestBody);
+ /// Creates a HTMLForm from the given HTTP request.
+ ///
+ /// Uploaded files are silently discarded.
+
+ explicit HTMLForm(const HTTPRequest& request);
+ /// Creates a HTMLForm from the given HTTP request.
+ ///
+ /// The request must be a GET request and the form data
+ /// must be in the query string (URL encoded).
+ ///
+ /// For POST requests, you must use one of the constructors
+ /// taking an additional input stream for the request body.
+
+ ~HTMLForm();
+ /// Destroys the HTMLForm.
+
+ void setEncoding(const std::string& encoding);
+ /// Sets the encoding used for posting the form.
+ ///
+ /// Encoding must be either "application/x-www-form-urlencoded"
+ /// (which is the default) or "multipart/form-data".
+
+ const std::string& getEncoding() const;
+ /// Returns the encoding used for posting the form.
+
+ void addPart(const std::string& name, PartSource* pSource);
+ /// Adds an part/attachment (file upload) to the form.
+ ///
+ /// The form takes ownership of the PartSource and deletes it
+ /// when it is no longer needed.
+ ///
+ /// The part will only be sent if the encoding
+ /// set for the form is "multipart/form-data"
+
+ void load(const HTTPRequest& request, std::istream& requestBody, PartHandler& handler);
+ /// Reads the form data from the given HTTP request.
+ ///
+ /// Uploaded files are passed to the given PartHandler.
+
+ void load(const HTTPRequest& request, std::istream& requestBody);
+ /// Reads the form data from the given HTTP request.
+ ///
+ /// Uploaded files are silently discarded.
+
+ void load(const HTTPRequest& request);
+ /// Reads the form data from the given HTTP request.
+ ///
+ /// The request must be a GET request and the form data
+ /// must be in the query string (URL encoded).
+ ///
+ /// For POST requests, you must use one of the overloads
+ /// taking an additional input stream for the request body.
+
+ void read(std::istream& istr, PartHandler& handler);
+ /// Reads the form data from the given input stream.
+ ///
+ /// The form data read from the stream must be
+ /// in the encoding specified for the form.
+ ///
+ /// Note that read() does not clear the form before
+ /// reading the new values.
+
+ void read(std::istream& istr);
+ /// Reads the URL-encoded form data from the given input stream.
+ ///
+ /// Note that read() does not clear the form before
+ /// reading the new values.
+
+ void read(const std::string& queryString);
+ /// Reads the form data from the given HTTP query string.
+ ///
+ /// Note that read() does not clear the form before
+ /// reading the new values.
+
+ void prepareSubmit(HTTPRequest& request, int options = 0);
+ /// Fills out the request object for submitting the form.
+ ///
+ /// If the request method is GET, the encoded form is appended to the
+ /// request URI as query string. Otherwise (the method is
+ /// POST), the form's content type is set to the form's encoding.
+ /// The form's parameters must be written to the
+ /// request body separately, with a call to write.
+ /// If the request's HTTP version is HTTP/1.0:
+ /// - persistent connections are disabled
+ /// - the content transfer encoding is set to identity encoding
+ /// Otherwise, if the request's HTTP version is HTTP/1.1:
+ /// - the request's persistent connection state is left unchanged
+ /// - the content transfer encoding is set to chunked, unless
+ /// the OPT_USE_CONTENT_LENGTH is given in options
+ ///
+ /// Note: Not using chunked transfer encoding for multipart forms
+ /// degrades performance, as the request content must be generated
+ /// twice, first to determine its size, then to actually send it.
+
+ std::streamsize calculateContentLength();
+ /// Calculate the content length for the form.
+ /// May be UNKNOWN_CONTENT_LENGTH if not possible
+ /// to calculate
+
+ void write(std::ostream& ostr, const std::string& boundary);
+ /// Writes the form data to the given output stream,
+ /// using the specified encoding.
+
+ void write(std::ostream& ostr);
+ /// Writes the form data to the given output stream,
+ /// using the specified encoding.
+
+ const std::string& boundary() const;
+ /// Returns the MIME boundary used for writing
+ /// multipart form data.
+
+ int getFieldLimit() const;
+ /// Returns the maximum number of header fields
+ /// allowed.
+ ///
+ /// See setFieldLimit() for more information.
+
+ void setFieldLimit(int limit);
+ /// Sets the maximum number of header fields
+ /// allowed. This limit is used to defend certain
+ /// kinds of denial-of-service attacks.
+ /// Specify 0 for unlimited (not recommended).
+ ///
+ /// The default limit is 100.
+
+ void setValueLengthLimit(int limit);
+ /// Sets the maximum size for form field values
+ /// stored as strings.
+
+ int getValueLengthLimit() const;
+ /// Returns the maximum size for form field values
+ /// stored as strings.
+
+ static const std::string ENCODING_URL; /// "application/x-www-form-urlencoded"
+ static const std::string ENCODING_MULTIPART; /// "multipart/form-data"
+ static const int UNKNOWN_CONTENT_LENGTH;
+
+protected:
+ void readUrl(std::istream& istr);
+ void readMultipart(std::istream& istr, PartHandler& handler);
+ void writeUrl(std::ostream& ostr);
+ void writeMultipart(std::ostream& ostr);
+
+private:
+ HTMLForm(const HTMLForm&);
+ HTMLForm& operator = (const HTMLForm&);
+
+ enum Limits
+ {
+ DFL_FIELD_LIMIT = 100,
+ MAX_NAME_LENGTH = 1024,
+ DFL_MAX_VALUE_LENGTH = 256*1024
+ };
+
+ struct Part
+ {
+ std::string name;
+ PartSource* pSource;
+ };
+
+ typedef std::vector<Part> PartVec;
+
+ int _fieldLimit;
+ int _valueLengthLimit;
+ std::string _encoding;
+ std::string _boundary;
+ PartVec _parts;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTMLForm::getEncoding() const
+{
+ return _encoding;
+}
+
+
+inline const std::string& HTMLForm::boundary() const
+{
+ return _boundary;
+}
+
+
+inline int HTMLForm::getFieldLimit() const
+{
+ return _fieldLimit;
+}
+
+
+inline int HTMLForm::getValueLengthLimit() const
+{
+ return _valueLengthLimit;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTMLForm_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPAuthenticationParams.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPAuthenticationParams.h
index dd182b09a6..492e2c45d4 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPAuthenticationParams.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPAuthenticationParams.h
@@ -1,103 +1,103 @@
-//
-// HTTPAuthenticationParams.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPAuthenticationParams
-//
-// Definition of the HTTPAuthenticationParams class.
-//
-// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru).
-// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPAuthenticationParams_INCLUDED
-#define Net_HTTPAuthenticationParams_INCLUDED
-
-
-#include "Poco/Net/NameValueCollection.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-class HTTPResponse;
-
-
-class Net_API HTTPAuthenticationParams: public NameValueCollection
- /// Collection of name-value pairs of HTTP authentication header (i.e.
- /// "realm", "qop", "nonce" in case of digest authentication header).
-{
-public:
- HTTPAuthenticationParams();
- /// Creates an empty authentication parameters collection.
-
- explicit HTTPAuthenticationParams(const std::string& authInfo);
- /// See fromAuthInfo() documentation.
-
- explicit HTTPAuthenticationParams(const HTTPRequest& request);
- /// See fromRequest() documentation.
-
- HTTPAuthenticationParams(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE);
- /// See fromResponse() documentation.
-
- virtual ~HTTPAuthenticationParams();
- /// Destroys the HTTPAuthenticationParams.
-
- HTTPAuthenticationParams& operator = (const HTTPAuthenticationParams& authParams);
- /// Assigns the content of another HTTPAuthenticationParams.
-
- void fromAuthInfo(const std::string& authInfo);
- /// Creates an HTTPAuthenticationParams by parsing authentication
- /// information.
-
- void fromRequest(const HTTPRequest& request);
- /// Extracts authentication information from the request and creates
- /// HTTPAuthenticationParams by parsing it.
- ///
- /// Throws a NotAuthenticatedException if no authentication
- /// information is contained in request.
- /// Throws a InvalidArgumentException if authentication scheme is
- /// unknown or invalid.
-
- void fromResponse(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE);
- /// Extracts authentication information from the response and creates
- /// HTTPAuthenticationParams by parsing it.
- ///
- /// Throws a NotAuthenticatedException if no authentication
- /// information is contained in response.
- /// Throws a InvalidArgumentException if authentication scheme is
- /// unknown or invalid.
-
- void setRealm(const std::string& realm);
- /// Sets the "realm" parameter to the provided string.
-
- const std::string& getRealm() const;
- /// Returns value of the "realm" parameter.
- ///
- /// Throws NotFoundException is there is no "realm" set in the
- /// HTTPAuthenticationParams.
-
- std::string toString() const;
- /// Formats the HTTPAuthenticationParams for inclusion in HTTP
- /// request or response authentication header.
-
- static const std::string REALM;
- static const std::string WWW_AUTHENTICATE;
- static const std::string PROXY_AUTHENTICATE;
-
-private:
- void parse(std::string::const_iterator first, std::string::const_iterator last);
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPAuthenticationParams_INCLUDED
+//
+// HTTPAuthenticationParams.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPAuthenticationParams
+//
+// Definition of the HTTPAuthenticationParams class.
+//
+// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru).
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPAuthenticationParams_INCLUDED
+#define Net_HTTPAuthenticationParams_INCLUDED
+
+
+#include "Poco/Net/NameValueCollection.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+class HTTPResponse;
+
+
+class Net_API HTTPAuthenticationParams: public NameValueCollection
+ /// Collection of name-value pairs of HTTP authentication header (i.e.
+ /// "realm", "qop", "nonce" in case of digest authentication header).
+{
+public:
+ HTTPAuthenticationParams();
+ /// Creates an empty authentication parameters collection.
+
+ explicit HTTPAuthenticationParams(const std::string& authInfo);
+ /// See fromAuthInfo() documentation.
+
+ explicit HTTPAuthenticationParams(const HTTPRequest& request);
+ /// See fromRequest() documentation.
+
+ HTTPAuthenticationParams(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE);
+ /// See fromResponse() documentation.
+
+ virtual ~HTTPAuthenticationParams();
+ /// Destroys the HTTPAuthenticationParams.
+
+ HTTPAuthenticationParams& operator = (const HTTPAuthenticationParams& authParams);
+ /// Assigns the content of another HTTPAuthenticationParams.
+
+ void fromAuthInfo(const std::string& authInfo);
+ /// Creates an HTTPAuthenticationParams by parsing authentication
+ /// information.
+
+ void fromRequest(const HTTPRequest& request);
+ /// Extracts authentication information from the request and creates
+ /// HTTPAuthenticationParams by parsing it.
+ ///
+ /// Throws a NotAuthenticatedException if no authentication
+ /// information is contained in request.
+ /// Throws a InvalidArgumentException if authentication scheme is
+ /// unknown or invalid.
+
+ void fromResponse(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE);
+ /// Extracts authentication information from the response and creates
+ /// HTTPAuthenticationParams by parsing it.
+ ///
+ /// Throws a NotAuthenticatedException if no authentication
+ /// information is contained in response.
+ /// Throws a InvalidArgumentException if authentication scheme is
+ /// unknown or invalid.
+
+ void setRealm(const std::string& realm);
+ /// Sets the "realm" parameter to the provided string.
+
+ const std::string& getRealm() const;
+ /// Returns value of the "realm" parameter.
+ ///
+ /// Throws NotFoundException is there is no "realm" set in the
+ /// HTTPAuthenticationParams.
+
+ std::string toString() const;
+ /// Formats the HTTPAuthenticationParams for inclusion in HTTP
+ /// request or response authentication header.
+
+ static const std::string REALM;
+ static const std::string WWW_AUTHENTICATE;
+ static const std::string PROXY_AUTHENTICATE;
+
+private:
+ void parse(std::string::const_iterator first, std::string::const_iterator last);
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPAuthenticationParams_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicCredentials.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicCredentials.h
index bb1eae3300..56894db8ca 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicCredentials.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicCredentials.h
@@ -1,123 +1,123 @@
-//
-// HTTPBasicCredentials.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPBasicCredentials
-//
-// Definition of the HTTPBasicCredentials class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPBasicCredentials_INCLUDED
-#define Net_HTTPBasicCredentials_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-
-
-class Net_API HTTPBasicCredentials
- /// This is a utility class for working with
- /// HTTP Basic Authentication in HTTPRequest
- /// objects.
-{
-public:
- HTTPBasicCredentials();
- /// Creates an empty HTTPBasicCredentials object.
-
- HTTPBasicCredentials(const std::string& username, const std::string& password);
- /// Creates a HTTPBasicCredentials object with the given username and password.
-
- explicit HTTPBasicCredentials(const HTTPRequest& request);
- /// Creates a HTTPBasicCredentials object with the authentication information
- /// from the given request.
- ///
- /// Throws a NotAuthenticatedException if the request does
- /// not contain basic authentication information.
-
- explicit HTTPBasicCredentials(const std::string& authInfo);
- /// Creates a HTTPBasicCredentials object with the authentication information
- /// in the given string. The authentication information can be extracted
- /// from a HTTPRequest object by calling HTTPRequest::getCredentials().
-
- ~HTTPBasicCredentials();
- /// Destroys the HTTPBasicCredentials.
-
- void clear();
- /// Clears both username and password.
-
- void setUsername(const std::string& username);
- /// Sets the username.
-
- const std::string& getUsername() const;
- /// Returns the username.
-
- void setPassword(const std::string& password);
- /// Sets the password.
-
- const std::string& getPassword() const;
- /// Returns the password.
-
- bool empty() const;
- /// Returns true if both username and password are empty, otherwise false.
-
- void authenticate(HTTPRequest& request) const;
- /// Adds authentication information to the given HTTPRequest.
-
- void proxyAuthenticate(HTTPRequest& request) const;
- /// Adds proxy authentication information to the given HTTPRequest.
-
- static const std::string SCHEME;
-
-protected:
- void parseAuthInfo(const std::string& authInfo);
- /// Extracts username and password from Basic authentication info
- /// by base64-decoding authInfo and splitting the resulting
- /// string at the ':' delimiter.
-
-private:
- HTTPBasicCredentials(const HTTPBasicCredentials&);
- HTTPBasicCredentials& operator = (const HTTPBasicCredentials&);
-
- std::string _username;
- std::string _password;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPBasicCredentials::getUsername() const
-{
- return _username;
-}
-
-
-inline const std::string& HTTPBasicCredentials::getPassword() const
-{
- return _password;
-}
-
-
-inline bool HTTPBasicCredentials::empty() const
-{
- return _username.empty() && _password.empty();
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPBasicCredentials_INCLUDED
+//
+// HTTPBasicCredentials.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPBasicCredentials
+//
+// Definition of the HTTPBasicCredentials class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPBasicCredentials_INCLUDED
+#define Net_HTTPBasicCredentials_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+
+
+class Net_API HTTPBasicCredentials
+ /// This is a utility class for working with
+ /// HTTP Basic Authentication in HTTPRequest
+ /// objects.
+{
+public:
+ HTTPBasicCredentials();
+ /// Creates an empty HTTPBasicCredentials object.
+
+ HTTPBasicCredentials(const std::string& username, const std::string& password);
+ /// Creates a HTTPBasicCredentials object with the given username and password.
+
+ explicit HTTPBasicCredentials(const HTTPRequest& request);
+ /// Creates a HTTPBasicCredentials object with the authentication information
+ /// from the given request.
+ ///
+ /// Throws a NotAuthenticatedException if the request does
+ /// not contain basic authentication information.
+
+ explicit HTTPBasicCredentials(const std::string& authInfo);
+ /// Creates a HTTPBasicCredentials object with the authentication information
+ /// in the given string. The authentication information can be extracted
+ /// from a HTTPRequest object by calling HTTPRequest::getCredentials().
+
+ ~HTTPBasicCredentials();
+ /// Destroys the HTTPBasicCredentials.
+
+ void clear();
+ /// Clears both username and password.
+
+ void setUsername(const std::string& username);
+ /// Sets the username.
+
+ const std::string& getUsername() const;
+ /// Returns the username.
+
+ void setPassword(const std::string& password);
+ /// Sets the password.
+
+ const std::string& getPassword() const;
+ /// Returns the password.
+
+ bool empty() const;
+ /// Returns true if both username and password are empty, otherwise false.
+
+ void authenticate(HTTPRequest& request) const;
+ /// Adds authentication information to the given HTTPRequest.
+
+ void proxyAuthenticate(HTTPRequest& request) const;
+ /// Adds proxy authentication information to the given HTTPRequest.
+
+ static const std::string SCHEME;
+
+protected:
+ void parseAuthInfo(const std::string& authInfo);
+ /// Extracts username and password from Basic authentication info
+ /// by base64-decoding authInfo and splitting the resulting
+ /// string at the ':' delimiter.
+
+private:
+ HTTPBasicCredentials(const HTTPBasicCredentials&);
+ HTTPBasicCredentials& operator = (const HTTPBasicCredentials&);
+
+ std::string _username;
+ std::string _password;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPBasicCredentials::getUsername() const
+{
+ return _username;
+}
+
+
+inline const std::string& HTTPBasicCredentials::getPassword() const
+{
+ return _password;
+}
+
+
+inline bool HTTPBasicCredentials::empty() const
+{
+ return _username.empty() && _password.empty();
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPBasicCredentials_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicStreamBuf.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicStreamBuf.h
index 5ea5626750..0edbec3298 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicStreamBuf.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPBasicStreamBuf.h
@@ -1,36 +1,36 @@
-//
-// HTTPBasicStreamBuf.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPBasicStreamBuf
-//
-// Definition of the HTTPBasicStreamBuf class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPBasicStreamBuf_INCLUDED
-#define Net_HTTPBasicStreamBuf_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/BufferedStreamBuf.h"
-#include "Poco/Net/HTTPBufferAllocator.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-typedef Poco::BasicBufferedStreamBuf<char, std::char_traits<char>, HTTPBufferAllocator> HTTPBasicStreamBuf;
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPBasicStreamBuf_INCLUDED
+//
+// HTTPBasicStreamBuf.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPBasicStreamBuf
+//
+// Definition of the HTTPBasicStreamBuf class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPBasicStreamBuf_INCLUDED
+#define Net_HTTPBasicStreamBuf_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/BufferedStreamBuf.h"
+#include "Poco/Net/HTTPBufferAllocator.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+typedef Poco::BasicBufferedStreamBuf<char, std::char_traits<char>, HTTPBufferAllocator> HTTPBasicStreamBuf;
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPBasicStreamBuf_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPBufferAllocator.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPBufferAllocator.h
index 05bc642ae2..ce2039aeaa 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPBufferAllocator.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPBufferAllocator.h
@@ -1,50 +1,50 @@
-//
-// HTTPBufferAllocator.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPBufferAllocator
-//
-// Definition of the HTTPBufferAllocator class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPBufferAllocator_INCLUDED
-#define Net_HTTPBufferAllocator_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/MemoryPool.h"
-#include <ios>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPBufferAllocator
- /// A BufferAllocator for HTTP streams.
-{
-public:
- static char* allocate(std::streamsize size);
- static void deallocate(char* ptr, std::streamsize size);
-
- enum
- {
- BUFFER_SIZE = 4096
- };
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPBufferAllocator_INCLUDED
+//
+// HTTPBufferAllocator.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPBufferAllocator
+//
+// Definition of the HTTPBufferAllocator class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPBufferAllocator_INCLUDED
+#define Net_HTTPBufferAllocator_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/MemoryPool.h"
+#include <ios>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPBufferAllocator
+ /// A BufferAllocator for HTTP streams.
+{
+public:
+ static char* allocate(std::streamsize size);
+ static void deallocate(char* ptr, std::streamsize size);
+
+ enum
+ {
+ BUFFER_SIZE = 4096
+ };
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPBufferAllocator_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPChunkedStream.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPChunkedStream.h
index d9dfe11d15..7e140ed586 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPChunkedStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPChunkedStream.h
@@ -1,105 +1,105 @@
-//
-// HTTPChunkedStream.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPChunkedStream
-//
-// Definition of the HTTPChunkedStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPChunkedStream_INCLUDED
-#define Net_HTTPChunkedStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPBasicStreamBuf.h"
-#include "Poco/MemoryPool.h"
-#include <cstddef>
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPSession;
-
-
-class Net_API HTTPChunkedStreamBuf: public HTTPBasicStreamBuf
- /// This is the streambuf class used for reading and writing
- /// HTTP message bodies in chunked transfer coding.
-{
-public:
- typedef HTTPBasicStreamBuf::openmode openmode;
-
- HTTPChunkedStreamBuf(HTTPSession& session, openmode mode);
- ~HTTPChunkedStreamBuf();
- void close();
-
-protected:
- int readFromDevice(char* buffer, std::streamsize length);
- int writeToDevice(const char* buffer, std::streamsize length);
-
-private:
- HTTPSession& _session;
- openmode _mode;
- std::streamsize _chunk;
- std::string _chunkBuffer;
-};
-
-
-class Net_API HTTPChunkedIOS: public virtual std::ios
- /// The base class for HTTPInputStream.
-{
-public:
- HTTPChunkedIOS(HTTPSession& session, HTTPChunkedStreamBuf::openmode mode);
- ~HTTPChunkedIOS();
- HTTPChunkedStreamBuf* rdbuf();
-
-protected:
- HTTPChunkedStreamBuf _buf;
-};
-
-
-class Net_API HTTPChunkedInputStream: public HTTPChunkedIOS, public std::istream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPChunkedInputStream(HTTPSession& session);
- ~HTTPChunkedInputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-class Net_API HTTPChunkedOutputStream: public HTTPChunkedIOS, public std::ostream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPChunkedOutputStream(HTTPSession& session);
- ~HTTPChunkedOutputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPChunkedStream_INCLUDED
+//
+// HTTPChunkedStream.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPChunkedStream
+//
+// Definition of the HTTPChunkedStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPChunkedStream_INCLUDED
+#define Net_HTTPChunkedStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPBasicStreamBuf.h"
+#include "Poco/MemoryPool.h"
+#include <cstddef>
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPSession;
+
+
+class Net_API HTTPChunkedStreamBuf: public HTTPBasicStreamBuf
+ /// This is the streambuf class used for reading and writing
+ /// HTTP message bodies in chunked transfer coding.
+{
+public:
+ typedef HTTPBasicStreamBuf::openmode openmode;
+
+ HTTPChunkedStreamBuf(HTTPSession& session, openmode mode);
+ ~HTTPChunkedStreamBuf();
+ void close();
+
+protected:
+ int readFromDevice(char* buffer, std::streamsize length);
+ int writeToDevice(const char* buffer, std::streamsize length);
+
+private:
+ HTTPSession& _session;
+ openmode _mode;
+ std::streamsize _chunk;
+ std::string _chunkBuffer;
+};
+
+
+class Net_API HTTPChunkedIOS: public virtual std::ios
+ /// The base class for HTTPInputStream.
+{
+public:
+ HTTPChunkedIOS(HTTPSession& session, HTTPChunkedStreamBuf::openmode mode);
+ ~HTTPChunkedIOS();
+ HTTPChunkedStreamBuf* rdbuf();
+
+protected:
+ HTTPChunkedStreamBuf _buf;
+};
+
+
+class Net_API HTTPChunkedInputStream: public HTTPChunkedIOS, public std::istream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPChunkedInputStream(HTTPSession& session);
+ ~HTTPChunkedInputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+class Net_API HTTPChunkedOutputStream: public HTTPChunkedIOS, public std::ostream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPChunkedOutputStream(HTTPSession& session);
+ ~HTTPChunkedOutputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPChunkedStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPClientSession.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPClientSession.h
index b48facd7e5..2f2e21c599 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPClientSession.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPClientSession.h
@@ -1,391 +1,391 @@
-//
-// HTTPClientSession.h
-//
-// Library: Net
-// Package: HTTPClient
-// Module: HTTPClientSession
-//
-// Definition of the HTTPClientSession class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPClientSession_INCLUDED
-#define Net_HTTPClientSession_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPSession.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/SharedPtr.h"
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-class HTTPResponse;
-
-
-class Net_API HTTPClientSession: public HTTPSession
- /// This class implements the client-side of
- /// a HTTP session.
- ///
- /// To send a HTTP request to a HTTP server, first
- /// instantiate a HTTPClientSession object and
- /// specify the server's host name and port number.
- ///
- /// Then create a HTTPRequest object, fill it accordingly,
- /// and pass it as argument to the sendRequest() method.
- ///
- /// sendRequest() will return an output stream that can
- /// be used to send the request body, if there is any.
- ///
- /// After you are done sending the request body, create
- /// a HTTPResponse object and pass it to receiveResponse().
- ///
- /// This will return an input stream that can be used to
- /// read the response body.
- ///
- /// See RFC 2616 <http://www.faqs.org/rfcs/rfc2616.html> for more
- /// information about the HTTP protocol.
- ///
- /// Proxies and proxy authorization (only HTTP Basic Authorization)
- /// is supported. Use setProxy() and setProxyCredentials() to
- /// set up a session through a proxy.
-{
-public:
- struct ProxyConfig
- /// HTTP proxy server configuration.
- {
- ProxyConfig():
- port(HTTP_PORT)
- {
- }
-
- std::string host;
- /// Proxy server host name or IP address.
- Poco::UInt16 port;
- /// Proxy server TCP port.
- std::string username;
- /// Proxy server username.
- std::string password;
- /// Proxy server password.
- std::string nonProxyHosts;
- /// A regular expression defining hosts for which the proxy should be bypassed,
- /// e.g. "localhost|127\.0\.0\.1|192\.168\.0\.\d+". Can also be an empty
- /// string to disable proxy bypassing.
- };
-
- HTTPClientSession();
- /// Creates an unconnected HTTPClientSession.
-
- explicit HTTPClientSession(const StreamSocket& socket);
- /// Creates a HTTPClientSession using the given socket.
- /// The socket must not be connected. The session
- /// takes ownership of the socket.
-
- explicit HTTPClientSession(const SocketAddress& address);
- /// Creates a HTTPClientSession using the given address.
-
- HTTPClientSession(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT);
- /// Creates a HTTPClientSession using the given host and port.
-
- HTTPClientSession(const std::string& host, Poco::UInt16 port, const ProxyConfig& proxyConfig);
- /// Creates a HTTPClientSession using the given host, port and proxy configuration.
-
- virtual ~HTTPClientSession();
- /// Destroys the HTTPClientSession and closes
- /// the underlying socket.
-
- void setHost(const std::string& host);
- /// Sets the host name of the target HTTP server.
- ///
- /// The host must not be changed once there is an
- /// open connection to the server.
-
- const std::string& getHost() const;
- /// Returns the host name of the target HTTP server.
-
- void setPort(Poco::UInt16 port);
- /// Sets the port number of the target HTTP server.
- ///
- /// The port number must not be changed once there is an
- /// open connection to the server.
-
- Poco::UInt16 getPort() const;
- /// Returns the port number of the target HTTP server.
-
- void setProxy(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT);
- /// Sets the proxy host name and port number.
-
- void setProxyHost(const std::string& host);
- /// Sets the host name of the proxy server.
-
- void setProxyPort(Poco::UInt16 port);
- /// Sets the port number of the proxy server.
-
- const std::string& getProxyHost() const;
- /// Returns the proxy host name.
-
- Poco::UInt16 getProxyPort() const;
- /// Returns the proxy port number.
-
- void setProxyCredentials(const std::string& username, const std::string& password);
- /// Sets the username and password for proxy authentication.
- /// Only Basic authentication is supported.
-
- void setProxyUsername(const std::string& username);
- /// Sets the username for proxy authentication.
- /// Only Basic authentication is supported.
-
- const std::string& getProxyUsername() const;
- /// Returns the username for proxy authentication.
-
- void setProxyPassword(const std::string& password);
- /// Sets the password for proxy authentication.
- /// Only Basic authentication is supported.
-
- const std::string& getProxyPassword() const;
- /// Returns the password for proxy authentication.
-
- void setProxyConfig(const ProxyConfig& config);
- /// Sets the proxy configuration.
-
- const ProxyConfig& getProxyConfig() const;
- /// Returns the proxy configuration.
-
- static void setGlobalProxyConfig(const ProxyConfig& config);
- /// Sets the global proxy configuration.
- ///
- /// The global proxy configuration is used by all HTTPClientSession
- /// instances, unless a different proxy configuration is explicitly set.
- ///
- /// Warning: Setting the global proxy configuration is not thread safe.
- /// The global proxy configuration should be set at start up, before
- /// the first HTTPClientSession instance is created.
-
- static const ProxyConfig& getGlobalProxyConfig();
- /// Returns the global proxy configuration.
-
- void setKeepAliveTimeout(const Poco::Timespan& timeout);
- /// Sets the connection timeout for HTTP connections.
-
- const Poco::Timespan& getKeepAliveTimeout() const;
- /// Returns the connection timeout for HTTP connections.
-
- virtual std::ostream& sendRequest(HTTPRequest& request);
- /// Sends the header for the given HTTP request to
- /// the server.
- ///
- /// The HTTPClientSession will set the request's
- /// Host and Keep-Alive headers accordingly.
- ///
- /// The returned output stream can be used to write
- /// the request body. The stream is valid until
- /// receiveResponse() is called or the session
- /// is destroyed.
- ///
- /// In case a network or server failure happens
- /// while writing the request body to the returned stream,
- /// the stream state will change to bad or fail. In this
- /// case, reset() should be called if the session will
- /// be reused and persistent connections are enabled
- /// to ensure a new connection will be set up
- /// for the next request.
-
- virtual std::istream& receiveResponse(HTTPResponse& response);
- /// Receives the header for the response to the previous
- /// HTTP request.
- ///
- /// The returned input stream can be used to read
- /// the response body. The stream is valid until
- /// sendRequest() is called or the session is
- /// destroyed.
- ///
- /// It must be ensured that the response stream
- /// is fully consumed before sending a new request
- /// and persistent connections are enabled. Otherwise,
- /// the unread part of the response body may be treated as
- /// part of the next request's response header, resulting
- /// in a Poco::Net::MessageException being thrown.
- ///
- /// In case a network or server failure happens
- /// while reading the response body from the returned stream,
- /// the stream state will change to bad or fail. In this
- /// case, reset() should be called if the session will
- /// be reused and persistent connections are enabled
- /// to ensure a new connection will be set up
- /// for the next request.
-
- virtual bool peekResponse(HTTPResponse& response);
- /// If the request contains a "Expect: 100-continue" header,
- /// (see HTTPRequest::setExpectContinue()) this method can be
- /// used to check whether the server has sent a 100 Continue response
- /// before continuing with the request, i.e. sending the request body,
- /// after calling sendRequest().
- ///
- /// Returns true if the server has responded with 100 Continue,
- /// otherwise false. The HTTPResponse object contains the
- /// response sent by the server.
- ///
- /// In any case, receiveResponse() must be called afterwards as well in
- /// order to complete the request. The same HTTPResponse object
- /// passed to peekResponse() must also be passed to receiveResponse().
- ///
- /// This method should only be called if the request contains
- /// a "Expect: 100-continue" header.
-
- void flushRequest();
- /// Flushes the request stream.
- ///
- /// Normally this method does not need to be called.
- /// It can be used to ensure the request has been
- /// fully sent if receiveResponse() is not called, e.g.,
- /// because the underlying socket will be detached.
-
- void reset();
- /// Resets the session and closes the socket.
- ///
- /// The next request will initiate a new connection,
- /// even if persistent connections are enabled.
- ///
- /// This should be called whenever something went
- /// wrong when sending a request (e.g., sendRequest()
- /// or receiveResponse() throws an exception, or
- /// the request or response stream changes into
- /// fail or bad state, but not eof state).
-
- virtual bool secure() const;
- /// Return true iff the session uses SSL or TLS,
- /// or false otherwise.
-
- bool bypassProxy() const;
- /// Returns true if the proxy should be bypassed
- /// for the current host.
-
-protected:
- enum
- {
- DEFAULT_KEEP_ALIVE_TIMEOUT = 8
- };
-
- void reconnect();
- /// Connects the underlying socket to the HTTP server.
-
- int write(const char* buffer, std::streamsize length);
- /// Tries to re-connect if keep-alive is on.
-
- virtual std::string proxyRequestPrefix() const;
- /// Returns the prefix prepended to the URI for proxy requests
- /// (e.g., "http://myhost.com").
-
- virtual bool mustReconnect() const;
- /// Checks if we can reuse a persistent connection.
-
- virtual void proxyAuthenticate(HTTPRequest& request);
- /// Sets the proxy credentials (Proxy-Authorization header), if
- /// proxy username and password have been set.
-
- void proxyAuthenticateImpl(HTTPRequest& request);
- /// Sets the proxy credentials (Proxy-Authorization header), if
- /// proxy username and password have been set.
-
- StreamSocket proxyConnect();
- /// Sends a CONNECT request to the proxy server and returns
- /// a StreamSocket for the resulting connection.
-
- void proxyTunnel();
- /// Calls proxyConnect() and attaches the resulting StreamSocket
- /// to the HTTPClientSession.
-
-private:
- std::string _host;
- Poco::UInt16 _port;
- ProxyConfig _proxyConfig;
- Poco::Timespan _keepAliveTimeout;
- Poco::Timestamp _lastRequest;
- bool _reconnect;
- bool _mustReconnect;
- bool _expectResponseBody;
- bool _responseReceived;
- Poco::SharedPtr<std::ostream> _pRequestStream;
- Poco::SharedPtr<std::istream> _pResponseStream;
-
- static ProxyConfig _globalProxyConfig;
-
- HTTPClientSession(const HTTPClientSession&);
- HTTPClientSession& operator = (const HTTPClientSession&);
-
- friend class WebSocket;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPClientSession::getHost() const
-{
- return _host;
-}
-
-
-inline Poco::UInt16 HTTPClientSession::getPort() const
-{
- return _port;
-}
-
-
-inline const std::string& HTTPClientSession::getProxyHost() const
-{
- return _proxyConfig.host;
-}
-
-
-inline Poco::UInt16 HTTPClientSession::getProxyPort() const
-{
- return _proxyConfig.port;
-}
-
-
-inline const std::string& HTTPClientSession::getProxyUsername() const
-{
- return _proxyConfig.username;
-}
-
-
-inline const std::string& HTTPClientSession::getProxyPassword() const
-{
- return _proxyConfig.password;
-}
-
-
-inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getProxyConfig() const
-{
- return _proxyConfig;
-}
-
-
-inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getGlobalProxyConfig()
-{
- return _globalProxyConfig;
-}
-
-
-inline const Poco::Timespan& HTTPClientSession::getKeepAliveTimeout() const
-{
- return _keepAliveTimeout;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPClientSession_INCLUDED
+//
+// HTTPClientSession.h
+//
+// Library: Net
+// Package: HTTPClient
+// Module: HTTPClientSession
+//
+// Definition of the HTTPClientSession class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPClientSession_INCLUDED
+#define Net_HTTPClientSession_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPSession.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/SharedPtr.h"
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+class HTTPResponse;
+
+
+class Net_API HTTPClientSession: public HTTPSession
+ /// This class implements the client-side of
+ /// a HTTP session.
+ ///
+ /// To send a HTTP request to a HTTP server, first
+ /// instantiate a HTTPClientSession object and
+ /// specify the server's host name and port number.
+ ///
+ /// Then create a HTTPRequest object, fill it accordingly,
+ /// and pass it as argument to the sendRequest() method.
+ ///
+ /// sendRequest() will return an output stream that can
+ /// be used to send the request body, if there is any.
+ ///
+ /// After you are done sending the request body, create
+ /// a HTTPResponse object and pass it to receiveResponse().
+ ///
+ /// This will return an input stream that can be used to
+ /// read the response body.
+ ///
+ /// See RFC 2616 <http://www.faqs.org/rfcs/rfc2616.html> for more
+ /// information about the HTTP protocol.
+ ///
+ /// Proxies and proxy authorization (only HTTP Basic Authorization)
+ /// is supported. Use setProxy() and setProxyCredentials() to
+ /// set up a session through a proxy.
+{
+public:
+ struct ProxyConfig
+ /// HTTP proxy server configuration.
+ {
+ ProxyConfig():
+ port(HTTP_PORT)
+ {
+ }
+
+ std::string host;
+ /// Proxy server host name or IP address.
+ Poco::UInt16 port;
+ /// Proxy server TCP port.
+ std::string username;
+ /// Proxy server username.
+ std::string password;
+ /// Proxy server password.
+ std::string nonProxyHosts;
+ /// A regular expression defining hosts for which the proxy should be bypassed,
+ /// e.g. "localhost|127\.0\.0\.1|192\.168\.0\.\d+". Can also be an empty
+ /// string to disable proxy bypassing.
+ };
+
+ HTTPClientSession();
+ /// Creates an unconnected HTTPClientSession.
+
+ explicit HTTPClientSession(const StreamSocket& socket);
+ /// Creates a HTTPClientSession using the given socket.
+ /// The socket must not be connected. The session
+ /// takes ownership of the socket.
+
+ explicit HTTPClientSession(const SocketAddress& address);
+ /// Creates a HTTPClientSession using the given address.
+
+ HTTPClientSession(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT);
+ /// Creates a HTTPClientSession using the given host and port.
+
+ HTTPClientSession(const std::string& host, Poco::UInt16 port, const ProxyConfig& proxyConfig);
+ /// Creates a HTTPClientSession using the given host, port and proxy configuration.
+
+ virtual ~HTTPClientSession();
+ /// Destroys the HTTPClientSession and closes
+ /// the underlying socket.
+
+ void setHost(const std::string& host);
+ /// Sets the host name of the target HTTP server.
+ ///
+ /// The host must not be changed once there is an
+ /// open connection to the server.
+
+ const std::string& getHost() const;
+ /// Returns the host name of the target HTTP server.
+
+ void setPort(Poco::UInt16 port);
+ /// Sets the port number of the target HTTP server.
+ ///
+ /// The port number must not be changed once there is an
+ /// open connection to the server.
+
+ Poco::UInt16 getPort() const;
+ /// Returns the port number of the target HTTP server.
+
+ void setProxy(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT);
+ /// Sets the proxy host name and port number.
+
+ void setProxyHost(const std::string& host);
+ /// Sets the host name of the proxy server.
+
+ void setProxyPort(Poco::UInt16 port);
+ /// Sets the port number of the proxy server.
+
+ const std::string& getProxyHost() const;
+ /// Returns the proxy host name.
+
+ Poco::UInt16 getProxyPort() const;
+ /// Returns the proxy port number.
+
+ void setProxyCredentials(const std::string& username, const std::string& password);
+ /// Sets the username and password for proxy authentication.
+ /// Only Basic authentication is supported.
+
+ void setProxyUsername(const std::string& username);
+ /// Sets the username for proxy authentication.
+ /// Only Basic authentication is supported.
+
+ const std::string& getProxyUsername() const;
+ /// Returns the username for proxy authentication.
+
+ void setProxyPassword(const std::string& password);
+ /// Sets the password for proxy authentication.
+ /// Only Basic authentication is supported.
+
+ const std::string& getProxyPassword() const;
+ /// Returns the password for proxy authentication.
+
+ void setProxyConfig(const ProxyConfig& config);
+ /// Sets the proxy configuration.
+
+ const ProxyConfig& getProxyConfig() const;
+ /// Returns the proxy configuration.
+
+ static void setGlobalProxyConfig(const ProxyConfig& config);
+ /// Sets the global proxy configuration.
+ ///
+ /// The global proxy configuration is used by all HTTPClientSession
+ /// instances, unless a different proxy configuration is explicitly set.
+ ///
+ /// Warning: Setting the global proxy configuration is not thread safe.
+ /// The global proxy configuration should be set at start up, before
+ /// the first HTTPClientSession instance is created.
+
+ static const ProxyConfig& getGlobalProxyConfig();
+ /// Returns the global proxy configuration.
+
+ void setKeepAliveTimeout(const Poco::Timespan& timeout);
+ /// Sets the connection timeout for HTTP connections.
+
+ const Poco::Timespan& getKeepAliveTimeout() const;
+ /// Returns the connection timeout for HTTP connections.
+
+ virtual std::ostream& sendRequest(HTTPRequest& request);
+ /// Sends the header for the given HTTP request to
+ /// the server.
+ ///
+ /// The HTTPClientSession will set the request's
+ /// Host and Keep-Alive headers accordingly.
+ ///
+ /// The returned output stream can be used to write
+ /// the request body. The stream is valid until
+ /// receiveResponse() is called or the session
+ /// is destroyed.
+ ///
+ /// In case a network or server failure happens
+ /// while writing the request body to the returned stream,
+ /// the stream state will change to bad or fail. In this
+ /// case, reset() should be called if the session will
+ /// be reused and persistent connections are enabled
+ /// to ensure a new connection will be set up
+ /// for the next request.
+
+ virtual std::istream& receiveResponse(HTTPResponse& response);
+ /// Receives the header for the response to the previous
+ /// HTTP request.
+ ///
+ /// The returned input stream can be used to read
+ /// the response body. The stream is valid until
+ /// sendRequest() is called or the session is
+ /// destroyed.
+ ///
+ /// It must be ensured that the response stream
+ /// is fully consumed before sending a new request
+ /// and persistent connections are enabled. Otherwise,
+ /// the unread part of the response body may be treated as
+ /// part of the next request's response header, resulting
+ /// in a Poco::Net::MessageException being thrown.
+ ///
+ /// In case a network or server failure happens
+ /// while reading the response body from the returned stream,
+ /// the stream state will change to bad or fail. In this
+ /// case, reset() should be called if the session will
+ /// be reused and persistent connections are enabled
+ /// to ensure a new connection will be set up
+ /// for the next request.
+
+ virtual bool peekResponse(HTTPResponse& response);
+ /// If the request contains a "Expect: 100-continue" header,
+ /// (see HTTPRequest::setExpectContinue()) this method can be
+ /// used to check whether the server has sent a 100 Continue response
+ /// before continuing with the request, i.e. sending the request body,
+ /// after calling sendRequest().
+ ///
+ /// Returns true if the server has responded with 100 Continue,
+ /// otherwise false. The HTTPResponse object contains the
+ /// response sent by the server.
+ ///
+ /// In any case, receiveResponse() must be called afterwards as well in
+ /// order to complete the request. The same HTTPResponse object
+ /// passed to peekResponse() must also be passed to receiveResponse().
+ ///
+ /// This method should only be called if the request contains
+ /// a "Expect: 100-continue" header.
+
+ void flushRequest();
+ /// Flushes the request stream.
+ ///
+ /// Normally this method does not need to be called.
+ /// It can be used to ensure the request has been
+ /// fully sent if receiveResponse() is not called, e.g.,
+ /// because the underlying socket will be detached.
+
+ void reset();
+ /// Resets the session and closes the socket.
+ ///
+ /// The next request will initiate a new connection,
+ /// even if persistent connections are enabled.
+ ///
+ /// This should be called whenever something went
+ /// wrong when sending a request (e.g., sendRequest()
+ /// or receiveResponse() throws an exception, or
+ /// the request or response stream changes into
+ /// fail or bad state, but not eof state).
+
+ virtual bool secure() const;
+ /// Return true iff the session uses SSL or TLS,
+ /// or false otherwise.
+
+ bool bypassProxy() const;
+ /// Returns true if the proxy should be bypassed
+ /// for the current host.
+
+protected:
+ enum
+ {
+ DEFAULT_KEEP_ALIVE_TIMEOUT = 8
+ };
+
+ void reconnect();
+ /// Connects the underlying socket to the HTTP server.
+
+ int write(const char* buffer, std::streamsize length);
+ /// Tries to re-connect if keep-alive is on.
+
+ virtual std::string proxyRequestPrefix() const;
+ /// Returns the prefix prepended to the URI for proxy requests
+ /// (e.g., "http://myhost.com").
+
+ virtual bool mustReconnect() const;
+ /// Checks if we can reuse a persistent connection.
+
+ virtual void proxyAuthenticate(HTTPRequest& request);
+ /// Sets the proxy credentials (Proxy-Authorization header), if
+ /// proxy username and password have been set.
+
+ void proxyAuthenticateImpl(HTTPRequest& request);
+ /// Sets the proxy credentials (Proxy-Authorization header), if
+ /// proxy username and password have been set.
+
+ StreamSocket proxyConnect();
+ /// Sends a CONNECT request to the proxy server and returns
+ /// a StreamSocket for the resulting connection.
+
+ void proxyTunnel();
+ /// Calls proxyConnect() and attaches the resulting StreamSocket
+ /// to the HTTPClientSession.
+
+private:
+ std::string _host;
+ Poco::UInt16 _port;
+ ProxyConfig _proxyConfig;
+ Poco::Timespan _keepAliveTimeout;
+ Poco::Timestamp _lastRequest;
+ bool _reconnect;
+ bool _mustReconnect;
+ bool _expectResponseBody;
+ bool _responseReceived;
+ Poco::SharedPtr<std::ostream> _pRequestStream;
+ Poco::SharedPtr<std::istream> _pResponseStream;
+
+ static ProxyConfig _globalProxyConfig;
+
+ HTTPClientSession(const HTTPClientSession&);
+ HTTPClientSession& operator = (const HTTPClientSession&);
+
+ friend class WebSocket;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPClientSession::getHost() const
+{
+ return _host;
+}
+
+
+inline Poco::UInt16 HTTPClientSession::getPort() const
+{
+ return _port;
+}
+
+
+inline const std::string& HTTPClientSession::getProxyHost() const
+{
+ return _proxyConfig.host;
+}
+
+
+inline Poco::UInt16 HTTPClientSession::getProxyPort() const
+{
+ return _proxyConfig.port;
+}
+
+
+inline const std::string& HTTPClientSession::getProxyUsername() const
+{
+ return _proxyConfig.username;
+}
+
+
+inline const std::string& HTTPClientSession::getProxyPassword() const
+{
+ return _proxyConfig.password;
+}
+
+
+inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getProxyConfig() const
+{
+ return _proxyConfig;
+}
+
+
+inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getGlobalProxyConfig()
+{
+ return _globalProxyConfig;
+}
+
+
+inline const Poco::Timespan& HTTPClientSession::getKeepAliveTimeout() const
+{
+ return _keepAliveTimeout;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPClientSession_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPCookie.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPCookie.h
index f525a107d9..c7c47b2e0a 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPCookie.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPCookie.h
@@ -1,272 +1,272 @@
-//
-// HTTPCookie.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPCookie
-//
-// Definition of the HTTPCookie class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPCookie_INCLUDED
-#define Net_HTTPCookie_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class NameValueCollection;
-
-
-class Net_API HTTPCookie
- /// This class represents a HTTP Cookie.
- ///
- /// A cookie is a small amount of information sent by a Web
- /// server to a Web browser, saved by the browser, and later sent back
- /// to the server. A cookie's value can uniquely identify a client, so
- /// cookies are commonly used for session management.
- ///
- /// A cookie has a name, a single value, and optional attributes such
- /// as a comment, path and domain qualifiers, a maximum age, and a
- /// version number.
- ///
- /// This class supports both the Version 0 (by Netscape) and Version 1
- /// (by RFC 2109) cookie specifications. By default, cookies are created
- /// using Version 0 to ensure the best interoperability.
-{
-public:
- HTTPCookie();
- /// Creates an empty HTTPCookie.
-
- explicit HTTPCookie(const std::string& name);
- /// Creates a cookie with the given name.
- /// The cookie never expires.
-
- explicit HTTPCookie(const NameValueCollection& nvc);
- /// Creates a cookie from the given NameValueCollection.
-
- HTTPCookie(const std::string& name, const std::string& value);
- /// Creates a cookie with the given name and value.
- /// The cookie never expires.
- ///
- /// Note: If value contains whitespace or non-alphanumeric
- /// characters, the value should be escaped by calling escape()
- /// before passing it to the constructor.
-
- HTTPCookie(const HTTPCookie& cookie);
- /// Creates the HTTPCookie by copying another one.
-
- ~HTTPCookie();
- /// Destroys the HTTPCookie.
-
- HTTPCookie& operator = (const HTTPCookie& cookie);
- /// Assigns a cookie.
-
- void setVersion(int version);
- /// Sets the version of the cookie.
- ///
- /// Version must be either 0 (denoting a Netscape cookie)
- /// or 1 (denoting a RFC 2109 cookie).
-
- int getVersion() const;
- /// Returns the version of the cookie, which is
- /// either 0 or 1.
-
- void setName(const std::string& name);
- /// Sets the name of the cookie.
-
- const std::string& getName() const;
- /// Returns the name of the cookie.
-
- void setValue(const std::string& value);
- /// Sets the value of the cookie.
- ///
- /// According to the cookie specification, the
- /// size of the value should not exceed 4 Kbytes.
- ///
- /// Note: If value contains whitespace or non-alphanumeric
- /// characters, the value should be escaped by calling escape()
- /// prior to passing it to setName().
-
- const std::string& getValue() const;
- /// Returns the value of the cookie.
-
- void setComment(const std::string& comment);
- /// Sets the comment for the cookie.
- ///
- /// Comments are only supported for version 1 cookies.
-
- const std::string& getComment() const;
- /// Returns the comment for the cookie.
-
- void setDomain(const std::string& domain);
- /// Sets the domain for the cookie.
-
- const std::string& getDomain() const;
- /// Returns the domain for the cookie.
-
- void setPath(const std::string& path);
- /// Sets the path for the cookie.
-
- void setPriority(const std::string& priority);
- /// Sets the priority for the cookie.
-
- const std::string& getPath() const;
- /// Returns the path for the cookie.
-
- const std::string& getPriority() const;
- /// Returns the priority for the cookie.
-
- void setSecure(bool secure);
- /// Sets the value of the secure flag for
- /// the cookie.
-
- bool getSecure() const;
- /// Returns the value of the secure flag
- /// for the cookie.
-
- void setMaxAge(int maxAge);
- /// Sets the maximum age in seconds for
- /// the cookie.
- ///
- /// A value of -1 (default) causes the cookie
- /// to become a session cookie, which will
- /// be deleted when the browser window
- /// is closed.
- ///
- /// A value of 0 deletes the cookie on
- /// the client.
-
- int getMaxAge() const;
- /// Returns the maximum age in seconds for
- /// the cookie.
-
- void setHttpOnly(bool flag = true);
- /// Sets the HttpOnly flag for the cookie.
-
- bool getHttpOnly() const;
- /// Returns true iff the cookie's HttpOnly flag is set.
-
- std::string toString() const;
- /// Returns a string representation of the cookie,
- /// suitable for use in a Set-Cookie header.
-
- static std::string escape(const std::string& str);
- /// Escapes the given string by replacing all
- /// non-alphanumeric characters with escape
- /// sequences in the form %xx, where xx is the
- /// hexadecimal character code.
- ///
- /// The following characters will be replaced
- /// with escape sequences:
- /// - percent sign %
- /// - less-than and greater-than < and >
- /// - curly brackets { and }
- /// - square brackets [ and ]
- /// - parenthesis ( and )
- /// - solidus /
- /// - vertical line |
- /// - reverse solidus (backslash /)
- /// - quotation mark "
- /// - apostrophe '
- /// - circumflex accent ^
- /// - grave accent `
- /// - comma and semicolon , and ;
- /// - whitespace and control characters
-
- static std::string unescape(const std::string& str);
- /// Unescapes the given string by replacing all
- /// escape sequences in the form %xx with the
- /// respective characters.
-
-private:
- int _version;
- std::string _name;
- std::string _value;
- std::string _comment;
- std::string _domain;
- std::string _path;
- std::string _priority;
- bool _secure;
- int _maxAge;
- bool _httpOnly;
-};
-
-
-//
-// inlines
-//
-inline int HTTPCookie::getVersion() const
-{
- return _version;
-}
-
-
-inline const std::string& HTTPCookie::getName() const
-{
- return _name;
-}
-
-
-inline const std::string& HTTPCookie::getValue() const
-{
- return _value;
-}
-
-
-inline const std::string& HTTPCookie::getComment() const
-{
- return _comment;
-}
-
-
-inline const std::string& HTTPCookie::getDomain() const
-{
- return _domain;
-}
-
-
-inline const std::string& HTTPCookie::getPath() const
-{
- return _path;
-}
-
-
-inline const std::string& HTTPCookie::getPriority() const
-{
- return _priority;
-}
-
-
-inline bool HTTPCookie::getSecure() const
-{
- return _secure;
-}
-
-
-inline int HTTPCookie::getMaxAge() const
-{
- return _maxAge;
-}
-
-
-inline bool HTTPCookie::getHttpOnly() const
-{
- return _httpOnly;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPCookie_INCLUDED
+//
+// HTTPCookie.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPCookie
+//
+// Definition of the HTTPCookie class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPCookie_INCLUDED
+#define Net_HTTPCookie_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class NameValueCollection;
+
+
+class Net_API HTTPCookie
+ /// This class represents a HTTP Cookie.
+ ///
+ /// A cookie is a small amount of information sent by a Web
+ /// server to a Web browser, saved by the browser, and later sent back
+ /// to the server. A cookie's value can uniquely identify a client, so
+ /// cookies are commonly used for session management.
+ ///
+ /// A cookie has a name, a single value, and optional attributes such
+ /// as a comment, path and domain qualifiers, a maximum age, and a
+ /// version number.
+ ///
+ /// This class supports both the Version 0 (by Netscape) and Version 1
+ /// (by RFC 2109) cookie specifications. By default, cookies are created
+ /// using Version 0 to ensure the best interoperability.
+{
+public:
+ HTTPCookie();
+ /// Creates an empty HTTPCookie.
+
+ explicit HTTPCookie(const std::string& name);
+ /// Creates a cookie with the given name.
+ /// The cookie never expires.
+
+ explicit HTTPCookie(const NameValueCollection& nvc);
+ /// Creates a cookie from the given NameValueCollection.
+
+ HTTPCookie(const std::string& name, const std::string& value);
+ /// Creates a cookie with the given name and value.
+ /// The cookie never expires.
+ ///
+ /// Note: If value contains whitespace or non-alphanumeric
+ /// characters, the value should be escaped by calling escape()
+ /// before passing it to the constructor.
+
+ HTTPCookie(const HTTPCookie& cookie);
+ /// Creates the HTTPCookie by copying another one.
+
+ ~HTTPCookie();
+ /// Destroys the HTTPCookie.
+
+ HTTPCookie& operator = (const HTTPCookie& cookie);
+ /// Assigns a cookie.
+
+ void setVersion(int version);
+ /// Sets the version of the cookie.
+ ///
+ /// Version must be either 0 (denoting a Netscape cookie)
+ /// or 1 (denoting a RFC 2109 cookie).
+
+ int getVersion() const;
+ /// Returns the version of the cookie, which is
+ /// either 0 or 1.
+
+ void setName(const std::string& name);
+ /// Sets the name of the cookie.
+
+ const std::string& getName() const;
+ /// Returns the name of the cookie.
+
+ void setValue(const std::string& value);
+ /// Sets the value of the cookie.
+ ///
+ /// According to the cookie specification, the
+ /// size of the value should not exceed 4 Kbytes.
+ ///
+ /// Note: If value contains whitespace or non-alphanumeric
+ /// characters, the value should be escaped by calling escape()
+ /// prior to passing it to setName().
+
+ const std::string& getValue() const;
+ /// Returns the value of the cookie.
+
+ void setComment(const std::string& comment);
+ /// Sets the comment for the cookie.
+ ///
+ /// Comments are only supported for version 1 cookies.
+
+ const std::string& getComment() const;
+ /// Returns the comment for the cookie.
+
+ void setDomain(const std::string& domain);
+ /// Sets the domain for the cookie.
+
+ const std::string& getDomain() const;
+ /// Returns the domain for the cookie.
+
+ void setPath(const std::string& path);
+ /// Sets the path for the cookie.
+
+ void setPriority(const std::string& priority);
+ /// Sets the priority for the cookie.
+
+ const std::string& getPath() const;
+ /// Returns the path for the cookie.
+
+ const std::string& getPriority() const;
+ /// Returns the priority for the cookie.
+
+ void setSecure(bool secure);
+ /// Sets the value of the secure flag for
+ /// the cookie.
+
+ bool getSecure() const;
+ /// Returns the value of the secure flag
+ /// for the cookie.
+
+ void setMaxAge(int maxAge);
+ /// Sets the maximum age in seconds for
+ /// the cookie.
+ ///
+ /// A value of -1 (default) causes the cookie
+ /// to become a session cookie, which will
+ /// be deleted when the browser window
+ /// is closed.
+ ///
+ /// A value of 0 deletes the cookie on
+ /// the client.
+
+ int getMaxAge() const;
+ /// Returns the maximum age in seconds for
+ /// the cookie.
+
+ void setHttpOnly(bool flag = true);
+ /// Sets the HttpOnly flag for the cookie.
+
+ bool getHttpOnly() const;
+ /// Returns true iff the cookie's HttpOnly flag is set.
+
+ std::string toString() const;
+ /// Returns a string representation of the cookie,
+ /// suitable for use in a Set-Cookie header.
+
+ static std::string escape(const std::string& str);
+ /// Escapes the given string by replacing all
+ /// non-alphanumeric characters with escape
+ /// sequences in the form %xx, where xx is the
+ /// hexadecimal character code.
+ ///
+ /// The following characters will be replaced
+ /// with escape sequences:
+ /// - percent sign %
+ /// - less-than and greater-than < and >
+ /// - curly brackets { and }
+ /// - square brackets [ and ]
+ /// - parenthesis ( and )
+ /// - solidus /
+ /// - vertical line |
+ /// - reverse solidus (backslash /)
+ /// - quotation mark "
+ /// - apostrophe '
+ /// - circumflex accent ^
+ /// - grave accent `
+ /// - comma and semicolon , and ;
+ /// - whitespace and control characters
+
+ static std::string unescape(const std::string& str);
+ /// Unescapes the given string by replacing all
+ /// escape sequences in the form %xx with the
+ /// respective characters.
+
+private:
+ int _version;
+ std::string _name;
+ std::string _value;
+ std::string _comment;
+ std::string _domain;
+ std::string _path;
+ std::string _priority;
+ bool _secure;
+ int _maxAge;
+ bool _httpOnly;
+};
+
+
+//
+// inlines
+//
+inline int HTTPCookie::getVersion() const
+{
+ return _version;
+}
+
+
+inline const std::string& HTTPCookie::getName() const
+{
+ return _name;
+}
+
+
+inline const std::string& HTTPCookie::getValue() const
+{
+ return _value;
+}
+
+
+inline const std::string& HTTPCookie::getComment() const
+{
+ return _comment;
+}
+
+
+inline const std::string& HTTPCookie::getDomain() const
+{
+ return _domain;
+}
+
+
+inline const std::string& HTTPCookie::getPath() const
+{
+ return _path;
+}
+
+
+inline const std::string& HTTPCookie::getPriority() const
+{
+ return _priority;
+}
+
+
+inline bool HTTPCookie::getSecure() const
+{
+ return _secure;
+}
+
+
+inline int HTTPCookie::getMaxAge() const
+{
+ return _maxAge;
+}
+
+
+inline bool HTTPCookie::getHttpOnly() const
+{
+ return _httpOnly;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPCookie_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPCredentials.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPCredentials.h
index 9c26ac7b97..e62b8c2467 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPCredentials.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPCredentials.h
@@ -1,206 +1,206 @@
-//
-// HTTPCredentials.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPCredentials
-//
-// Definition of the HTTPCredentials class.
-//
-// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru).
-// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPCredentials_INCLUDED
-#define Net_HTTPCredentials_INCLUDED
-
-
-#include "Poco/Net/HTTPDigestCredentials.h"
-
-
-namespace Poco {
-
-
-class URI;
-
-
-namespace Net {
-
-
-class HTTPRequest;
-class HTTPResponse;
-
-
-class Net_API HTTPCredentials
- /// This is a utility class for working with HTTP
- /// authentication (Basic or Digest) in HTTPRequest objects.
- ///
- /// Usage is as follows:
- /// First, create a HTTPCredentials object containing
- /// the username and password.
- /// Poco::Net::HTTPCredentials creds("user", "s3cr3t");
- ///
- /// Second, send the HTTP request with Poco::Net::HTTPClientSession.
- /// Poco::Net::HTTPClientSession session("pocoproject.org");
- /// Poco::Net::HTTPRequest request(HTTPRequest::HTTP_GET, "/index.html", HTTPMessage::HTTP_1_1);
- /// session.sendRequest(request);
- /// Poco::Net::HTTPResponse;
- /// std::istream& istr = session.receiveResponse(response);
- ///
- /// If the server responds with a 401 status, authenticate the
- /// request and resend it:
- /// if (response.getStatus() == Poco::Net::HTTPResponse::HTTP_UNAUTHORIZED)
- /// {
- /// creds.authenticate(request, response);
- /// session.sendRequest(request);
- /// ...
- /// }
- ///
- /// To perform multiple authenticated requests, call updateAuthInfo()
- /// instead of authenticate() on subsequent requests.
- /// creds.updateAuthInfo(request);
- /// session.sendRequest(request);
- /// ...
- ///
- /// Note: Do not forget to read the entire response stream from the 401 response
- /// before sending the authenticated request, otherwise there may be
- /// problems if a persistent connection is used.
-{
-public:
- HTTPCredentials();
- /// Creates an empty HTTPCredentials object.
-
- HTTPCredentials(const std::string& username, const std::string& password);
- /// Creates an HTTPCredentials object with the given username and password.
-
- ~HTTPCredentials();
- /// Destroys the HTTPCredentials.
-
- void fromUserInfo(const std::string& userInfo);
- /// Parses username:password string and sets username and password of
- /// the credentials object.
- /// Throws SyntaxException on invalid user information.
-
- void fromURI(const URI& uri);
- /// Extracts username and password from the given URI and sets username
- /// and password of the credentials object.
- /// Does nothing if URI has no user info part.
-
- void clear();
- /// Clears username, password and host.
-
- void setUsername(const std::string& username);
- /// Sets the username.
-
- const std::string& getUsername() const;
- /// Returns the username.
-
- void setPassword(const std::string& password);
- /// Sets the password.
-
- const std::string& getPassword() const;
- /// Returns the password.
-
- bool empty() const;
- /// Returns true if both username and password are empty, otherwise false.
-
- void authenticate(HTTPRequest& request, const HTTPResponse& response);
- /// Inspects WWW-Authenticate header of the response, initializes
- /// the internal state (in case of digest authentication) and
- /// adds required information to the given HTTPRequest.
- ///
- /// Does nothing if there is no WWW-Authenticate header in the
- /// HTTPResponse.
-
- void updateAuthInfo(HTTPRequest& request);
- /// Updates internal state (in case of digest authentication) and
- /// replaces authentication information in the request accordingly.
-
- void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response);
- /// Inspects Proxy-Authenticate header of the response, initializes
- /// the internal state (in case of digest authentication) and
- /// adds required information to the given HTTPRequest.
- ///
- /// Does nothing if there is no Proxy-Authenticate header in the
- /// HTTPResponse.
-
- void updateProxyAuthInfo(HTTPRequest& request);
- /// Updates internal state (in case of digest authentication) and
- /// replaces proxy authentication information in the request accordingly.
-
- static bool isBasicCredentials(const std::string& header);
- /// Returns true if authentication header is for Basic authentication.
-
- static bool isDigestCredentials(const std::string& header);
- /// Returns true if authentication header is for Digest authentication.
-
- static bool hasBasicCredentials(const HTTPRequest& request);
- /// Returns true if an Authorization header with Basic credentials is present in the request.
-
- static bool hasDigestCredentials(const HTTPRequest& request);
- /// Returns true if an Authorization header with Digest credentials is present in the request.
-
- static bool hasNTLMCredentials(const HTTPRequest& request);
- /// Returns true if an Authorization header with NTLM credentials is present in the request.
-
- static bool hasProxyBasicCredentials(const HTTPRequest& request);
- /// Returns true if a Proxy-Authorization header with Basic credentials is present in the request.
-
- static bool hasProxyDigestCredentials(const HTTPRequest& request);
- /// Returns true if a Proxy-Authorization header with Digest credentials is present in the request.
-
- static void extractCredentials(const std::string& userInfo, std::string& username, std::string& password);
- /// Extracts username and password from user:password information string.
-
- static void extractCredentials(const Poco::URI& uri, std::string& username, std::string& password);
- /// Extracts username and password from the given URI (e.g.: "http://user:pass@sample.com/secret").
-
-private:
- HTTPCredentials(const HTTPCredentials&);
- HTTPCredentials& operator = (const HTTPCredentials&);
-
- HTTPDigestCredentials _digest;
-};
-
-
-//
-// inlines
-//
-inline void HTTPCredentials::setUsername(const std::string& username)
-{
- _digest.setUsername(username);
-}
-
-
-inline const std::string& HTTPCredentials::getUsername() const
-{
- return _digest.getUsername();
-}
-
-
-inline void HTTPCredentials::setPassword(const std::string& password)
-{
- _digest.setPassword(password);
-}
-
-
-inline const std::string& HTTPCredentials::getPassword() const
-{
- return _digest.getPassword();
-}
-
-
-inline bool HTTPCredentials::empty() const
-{
- return _digest.empty();
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPCredentials_INCLUDED
+//
+// HTTPCredentials.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPCredentials
+//
+// Definition of the HTTPCredentials class.
+//
+// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru).
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPCredentials_INCLUDED
+#define Net_HTTPCredentials_INCLUDED
+
+
+#include "Poco/Net/HTTPDigestCredentials.h"
+
+
+namespace Poco {
+
+
+class URI;
+
+
+namespace Net {
+
+
+class HTTPRequest;
+class HTTPResponse;
+
+
+class Net_API HTTPCredentials
+ /// This is a utility class for working with HTTP
+ /// authentication (Basic or Digest) in HTTPRequest objects.
+ ///
+ /// Usage is as follows:
+ /// First, create a HTTPCredentials object containing
+ /// the username and password.
+ /// Poco::Net::HTTPCredentials creds("user", "s3cr3t");
+ ///
+ /// Second, send the HTTP request with Poco::Net::HTTPClientSession.
+ /// Poco::Net::HTTPClientSession session("pocoproject.org");
+ /// Poco::Net::HTTPRequest request(HTTPRequest::HTTP_GET, "/index.html", HTTPMessage::HTTP_1_1);
+ /// session.sendRequest(request);
+ /// Poco::Net::HTTPResponse;
+ /// std::istream& istr = session.receiveResponse(response);
+ ///
+ /// If the server responds with a 401 status, authenticate the
+ /// request and resend it:
+ /// if (response.getStatus() == Poco::Net::HTTPResponse::HTTP_UNAUTHORIZED)
+ /// {
+ /// creds.authenticate(request, response);
+ /// session.sendRequest(request);
+ /// ...
+ /// }
+ ///
+ /// To perform multiple authenticated requests, call updateAuthInfo()
+ /// instead of authenticate() on subsequent requests.
+ /// creds.updateAuthInfo(request);
+ /// session.sendRequest(request);
+ /// ...
+ ///
+ /// Note: Do not forget to read the entire response stream from the 401 response
+ /// before sending the authenticated request, otherwise there may be
+ /// problems if a persistent connection is used.
+{
+public:
+ HTTPCredentials();
+ /// Creates an empty HTTPCredentials object.
+
+ HTTPCredentials(const std::string& username, const std::string& password);
+ /// Creates an HTTPCredentials object with the given username and password.
+
+ ~HTTPCredentials();
+ /// Destroys the HTTPCredentials.
+
+ void fromUserInfo(const std::string& userInfo);
+ /// Parses username:password string and sets username and password of
+ /// the credentials object.
+ /// Throws SyntaxException on invalid user information.
+
+ void fromURI(const URI& uri);
+ /// Extracts username and password from the given URI and sets username
+ /// and password of the credentials object.
+ /// Does nothing if URI has no user info part.
+
+ void clear();
+ /// Clears username, password and host.
+
+ void setUsername(const std::string& username);
+ /// Sets the username.
+
+ const std::string& getUsername() const;
+ /// Returns the username.
+
+ void setPassword(const std::string& password);
+ /// Sets the password.
+
+ const std::string& getPassword() const;
+ /// Returns the password.
+
+ bool empty() const;
+ /// Returns true if both username and password are empty, otherwise false.
+
+ void authenticate(HTTPRequest& request, const HTTPResponse& response);
+ /// Inspects WWW-Authenticate header of the response, initializes
+ /// the internal state (in case of digest authentication) and
+ /// adds required information to the given HTTPRequest.
+ ///
+ /// Does nothing if there is no WWW-Authenticate header in the
+ /// HTTPResponse.
+
+ void updateAuthInfo(HTTPRequest& request);
+ /// Updates internal state (in case of digest authentication) and
+ /// replaces authentication information in the request accordingly.
+
+ void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response);
+ /// Inspects Proxy-Authenticate header of the response, initializes
+ /// the internal state (in case of digest authentication) and
+ /// adds required information to the given HTTPRequest.
+ ///
+ /// Does nothing if there is no Proxy-Authenticate header in the
+ /// HTTPResponse.
+
+ void updateProxyAuthInfo(HTTPRequest& request);
+ /// Updates internal state (in case of digest authentication) and
+ /// replaces proxy authentication information in the request accordingly.
+
+ static bool isBasicCredentials(const std::string& header);
+ /// Returns true if authentication header is for Basic authentication.
+
+ static bool isDigestCredentials(const std::string& header);
+ /// Returns true if authentication header is for Digest authentication.
+
+ static bool hasBasicCredentials(const HTTPRequest& request);
+ /// Returns true if an Authorization header with Basic credentials is present in the request.
+
+ static bool hasDigestCredentials(const HTTPRequest& request);
+ /// Returns true if an Authorization header with Digest credentials is present in the request.
+
+ static bool hasNTLMCredentials(const HTTPRequest& request);
+ /// Returns true if an Authorization header with NTLM credentials is present in the request.
+
+ static bool hasProxyBasicCredentials(const HTTPRequest& request);
+ /// Returns true if a Proxy-Authorization header with Basic credentials is present in the request.
+
+ static bool hasProxyDigestCredentials(const HTTPRequest& request);
+ /// Returns true if a Proxy-Authorization header with Digest credentials is present in the request.
+
+ static void extractCredentials(const std::string& userInfo, std::string& username, std::string& password);
+ /// Extracts username and password from user:password information string.
+
+ static void extractCredentials(const Poco::URI& uri, std::string& username, std::string& password);
+ /// Extracts username and password from the given URI (e.g.: "http://user:pass@sample.com/secret").
+
+private:
+ HTTPCredentials(const HTTPCredentials&);
+ HTTPCredentials& operator = (const HTTPCredentials&);
+
+ HTTPDigestCredentials _digest;
+};
+
+
+//
+// inlines
+//
+inline void HTTPCredentials::setUsername(const std::string& username)
+{
+ _digest.setUsername(username);
+}
+
+
+inline const std::string& HTTPCredentials::getUsername() const
+{
+ return _digest.getUsername();
+}
+
+
+inline void HTTPCredentials::setPassword(const std::string& password)
+{
+ _digest.setPassword(password);
+}
+
+
+inline const std::string& HTTPCredentials::getPassword() const
+{
+ return _digest.getPassword();
+}
+
+
+inline bool HTTPCredentials::empty() const
+{
+ return _digest.empty();
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPCredentials_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPDigestCredentials.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPDigestCredentials.h
index 857d2f31fb..c321c9fc87 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPDigestCredentials.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPDigestCredentials.h
@@ -1,186 +1,186 @@
-//
-// HTTPDigestCredentials.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPDigestCredentials
-//
-// Definition of the HTTPDigestCredentials class.
-//
-// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru).
-// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPDigestCredentials_INCLUDED
-#define Net_HTTPDigestCredentials_INCLUDED
-
-
-#include "Poco/Net/HTTPAuthenticationParams.h"
-#include "Poco/Mutex.h"
-#include <map>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-class HTTPResponse;
-
-
-class Net_API HTTPDigestCredentials
- /// This is a utility class for working with
- /// HTTP Digest Authentication in HTTPRequest
- /// objects.
- ///
- /// Note: currently, no qop or qop=auth is
- /// supported only.
-{
-public:
- HTTPDigestCredentials();
- /// Creates an empty HTTPDigestCredentials object.
-
- HTTPDigestCredentials(const std::string& username, const std::string& password);
- /// Creates a HTTPDigestCredentials object with the given username and password.
-
- ~HTTPDigestCredentials();
- /// Destroys the HTTPDigestCredentials.
-
- void reset();
- /// Resets the HTTPDigestCredentials object to a clean state.
- /// Does not clear username and password.
-
- void clear();
- /// Clears both username and password.
-
- void setUsername(const std::string& username);
- /// Sets the username.
-
- const std::string& getUsername() const;
- /// Returns the username.
-
- void setPassword(const std::string& password);
- /// Sets the password.
-
- const std::string& getPassword() const;
- /// Returns the password.
-
- bool empty() const;
- /// Returns true if both username and password are empty, otherwise false.
-
- void authenticate(HTTPRequest& request, const HTTPResponse& response);
- /// Parses WWW-Authenticate header of the HTTPResponse, initializes
- /// internal state, and adds authentication information to the given HTTPRequest.
-
- void authenticate(HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
- /// Initializes internal state according to information from the
- /// HTTPAuthenticationParams of the response, and adds authentication
- /// information to the given HTTPRequest.
- ///
- /// Throws InvalidArgumentException if HTTPAuthenticationParams is
- /// invalid or some required parameter is missing.
- /// Throws NotImplementedException in case of unsupported digest
- /// algorithm or quality of protection method.
-
- void updateAuthInfo(HTTPRequest& request);
- /// Updates internal state and adds authentication information to
- /// the given HTTPRequest.
-
- void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response);
- /// Parses Proxy-Authenticate header of the HTTPResponse, initializes
- /// internal state, and adds proxy authentication information to the given HTTPRequest.
-
- void proxyAuthenticate(HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
- /// Initializes internal state according to information from the
- /// HTTPAuthenticationParams of the response, and adds proxy authentication
- /// information to the given HTTPRequest.
- ///
- /// Throws InvalidArgumentException if HTTPAuthenticationParams is
- /// invalid or some required parameter is missing.
- /// Throws NotImplementedException in case of unsupported digest
- /// algorithm or quality of protection method.
-
- void updateProxyAuthInfo(HTTPRequest& request);
- /// Updates internal state and adds proxy authentication information to
- /// the given HTTPRequest.
-
- bool verifyAuthInfo(const HTTPRequest& request) const;
- /// Verifies the digest authentication information in the given HTTPRequest
- /// by recomputing the response and comparing it with what's in the request.
- ///
- /// Note: This method creates a HTTPAuthenticationParams object from the request
- /// and calls verifyAuthParams() with request and params.
-
- bool verifyAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& params) const;
- /// Verifies the digest authentication information in the given HTTPRequest
- /// and HTTPAuthenticationParams by recomputing the response and comparing
- /// it with what's in the request.
-
- static std::string createNonce();
- /// Creates a random nonce string.
-
- static const std::string SCHEME;
-
-private:
- HTTPDigestCredentials(const HTTPDigestCredentials&);
- HTTPDigestCredentials& operator = (const HTTPDigestCredentials&);
-
- void createAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
- void updateAuthParams(const HTTPRequest& request);
- int updateNonceCounter(const std::string& nonce);
-
- static const std::string DEFAULT_ALGORITHM;
- static const std::string DEFAULT_QOP;
- static const std::string NONCE_PARAM;
- static const std::string REALM_PARAM;
- static const std::string QOP_PARAM;
- static const std::string ALGORITHM_PARAM;
- static const std::string USERNAME_PARAM;
- static const std::string OPAQUE_PARAM;
- static const std::string URI_PARAM;
- static const std::string RESPONSE_PARAM;
- static const std::string AUTH_PARAM;
- static const std::string CNONCE_PARAM;
- static const std::string NC_PARAM;
-
- typedef std::map<std::string, int> NonceCounterMap;
-
- std::string _username;
- std::string _password;
- HTTPAuthenticationParams _requestAuthParams;
- NonceCounterMap _nc;
-
- static int _nonceCounter;
- static Poco::FastMutex _nonceMutex;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPDigestCredentials::getUsername() const
-{
- return _username;
-}
-
-
-inline const std::string& HTTPDigestCredentials::getPassword() const
-{
- return _password;
-}
-
-
-inline bool HTTPDigestCredentials::empty() const
-{
- return _username.empty() && _password.empty();
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPDigestCredentials_INCLUDED
+//
+// HTTPDigestCredentials.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPDigestCredentials
+//
+// Definition of the HTTPDigestCredentials class.
+//
+// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru).
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPDigestCredentials_INCLUDED
+#define Net_HTTPDigestCredentials_INCLUDED
+
+
+#include "Poco/Net/HTTPAuthenticationParams.h"
+#include "Poco/Mutex.h"
+#include <map>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+class HTTPResponse;
+
+
+class Net_API HTTPDigestCredentials
+ /// This is a utility class for working with
+ /// HTTP Digest Authentication in HTTPRequest
+ /// objects.
+ ///
+ /// Note: currently, no qop or qop=auth is
+ /// supported only.
+{
+public:
+ HTTPDigestCredentials();
+ /// Creates an empty HTTPDigestCredentials object.
+
+ HTTPDigestCredentials(const std::string& username, const std::string& password);
+ /// Creates a HTTPDigestCredentials object with the given username and password.
+
+ ~HTTPDigestCredentials();
+ /// Destroys the HTTPDigestCredentials.
+
+ void reset();
+ /// Resets the HTTPDigestCredentials object to a clean state.
+ /// Does not clear username and password.
+
+ void clear();
+ /// Clears both username and password.
+
+ void setUsername(const std::string& username);
+ /// Sets the username.
+
+ const std::string& getUsername() const;
+ /// Returns the username.
+
+ void setPassword(const std::string& password);
+ /// Sets the password.
+
+ const std::string& getPassword() const;
+ /// Returns the password.
+
+ bool empty() const;
+ /// Returns true if both username and password are empty, otherwise false.
+
+ void authenticate(HTTPRequest& request, const HTTPResponse& response);
+ /// Parses WWW-Authenticate header of the HTTPResponse, initializes
+ /// internal state, and adds authentication information to the given HTTPRequest.
+
+ void authenticate(HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
+ /// Initializes internal state according to information from the
+ /// HTTPAuthenticationParams of the response, and adds authentication
+ /// information to the given HTTPRequest.
+ ///
+ /// Throws InvalidArgumentException if HTTPAuthenticationParams is
+ /// invalid or some required parameter is missing.
+ /// Throws NotImplementedException in case of unsupported digest
+ /// algorithm or quality of protection method.
+
+ void updateAuthInfo(HTTPRequest& request);
+ /// Updates internal state and adds authentication information to
+ /// the given HTTPRequest.
+
+ void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response);
+ /// Parses Proxy-Authenticate header of the HTTPResponse, initializes
+ /// internal state, and adds proxy authentication information to the given HTTPRequest.
+
+ void proxyAuthenticate(HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
+ /// Initializes internal state according to information from the
+ /// HTTPAuthenticationParams of the response, and adds proxy authentication
+ /// information to the given HTTPRequest.
+ ///
+ /// Throws InvalidArgumentException if HTTPAuthenticationParams is
+ /// invalid or some required parameter is missing.
+ /// Throws NotImplementedException in case of unsupported digest
+ /// algorithm or quality of protection method.
+
+ void updateProxyAuthInfo(HTTPRequest& request);
+ /// Updates internal state and adds proxy authentication information to
+ /// the given HTTPRequest.
+
+ bool verifyAuthInfo(const HTTPRequest& request) const;
+ /// Verifies the digest authentication information in the given HTTPRequest
+ /// by recomputing the response and comparing it with what's in the request.
+ ///
+ /// Note: This method creates a HTTPAuthenticationParams object from the request
+ /// and calls verifyAuthParams() with request and params.
+
+ bool verifyAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& params) const;
+ /// Verifies the digest authentication information in the given HTTPRequest
+ /// and HTTPAuthenticationParams by recomputing the response and comparing
+ /// it with what's in the request.
+
+ static std::string createNonce();
+ /// Creates a random nonce string.
+
+ static const std::string SCHEME;
+
+private:
+ HTTPDigestCredentials(const HTTPDigestCredentials&);
+ HTTPDigestCredentials& operator = (const HTTPDigestCredentials&);
+
+ void createAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
+ void updateAuthParams(const HTTPRequest& request);
+ int updateNonceCounter(const std::string& nonce);
+
+ static const std::string DEFAULT_ALGORITHM;
+ static const std::string DEFAULT_QOP;
+ static const std::string NONCE_PARAM;
+ static const std::string REALM_PARAM;
+ static const std::string QOP_PARAM;
+ static const std::string ALGORITHM_PARAM;
+ static const std::string USERNAME_PARAM;
+ static const std::string OPAQUE_PARAM;
+ static const std::string URI_PARAM;
+ static const std::string RESPONSE_PARAM;
+ static const std::string AUTH_PARAM;
+ static const std::string CNONCE_PARAM;
+ static const std::string NC_PARAM;
+
+ typedef std::map<std::string, int> NonceCounterMap;
+
+ std::string _username;
+ std::string _password;
+ HTTPAuthenticationParams _requestAuthParams;
+ NonceCounterMap _nc;
+
+ static int _nonceCounter;
+ static Poco::FastMutex _nonceMutex;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPDigestCredentials::getUsername() const
+{
+ return _username;
+}
+
+
+inline const std::string& HTTPDigestCredentials::getPassword() const
+{
+ return _password;
+}
+
+
+inline bool HTTPDigestCredentials::empty() const
+{
+ return _username.empty() && _password.empty();
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPDigestCredentials_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPFixedLengthStream.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPFixedLengthStream.h
index 112a6a029d..ad781e4e00 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPFixedLengthStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPFixedLengthStream.h
@@ -1,110 +1,110 @@
-//
-// HTTPFixedLengthStream.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPFixedLengthStream
-//
-// Definition of the HTTPFixedLengthStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPFixedLengthStream_INCLUDED
-#define Net_HTTPFixedLengthStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPBasicStreamBuf.h"
-#include <cstddef>
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPSession;
-
-
-class Net_API HTTPFixedLengthStreamBuf: public HTTPBasicStreamBuf
- /// This is the streambuf class used for reading and writing fixed-size
- /// HTTP message bodies.
- ///
- /// At most a given number of bytes are read or written.
-{
-public:
- typedef HTTPBasicStreamBuf::openmode openmode;
-
-#if defined(POCO_HAVE_INT64)
- typedef Poco::Int64 ContentLength;
-#else
- typedef std::streamsize ContentLength;
-#endif
-
- HTTPFixedLengthStreamBuf(HTTPSession& session, ContentLength length, openmode mode);
- ~HTTPFixedLengthStreamBuf();
-
-protected:
- int readFromDevice(char* buffer, std::streamsize length);
- int writeToDevice(const char* buffer, std::streamsize length);
-
-private:
- HTTPSession& _session;
- ContentLength _length;
- ContentLength _count;
-};
-
-
-class Net_API HTTPFixedLengthIOS: public virtual std::ios
- /// The base class for HTTPFixedLengthInputStream.
-{
-public:
- HTTPFixedLengthIOS(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length, HTTPFixedLengthStreamBuf::openmode mode);
- ~HTTPFixedLengthIOS();
- HTTPFixedLengthStreamBuf* rdbuf();
-
-protected:
- HTTPFixedLengthStreamBuf _buf;
-};
-
-
-class Net_API HTTPFixedLengthInputStream: public HTTPFixedLengthIOS, public std::istream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPFixedLengthInputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length);
- ~HTTPFixedLengthInputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-class Net_API HTTPFixedLengthOutputStream: public HTTPFixedLengthIOS, public std::ostream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPFixedLengthOutputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length);
- ~HTTPFixedLengthOutputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPFixedLengthStream_INCLUDED
+//
+// HTTPFixedLengthStream.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPFixedLengthStream
+//
+// Definition of the HTTPFixedLengthStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPFixedLengthStream_INCLUDED
+#define Net_HTTPFixedLengthStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPBasicStreamBuf.h"
+#include <cstddef>
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPSession;
+
+
+class Net_API HTTPFixedLengthStreamBuf: public HTTPBasicStreamBuf
+ /// This is the streambuf class used for reading and writing fixed-size
+ /// HTTP message bodies.
+ ///
+ /// At most a given number of bytes are read or written.
+{
+public:
+ typedef HTTPBasicStreamBuf::openmode openmode;
+
+#if defined(POCO_HAVE_INT64)
+ typedef Poco::Int64 ContentLength;
+#else
+ typedef std::streamsize ContentLength;
+#endif
+
+ HTTPFixedLengthStreamBuf(HTTPSession& session, ContentLength length, openmode mode);
+ ~HTTPFixedLengthStreamBuf();
+
+protected:
+ int readFromDevice(char* buffer, std::streamsize length);
+ int writeToDevice(const char* buffer, std::streamsize length);
+
+private:
+ HTTPSession& _session;
+ ContentLength _length;
+ ContentLength _count;
+};
+
+
+class Net_API HTTPFixedLengthIOS: public virtual std::ios
+ /// The base class for HTTPFixedLengthInputStream.
+{
+public:
+ HTTPFixedLengthIOS(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length, HTTPFixedLengthStreamBuf::openmode mode);
+ ~HTTPFixedLengthIOS();
+ HTTPFixedLengthStreamBuf* rdbuf();
+
+protected:
+ HTTPFixedLengthStreamBuf _buf;
+};
+
+
+class Net_API HTTPFixedLengthInputStream: public HTTPFixedLengthIOS, public std::istream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPFixedLengthInputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length);
+ ~HTTPFixedLengthInputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+class Net_API HTTPFixedLengthOutputStream: public HTTPFixedLengthIOS, public std::ostream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPFixedLengthOutputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length);
+ ~HTTPFixedLengthOutputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPFixedLengthStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPHeaderStream.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPHeaderStream.h
index 6b7f0b1202..f3f4c891b6 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPHeaderStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPHeaderStream.h
@@ -1,103 +1,103 @@
-//
-// HTTPHeaderStream.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPHeaderStream
-//
-// Definition of the HTTPHeaderStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPHeaderStream_INCLUDED
-#define Net_HTTPHeaderStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPBasicStreamBuf.h"
-#include "Poco/MemoryPool.h"
-#include <cstddef>
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPSession;
-
-
-class Net_API HTTPHeaderStreamBuf: public HTTPBasicStreamBuf
- /// This is the streambuf class used for reading from a HTTP header
- /// in a HTTPSession.
-{
-public:
- typedef HTTPBasicStreamBuf::openmode openmode;
-
- HTTPHeaderStreamBuf(HTTPSession& session, openmode mode);
- ~HTTPHeaderStreamBuf();
-
-protected:
- int readFromDevice(char* buffer, std::streamsize length);
- int writeToDevice(const char* buffer, std::streamsize length);
-
-private:
- HTTPSession& _session;
- bool _end;
+//
+// HTTPHeaderStream.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPHeaderStream
+//
+// Definition of the HTTPHeaderStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPHeaderStream_INCLUDED
+#define Net_HTTPHeaderStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPBasicStreamBuf.h"
+#include "Poco/MemoryPool.h"
+#include <cstddef>
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPSession;
+
+
+class Net_API HTTPHeaderStreamBuf: public HTTPBasicStreamBuf
+ /// This is the streambuf class used for reading from a HTTP header
+ /// in a HTTPSession.
+{
+public:
+ typedef HTTPBasicStreamBuf::openmode openmode;
+
+ HTTPHeaderStreamBuf(HTTPSession& session, openmode mode);
+ ~HTTPHeaderStreamBuf();
+
+protected:
+ int readFromDevice(char* buffer, std::streamsize length);
+ int writeToDevice(const char* buffer, std::streamsize length);
+
+private:
+ HTTPSession& _session;
+ bool _end;
bool _line_ended;
-};
-
-
-class Net_API HTTPHeaderIOS: public virtual std::ios
- /// The base class for HTTPHeaderInputStream.
-{
-public:
- HTTPHeaderIOS(HTTPSession& session, HTTPHeaderStreamBuf::openmode mode);
- ~HTTPHeaderIOS();
- HTTPHeaderStreamBuf* rdbuf();
-
-protected:
- HTTPHeaderStreamBuf _buf;
-};
-
-
-class Net_API HTTPHeaderInputStream: public HTTPHeaderIOS, public std::istream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPHeaderInputStream(HTTPSession& session);
- ~HTTPHeaderInputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-class Net_API HTTPHeaderOutputStream: public HTTPHeaderIOS, public std::ostream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPHeaderOutputStream(HTTPSession& session);
- ~HTTPHeaderOutputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPHeaderStream_INCLUDED
+};
+
+
+class Net_API HTTPHeaderIOS: public virtual std::ios
+ /// The base class for HTTPHeaderInputStream.
+{
+public:
+ HTTPHeaderIOS(HTTPSession& session, HTTPHeaderStreamBuf::openmode mode);
+ ~HTTPHeaderIOS();
+ HTTPHeaderStreamBuf* rdbuf();
+
+protected:
+ HTTPHeaderStreamBuf _buf;
+};
+
+
+class Net_API HTTPHeaderInputStream: public HTTPHeaderIOS, public std::istream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPHeaderInputStream(HTTPSession& session);
+ ~HTTPHeaderInputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+class Net_API HTTPHeaderOutputStream: public HTTPHeaderIOS, public std::ostream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPHeaderOutputStream(HTTPSession& session);
+ ~HTTPHeaderOutputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPHeaderStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPIOStream.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPIOStream.h
index aa40d06b0a..2c45812ae1 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPIOStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPIOStream.h
@@ -1,88 +1,88 @@
-//
-// HTTPIOStream.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPIOStream
-//
-// Definition of the HTTPIOStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPIOStream_INCLUDED
-#define Net_HTTPIOStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPResponse.h"
-#include "Poco/UnbufferedStreamBuf.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPClientSession;
-
-
-class Net_API HTTPResponseStreamBuf: public Poco::UnbufferedStreamBuf
-{
-public:
- HTTPResponseStreamBuf(std::istream& istr);
-
- ~HTTPResponseStreamBuf();
-
-private:
- int readFromDevice();
-
- std::istream& _istr;
-};
-
-
-inline int HTTPResponseStreamBuf::readFromDevice()
-{
- return _istr.get();
-}
-
-
-class Net_API HTTPResponseIOS: public virtual std::ios
-{
-public:
- HTTPResponseIOS(std::istream& istr);
-
- ~HTTPResponseIOS();
-
- HTTPResponseStreamBuf* rdbuf();
-
-protected:
- HTTPResponseStreamBuf _buf;
-};
-
-
-inline HTTPResponseStreamBuf* HTTPResponseIOS::rdbuf()
-{
- return &_buf;
-}
-
-
-class Net_API HTTPResponseStream: public HTTPResponseIOS, public std::istream
-{
-public:
- HTTPResponseStream(std::istream& istr, HTTPClientSession* pSession);
-
- ~HTTPResponseStream();
-
-private:
- HTTPClientSession* _pSession;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPIOStream_INCLUDED
+//
+// HTTPIOStream.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPIOStream
+//
+// Definition of the HTTPIOStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPIOStream_INCLUDED
+#define Net_HTTPIOStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPResponse.h"
+#include "Poco/UnbufferedStreamBuf.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPClientSession;
+
+
+class Net_API HTTPResponseStreamBuf: public Poco::UnbufferedStreamBuf
+{
+public:
+ HTTPResponseStreamBuf(std::istream& istr);
+
+ ~HTTPResponseStreamBuf();
+
+private:
+ int readFromDevice();
+
+ std::istream& _istr;
+};
+
+
+inline int HTTPResponseStreamBuf::readFromDevice()
+{
+ return _istr.get();
+}
+
+
+class Net_API HTTPResponseIOS: public virtual std::ios
+{
+public:
+ HTTPResponseIOS(std::istream& istr);
+
+ ~HTTPResponseIOS();
+
+ HTTPResponseStreamBuf* rdbuf();
+
+protected:
+ HTTPResponseStreamBuf _buf;
+};
+
+
+inline HTTPResponseStreamBuf* HTTPResponseIOS::rdbuf()
+{
+ return &_buf;
+}
+
+
+class Net_API HTTPResponseStream: public HTTPResponseIOS, public std::istream
+{
+public:
+ HTTPResponseStream(std::istream& istr, HTTPClientSession* pSession);
+
+ ~HTTPResponseStream();
+
+private:
+ HTTPClientSession* _pSession;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPIOStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPMessage.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPMessage.h
index 6a6bbdf412..345543d5a1 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPMessage.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPMessage.h
@@ -1,185 +1,185 @@
-//
-// HTTPMessage.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPMessage
-//
-// Definition of the HTTPMessage class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPMessage_INCLUDED
-#define Net_HTTPMessage_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/MessageHeader.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class MediaType;
-
-
-class Net_API HTTPMessage: public MessageHeader
- /// The base class for HTTPRequest and HTTPResponse.
- ///
- /// Defines the common properties of all HTTP messages.
- /// These are version, content length, content type
- /// and transfer encoding.
-{
-public:
- void setVersion(const std::string& version);
- /// Sets the HTTP version for this message.
-
- const std::string& getVersion() const;
- /// Returns the HTTP version for this message.
-
- void setContentLength(std::streamsize length);
- /// Sets the Content-Length header.
- ///
- /// If length is UNKNOWN_CONTENT_LENGTH, removes
- /// the Content-Length header.
-
- std::streamsize getContentLength() const;
- /// Returns the content length for this message,
- /// which may be UNKNOWN_CONTENT_LENGTH if
- /// no Content-Length header is present.
-
-#if defined(POCO_HAVE_INT64)
- void setContentLength64(Poco::Int64 length);
- /// Sets the Content-Length header.
- ///
- /// If length is UNKNOWN_CONTENT_LENGTH, removes
- /// the Content-Length header.
- ///
- /// In contrast to setContentLength(), this method takes
- /// a 64-bit integer as content length.
-
- Poco::Int64 getContentLength64() const;
- /// Returns the content length for this message,
- /// which may be UNKNOWN_CONTENT_LENGTH if
- /// no Content-Length header is present.
- ///
- /// In contrast to getContentLength(), this method
- /// always returns a 64-bit integer for content length.
-#endif // defined(POCO_HAVE_INT64)
-
- bool hasContentLength() const;
- /// Returns true iff a Content-Length header is present.
-
- void setTransferEncoding(const std::string& transferEncoding);
- /// Sets the transfer encoding for this message.
- ///
- /// The value should be either IDENTITY_TRANSFER_CODING
- /// or CHUNKED_TRANSFER_CODING.
-
- const std::string& getTransferEncoding() const;
- /// Returns the transfer encoding used for this
- /// message.
- ///
- /// Normally, this is the value of the Transfer-Encoding
- /// header field. If no such field is present,
- /// returns IDENTITY_TRANSFER_CODING.
-
- void setChunkedTransferEncoding(bool flag);
- /// If flag is true, sets the Transfer-Encoding header to
- /// chunked. Otherwise, removes the Transfer-Encoding
- /// header.
-
- bool getChunkedTransferEncoding() const;
- /// Returns true if the Transfer-Encoding header is set
- /// and its value is chunked.
-
- void setContentType(const std::string& mediaType);
- /// Sets the content type for this message.
- ///
- /// Specify NO_CONTENT_TYPE to remove the
- /// Content-Type header.
-
- void setContentType(const MediaType& mediaType);
- /// Sets the content type for this message.
-
- const std::string& getContentType() const;
- /// Returns the content type for this message.
- ///
- /// If no Content-Type header is present,
- /// returns UNKNOWN_CONTENT_TYPE.
-
- void setKeepAlive(bool keepAlive);
- /// Sets the value of the Connection header field.
- ///
- /// The value is set to "Keep-Alive" if keepAlive is
- /// true, or to "Close" otherwise.
-
- bool getKeepAlive() const;
- /// Returns true if
- /// * the message has a Connection header field and its value is "Keep-Alive"
- /// * the message is a HTTP/1.1 message and not Connection header is set
- /// Returns false otherwise.
-
- static const std::string HTTP_1_0;
- static const std::string HTTP_1_1;
-
- static const std::string IDENTITY_TRANSFER_ENCODING;
- static const std::string CHUNKED_TRANSFER_ENCODING;
-
- static const int UNKNOWN_CONTENT_LENGTH;
- static const std::string UNKNOWN_CONTENT_TYPE;
-
- static const std::string CONTENT_LENGTH;
- static const std::string CONTENT_TYPE;
- static const std::string TRANSFER_ENCODING;
- static const std::string CONNECTION;
-
- static const std::string CONNECTION_KEEP_ALIVE;
- static const std::string CONNECTION_CLOSE;
-
- static const std::string EMPTY;
-
-protected:
- HTTPMessage();
- /// Creates the HTTPMessage with version HTTP/1.0.
-
- HTTPMessage(const std::string& version);
- /// Creates the HTTPMessage and sets
- /// the version.
-
- virtual ~HTTPMessage();
- /// Destroys the HTTPMessage.
-
-private:
- HTTPMessage(const HTTPMessage&);
- HTTPMessage& operator = (const HTTPMessage&);
-
- std::string _version;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPMessage::getVersion() const
-{
- return _version;
-}
-
-
-inline bool HTTPMessage::hasContentLength() const
-{
- return has(CONTENT_LENGTH);
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPMessage_INCLUDED
+//
+// HTTPMessage.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPMessage
+//
+// Definition of the HTTPMessage class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPMessage_INCLUDED
+#define Net_HTTPMessage_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/MessageHeader.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class MediaType;
+
+
+class Net_API HTTPMessage: public MessageHeader
+ /// The base class for HTTPRequest and HTTPResponse.
+ ///
+ /// Defines the common properties of all HTTP messages.
+ /// These are version, content length, content type
+ /// and transfer encoding.
+{
+public:
+ void setVersion(const std::string& version);
+ /// Sets the HTTP version for this message.
+
+ const std::string& getVersion() const;
+ /// Returns the HTTP version for this message.
+
+ void setContentLength(std::streamsize length);
+ /// Sets the Content-Length header.
+ ///
+ /// If length is UNKNOWN_CONTENT_LENGTH, removes
+ /// the Content-Length header.
+
+ std::streamsize getContentLength() const;
+ /// Returns the content length for this message,
+ /// which may be UNKNOWN_CONTENT_LENGTH if
+ /// no Content-Length header is present.
+
+#if defined(POCO_HAVE_INT64)
+ void setContentLength64(Poco::Int64 length);
+ /// Sets the Content-Length header.
+ ///
+ /// If length is UNKNOWN_CONTENT_LENGTH, removes
+ /// the Content-Length header.
+ ///
+ /// In contrast to setContentLength(), this method takes
+ /// a 64-bit integer as content length.
+
+ Poco::Int64 getContentLength64() const;
+ /// Returns the content length for this message,
+ /// which may be UNKNOWN_CONTENT_LENGTH if
+ /// no Content-Length header is present.
+ ///
+ /// In contrast to getContentLength(), this method
+ /// always returns a 64-bit integer for content length.
+#endif // defined(POCO_HAVE_INT64)
+
+ bool hasContentLength() const;
+ /// Returns true iff a Content-Length header is present.
+
+ void setTransferEncoding(const std::string& transferEncoding);
+ /// Sets the transfer encoding for this message.
+ ///
+ /// The value should be either IDENTITY_TRANSFER_CODING
+ /// or CHUNKED_TRANSFER_CODING.
+
+ const std::string& getTransferEncoding() const;
+ /// Returns the transfer encoding used for this
+ /// message.
+ ///
+ /// Normally, this is the value of the Transfer-Encoding
+ /// header field. If no such field is present,
+ /// returns IDENTITY_TRANSFER_CODING.
+
+ void setChunkedTransferEncoding(bool flag);
+ /// If flag is true, sets the Transfer-Encoding header to
+ /// chunked. Otherwise, removes the Transfer-Encoding
+ /// header.
+
+ bool getChunkedTransferEncoding() const;
+ /// Returns true if the Transfer-Encoding header is set
+ /// and its value is chunked.
+
+ void setContentType(const std::string& mediaType);
+ /// Sets the content type for this message.
+ ///
+ /// Specify NO_CONTENT_TYPE to remove the
+ /// Content-Type header.
+
+ void setContentType(const MediaType& mediaType);
+ /// Sets the content type for this message.
+
+ const std::string& getContentType() const;
+ /// Returns the content type for this message.
+ ///
+ /// If no Content-Type header is present,
+ /// returns UNKNOWN_CONTENT_TYPE.
+
+ void setKeepAlive(bool keepAlive);
+ /// Sets the value of the Connection header field.
+ ///
+ /// The value is set to "Keep-Alive" if keepAlive is
+ /// true, or to "Close" otherwise.
+
+ bool getKeepAlive() const;
+ /// Returns true if
+ /// * the message has a Connection header field and its value is "Keep-Alive"
+ /// * the message is a HTTP/1.1 message and not Connection header is set
+ /// Returns false otherwise.
+
+ static const std::string HTTP_1_0;
+ static const std::string HTTP_1_1;
+
+ static const std::string IDENTITY_TRANSFER_ENCODING;
+ static const std::string CHUNKED_TRANSFER_ENCODING;
+
+ static const int UNKNOWN_CONTENT_LENGTH;
+ static const std::string UNKNOWN_CONTENT_TYPE;
+
+ static const std::string CONTENT_LENGTH;
+ static const std::string CONTENT_TYPE;
+ static const std::string TRANSFER_ENCODING;
+ static const std::string CONNECTION;
+
+ static const std::string CONNECTION_KEEP_ALIVE;
+ static const std::string CONNECTION_CLOSE;
+
+ static const std::string EMPTY;
+
+protected:
+ HTTPMessage();
+ /// Creates the HTTPMessage with version HTTP/1.0.
+
+ HTTPMessage(const std::string& version);
+ /// Creates the HTTPMessage and sets
+ /// the version.
+
+ virtual ~HTTPMessage();
+ /// Destroys the HTTPMessage.
+
+private:
+ HTTPMessage(const HTTPMessage&);
+ HTTPMessage& operator = (const HTTPMessage&);
+
+ std::string _version;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPMessage::getVersion() const
+{
+ return _version;
+}
+
+
+inline bool HTTPMessage::hasContentLength() const
+{
+ return has(CONTENT_LENGTH);
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPMessage_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPRequest.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPRequest.h
index 13ea06121f..817a74dc46 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPRequest.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPRequest.h
@@ -1,200 +1,200 @@
-//
-// HTTPRequest.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPRequest
-//
-// Definition of the HTTPRequest class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPRequest_INCLUDED
-#define Net_HTTPRequest_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPMessage.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPRequest: public HTTPMessage
- /// This class encapsulates an HTTP request
- /// message.
- ///
- /// In addition to the properties common to
- /// all HTTP messages, a HTTP request has
- /// a method (e.g. GET, HEAD, POST, etc.) and
- /// a request URI.
-{
-public:
- HTTPRequest();
- /// Creates a GET / HTTP/1.0 HTTP request.
-
- HTTPRequest(const std::string& version);
- /// Creates a GET / HTTP/1.x request with
- /// the given version (HTTP/1.0 or HTTP/1.1).
-
- HTTPRequest(const std::string& method, const std::string& uri);
- /// Creates a HTTP/1.0 request with the given method and URI.
-
- HTTPRequest(const std::string& method, const std::string& uri, const std::string& version);
- /// Creates a HTTP request with the given method, URI and version.
-
- virtual ~HTTPRequest();
- /// Destroys the HTTPRequest.
-
- void setMethod(const std::string& method);
- /// Sets the method.
-
- const std::string& getMethod() const;
- /// Returns the method.
-
- void setURI(const std::string& uri);
- /// Sets the request URI.
-
- const std::string& getURI() const;
- /// Returns the request URI.
-
- void setHost(const std::string& host);
- /// Sets the value of the Host header field.
-
- void setHost(const std::string& host, Poco::UInt16 port);
- /// Sets the value of the Host header field.
- ///
- /// If the given port number is a non-standard
- /// port number (other than 80 or 443), it is
- /// included in the Host header field.
-
- const std::string& getHost() const;
- /// Returns the value of the Host header field.
- ///
- /// Throws a NotFoundException if the request
- /// does not have a Host header field.
-
- void setCookies(const NameValueCollection& cookies);
- /// Adds a Cookie header with the names and
- /// values from cookies.
-
- void getCookies(NameValueCollection& cookies) const;
- /// Fills cookies with the cookies extracted
- /// from the Cookie headers in the request.
-
- bool hasCredentials() const;
- /// Returns true iff the request contains authentication
- /// information in the form of an Authorization header.
-
- void getCredentials(std::string& scheme, std::string& authInfo) const;
- /// Returns the authentication scheme and additional authentication
- /// information contained in this request.
- ///
- /// Throws a NotAuthenticatedException if no authentication information
- /// is contained in the request.
-
- void setCredentials(const std::string& scheme, const std::string& authInfo);
- /// Sets the authentication scheme and information for
- /// this request.
-
- bool getExpectContinue() const;
- /// Returns true if the request contains an
- /// "Expect: 100-continue" header.
-
- void setExpectContinue(bool expectContinue);
- /// Adds a "Expect: 100-continue" header to the request if
- /// expectContinue is true, otherwise removes the Expect header.
-
- bool hasProxyCredentials() const;
- /// Returns true iff the request contains proxy authentication
- /// information in the form of an Proxy-Authorization header.
-
- void getProxyCredentials(std::string& scheme, std::string& authInfo) const;
- /// Returns the proxy authentication scheme and additional proxy authentication
- /// information contained in this request.
- ///
- /// Throws a NotAuthenticatedException if no proxy authentication information
- /// is contained in the request.
-
- void setProxyCredentials(const std::string& scheme, const std::string& authInfo);
- /// Sets the proxy authentication scheme and information for
- /// this request.
-
- void write(std::ostream& ostr) const;
- /// Writes the HTTP request to the given
- /// output stream.
-
- void read(std::istream& istr);
- /// Reads the HTTP request from the
- /// given input stream.
-
- static const std::string HTTP_GET;
- static const std::string HTTP_HEAD;
- static const std::string HTTP_PUT;
- static const std::string HTTP_POST;
- static const std::string HTTP_OPTIONS;
- static const std::string HTTP_DELETE;
- static const std::string HTTP_TRACE;
- static const std::string HTTP_CONNECT;
- static const std::string HTTP_PATCH;
-
- static const std::string HOST;
- static const std::string COOKIE;
- static const std::string AUTHORIZATION;
- static const std::string PROXY_AUTHORIZATION;
- static const std::string UPGRADE;
- static const std::string EXPECT;
-
-protected:
- void getCredentials(const std::string& header, std::string& scheme, std::string& authInfo) const;
- /// Returns the authentication scheme and additional authentication
- /// information contained in the given header of request.
- ///
- /// Throws a NotAuthenticatedException if no authentication information
- /// is contained in the request.
-
- void setCredentials(const std::string& header, const std::string& scheme, const std::string& authInfo);
- /// Writes the authentication scheme and information for
- /// this request to the given header.
-
-private:
- enum Limits
- {
- MAX_METHOD_LENGTH = 32,
- MAX_URI_LENGTH = 16384,
- MAX_VERSION_LENGTH = 8
- };
-
- std::string _method;
- std::string _uri;
-
- HTTPRequest(const HTTPRequest&);
- HTTPRequest& operator = (const HTTPRequest&);
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPRequest::getMethod() const
-{
- return _method;
-}
-
-
-inline const std::string& HTTPRequest::getURI() const
-{
- return _uri;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPRequest_INCLUDED
+//
+// HTTPRequest.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPRequest
+//
+// Definition of the HTTPRequest class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPRequest_INCLUDED
+#define Net_HTTPRequest_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPMessage.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPRequest: public HTTPMessage
+ /// This class encapsulates an HTTP request
+ /// message.
+ ///
+ /// In addition to the properties common to
+ /// all HTTP messages, a HTTP request has
+ /// a method (e.g. GET, HEAD, POST, etc.) and
+ /// a request URI.
+{
+public:
+ HTTPRequest();
+ /// Creates a GET / HTTP/1.0 HTTP request.
+
+ HTTPRequest(const std::string& version);
+ /// Creates a GET / HTTP/1.x request with
+ /// the given version (HTTP/1.0 or HTTP/1.1).
+
+ HTTPRequest(const std::string& method, const std::string& uri);
+ /// Creates a HTTP/1.0 request with the given method and URI.
+
+ HTTPRequest(const std::string& method, const std::string& uri, const std::string& version);
+ /// Creates a HTTP request with the given method, URI and version.
+
+ virtual ~HTTPRequest();
+ /// Destroys the HTTPRequest.
+
+ void setMethod(const std::string& method);
+ /// Sets the method.
+
+ const std::string& getMethod() const;
+ /// Returns the method.
+
+ void setURI(const std::string& uri);
+ /// Sets the request URI.
+
+ const std::string& getURI() const;
+ /// Returns the request URI.
+
+ void setHost(const std::string& host);
+ /// Sets the value of the Host header field.
+
+ void setHost(const std::string& host, Poco::UInt16 port);
+ /// Sets the value of the Host header field.
+ ///
+ /// If the given port number is a non-standard
+ /// port number (other than 80 or 443), it is
+ /// included in the Host header field.
+
+ const std::string& getHost() const;
+ /// Returns the value of the Host header field.
+ ///
+ /// Throws a NotFoundException if the request
+ /// does not have a Host header field.
+
+ void setCookies(const NameValueCollection& cookies);
+ /// Adds a Cookie header with the names and
+ /// values from cookies.
+
+ void getCookies(NameValueCollection& cookies) const;
+ /// Fills cookies with the cookies extracted
+ /// from the Cookie headers in the request.
+
+ bool hasCredentials() const;
+ /// Returns true iff the request contains authentication
+ /// information in the form of an Authorization header.
+
+ void getCredentials(std::string& scheme, std::string& authInfo) const;
+ /// Returns the authentication scheme and additional authentication
+ /// information contained in this request.
+ ///
+ /// Throws a NotAuthenticatedException if no authentication information
+ /// is contained in the request.
+
+ void setCredentials(const std::string& scheme, const std::string& authInfo);
+ /// Sets the authentication scheme and information for
+ /// this request.
+
+ bool getExpectContinue() const;
+ /// Returns true if the request contains an
+ /// "Expect: 100-continue" header.
+
+ void setExpectContinue(bool expectContinue);
+ /// Adds a "Expect: 100-continue" header to the request if
+ /// expectContinue is true, otherwise removes the Expect header.
+
+ bool hasProxyCredentials() const;
+ /// Returns true iff the request contains proxy authentication
+ /// information in the form of an Proxy-Authorization header.
+
+ void getProxyCredentials(std::string& scheme, std::string& authInfo) const;
+ /// Returns the proxy authentication scheme and additional proxy authentication
+ /// information contained in this request.
+ ///
+ /// Throws a NotAuthenticatedException if no proxy authentication information
+ /// is contained in the request.
+
+ void setProxyCredentials(const std::string& scheme, const std::string& authInfo);
+ /// Sets the proxy authentication scheme and information for
+ /// this request.
+
+ void write(std::ostream& ostr) const;
+ /// Writes the HTTP request to the given
+ /// output stream.
+
+ void read(std::istream& istr);
+ /// Reads the HTTP request from the
+ /// given input stream.
+
+ static const std::string HTTP_GET;
+ static const std::string HTTP_HEAD;
+ static const std::string HTTP_PUT;
+ static const std::string HTTP_POST;
+ static const std::string HTTP_OPTIONS;
+ static const std::string HTTP_DELETE;
+ static const std::string HTTP_TRACE;
+ static const std::string HTTP_CONNECT;
+ static const std::string HTTP_PATCH;
+
+ static const std::string HOST;
+ static const std::string COOKIE;
+ static const std::string AUTHORIZATION;
+ static const std::string PROXY_AUTHORIZATION;
+ static const std::string UPGRADE;
+ static const std::string EXPECT;
+
+protected:
+ void getCredentials(const std::string& header, std::string& scheme, std::string& authInfo) const;
+ /// Returns the authentication scheme and additional authentication
+ /// information contained in the given header of request.
+ ///
+ /// Throws a NotAuthenticatedException if no authentication information
+ /// is contained in the request.
+
+ void setCredentials(const std::string& header, const std::string& scheme, const std::string& authInfo);
+ /// Writes the authentication scheme and information for
+ /// this request to the given header.
+
+private:
+ enum Limits
+ {
+ MAX_METHOD_LENGTH = 32,
+ MAX_URI_LENGTH = 16384,
+ MAX_VERSION_LENGTH = 8
+ };
+
+ std::string _method;
+ std::string _uri;
+
+ HTTPRequest(const HTTPRequest&);
+ HTTPRequest& operator = (const HTTPRequest&);
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPRequest::getMethod() const
+{
+ return _method;
+}
+
+
+inline const std::string& HTTPRequest::getURI() const
+{
+ return _uri;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPRequest_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandler.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandler.h
index 790b748c4c..8a6271204c 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandler.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandler.h
@@ -1,67 +1,67 @@
-//
-// HTTPRequestHandler.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPRequestHandler
-//
-// Definition of the HTTPRequestHandler class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPRequestHandler_INCLUDED
-#define Net_HTTPRequestHandler_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerRequest;
-class HTTPServerResponse;
-
-
-class Net_API HTTPRequestHandler
- /// The abstract base class for HTTPRequestHandlers
- /// created by HTTPServer.
- ///
- /// Derived classes must override the handleRequest() method.
- /// Furthermore, a HTTPRequestHandlerFactory must be provided.
- ///
- /// The handleRequest() method must perform the complete handling
- /// of the HTTP request connection. As soon as the handleRequest()
- /// method returns, the request handler object is destroyed.
- ///
- /// A new HTTPRequestHandler object will be created for
- /// each new HTTP request that is received by the HTTPServer.
-{
-public:
- HTTPRequestHandler();
- /// Creates the HTTPRequestHandler.
-
- virtual ~HTTPRequestHandler();
- /// Destroys the HTTPRequestHandler.
-
- virtual void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) = 0;
- /// Must be overridden by subclasses.
- ///
- /// Handles the given request.
-
-private:
- HTTPRequestHandler(const HTTPRequestHandler&);
- HTTPRequestHandler& operator = (const HTTPRequestHandler&);
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPRequestHandler_INCLUDED
+//
+// HTTPRequestHandler.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPRequestHandler
+//
+// Definition of the HTTPRequestHandler class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPRequestHandler_INCLUDED
+#define Net_HTTPRequestHandler_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerRequest;
+class HTTPServerResponse;
+
+
+class Net_API HTTPRequestHandler
+ /// The abstract base class for HTTPRequestHandlers
+ /// created by HTTPServer.
+ ///
+ /// Derived classes must override the handleRequest() method.
+ /// Furthermore, a HTTPRequestHandlerFactory must be provided.
+ ///
+ /// The handleRequest() method must perform the complete handling
+ /// of the HTTP request connection. As soon as the handleRequest()
+ /// method returns, the request handler object is destroyed.
+ ///
+ /// A new HTTPRequestHandler object will be created for
+ /// each new HTTP request that is received by the HTTPServer.
+{
+public:
+ HTTPRequestHandler();
+ /// Creates the HTTPRequestHandler.
+
+ virtual ~HTTPRequestHandler();
+ /// Destroys the HTTPRequestHandler.
+
+ virtual void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) = 0;
+ /// Must be overridden by subclasses.
+ ///
+ /// Handles the given request.
+
+private:
+ HTTPRequestHandler(const HTTPRequestHandler&);
+ HTTPRequestHandler& operator = (const HTTPRequestHandler&);
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPRequestHandler_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandlerFactory.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandlerFactory.h
index d3a8319bc7..421c465018 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandlerFactory.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPRequestHandlerFactory.h
@@ -1,78 +1,78 @@
-//
-// HTTPRequestHandlerFactory.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPRequestHandlerFactory
-//
-// Definition of the HTTPRequestHandlerFactory class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPRequestHandlerFactory_INCLUDED
-#define Net_HTTPRequestHandlerFactory_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/SharedPtr.h"
-#include "Poco/BasicEvent.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerRequest;
-class HTTPServerResponse;
-class HTTPRequestHandler;
-
-
-class Net_API HTTPRequestHandlerFactory
- /// A factory for HTTPRequestHandler objects.
- /// Subclasses must override the createRequestHandler()
- /// method.
-{
-public:
- typedef Poco::SharedPtr<HTTPRequestHandlerFactory> Ptr;
-
- HTTPRequestHandlerFactory();
- /// Creates the HTTPRequestHandlerFactory.
-
- virtual ~HTTPRequestHandlerFactory();
- /// Destroys the HTTPRequestHandlerFactory.
-
- virtual HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) = 0;
- /// Must be overridden by subclasses.
- ///
- /// Creates a new request handler for the given HTTP request.
- ///
- /// The method should inspect the given HTTPServerRequest object (e.g., method
- /// and URI) and create an appropriate HTTPRequestHandler object to handle the
- /// request.
- ///
- /// If the request contains a "Expect: 100-continue" header, it's possible
- /// to prevent the server from sending the default 100 Continue response
- /// by setting the status of the response object that can be obtained through
- /// the request object (request.response()) to something other than 200 OK.
-
-protected:
- Poco::BasicEvent<const bool> serverStopped;
-
-private:
- HTTPRequestHandlerFactory(const HTTPRequestHandlerFactory&);
- HTTPRequestHandlerFactory& operator = (const HTTPRequestHandlerFactory&);
-
- friend class HTTPServer;
- friend class HTTPServerConnection;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPRequestHandlerFactory_INCLUDED
+//
+// HTTPRequestHandlerFactory.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPRequestHandlerFactory
+//
+// Definition of the HTTPRequestHandlerFactory class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPRequestHandlerFactory_INCLUDED
+#define Net_HTTPRequestHandlerFactory_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/SharedPtr.h"
+#include "Poco/BasicEvent.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerRequest;
+class HTTPServerResponse;
+class HTTPRequestHandler;
+
+
+class Net_API HTTPRequestHandlerFactory
+ /// A factory for HTTPRequestHandler objects.
+ /// Subclasses must override the createRequestHandler()
+ /// method.
+{
+public:
+ typedef Poco::SharedPtr<HTTPRequestHandlerFactory> Ptr;
+
+ HTTPRequestHandlerFactory();
+ /// Creates the HTTPRequestHandlerFactory.
+
+ virtual ~HTTPRequestHandlerFactory();
+ /// Destroys the HTTPRequestHandlerFactory.
+
+ virtual HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) = 0;
+ /// Must be overridden by subclasses.
+ ///
+ /// Creates a new request handler for the given HTTP request.
+ ///
+ /// The method should inspect the given HTTPServerRequest object (e.g., method
+ /// and URI) and create an appropriate HTTPRequestHandler object to handle the
+ /// request.
+ ///
+ /// If the request contains a "Expect: 100-continue" header, it's possible
+ /// to prevent the server from sending the default 100 Continue response
+ /// by setting the status of the response object that can be obtained through
+ /// the request object (request.response()) to something other than 200 OK.
+
+protected:
+ Poco::BasicEvent<const bool> serverStopped;
+
+private:
+ HTTPRequestHandlerFactory(const HTTPRequestHandlerFactory&);
+ HTTPRequestHandlerFactory& operator = (const HTTPRequestHandlerFactory&);
+
+ friend class HTTPServer;
+ friend class HTTPServerConnection;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPRequestHandlerFactory_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPResponse.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPResponse.h
index 861dd3d914..0c795f8f29 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPResponse.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPResponse.h
@@ -1,299 +1,299 @@
-//
-// HTTPResponse.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPResponse
-//
-// Definition of the HTTPResponse class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPResponse_INCLUDED
-#define Net_HTTPResponse_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPMessage.h"
-#include "Poco/Net/HTTPCookie.h"
-#include "Poco/Timestamp.h"
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPCookie;
-
-
-class Net_API HTTPResponse: public HTTPMessage
- /// This class encapsulates an HTTP response
- /// message.
- ///
- /// In addition to the properties common to
- /// all HTTP messages, a HTTP response has
- /// status code and a reason phrase.
-{
-public:
- enum HTTPStatus
- {
- HTTP_CONTINUE = 100,
- HTTP_SWITCHING_PROTOCOLS = 101,
- HTTP_PROCESSING = 102,
- HTTP_OK = 200,
- HTTP_CREATED = 201,
- HTTP_ACCEPTED = 202,
- HTTP_NONAUTHORITATIVE = 203,
- HTTP_NO_CONTENT = 204,
- HTTP_RESET_CONTENT = 205,
- HTTP_PARTIAL_CONTENT = 206,
- HTTP_MULTI_STATUS = 207,
- HTTP_ALREADY_REPORTED = 208,
- HTTP_IM_USED = 226,
- HTTP_MULTIPLE_CHOICES = 300,
- HTTP_MOVED_PERMANENTLY = 301,
- HTTP_FOUND = 302,
- HTTP_SEE_OTHER = 303,
- HTTP_NOT_MODIFIED = 304,
- HTTP_USE_PROXY = 305,
- HTTP_USEPROXY = 305, /// @deprecated
- // UNUSED: 306
- HTTP_TEMPORARY_REDIRECT = 307,
- HTTP_PERMANENT_REDIRECT = 308,
- HTTP_BAD_REQUEST = 400,
- HTTP_UNAUTHORIZED = 401,
- HTTP_PAYMENT_REQUIRED = 402,
- HTTP_FORBIDDEN = 403,
- HTTP_NOT_FOUND = 404,
- HTTP_METHOD_NOT_ALLOWED = 405,
- HTTP_NOT_ACCEPTABLE = 406,
- HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
- HTTP_REQUEST_TIMEOUT = 408,
- HTTP_CONFLICT = 409,
- HTTP_GONE = 410,
- HTTP_LENGTH_REQUIRED = 411,
- HTTP_PRECONDITION_FAILED = 412,
- HTTP_REQUEST_ENTITY_TOO_LARGE = 413,
- HTTP_REQUESTENTITYTOOLARGE = 413, /// @deprecated
- HTTP_REQUEST_URI_TOO_LONG = 414,
- HTTP_REQUESTURITOOLONG = 414, /// @deprecated
- HTTP_UNSUPPORTED_MEDIA_TYPE = 415,
- HTTP_UNSUPPORTEDMEDIATYPE = 415, /// @deprecated
- HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
- HTTP_EXPECTATION_FAILED = 417,
- HTTP_IM_A_TEAPOT = 418,
- HTTP_ENCHANCE_YOUR_CALM = 420,
- HTTP_MISDIRECTED_REQUEST = 421,
- HTTP_UNPROCESSABLE_ENTITY = 422,
- HTTP_LOCKED = 423,
- HTTP_FAILED_DEPENDENCY = 424,
- HTTP_UPGRADE_REQUIRED = 426,
- HTTP_PRECONDITION_REQUIRED = 428,
- HTTP_TOO_MANY_REQUESTS = 429,
- HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
- HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451,
- HTTP_INTERNAL_SERVER_ERROR = 500,
- HTTP_NOT_IMPLEMENTED = 501,
- HTTP_BAD_GATEWAY = 502,
- HTTP_SERVICE_UNAVAILABLE = 503,
- HTTP_GATEWAY_TIMEOUT = 504,
- HTTP_VERSION_NOT_SUPPORTED = 505,
- HTTP_VARIANT_ALSO_NEGOTIATES = 506,
- HTTP_INSUFFICIENT_STORAGE = 507,
- HTTP_LOOP_DETECTED = 508,
- HTTP_NOT_EXTENDED = 510,
- HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511
- };
-
- HTTPResponse();
- /// Creates the HTTPResponse with OK status.
-
- HTTPResponse(HTTPStatus status, const std::string& reason);
- /// Creates the HTTPResponse with the given status
- /// and reason phrase.
-
- HTTPResponse(const std::string& version, HTTPStatus status, const std::string& reason);
- /// Creates the HTTPResponse with the given version, status
- /// and reason phrase.
-
- HTTPResponse(HTTPStatus status);
- /// Creates the HTTPResponse with the given status
- /// an an appropriate reason phrase.
-
- HTTPResponse(const std::string& version, HTTPStatus status);
- /// Creates the HTTPResponse with the given version, status
- /// an an appropriate reason phrase.
-
- virtual ~HTTPResponse();
- /// Destroys the HTTPResponse.
-
- void setStatus(HTTPStatus status);
- /// Sets the HTTP status code.
- ///
- /// Does not change the reason phrase.
-
- HTTPStatus getStatus() const;
- /// Returns the HTTP status code.
-
- void setStatus(const std::string& status);
- /// Sets the HTTP status code.
- ///
- /// The string must contain a valid
- /// HTTP numerical status code.
-
- void setReason(const std::string& reason);
- /// Sets the HTTP reason phrase.
-
- const std::string& getReason() const;
- /// Returns the HTTP reason phrase.
-
- void setStatusAndReason(HTTPStatus status, const std::string& reason);
- /// Sets the HTTP status code and reason phrase.
-
- void setStatusAndReason(HTTPStatus status);
- /// Sets the HTTP status code and reason phrase.
- ///
- /// The reason phrase is set according to the status code.
-
- void setDate(const Poco::Timestamp& dateTime);
- /// Sets the Date header to the given date/time value.
-
- Poco::Timestamp getDate() const;
- /// Returns the value of the Date header.
-
- void addCookie(const HTTPCookie& cookie);
- /// Adds the cookie to the response by
- /// adding a Set-Cookie header.
-
- void getCookies(std::vector<HTTPCookie>& cookies) const;
- /// Returns a vector with all the cookies
- /// set in the response header.
- ///
- /// May throw an exception in case of a malformed
- /// Set-Cookie header.
-
- void write(std::ostream& ostr) const;
- /// Writes the HTTP response to the given
- /// output stream.
-
- void beginWrite(std::ostream& ostr) const;
- /// Writes the HTTP response to the given
- /// output stream, but do not finish with \r\n delimiter.
-
- void read(std::istream& istr);
- /// Reads the HTTP response from the
- /// given input stream.
- ///
- /// 100 Continue responses are ignored.
-
- static const std::string& getReasonForStatus(HTTPStatus status);
- /// Returns an appropriate reason phrase
- /// for the given status code.
-
- static const std::string HTTP_REASON_CONTINUE;
- static const std::string HTTP_REASON_SWITCHING_PROTOCOLS;
- static const std::string HTTP_REASON_PROCESSING;
- static const std::string HTTP_REASON_OK;
- static const std::string HTTP_REASON_CREATED;
- static const std::string HTTP_REASON_ACCEPTED;
- static const std::string HTTP_REASON_NONAUTHORITATIVE;
- static const std::string HTTP_REASON_NO_CONTENT;
- static const std::string HTTP_REASON_RESET_CONTENT;
- static const std::string HTTP_REASON_PARTIAL_CONTENT;
- static const std::string HTTP_REASON_MULTI_STATUS;
- static const std::string HTTP_REASON_ALREADY_REPORTED;
- static const std::string HTTP_REASON_IM_USED;
- static const std::string HTTP_REASON_MULTIPLE_CHOICES;
- static const std::string HTTP_REASON_MOVED_PERMANENTLY;
- static const std::string HTTP_REASON_FOUND;
- static const std::string HTTP_REASON_SEE_OTHER;
- static const std::string HTTP_REASON_NOT_MODIFIED;
- static const std::string HTTP_REASON_USE_PROXY;
- static const std::string HTTP_REASON_TEMPORARY_REDIRECT;
- static const std::string HTTP_REASON_PERMANENT_REDIRECT;
- static const std::string HTTP_REASON_BAD_REQUEST;
- static const std::string HTTP_REASON_UNAUTHORIZED;
- static const std::string HTTP_REASON_PAYMENT_REQUIRED;
- static const std::string HTTP_REASON_FORBIDDEN;
- static const std::string HTTP_REASON_NOT_FOUND;
- static const std::string HTTP_REASON_METHOD_NOT_ALLOWED;
- static const std::string HTTP_REASON_NOT_ACCEPTABLE;
- static const std::string HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED;
- static const std::string HTTP_REASON_REQUEST_TIMEOUT;
- static const std::string HTTP_REASON_CONFLICT;
- static const std::string HTTP_REASON_GONE;
- static const std::string HTTP_REASON_LENGTH_REQUIRED;
- static const std::string HTTP_REASON_PRECONDITION_FAILED;
- static const std::string HTTP_REASON_REQUEST_ENTITY_TOO_LARGE;
- static const std::string HTTP_REASON_REQUEST_URI_TOO_LONG;
- static const std::string HTTP_REASON_UNSUPPORTED_MEDIA_TYPE;
- static const std::string HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE;
- static const std::string HTTP_REASON_EXPECTATION_FAILED;
- static const std::string HTTP_REASON_IM_A_TEAPOT;
- static const std::string HTTP_REASON_ENCHANCE_YOUR_CALM;
- static const std::string HTTP_REASON_MISDIRECTED_REQUEST;
- static const std::string HTTP_REASON_UNPROCESSABLE_ENTITY;
- static const std::string HTTP_REASON_LOCKED;
- static const std::string HTTP_REASON_FAILED_DEPENDENCY;
- static const std::string HTTP_REASON_UPGRADE_REQUIRED;
- static const std::string HTTP_REASON_PRECONDITION_REQUIRED;
- static const std::string HTTP_REASON_TOO_MANY_REQUESTS;
- static const std::string HTTP_REASON_REQUEST_HEADER_FIELDS_TOO_LARGE;
- static const std::string HTTP_REASON_UNAVAILABLE_FOR_LEGAL_REASONS;
- static const std::string HTTP_REASON_INTERNAL_SERVER_ERROR;
- static const std::string HTTP_REASON_NOT_IMPLEMENTED;
- static const std::string HTTP_REASON_BAD_GATEWAY;
- static const std::string HTTP_REASON_SERVICE_UNAVAILABLE;
- static const std::string HTTP_REASON_GATEWAY_TIMEOUT;
- static const std::string HTTP_REASON_VERSION_NOT_SUPPORTED;
- static const std::string HTTP_REASON_VARIANT_ALSO_NEGOTIATES;
- static const std::string HTTP_REASON_INSUFFICIENT_STORAGE;
- static const std::string HTTP_REASON_LOOP_DETECTED;
- static const std::string HTTP_REASON_NOT_EXTENDED;
- static const std::string HTTP_REASON_NETWORK_AUTHENTICATION_REQUIRED;
- static const std::string HTTP_REASON_UNKNOWN;
-
- static const std::string DATE;
- static const std::string SET_COOKIE;
-
-private:
- enum Limits
- {
- MAX_VERSION_LENGTH = 8,
- MAX_STATUS_LENGTH = 3,
- MAX_REASON_LENGTH = 512
- };
-
- HTTPStatus _status;
- std::string _reason;
-
- HTTPResponse(const HTTPResponse&);
- HTTPResponse& operator = (const HTTPResponse&);
-};
-
-
-//
-// inlines
-//
-inline HTTPResponse::HTTPStatus HTTPResponse::getStatus() const
-{
- return _status;
-}
-
-
-inline const std::string& HTTPResponse::getReason() const
-{
- return _reason;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPResponse_INCLUDED
+//
+// HTTPResponse.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPResponse
+//
+// Definition of the HTTPResponse class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPResponse_INCLUDED
+#define Net_HTTPResponse_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPMessage.h"
+#include "Poco/Net/HTTPCookie.h"
+#include "Poco/Timestamp.h"
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPCookie;
+
+
+class Net_API HTTPResponse: public HTTPMessage
+ /// This class encapsulates an HTTP response
+ /// message.
+ ///
+ /// In addition to the properties common to
+ /// all HTTP messages, a HTTP response has
+ /// status code and a reason phrase.
+{
+public:
+ enum HTTPStatus
+ {
+ HTTP_CONTINUE = 100,
+ HTTP_SWITCHING_PROTOCOLS = 101,
+ HTTP_PROCESSING = 102,
+ HTTP_OK = 200,
+ HTTP_CREATED = 201,
+ HTTP_ACCEPTED = 202,
+ HTTP_NONAUTHORITATIVE = 203,
+ HTTP_NO_CONTENT = 204,
+ HTTP_RESET_CONTENT = 205,
+ HTTP_PARTIAL_CONTENT = 206,
+ HTTP_MULTI_STATUS = 207,
+ HTTP_ALREADY_REPORTED = 208,
+ HTTP_IM_USED = 226,
+ HTTP_MULTIPLE_CHOICES = 300,
+ HTTP_MOVED_PERMANENTLY = 301,
+ HTTP_FOUND = 302,
+ HTTP_SEE_OTHER = 303,
+ HTTP_NOT_MODIFIED = 304,
+ HTTP_USE_PROXY = 305,
+ HTTP_USEPROXY = 305, /// @deprecated
+ // UNUSED: 306
+ HTTP_TEMPORARY_REDIRECT = 307,
+ HTTP_PERMANENT_REDIRECT = 308,
+ HTTP_BAD_REQUEST = 400,
+ HTTP_UNAUTHORIZED = 401,
+ HTTP_PAYMENT_REQUIRED = 402,
+ HTTP_FORBIDDEN = 403,
+ HTTP_NOT_FOUND = 404,
+ HTTP_METHOD_NOT_ALLOWED = 405,
+ HTTP_NOT_ACCEPTABLE = 406,
+ HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
+ HTTP_REQUEST_TIMEOUT = 408,
+ HTTP_CONFLICT = 409,
+ HTTP_GONE = 410,
+ HTTP_LENGTH_REQUIRED = 411,
+ HTTP_PRECONDITION_FAILED = 412,
+ HTTP_REQUEST_ENTITY_TOO_LARGE = 413,
+ HTTP_REQUESTENTITYTOOLARGE = 413, /// @deprecated
+ HTTP_REQUEST_URI_TOO_LONG = 414,
+ HTTP_REQUESTURITOOLONG = 414, /// @deprecated
+ HTTP_UNSUPPORTED_MEDIA_TYPE = 415,
+ HTTP_UNSUPPORTEDMEDIATYPE = 415, /// @deprecated
+ HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
+ HTTP_EXPECTATION_FAILED = 417,
+ HTTP_IM_A_TEAPOT = 418,
+ HTTP_ENCHANCE_YOUR_CALM = 420,
+ HTTP_MISDIRECTED_REQUEST = 421,
+ HTTP_UNPROCESSABLE_ENTITY = 422,
+ HTTP_LOCKED = 423,
+ HTTP_FAILED_DEPENDENCY = 424,
+ HTTP_UPGRADE_REQUIRED = 426,
+ HTTP_PRECONDITION_REQUIRED = 428,
+ HTTP_TOO_MANY_REQUESTS = 429,
+ HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
+ HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451,
+ HTTP_INTERNAL_SERVER_ERROR = 500,
+ HTTP_NOT_IMPLEMENTED = 501,
+ HTTP_BAD_GATEWAY = 502,
+ HTTP_SERVICE_UNAVAILABLE = 503,
+ HTTP_GATEWAY_TIMEOUT = 504,
+ HTTP_VERSION_NOT_SUPPORTED = 505,
+ HTTP_VARIANT_ALSO_NEGOTIATES = 506,
+ HTTP_INSUFFICIENT_STORAGE = 507,
+ HTTP_LOOP_DETECTED = 508,
+ HTTP_NOT_EXTENDED = 510,
+ HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511
+ };
+
+ HTTPResponse();
+ /// Creates the HTTPResponse with OK status.
+
+ HTTPResponse(HTTPStatus status, const std::string& reason);
+ /// Creates the HTTPResponse with the given status
+ /// and reason phrase.
+
+ HTTPResponse(const std::string& version, HTTPStatus status, const std::string& reason);
+ /// Creates the HTTPResponse with the given version, status
+ /// and reason phrase.
+
+ HTTPResponse(HTTPStatus status);
+ /// Creates the HTTPResponse with the given status
+ /// an an appropriate reason phrase.
+
+ HTTPResponse(const std::string& version, HTTPStatus status);
+ /// Creates the HTTPResponse with the given version, status
+ /// an an appropriate reason phrase.
+
+ virtual ~HTTPResponse();
+ /// Destroys the HTTPResponse.
+
+ void setStatus(HTTPStatus status);
+ /// Sets the HTTP status code.
+ ///
+ /// Does not change the reason phrase.
+
+ HTTPStatus getStatus() const;
+ /// Returns the HTTP status code.
+
+ void setStatus(const std::string& status);
+ /// Sets the HTTP status code.
+ ///
+ /// The string must contain a valid
+ /// HTTP numerical status code.
+
+ void setReason(const std::string& reason);
+ /// Sets the HTTP reason phrase.
+
+ const std::string& getReason() const;
+ /// Returns the HTTP reason phrase.
+
+ void setStatusAndReason(HTTPStatus status, const std::string& reason);
+ /// Sets the HTTP status code and reason phrase.
+
+ void setStatusAndReason(HTTPStatus status);
+ /// Sets the HTTP status code and reason phrase.
+ ///
+ /// The reason phrase is set according to the status code.
+
+ void setDate(const Poco::Timestamp& dateTime);
+ /// Sets the Date header to the given date/time value.
+
+ Poco::Timestamp getDate() const;
+ /// Returns the value of the Date header.
+
+ void addCookie(const HTTPCookie& cookie);
+ /// Adds the cookie to the response by
+ /// adding a Set-Cookie header.
+
+ void getCookies(std::vector<HTTPCookie>& cookies) const;
+ /// Returns a vector with all the cookies
+ /// set in the response header.
+ ///
+ /// May throw an exception in case of a malformed
+ /// Set-Cookie header.
+
+ void write(std::ostream& ostr) const;
+ /// Writes the HTTP response to the given
+ /// output stream.
+
+ void beginWrite(std::ostream& ostr) const;
+ /// Writes the HTTP response to the given
+ /// output stream, but do not finish with \r\n delimiter.
+
+ void read(std::istream& istr);
+ /// Reads the HTTP response from the
+ /// given input stream.
+ ///
+ /// 100 Continue responses are ignored.
+
+ static const std::string& getReasonForStatus(HTTPStatus status);
+ /// Returns an appropriate reason phrase
+ /// for the given status code.
+
+ static const std::string HTTP_REASON_CONTINUE;
+ static const std::string HTTP_REASON_SWITCHING_PROTOCOLS;
+ static const std::string HTTP_REASON_PROCESSING;
+ static const std::string HTTP_REASON_OK;
+ static const std::string HTTP_REASON_CREATED;
+ static const std::string HTTP_REASON_ACCEPTED;
+ static const std::string HTTP_REASON_NONAUTHORITATIVE;
+ static const std::string HTTP_REASON_NO_CONTENT;
+ static const std::string HTTP_REASON_RESET_CONTENT;
+ static const std::string HTTP_REASON_PARTIAL_CONTENT;
+ static const std::string HTTP_REASON_MULTI_STATUS;
+ static const std::string HTTP_REASON_ALREADY_REPORTED;
+ static const std::string HTTP_REASON_IM_USED;
+ static const std::string HTTP_REASON_MULTIPLE_CHOICES;
+ static const std::string HTTP_REASON_MOVED_PERMANENTLY;
+ static const std::string HTTP_REASON_FOUND;
+ static const std::string HTTP_REASON_SEE_OTHER;
+ static const std::string HTTP_REASON_NOT_MODIFIED;
+ static const std::string HTTP_REASON_USE_PROXY;
+ static const std::string HTTP_REASON_TEMPORARY_REDIRECT;
+ static const std::string HTTP_REASON_PERMANENT_REDIRECT;
+ static const std::string HTTP_REASON_BAD_REQUEST;
+ static const std::string HTTP_REASON_UNAUTHORIZED;
+ static const std::string HTTP_REASON_PAYMENT_REQUIRED;
+ static const std::string HTTP_REASON_FORBIDDEN;
+ static const std::string HTTP_REASON_NOT_FOUND;
+ static const std::string HTTP_REASON_METHOD_NOT_ALLOWED;
+ static const std::string HTTP_REASON_NOT_ACCEPTABLE;
+ static const std::string HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED;
+ static const std::string HTTP_REASON_REQUEST_TIMEOUT;
+ static const std::string HTTP_REASON_CONFLICT;
+ static const std::string HTTP_REASON_GONE;
+ static const std::string HTTP_REASON_LENGTH_REQUIRED;
+ static const std::string HTTP_REASON_PRECONDITION_FAILED;
+ static const std::string HTTP_REASON_REQUEST_ENTITY_TOO_LARGE;
+ static const std::string HTTP_REASON_REQUEST_URI_TOO_LONG;
+ static const std::string HTTP_REASON_UNSUPPORTED_MEDIA_TYPE;
+ static const std::string HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE;
+ static const std::string HTTP_REASON_EXPECTATION_FAILED;
+ static const std::string HTTP_REASON_IM_A_TEAPOT;
+ static const std::string HTTP_REASON_ENCHANCE_YOUR_CALM;
+ static const std::string HTTP_REASON_MISDIRECTED_REQUEST;
+ static const std::string HTTP_REASON_UNPROCESSABLE_ENTITY;
+ static const std::string HTTP_REASON_LOCKED;
+ static const std::string HTTP_REASON_FAILED_DEPENDENCY;
+ static const std::string HTTP_REASON_UPGRADE_REQUIRED;
+ static const std::string HTTP_REASON_PRECONDITION_REQUIRED;
+ static const std::string HTTP_REASON_TOO_MANY_REQUESTS;
+ static const std::string HTTP_REASON_REQUEST_HEADER_FIELDS_TOO_LARGE;
+ static const std::string HTTP_REASON_UNAVAILABLE_FOR_LEGAL_REASONS;
+ static const std::string HTTP_REASON_INTERNAL_SERVER_ERROR;
+ static const std::string HTTP_REASON_NOT_IMPLEMENTED;
+ static const std::string HTTP_REASON_BAD_GATEWAY;
+ static const std::string HTTP_REASON_SERVICE_UNAVAILABLE;
+ static const std::string HTTP_REASON_GATEWAY_TIMEOUT;
+ static const std::string HTTP_REASON_VERSION_NOT_SUPPORTED;
+ static const std::string HTTP_REASON_VARIANT_ALSO_NEGOTIATES;
+ static const std::string HTTP_REASON_INSUFFICIENT_STORAGE;
+ static const std::string HTTP_REASON_LOOP_DETECTED;
+ static const std::string HTTP_REASON_NOT_EXTENDED;
+ static const std::string HTTP_REASON_NETWORK_AUTHENTICATION_REQUIRED;
+ static const std::string HTTP_REASON_UNKNOWN;
+
+ static const std::string DATE;
+ static const std::string SET_COOKIE;
+
+private:
+ enum Limits
+ {
+ MAX_VERSION_LENGTH = 8,
+ MAX_STATUS_LENGTH = 3,
+ MAX_REASON_LENGTH = 512
+ };
+
+ HTTPStatus _status;
+ std::string _reason;
+
+ HTTPResponse(const HTTPResponse&);
+ HTTPResponse& operator = (const HTTPResponse&);
+};
+
+
+//
+// inlines
+//
+inline HTTPResponse::HTTPStatus HTTPResponse::getStatus() const
+{
+ return _status;
+}
+
+
+inline const std::string& HTTPResponse::getReason() const
+{
+ return _reason;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPResponse_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServer.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServer.h
index 5266fdbec4..69f092a673 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServer.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServer.h
@@ -1,103 +1,103 @@
-//
-// HTTPServer.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServer
-//
-// Definition of the HTTPServer class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServer_INCLUDED
-#define Net_HTTPServer_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/TCPServer.h"
-#include "Poco/Net/HTTPRequestHandlerFactory.h"
-#include "Poco/Net/HTTPServerParams.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPServer: public TCPServer
- /// A subclass of TCPServer that implements a
- /// full-featured multithreaded HTTP server.
- ///
- /// A HTTPRequestHandlerFactory must be supplied.
- /// The ServerSocket must be bound and in listening state.
- ///
- /// To configure various aspects of the server, a HTTPServerParams
- /// object can be passed to the constructor.
- ///
- /// The server supports:
- /// - HTTP/1.0 and HTTP/1.1
- /// - automatic handling of persistent connections.
- /// - automatic decoding/encoding of request/response message bodies
- /// using chunked transfer encoding.
- ///
- /// Please see the TCPServer class for information about
- /// connection and thread handling.
- ///
- /// See RFC 2616 <http://www.faqs.org/rfcs/rfc2616.html> for more
- /// information about the HTTP protocol.
-{
-public:
- HTTPServer(HTTPRequestHandlerFactory::Ptr pFactory, Poco::UInt16 portNumber = 80, HTTPServerParams::Ptr pParams = new HTTPServerParams);
- /// Creates HTTPServer listening on the given port (default 80).
- ///
- /// The server takes ownership of the HTTPRequstHandlerFactory
- /// and deletes it when it's no longer needed.
- ///
- /// New threads are taken from the default thread pool.
-
- HTTPServer(HTTPRequestHandlerFactory::Ptr pFactory, const ServerSocket& socket, HTTPServerParams::Ptr pParams);
- /// Creates the HTTPServer, using the given ServerSocket.
- ///
- /// The server takes ownership of the HTTPRequstHandlerFactory
- /// and deletes it when it's no longer needed.
- ///
- /// The server also takes ownership of the HTTPServerParams object.
- ///
- /// New threads are taken from the default thread pool.
-
- HTTPServer(HTTPRequestHandlerFactory::Ptr pFactory, Poco::ThreadPool& threadPool, const ServerSocket& socket, HTTPServerParams::Ptr pParams);
- /// Creates the HTTPServer, using the given ServerSocket.
- ///
- /// The server takes ownership of the HTTPRequstHandlerFactory
- /// and deletes it when it's no longer needed.
- ///
- /// The server also takes ownership of the HTTPServerParams object.
- ///
- /// New threads are taken from the given thread pool.
-
- ~HTTPServer();
- /// Destroys the HTTPServer and its HTTPRequestHandlerFactory.
-
- void stopAll(bool abortCurrent = false);
- /// Stops the server. In contrast to TCPServer::stop(), which also
- /// stops the server, but allows all client connections to finish at
- /// their pace, this allows finer control over client connections.
- ///
- /// If abortCurrent is false, all current requests are allowed to
- /// complete. If abortCurrent is true, the underlying sockets of
- /// all client connections are shut down, causing all requests
- /// to abort.
-
-private:
- HTTPRequestHandlerFactory::Ptr _pFactory;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServer_INCLUDED
+//
+// HTTPServer.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServer
+//
+// Definition of the HTTPServer class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServer_INCLUDED
+#define Net_HTTPServer_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/TCPServer.h"
+#include "Poco/Net/HTTPRequestHandlerFactory.h"
+#include "Poco/Net/HTTPServerParams.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPServer: public TCPServer
+ /// A subclass of TCPServer that implements a
+ /// full-featured multithreaded HTTP server.
+ ///
+ /// A HTTPRequestHandlerFactory must be supplied.
+ /// The ServerSocket must be bound and in listening state.
+ ///
+ /// To configure various aspects of the server, a HTTPServerParams
+ /// object can be passed to the constructor.
+ ///
+ /// The server supports:
+ /// - HTTP/1.0 and HTTP/1.1
+ /// - automatic handling of persistent connections.
+ /// - automatic decoding/encoding of request/response message bodies
+ /// using chunked transfer encoding.
+ ///
+ /// Please see the TCPServer class for information about
+ /// connection and thread handling.
+ ///
+ /// See RFC 2616 <http://www.faqs.org/rfcs/rfc2616.html> for more
+ /// information about the HTTP protocol.
+{
+public:
+ HTTPServer(HTTPRequestHandlerFactory::Ptr pFactory, Poco::UInt16 portNumber = 80, HTTPServerParams::Ptr pParams = new HTTPServerParams);
+ /// Creates HTTPServer listening on the given port (default 80).
+ ///
+ /// The server takes ownership of the HTTPRequstHandlerFactory
+ /// and deletes it when it's no longer needed.
+ ///
+ /// New threads are taken from the default thread pool.
+
+ HTTPServer(HTTPRequestHandlerFactory::Ptr pFactory, const ServerSocket& socket, HTTPServerParams::Ptr pParams);
+ /// Creates the HTTPServer, using the given ServerSocket.
+ ///
+ /// The server takes ownership of the HTTPRequstHandlerFactory
+ /// and deletes it when it's no longer needed.
+ ///
+ /// The server also takes ownership of the HTTPServerParams object.
+ ///
+ /// New threads are taken from the default thread pool.
+
+ HTTPServer(HTTPRequestHandlerFactory::Ptr pFactory, Poco::ThreadPool& threadPool, const ServerSocket& socket, HTTPServerParams::Ptr pParams);
+ /// Creates the HTTPServer, using the given ServerSocket.
+ ///
+ /// The server takes ownership of the HTTPRequstHandlerFactory
+ /// and deletes it when it's no longer needed.
+ ///
+ /// The server also takes ownership of the HTTPServerParams object.
+ ///
+ /// New threads are taken from the given thread pool.
+
+ ~HTTPServer();
+ /// Destroys the HTTPServer and its HTTPRequestHandlerFactory.
+
+ void stopAll(bool abortCurrent = false);
+ /// Stops the server. In contrast to TCPServer::stop(), which also
+ /// stops the server, but allows all client connections to finish at
+ /// their pace, this allows finer control over client connections.
+ ///
+ /// If abortCurrent is false, all current requests are allowed to
+ /// complete. If abortCurrent is true, the underlying sockets of
+ /// all client connections are shut down, causing all requests
+ /// to abort.
+
+private:
+ HTTPRequestHandlerFactory::Ptr _pFactory;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServer_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnection.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnection.h
index 9e0d3cf376..536889c04a 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnection.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnection.h
@@ -1,65 +1,65 @@
-//
-// HTTPServerConnection.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerConnection
-//
-// Definition of the HTTPServerConnection class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerConnection_INCLUDED
-#define Net_HTTPServerConnection_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/TCPServerConnection.h"
-#include "Poco/Net/HTTPResponse.h"
-#include "Poco/Net/HTTPRequestHandlerFactory.h"
-#include "Poco/Net/HTTPServerParams.h"
-#include "Poco/Mutex.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerSession;
-
-
-class Net_API HTTPServerConnection: public TCPServerConnection
- /// This subclass of TCPServerConnection handles HTTP
- /// connections.
-{
-public:
- HTTPServerConnection(const StreamSocket& socket, HTTPServerParams::Ptr pParams, HTTPRequestHandlerFactory::Ptr pFactory);
- /// Creates the HTTPServerConnection.
-
- virtual ~HTTPServerConnection();
- /// Destroys the HTTPServerConnection.
-
- void run();
- /// Handles all HTTP requests coming in.
-
-protected:
- void sendErrorResponse(HTTPServerSession& session, HTTPResponse::HTTPStatus status);
- void onServerStopped(const bool& abortCurrent);
-
-private:
- HTTPServerParams::Ptr _pParams;
- HTTPRequestHandlerFactory::Ptr _pFactory;
- bool _stopped;
- Poco::FastMutex _mutex;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerConnection_INCLUDED
+//
+// HTTPServerConnection.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerConnection
+//
+// Definition of the HTTPServerConnection class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerConnection_INCLUDED
+#define Net_HTTPServerConnection_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/TCPServerConnection.h"
+#include "Poco/Net/HTTPResponse.h"
+#include "Poco/Net/HTTPRequestHandlerFactory.h"
+#include "Poco/Net/HTTPServerParams.h"
+#include "Poco/Mutex.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerSession;
+
+
+class Net_API HTTPServerConnection: public TCPServerConnection
+ /// This subclass of TCPServerConnection handles HTTP
+ /// connections.
+{
+public:
+ HTTPServerConnection(const StreamSocket& socket, HTTPServerParams::Ptr pParams, HTTPRequestHandlerFactory::Ptr pFactory);
+ /// Creates the HTTPServerConnection.
+
+ virtual ~HTTPServerConnection();
+ /// Destroys the HTTPServerConnection.
+
+ void run();
+ /// Handles all HTTP requests coming in.
+
+protected:
+ void sendErrorResponse(HTTPServerSession& session, HTTPResponse::HTTPStatus status);
+ void onServerStopped(const bool& abortCurrent);
+
+private:
+ HTTPServerParams::Ptr _pParams;
+ HTTPRequestHandlerFactory::Ptr _pFactory;
+ bool _stopped;
+ Poco::FastMutex _mutex;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerConnection_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnectionFactory.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnectionFactory.h
index 0386b68c7a..fc44f912c5 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnectionFactory.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerConnectionFactory.h
@@ -1,55 +1,55 @@
-//
-// HTTPServerConnectionFactory.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerConnectionFactory
-//
-// Definition of the HTTPServerConnectionFactory class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerConnectionFactory_INCLUDED
-#define Net_HTTPServerConnectionFactory_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/TCPServerConnectionFactory.h"
-#include "Poco/Net/HTTPRequestHandlerFactory.h"
-#include "Poco/Net/HTTPServerParams.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPServerConnectionFactory: public TCPServerConnectionFactory
- /// This implementation of a TCPServerConnectionFactory
- /// is used by HTTPServer to create HTTPServerConnection objects.
-{
-public:
- HTTPServerConnectionFactory(HTTPServerParams::Ptr pParams, HTTPRequestHandlerFactory::Ptr pFactory);
- /// Creates the HTTPServerConnectionFactory.
-
- ~HTTPServerConnectionFactory();
- /// Destroys the HTTPServerConnectionFactory.
-
- TCPServerConnection* createConnection(const StreamSocket& socket);
- /// Creates an instance of HTTPServerConnection
- /// using the given StreamSocket.
-
-private:
- HTTPServerParams::Ptr _pParams;
- HTTPRequestHandlerFactory::Ptr _pFactory;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerConnectionFactory_INCLUDED
+//
+// HTTPServerConnectionFactory.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerConnectionFactory
+//
+// Definition of the HTTPServerConnectionFactory class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerConnectionFactory_INCLUDED
+#define Net_HTTPServerConnectionFactory_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/TCPServerConnectionFactory.h"
+#include "Poco/Net/HTTPRequestHandlerFactory.h"
+#include "Poco/Net/HTTPServerParams.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPServerConnectionFactory: public TCPServerConnectionFactory
+ /// This implementation of a TCPServerConnectionFactory
+ /// is used by HTTPServer to create HTTPServerConnection objects.
+{
+public:
+ HTTPServerConnectionFactory(HTTPServerParams::Ptr pParams, HTTPRequestHandlerFactory::Ptr pFactory);
+ /// Creates the HTTPServerConnectionFactory.
+
+ ~HTTPServerConnectionFactory();
+ /// Destroys the HTTPServerConnectionFactory.
+
+ TCPServerConnection* createConnection(const StreamSocket& socket);
+ /// Creates an instance of HTTPServerConnection
+ /// using the given StreamSocket.
+
+private:
+ HTTPServerParams::Ptr _pParams;
+ HTTPRequestHandlerFactory::Ptr _pFactory;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerConnectionFactory_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerParams.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerParams.h
index 10da477742..0fb86aaca1 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerParams.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerParams.h
@@ -1,154 +1,154 @@
-//
-// HTTPServerParams.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerParams
-//
-// Definition of the HTTPServerParams class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerParams_INCLUDED
-#define Net_HTTPServerParams_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/TCPServerParams.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPServerParams: public TCPServerParams
- /// This class is used to specify parameters to both the
- /// HTTPServer, as well as to HTTPRequestHandler objects.
- ///
- /// Subclasses may add new parameters to the class.
-{
-public:
- typedef Poco::AutoPtr<HTTPServerParams> Ptr;
-
- HTTPServerParams();
- /// Creates the HTTPServerParams.
- ///
- /// Sets the following default values:
- /// - timeout: 60 seconds
- /// - keepAlive: true
- /// - maxKeepAliveRequests: 0
- /// - keepAliveTimeout: 10 seconds
-
- void setServerName(const std::string& serverName);
- /// Sets the name and port (name:port) that the server uses to identify itself.
- ///
- /// If this is not set to valid DNS name for your host, server-generated
- /// redirections will not work.
-
- const std::string& getServerName() const;
- /// Returns the name and port (name:port) that the server uses to identify itself.
-
- void setSoftwareVersion(const std::string& softwareVersion);
- /// Sets the server software name and version that the server uses to identify
- /// itself. If this is set to a non-empty string, the server will
- /// automatically include a Server header field with the value given
- /// here in every response it sends.
- ///
- /// The format of the softwareVersion string should be name/version
- /// (e.g. MyHTTPServer/1.0).
-
- const std::string& getSoftwareVersion() const;
- /// Returns the server software name and version that the server uses to
- /// identify itself.
-
- void setTimeout(const Poco::Timespan& timeout);
- /// Sets the connection timeout for HTTP connections.
-
- const Poco::Timespan& getTimeout() const;
- /// Returns the connection timeout for HTTP connections.
-
- void setKeepAlive(bool keepAlive);
- /// Enables (keepAlive == true) or disables (keepAlive == false)
- /// persistent connections.
-
- bool getKeepAlive() const;
- /// Returns true iff persistent connections are enabled.
-
- void setKeepAliveTimeout(const Poco::Timespan& timeout);
- /// Sets the connection timeout for HTTP connections.
-
- const Poco::Timespan& getKeepAliveTimeout() const;
- /// Returns the connection timeout for HTTP connections.
-
- void setMaxKeepAliveRequests(int maxKeepAliveRequests);
- /// Specifies the maximum number of requests allowed
- /// during a persistent connection. 0 means unlimited
- /// connections.
-
- int getMaxKeepAliveRequests() const;
- /// Returns the maximum number of requests allowed
- /// during a persistent connection, or 0 if
- /// unlimited connections are allowed.
-
-protected:
- virtual ~HTTPServerParams();
- /// Destroys the HTTPServerParams.
-
-private:
- std::string _serverName;
- std::string _softwareVersion;
- Poco::Timespan _timeout;
- bool _keepAlive;
- int _maxKeepAliveRequests;
- Poco::Timespan _keepAliveTimeout;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPServerParams::getServerName() const
-{
- return _serverName;
-}
-
-
-inline const std::string& HTTPServerParams::getSoftwareVersion() const
-{
- return _softwareVersion;
-}
-
-
-inline const Poco::Timespan& HTTPServerParams::getTimeout() const
-{
- return _timeout;
-}
-
-
-inline bool HTTPServerParams::getKeepAlive() const
-{
- return _keepAlive;
-}
-
-
-inline int HTTPServerParams::getMaxKeepAliveRequests() const
-{
- return _maxKeepAliveRequests;
-}
-
-
-inline const Poco::Timespan& HTTPServerParams::getKeepAliveTimeout() const
-{
- return _keepAliveTimeout;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerParams_INCLUDED
+//
+// HTTPServerParams.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerParams
+//
+// Definition of the HTTPServerParams class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerParams_INCLUDED
+#define Net_HTTPServerParams_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/TCPServerParams.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPServerParams: public TCPServerParams
+ /// This class is used to specify parameters to both the
+ /// HTTPServer, as well as to HTTPRequestHandler objects.
+ ///
+ /// Subclasses may add new parameters to the class.
+{
+public:
+ typedef Poco::AutoPtr<HTTPServerParams> Ptr;
+
+ HTTPServerParams();
+ /// Creates the HTTPServerParams.
+ ///
+ /// Sets the following default values:
+ /// - timeout: 60 seconds
+ /// - keepAlive: true
+ /// - maxKeepAliveRequests: 0
+ /// - keepAliveTimeout: 10 seconds
+
+ void setServerName(const std::string& serverName);
+ /// Sets the name and port (name:port) that the server uses to identify itself.
+ ///
+ /// If this is not set to valid DNS name for your host, server-generated
+ /// redirections will not work.
+
+ const std::string& getServerName() const;
+ /// Returns the name and port (name:port) that the server uses to identify itself.
+
+ void setSoftwareVersion(const std::string& softwareVersion);
+ /// Sets the server software name and version that the server uses to identify
+ /// itself. If this is set to a non-empty string, the server will
+ /// automatically include a Server header field with the value given
+ /// here in every response it sends.
+ ///
+ /// The format of the softwareVersion string should be name/version
+ /// (e.g. MyHTTPServer/1.0).
+
+ const std::string& getSoftwareVersion() const;
+ /// Returns the server software name and version that the server uses to
+ /// identify itself.
+
+ void setTimeout(const Poco::Timespan& timeout);
+ /// Sets the connection timeout for HTTP connections.
+
+ const Poco::Timespan& getTimeout() const;
+ /// Returns the connection timeout for HTTP connections.
+
+ void setKeepAlive(bool keepAlive);
+ /// Enables (keepAlive == true) or disables (keepAlive == false)
+ /// persistent connections.
+
+ bool getKeepAlive() const;
+ /// Returns true iff persistent connections are enabled.
+
+ void setKeepAliveTimeout(const Poco::Timespan& timeout);
+ /// Sets the connection timeout for HTTP connections.
+
+ const Poco::Timespan& getKeepAliveTimeout() const;
+ /// Returns the connection timeout for HTTP connections.
+
+ void setMaxKeepAliveRequests(int maxKeepAliveRequests);
+ /// Specifies the maximum number of requests allowed
+ /// during a persistent connection. 0 means unlimited
+ /// connections.
+
+ int getMaxKeepAliveRequests() const;
+ /// Returns the maximum number of requests allowed
+ /// during a persistent connection, or 0 if
+ /// unlimited connections are allowed.
+
+protected:
+ virtual ~HTTPServerParams();
+ /// Destroys the HTTPServerParams.
+
+private:
+ std::string _serverName;
+ std::string _softwareVersion;
+ Poco::Timespan _timeout;
+ bool _keepAlive;
+ int _maxKeepAliveRequests;
+ Poco::Timespan _keepAliveTimeout;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPServerParams::getServerName() const
+{
+ return _serverName;
+}
+
+
+inline const std::string& HTTPServerParams::getSoftwareVersion() const
+{
+ return _softwareVersion;
+}
+
+
+inline const Poco::Timespan& HTTPServerParams::getTimeout() const
+{
+ return _timeout;
+}
+
+
+inline bool HTTPServerParams::getKeepAlive() const
+{
+ return _keepAlive;
+}
+
+
+inline int HTTPServerParams::getMaxKeepAliveRequests() const
+{
+ return _maxKeepAliveRequests;
+}
+
+
+inline const Poco::Timespan& HTTPServerParams::getKeepAliveTimeout() const
+{
+ return _keepAliveTimeout;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerParams_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequest.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequest.h
index 84ad4bcd83..69ffeaec08 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequest.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequest.h
@@ -1,80 +1,80 @@
-//
-// HTTPServerRequest.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerRequest
-//
-// Definition of the HTTPServerRequest class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerRequest_INCLUDED
-#define Net_HTTPServerRequest_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPRequest.h"
-#include "Poco/Net/SocketAddress.h"
-#include <istream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerSession;
-class HTTPServerResponse;
-class HTTPServerParams;
-
-
-class Net_API HTTPServerRequest: public HTTPRequest
- /// This abstract subclass of HTTPRequest is used for
- /// representing server-side HTTP requests.
- ///
- /// A HTTPServerRequest is passed to the
- /// handleRequest() method of HTTPRequestHandler.
-{
-public:
- HTTPServerRequest();
- /// Creates the HTTPServerRequest
-
- ~HTTPServerRequest();
- /// Destroys the HTTPServerRequest.
-
- virtual std::istream& stream() = 0;
- /// Returns the input stream for reading
- /// the request body.
- ///
- /// The stream must be valid until the HTTPServerRequest
- /// object is destroyed.
-
- virtual const SocketAddress& clientAddress() const = 0;
- /// Returns the client's address.
-
- virtual const SocketAddress& serverAddress() const = 0;
- /// Returns the server's address.
-
- virtual const HTTPServerParams& serverParams() const = 0;
- /// Returns a reference to the server parameters.
-
- virtual HTTPServerResponse& response() const = 0;
- /// Returns a reference to the associated response.
-
- virtual bool secure() const = 0;
- /// Returns true if the request is using a secure
- /// connection. Returns false if no secure connection
- /// is used, or if it is not known whether a secure
- /// connection is used.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerRequest_INCLUDED
+//
+// HTTPServerRequest.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerRequest
+//
+// Definition of the HTTPServerRequest class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerRequest_INCLUDED
+#define Net_HTTPServerRequest_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPRequest.h"
+#include "Poco/Net/SocketAddress.h"
+#include <istream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerSession;
+class HTTPServerResponse;
+class HTTPServerParams;
+
+
+class Net_API HTTPServerRequest: public HTTPRequest
+ /// This abstract subclass of HTTPRequest is used for
+ /// representing server-side HTTP requests.
+ ///
+ /// A HTTPServerRequest is passed to the
+ /// handleRequest() method of HTTPRequestHandler.
+{
+public:
+ HTTPServerRequest();
+ /// Creates the HTTPServerRequest
+
+ ~HTTPServerRequest();
+ /// Destroys the HTTPServerRequest.
+
+ virtual std::istream& stream() = 0;
+ /// Returns the input stream for reading
+ /// the request body.
+ ///
+ /// The stream must be valid until the HTTPServerRequest
+ /// object is destroyed.
+
+ virtual const SocketAddress& clientAddress() const = 0;
+ /// Returns the client's address.
+
+ virtual const SocketAddress& serverAddress() const = 0;
+ /// Returns the server's address.
+
+ virtual const HTTPServerParams& serverParams() const = 0;
+ /// Returns a reference to the server parameters.
+
+ virtual HTTPServerResponse& response() const = 0;
+ /// Returns a reference to the associated response.
+
+ virtual bool secure() const = 0;
+ /// Returns true if the request is using a secure
+ /// connection. Returns false if no secure connection
+ /// is used, or if it is not known whether a secure
+ /// connection is used.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerRequest_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequestImpl.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequestImpl.h
index fdc329be14..419adbb5e4 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequestImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerRequestImpl.h
@@ -1,142 +1,142 @@
-//
-// HTTPServerRequestImpl.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerRequestImpl
-//
-// Definition of the HTTPServerRequestImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerRequestImpl_INCLUDED
-#define Net_HTTPServerRequestImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPServerRequest.h"
-#include "Poco/Net/HTTPServerResponseImpl.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/AutoPtr.h"
-#include <istream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerSession;
-class HTTPServerParams;
-class StreamSocket;
-
-
-class Net_API HTTPServerRequestImpl: public HTTPServerRequest
- /// This subclass of HTTPServerRequest is used for
- /// representing server-side HTTP requests.
- ///
- /// A HTTPServerRequest is passed to the
- /// handleRequest() method of HTTPRequestHandler.
-{
-public:
- HTTPServerRequestImpl(HTTPServerResponseImpl& response, HTTPServerSession& session, HTTPServerParams* pParams);
- /// Creates the HTTPServerRequestImpl, using the
- /// given HTTPServerSession.
-
- ~HTTPServerRequestImpl();
- /// Destroys the HTTPServerRequestImpl.
-
- std::istream& stream();
- /// Returns the input stream for reading
- /// the request body.
- ///
- /// The stream is valid until the HTTPServerRequestImpl
- /// object is destroyed.
-
- const SocketAddress& clientAddress() const;
- /// Returns the client's address.
-
- const SocketAddress& serverAddress() const;
- /// Returns the server's address.
-
- const HTTPServerParams& serverParams() const;
- /// Returns a reference to the server parameters.
-
- HTTPServerResponse& response() const;
- /// Returns a reference to the associated response.
-
- bool secure() const;
- /// Returns true if the request is using a secure
- /// connection. Returns false if no secure connection
- /// is used, or if it is not known whether a secure
- /// connection is used.
-
- StreamSocket& socket();
- /// Returns a reference to the underlying socket.
-
- StreamSocket detachSocket();
- /// Returns the underlying socket after detaching
- /// it from the server session.
-
- HTTPServerSession& session();
- /// Returns the underlying HTTPServerSession.
-
-private:
- HTTPServerResponseImpl& _response;
- HTTPServerSession& _session;
- std::istream* _pStream;
- Poco::AutoPtr<HTTPServerParams> _pParams;
- SocketAddress _clientAddress;
- SocketAddress _serverAddress;
-};
-
-
-//
-// inlines
-//
-inline std::istream& HTTPServerRequestImpl::stream()
-{
- poco_check_ptr (_pStream);
-
- return *_pStream;
-}
-
-
-inline const SocketAddress& HTTPServerRequestImpl::clientAddress() const
-{
- return _clientAddress;
-}
-
-
-inline const SocketAddress& HTTPServerRequestImpl::serverAddress() const
-{
- return _serverAddress;
-}
-
-
-inline const HTTPServerParams& HTTPServerRequestImpl::serverParams() const
-{
- return *_pParams;
-}
-
-
-inline HTTPServerResponse& HTTPServerRequestImpl::response() const
-{
- return _response;
-}
-
-
-inline HTTPServerSession& HTTPServerRequestImpl::session()
-{
- return _session;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerRequestImpl_INCLUDED
+//
+// HTTPServerRequestImpl.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerRequestImpl
+//
+// Definition of the HTTPServerRequestImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerRequestImpl_INCLUDED
+#define Net_HTTPServerRequestImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPServerRequest.h"
+#include "Poco/Net/HTTPServerResponseImpl.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/AutoPtr.h"
+#include <istream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerSession;
+class HTTPServerParams;
+class StreamSocket;
+
+
+class Net_API HTTPServerRequestImpl: public HTTPServerRequest
+ /// This subclass of HTTPServerRequest is used for
+ /// representing server-side HTTP requests.
+ ///
+ /// A HTTPServerRequest is passed to the
+ /// handleRequest() method of HTTPRequestHandler.
+{
+public:
+ HTTPServerRequestImpl(HTTPServerResponseImpl& response, HTTPServerSession& session, HTTPServerParams* pParams);
+ /// Creates the HTTPServerRequestImpl, using the
+ /// given HTTPServerSession.
+
+ ~HTTPServerRequestImpl();
+ /// Destroys the HTTPServerRequestImpl.
+
+ std::istream& stream();
+ /// Returns the input stream for reading
+ /// the request body.
+ ///
+ /// The stream is valid until the HTTPServerRequestImpl
+ /// object is destroyed.
+
+ const SocketAddress& clientAddress() const;
+ /// Returns the client's address.
+
+ const SocketAddress& serverAddress() const;
+ /// Returns the server's address.
+
+ const HTTPServerParams& serverParams() const;
+ /// Returns a reference to the server parameters.
+
+ HTTPServerResponse& response() const;
+ /// Returns a reference to the associated response.
+
+ bool secure() const;
+ /// Returns true if the request is using a secure
+ /// connection. Returns false if no secure connection
+ /// is used, or if it is not known whether a secure
+ /// connection is used.
+
+ StreamSocket& socket();
+ /// Returns a reference to the underlying socket.
+
+ StreamSocket detachSocket();
+ /// Returns the underlying socket after detaching
+ /// it from the server session.
+
+ HTTPServerSession& session();
+ /// Returns the underlying HTTPServerSession.
+
+private:
+ HTTPServerResponseImpl& _response;
+ HTTPServerSession& _session;
+ std::istream* _pStream;
+ Poco::AutoPtr<HTTPServerParams> _pParams;
+ SocketAddress _clientAddress;
+ SocketAddress _serverAddress;
+};
+
+
+//
+// inlines
+//
+inline std::istream& HTTPServerRequestImpl::stream()
+{
+ poco_check_ptr (_pStream);
+
+ return *_pStream;
+}
+
+
+inline const SocketAddress& HTTPServerRequestImpl::clientAddress() const
+{
+ return _clientAddress;
+}
+
+
+inline const SocketAddress& HTTPServerRequestImpl::serverAddress() const
+{
+ return _serverAddress;
+}
+
+
+inline const HTTPServerParams& HTTPServerRequestImpl::serverParams() const
+{
+ return *_pParams;
+}
+
+
+inline HTTPServerResponse& HTTPServerRequestImpl::response() const
+{
+ return _response;
+}
+
+
+inline HTTPServerSession& HTTPServerRequestImpl::session()
+{
+ return _session;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerRequestImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponse.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponse.h
index ca6f9293e5..7d89ffbb7e 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponse.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponse.h
@@ -1,127 +1,127 @@
-//
-// HTTPServerResponse.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerResponse
-//
-// Definition of the HTTPServerResponse class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerResponse_INCLUDED
-#define Net_HTTPServerResponse_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPResponse.h"
-#include <cstddef>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerSession;
-class HTTPCookie;
-
-
-class Net_API HTTPServerResponse: public HTTPResponse
- /// This subclass of HTTPResponse is used for
- /// representing server-side HTTP responses.
- ///
- /// A HTTPServerResponse is passed to the
- /// handleRequest() method of HTTPRequestHandler.
- ///
- /// handleRequest() must set a status code
- /// and optional reason phrase, set headers
- /// as necessary, and provide a message body.
-{
-public:
- HTTPServerResponse();
- /// Creates the HTTPServerResponse.
-
- ~HTTPServerResponse();
- /// Destroys the HTTPServerResponse.
-
- virtual void sendContinue() = 0;
- /// Sends a 100 Continue response to the
- /// client.
-
- virtual std::ostream& send() = 0;
- /// Sends the response header to the client and
- /// returns an output stream for sending the
- /// response body.
- ///
- /// The returned stream is valid until the response
- /// object is destroyed.
- ///
- /// Must not be called after beginSend(), sendFile(), sendBuffer()
- /// or redirect() has been called.
-
- virtual std::pair<std::ostream *, std::ostream *> beginSend() = 0;
- /// Sends the response headers to the client
- /// but do not finish headers with \r\n,
- /// allowing to continue sending additional header fields.
- ///
- /// Returns an output streams for sending the remaining headers
- /// and response body.
- ///
- /// Must not be called after send(), sendFile(), sendBuffer()
- /// or redirect() has been called.
-
- virtual void sendFile(const std::string& path, const std::string& mediaType) = 0;
- /// Sends the response header to the client, followed
- /// by the content of the given file.
- ///
- /// Must not be called after send(), sendBuffer()
- /// or redirect() has been called.
- ///
- /// Throws a FileNotFoundException if the file
- /// cannot be found, or an OpenFileException if
- /// the file cannot be opened.
-
- virtual void sendBuffer(const void* pBuffer, std::size_t length) = 0;
- /// Sends the response header to the client, followed
- /// by the contents of the given buffer.
- ///
- /// The Content-Length header of the response is set
- /// to length and chunked transfer encoding is disabled.
- ///
- /// If both the HTTP message header and body (from the
- /// given buffer) fit into one single network packet, the
- /// complete response can be sent in one network packet.
- ///
- /// Must not be called after send(), sendFile()
- /// or redirect() has been called.
-
- virtual void redirect(const std::string& uri, HTTPStatus status = HTTP_FOUND) = 0;
- /// Sets the status code, which must be one of
- /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302),
- /// or HTTP_SEE_OTHER (303),
- /// and sets the "Location" header field
- /// to the given URI, which according to
- /// the HTTP specification, must be absolute.
- ///
- /// Must not be called after send() has been called.
-
- virtual void requireAuthentication(const std::string& realm) = 0;
- /// Sets the status code to 401 (Unauthorized)
- /// and sets the "WWW-Authenticate" header field
- /// according to the given realm.
-
- virtual bool sent() const = 0;
- /// Returns true if the response (header) has been sent.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerResponse_INCLUDED
+//
+// HTTPServerResponse.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerResponse
+//
+// Definition of the HTTPServerResponse class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerResponse_INCLUDED
+#define Net_HTTPServerResponse_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPResponse.h"
+#include <cstddef>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerSession;
+class HTTPCookie;
+
+
+class Net_API HTTPServerResponse: public HTTPResponse
+ /// This subclass of HTTPResponse is used for
+ /// representing server-side HTTP responses.
+ ///
+ /// A HTTPServerResponse is passed to the
+ /// handleRequest() method of HTTPRequestHandler.
+ ///
+ /// handleRequest() must set a status code
+ /// and optional reason phrase, set headers
+ /// as necessary, and provide a message body.
+{
+public:
+ HTTPServerResponse();
+ /// Creates the HTTPServerResponse.
+
+ ~HTTPServerResponse();
+ /// Destroys the HTTPServerResponse.
+
+ virtual void sendContinue() = 0;
+ /// Sends a 100 Continue response to the
+ /// client.
+
+ virtual std::ostream& send() = 0;
+ /// Sends the response header to the client and
+ /// returns an output stream for sending the
+ /// response body.
+ ///
+ /// The returned stream is valid until the response
+ /// object is destroyed.
+ ///
+ /// Must not be called after beginSend(), sendFile(), sendBuffer()
+ /// or redirect() has been called.
+
+ virtual std::pair<std::ostream *, std::ostream *> beginSend() = 0;
+ /// Sends the response headers to the client
+ /// but do not finish headers with \r\n,
+ /// allowing to continue sending additional header fields.
+ ///
+ /// Returns an output streams for sending the remaining headers
+ /// and response body.
+ ///
+ /// Must not be called after send(), sendFile(), sendBuffer()
+ /// or redirect() has been called.
+
+ virtual void sendFile(const std::string& path, const std::string& mediaType) = 0;
+ /// Sends the response header to the client, followed
+ /// by the content of the given file.
+ ///
+ /// Must not be called after send(), sendBuffer()
+ /// or redirect() has been called.
+ ///
+ /// Throws a FileNotFoundException if the file
+ /// cannot be found, or an OpenFileException if
+ /// the file cannot be opened.
+
+ virtual void sendBuffer(const void* pBuffer, std::size_t length) = 0;
+ /// Sends the response header to the client, followed
+ /// by the contents of the given buffer.
+ ///
+ /// The Content-Length header of the response is set
+ /// to length and chunked transfer encoding is disabled.
+ ///
+ /// If both the HTTP message header and body (from the
+ /// given buffer) fit into one single network packet, the
+ /// complete response can be sent in one network packet.
+ ///
+ /// Must not be called after send(), sendFile()
+ /// or redirect() has been called.
+
+ virtual void redirect(const std::string& uri, HTTPStatus status = HTTP_FOUND) = 0;
+ /// Sets the status code, which must be one of
+ /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302),
+ /// or HTTP_SEE_OTHER (303),
+ /// and sets the "Location" header field
+ /// to the given URI, which according to
+ /// the HTTP specification, must be absolute.
+ ///
+ /// Must not be called after send() has been called.
+
+ virtual void requireAuthentication(const std::string& realm) = 0;
+ /// Sets the status code to 401 (Unauthorized)
+ /// and sets the "WWW-Authenticate" header field
+ /// according to the given realm.
+
+ virtual bool sent() const = 0;
+ /// Returns true if the response (header) has been sent.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerResponse_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponseImpl.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponseImpl.h
index 3adfbfb7db..0210cb830f 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponseImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerResponseImpl.h
@@ -1,151 +1,151 @@
-//
-// HTTPServerResponseImpl.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerResponseImpl
-//
-// Definition of the HTTPServerResponseImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerResponseImpl_INCLUDED
-#define Net_HTTPServerResponseImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPServerResponse.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPServerSession;
-class HTTPServerRequestImpl;
-
-
-class Net_API HTTPServerResponseImpl: public HTTPServerResponse
- /// This subclass of HTTPServerResponse is used for
- /// representing server-side HTTP responses.
- ///
- /// A HTTPServerResponse is passed to the
- /// handleRequest() method of HTTPRequestHandler.
- ///
- /// handleRequest() must set a status code
- /// and optional reason phrase, set headers
- /// as necessary, and provide a message body.
-{
-public:
- HTTPServerResponseImpl(HTTPServerSession& session);
- /// Creates the HTTPServerResponseImpl.
-
- ~HTTPServerResponseImpl();
- /// Destroys the HTTPServerResponseImpl.
-
- void sendContinue();
- /// Sends a 100 Continue response to the
- /// client.
-
- std::ostream& send();
- /// Sends the response header to the client and
- /// returns an output stream for sending the
- /// response body.
- ///
- /// The returned stream is valid until the response
- /// object is destroyed.
- ///
- /// Must not be called after beginSend(), sendFile(), sendBuffer()
- /// or redirect() has been called.
-
- std::pair<std::ostream *, std::ostream *> beginSend();
- /// Sends the response headers to the client
- /// but do not finish headers with \r\n,
- /// allowing to continue sending additional header fields.
- ///
- /// Returns an output streams for sending the remaining headers
- /// and response body.
- ///
- /// Must not be called after send(), sendFile(), sendBuffer()
- /// or redirect() has been called.
-
- void sendFile(const std::string& path, const std::string& mediaType);
- /// Sends the response header to the client, followed
- /// by the content of the given file.
- ///
- /// Must not be called after send(), sendBuffer()
- /// or redirect() has been called.
- ///
- /// Throws a FileNotFoundException if the file
- /// cannot be found, or an OpenFileException if
- /// the file cannot be opened.
-
- void sendBuffer(const void* pBuffer, std::size_t length);
- /// Sends the response header to the client, followed
- /// by the contents of the given buffer.
- ///
- /// The Content-Length header of the response is set
- /// to length and chunked transfer encoding is disabled.
- ///
- /// If both the HTTP message header and body (from the
- /// given buffer) fit into one single network packet, the
- /// complete response can be sent in one network packet.
- ///
- /// Must not be called after send(), sendFile()
- /// or redirect() has been called.
-
- void redirect(const std::string& uri, HTTPStatus status = HTTP_FOUND);
- /// Sets the status code, which must be one of
- /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302),
- /// or HTTP_SEE_OTHER (303),
- /// and sets the "Location" header field
- /// to the given URI, which according to
- /// the HTTP specification, must be absolute.
- ///
- /// Must not be called after send() has been called.
-
- void requireAuthentication(const std::string& realm);
- /// Sets the status code to 401 (Unauthorized)
- /// and sets the "WWW-Authenticate" header field
- /// according to the given realm.
-
- bool sent() const;
- /// Returns true if the response (header) has been sent.
-
-protected:
- void attachRequest(HTTPServerRequestImpl* pRequest);
-
-private:
- HTTPServerSession& _session;
- HTTPServerRequestImpl* _pRequest;
- std::ostream* _pStream;
- std::ostream* _pHeaderStream;
-
- friend class HTTPServerRequestImpl;
-};
-
-
-//
-// inlines
-//
-inline bool HTTPServerResponseImpl::sent() const
-{
- return _pStream != 0;
-}
-
-
-inline void HTTPServerResponseImpl::attachRequest(HTTPServerRequestImpl* pRequest)
-{
- _pRequest = pRequest;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerResponseImpl_INCLUDED
+//
+// HTTPServerResponseImpl.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerResponseImpl
+//
+// Definition of the HTTPServerResponseImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerResponseImpl_INCLUDED
+#define Net_HTTPServerResponseImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPServerResponse.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPServerSession;
+class HTTPServerRequestImpl;
+
+
+class Net_API HTTPServerResponseImpl: public HTTPServerResponse
+ /// This subclass of HTTPServerResponse is used for
+ /// representing server-side HTTP responses.
+ ///
+ /// A HTTPServerResponse is passed to the
+ /// handleRequest() method of HTTPRequestHandler.
+ ///
+ /// handleRequest() must set a status code
+ /// and optional reason phrase, set headers
+ /// as necessary, and provide a message body.
+{
+public:
+ HTTPServerResponseImpl(HTTPServerSession& session);
+ /// Creates the HTTPServerResponseImpl.
+
+ ~HTTPServerResponseImpl();
+ /// Destroys the HTTPServerResponseImpl.
+
+ void sendContinue();
+ /// Sends a 100 Continue response to the
+ /// client.
+
+ std::ostream& send();
+ /// Sends the response header to the client and
+ /// returns an output stream for sending the
+ /// response body.
+ ///
+ /// The returned stream is valid until the response
+ /// object is destroyed.
+ ///
+ /// Must not be called after beginSend(), sendFile(), sendBuffer()
+ /// or redirect() has been called.
+
+ std::pair<std::ostream *, std::ostream *> beginSend();
+ /// Sends the response headers to the client
+ /// but do not finish headers with \r\n,
+ /// allowing to continue sending additional header fields.
+ ///
+ /// Returns an output streams for sending the remaining headers
+ /// and response body.
+ ///
+ /// Must not be called after send(), sendFile(), sendBuffer()
+ /// or redirect() has been called.
+
+ void sendFile(const std::string& path, const std::string& mediaType);
+ /// Sends the response header to the client, followed
+ /// by the content of the given file.
+ ///
+ /// Must not be called after send(), sendBuffer()
+ /// or redirect() has been called.
+ ///
+ /// Throws a FileNotFoundException if the file
+ /// cannot be found, or an OpenFileException if
+ /// the file cannot be opened.
+
+ void sendBuffer(const void* pBuffer, std::size_t length);
+ /// Sends the response header to the client, followed
+ /// by the contents of the given buffer.
+ ///
+ /// The Content-Length header of the response is set
+ /// to length and chunked transfer encoding is disabled.
+ ///
+ /// If both the HTTP message header and body (from the
+ /// given buffer) fit into one single network packet, the
+ /// complete response can be sent in one network packet.
+ ///
+ /// Must not be called after send(), sendFile()
+ /// or redirect() has been called.
+
+ void redirect(const std::string& uri, HTTPStatus status = HTTP_FOUND);
+ /// Sets the status code, which must be one of
+ /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302),
+ /// or HTTP_SEE_OTHER (303),
+ /// and sets the "Location" header field
+ /// to the given URI, which according to
+ /// the HTTP specification, must be absolute.
+ ///
+ /// Must not be called after send() has been called.
+
+ void requireAuthentication(const std::string& realm);
+ /// Sets the status code to 401 (Unauthorized)
+ /// and sets the "WWW-Authenticate" header field
+ /// according to the given realm.
+
+ bool sent() const;
+ /// Returns true if the response (header) has been sent.
+
+protected:
+ void attachRequest(HTTPServerRequestImpl* pRequest);
+
+private:
+ HTTPServerSession& _session;
+ HTTPServerRequestImpl* _pRequest;
+ std::ostream* _pStream;
+ std::ostream* _pHeaderStream;
+
+ friend class HTTPServerRequestImpl;
+};
+
+
+//
+// inlines
+//
+inline bool HTTPServerResponseImpl::sent() const
+{
+ return _pStream != 0;
+}
+
+
+inline void HTTPServerResponseImpl::attachRequest(HTTPServerRequestImpl* pRequest)
+{
+ _pRequest = pRequest;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerResponseImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerSession.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerSession.h
index 092c1329b2..8b169bf556 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPServerSession.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPServerSession.h
@@ -1,76 +1,76 @@
-//
-// HTTPServerSession.h
-//
-// Library: Net
-// Package: HTTPServer
-// Module: HTTPServerSession
-//
-// Definition of the HTTPServerSession class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPServerSession_INCLUDED
-#define Net_HTTPServerSession_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPSession.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/Net/HTTPServerSession.h"
-#include "Poco/Net/HTTPServerParams.h"
-#include "Poco/Timespan.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPServerSession: public HTTPSession
- /// This class handles the server side of a
- /// HTTP session. It is used internally by
- /// HTTPServer.
-{
-public:
- HTTPServerSession(const StreamSocket& socket, HTTPServerParams::Ptr pParams);
- /// Creates the HTTPServerSession.
-
- virtual ~HTTPServerSession();
- /// Destroys the HTTPServerSession.
-
- bool hasMoreRequests();
- /// Returns true if there are requests available.
-
- bool canKeepAlive() const;
- /// Returns true if the session can be kept alive.
-
- SocketAddress clientAddress();
- /// Returns the client's address.
-
- SocketAddress serverAddress();
- /// Returns the server's address.
-
-private:
- bool _firstRequest;
- Poco::Timespan _keepAliveTimeout;
- int _maxKeepAliveRequests;
-};
-
-
-//
-// inlines
-//
-inline bool HTTPServerSession::canKeepAlive() const
-{
- return _maxKeepAliveRequests != 0;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPServerSession_INCLUDED
+//
+// HTTPServerSession.h
+//
+// Library: Net
+// Package: HTTPServer
+// Module: HTTPServerSession
+//
+// Definition of the HTTPServerSession class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPServerSession_INCLUDED
+#define Net_HTTPServerSession_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPSession.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/Net/HTTPServerSession.h"
+#include "Poco/Net/HTTPServerParams.h"
+#include "Poco/Timespan.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPServerSession: public HTTPSession
+ /// This class handles the server side of a
+ /// HTTP session. It is used internally by
+ /// HTTPServer.
+{
+public:
+ HTTPServerSession(const StreamSocket& socket, HTTPServerParams::Ptr pParams);
+ /// Creates the HTTPServerSession.
+
+ virtual ~HTTPServerSession();
+ /// Destroys the HTTPServerSession.
+
+ bool hasMoreRequests();
+ /// Returns true if there are requests available.
+
+ bool canKeepAlive() const;
+ /// Returns true if the session can be kept alive.
+
+ SocketAddress clientAddress();
+ /// Returns the client's address.
+
+ SocketAddress serverAddress();
+ /// Returns the server's address.
+
+private:
+ bool _firstRequest;
+ Poco::Timespan _keepAliveTimeout;
+ int _maxKeepAliveRequests;
+};
+
+
+//
+// inlines
+//
+inline bool HTTPServerSession::canKeepAlive() const
+{
+ return _maxKeepAliveRequests != 0;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPServerSession_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPSession.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPSession.h
index 79f0f374f2..666f6f6267 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPSession.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPSession.h
@@ -1,251 +1,251 @@
-//
-// HTTPSession.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPSession
-//
-// Definition of the HTTPSession class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPSession_INCLUDED
-#define Net_HTTPSession_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Timespan.h"
-#include "Poco/Exception.h"
-#include "Poco/Any.h"
-#include "Poco/Buffer.h"
-#include <ios>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPSession
- /// HTTPSession implements basic HTTP session management
- /// for both HTTP clients and HTTP servers.
- ///
- /// HTTPSession implements buffering for HTTP connections, as well
- /// as specific support for the various HTTP stream classes.
- ///
- /// This class can not be instantiated. HTTPClientSession or
- /// HTTPServerSession must be used instead.
-{
-public:
- void setKeepAlive(bool keepAlive);
- /// Sets the keep-alive flag for this session.
+//
+// HTTPSession.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPSession
+//
+// Definition of the HTTPSession class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPSession_INCLUDED
+#define Net_HTTPSession_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Timespan.h"
+#include "Poco/Exception.h"
+#include "Poco/Any.h"
+#include "Poco/Buffer.h"
+#include <ios>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPSession
+ /// HTTPSession implements basic HTTP session management
+ /// for both HTTP clients and HTTP servers.
+ ///
+ /// HTTPSession implements buffering for HTTP connections, as well
+ /// as specific support for the various HTTP stream classes.
+ ///
+ /// This class can not be instantiated. HTTPClientSession or
+ /// HTTPServerSession must be used instead.
+{
+public:
+ void setKeepAlive(bool keepAlive);
+ /// Sets the keep-alive flag for this session.
+ ///
+ /// If the keep-alive flag is enabled, persistent
+ /// HTTP/1.1 connections are supported.
+
+ bool getKeepAlive() const;
+ /// Returns the value of the keep-alive flag for
+ /// this session.
+
+ void setTimeout(const Poco::Timespan& timeout);
+ /// Sets the timeout for the HTTP session.
+
+ void setTimeout(const Poco::Timespan& connectionTimeout, const Poco::Timespan& sendTimeout, const Poco::Timespan& receiveTimeout);
+ /// Sets different timeouts for the HTTP session.
+
+ Poco::Timespan getTimeout() const;
+ /// Returns the timeout for the HTTP session.
+
+ bool connected() const;
+ /// Returns true if the underlying socket is connected.
+
+ virtual void abort();
+ /// Aborts a session in progress by shutting down
+ /// and closing the underlying socket.
+
+ const Poco::Exception* networkException() const;
+ /// If sending or receiving data over the underlying
+ /// socket connection resulted in an exception, a
+ /// pointer to this exception is returned.
///
- /// If the keep-alive flag is enabled, persistent
- /// HTTP/1.1 connections are supported.
-
- bool getKeepAlive() const;
- /// Returns the value of the keep-alive flag for
- /// this session.
-
- void setTimeout(const Poco::Timespan& timeout);
- /// Sets the timeout for the HTTP session.
-
- void setTimeout(const Poco::Timespan& connectionTimeout, const Poco::Timespan& sendTimeout, const Poco::Timespan& receiveTimeout);
- /// Sets different timeouts for the HTTP session.
-
- Poco::Timespan getTimeout() const;
- /// Returns the timeout for the HTTP session.
-
- bool connected() const;
- /// Returns true if the underlying socket is connected.
-
- virtual void abort();
- /// Aborts a session in progress by shutting down
- /// and closing the underlying socket.
-
- const Poco::Exception* networkException() const;
- /// If sending or receiving data over the underlying
- /// socket connection resulted in an exception, a
- /// pointer to this exception is returned.
- ///
- /// Otherwise, NULL is returned.
-
- void attachSessionData(const Poco::Any& data);
- /// Allows to attach an application-specific data
- /// item to the session.
- ///
- /// On the server side, this can be used to manage
- /// data that must be maintained over the entire
- /// lifetime of a persistent connection (that is,
- /// multiple requests sent over the same connection).
-
- const Poco::Any& sessionData() const;
- /// Returns the data attached with attachSessionData(),
- /// or an empty Poco::Any if no user data has been
- /// attached.
-
- enum
- {
- HTTP_PORT = 80
- };
-
- StreamSocket detachSocket();
- /// Detaches the socket from the session.
- ///
- /// The socket is returned, and a new, uninitialized socket is
- /// attached to the session.
-
- StreamSocket& socket();
- /// Returns a reference to the underlying socket.
-
- void drainBuffer(Poco::Buffer<char>& buffer);
- /// Copies all bytes remaining in the internal buffer to the
- /// given Poco::Buffer, resizing it as necessary.
- ///
- /// This is usually used together with detachSocket() to
- /// obtain any data already read from the socket, but not
- /// yet processed.
-
-protected:
- HTTPSession();
- /// Creates a HTTP session using an
- /// unconnected stream socket.
-
- HTTPSession(const StreamSocket& socket);
- /// Creates a HTTP session using the
- /// given socket. The session takes ownership
- /// of the socket and closes it when it's no
- /// longer used.
-
- HTTPSession(const StreamSocket& socket, bool keepAlive);
- /// Creates a HTTP session using the
- /// given socket. The session takes ownership
- /// of the socket and closes it when it's no
- /// longer used.
-
- virtual ~HTTPSession();
- /// Destroys the HTTPSession and closes the
- /// underlying socket.
-
- int get();
- /// Returns the next byte in the buffer.
- /// Reads more data from the socket if there are
- /// no bytes left in the buffer.
-
- int peek();
- /// Peeks at the next character in the buffer.
- /// Reads more data from the socket if there are
- /// no bytes left in the buffer.
-
- virtual int read(char* buffer, std::streamsize length);
- /// Reads up to length bytes.
- ///
- /// If there is data in the buffer, this data
- /// is returned. Otherwise, data is read from
- /// the socket to avoid unnecessary buffering.
-
- virtual int write(const char* buffer, std::streamsize length);
- /// Writes data to the socket.
-
- int receive(char* buffer, int length);
- /// Reads up to length bytes.
-
- int buffered() const;
- /// Returns the number of bytes in the buffer.
-
- void refill();
- /// Refills the internal buffer.
-
- virtual void connect(const SocketAddress& address);
- /// Connects the underlying socket to the given address
- /// and sets the socket's receive timeout.
-
- void attachSocket(const StreamSocket& socket);
- /// Attaches a socket to the session, replacing the
- /// previously attached socket.
-
- void close();
- /// Closes the underlying socket.
-
- void setException(const Poco::Exception& exc);
- /// Stores a clone of the exception.
-
- void clearException();
- /// Clears the stored exception.
-
-private:
- enum
- {
- HTTP_DEFAULT_TIMEOUT = 60000000,
- HTTP_DEFAULT_CONNECTION_TIMEOUT = 30000000
- };
-
- HTTPSession(const HTTPSession&);
- HTTPSession& operator = (const HTTPSession&);
-
- StreamSocket _socket;
- char* _pBuffer;
- char* _pCurrent;
- char* _pEnd;
- bool _keepAlive;
- Poco::Timespan _connectionTimeout;
- Poco::Timespan _receiveTimeout;
- Poco::Timespan _sendTimeout;
- Poco::Exception* _pException;
- Poco::Any _data;
-
- friend class HTTPStreamBuf;
- friend class HTTPHeaderStreamBuf;
- friend class HTTPFixedLengthStreamBuf;
- friend class HTTPChunkedStreamBuf;
-};
-
-
-//
-// inlines
-//
-inline bool HTTPSession::getKeepAlive() const
-{
- return _keepAlive;
-}
-
-
-inline Poco::Timespan HTTPSession::getTimeout() const
-{
- return _receiveTimeout;
-}
-
-
-inline StreamSocket& HTTPSession::socket()
-{
- return _socket;
-}
-
-
-inline const Poco::Exception* HTTPSession::networkException() const
-{
- return _pException;
-}
-
-
-inline int HTTPSession::buffered() const
-{
- return static_cast<int>(_pEnd - _pCurrent);
-}
-
-
-inline const Poco::Any& HTTPSession::sessionData() const
-{
- return _data;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPSession_INCLUDED
+ /// Otherwise, NULL is returned.
+
+ void attachSessionData(const Poco::Any& data);
+ /// Allows to attach an application-specific data
+ /// item to the session.
+ ///
+ /// On the server side, this can be used to manage
+ /// data that must be maintained over the entire
+ /// lifetime of a persistent connection (that is,
+ /// multiple requests sent over the same connection).
+
+ const Poco::Any& sessionData() const;
+ /// Returns the data attached with attachSessionData(),
+ /// or an empty Poco::Any if no user data has been
+ /// attached.
+
+ enum
+ {
+ HTTP_PORT = 80
+ };
+
+ StreamSocket detachSocket();
+ /// Detaches the socket from the session.
+ ///
+ /// The socket is returned, and a new, uninitialized socket is
+ /// attached to the session.
+
+ StreamSocket& socket();
+ /// Returns a reference to the underlying socket.
+
+ void drainBuffer(Poco::Buffer<char>& buffer);
+ /// Copies all bytes remaining in the internal buffer to the
+ /// given Poco::Buffer, resizing it as necessary.
+ ///
+ /// This is usually used together with detachSocket() to
+ /// obtain any data already read from the socket, but not
+ /// yet processed.
+
+protected:
+ HTTPSession();
+ /// Creates a HTTP session using an
+ /// unconnected stream socket.
+
+ HTTPSession(const StreamSocket& socket);
+ /// Creates a HTTP session using the
+ /// given socket. The session takes ownership
+ /// of the socket and closes it when it's no
+ /// longer used.
+
+ HTTPSession(const StreamSocket& socket, bool keepAlive);
+ /// Creates a HTTP session using the
+ /// given socket. The session takes ownership
+ /// of the socket and closes it when it's no
+ /// longer used.
+
+ virtual ~HTTPSession();
+ /// Destroys the HTTPSession and closes the
+ /// underlying socket.
+
+ int get();
+ /// Returns the next byte in the buffer.
+ /// Reads more data from the socket if there are
+ /// no bytes left in the buffer.
+
+ int peek();
+ /// Peeks at the next character in the buffer.
+ /// Reads more data from the socket if there are
+ /// no bytes left in the buffer.
+
+ virtual int read(char* buffer, std::streamsize length);
+ /// Reads up to length bytes.
+ ///
+ /// If there is data in the buffer, this data
+ /// is returned. Otherwise, data is read from
+ /// the socket to avoid unnecessary buffering.
+
+ virtual int write(const char* buffer, std::streamsize length);
+ /// Writes data to the socket.
+
+ int receive(char* buffer, int length);
+ /// Reads up to length bytes.
+
+ int buffered() const;
+ /// Returns the number of bytes in the buffer.
+
+ void refill();
+ /// Refills the internal buffer.
+
+ virtual void connect(const SocketAddress& address);
+ /// Connects the underlying socket to the given address
+ /// and sets the socket's receive timeout.
+
+ void attachSocket(const StreamSocket& socket);
+ /// Attaches a socket to the session, replacing the
+ /// previously attached socket.
+
+ void close();
+ /// Closes the underlying socket.
+
+ void setException(const Poco::Exception& exc);
+ /// Stores a clone of the exception.
+
+ void clearException();
+ /// Clears the stored exception.
+
+private:
+ enum
+ {
+ HTTP_DEFAULT_TIMEOUT = 60000000,
+ HTTP_DEFAULT_CONNECTION_TIMEOUT = 30000000
+ };
+
+ HTTPSession(const HTTPSession&);
+ HTTPSession& operator = (const HTTPSession&);
+
+ StreamSocket _socket;
+ char* _pBuffer;
+ char* _pCurrent;
+ char* _pEnd;
+ bool _keepAlive;
+ Poco::Timespan _connectionTimeout;
+ Poco::Timespan _receiveTimeout;
+ Poco::Timespan _sendTimeout;
+ Poco::Exception* _pException;
+ Poco::Any _data;
+
+ friend class HTTPStreamBuf;
+ friend class HTTPHeaderStreamBuf;
+ friend class HTTPFixedLengthStreamBuf;
+ friend class HTTPChunkedStreamBuf;
+};
+
+
+//
+// inlines
+//
+inline bool HTTPSession::getKeepAlive() const
+{
+ return _keepAlive;
+}
+
+
+inline Poco::Timespan HTTPSession::getTimeout() const
+{
+ return _receiveTimeout;
+}
+
+
+inline StreamSocket& HTTPSession::socket()
+{
+ return _socket;
+}
+
+
+inline const Poco::Exception* HTTPSession::networkException() const
+{
+ return _pException;
+}
+
+
+inline int HTTPSession::buffered() const
+{
+ return static_cast<int>(_pEnd - _pCurrent);
+}
+
+
+inline const Poco::Any& HTTPSession::sessionData() const
+{
+ return _data;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPSession_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionFactory.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionFactory.h
index 3da31f375e..3bc7d15d2c 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionFactory.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionFactory.h
@@ -1,155 +1,155 @@
-//
-// HTTPSessionFactory.h
-//
-// Library: Net
-// Package: HTTPClient
-// Module: HTTPSessionFactory
-//
-// Definition of the HTTPSessionFactory class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPSessionFactoryMgr_INCLUDED
-#define Net_HTTPSessionFactoryMgr_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Mutex.h"
-#include "Poco/URI.h"
-#include "Poco/SingletonHolder.h"
-#include "Poco/SharedPtr.h"
-#include <map>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPSessionInstantiator;
-class HTTPClientSession;
-
-
-class Net_API HTTPSessionFactory
- /// A factory for HTTPClientSession objects.
- ///
- /// Given a URI, this class creates a HTTPClientSession
- /// (for http) or a HTTPSClientSession (for https) for
- /// accessing the URI.
- ///
- /// The actual work of creating the session is done by
- /// HTTPSessionInstantiator objects that must be registered
- /// with a HTTPSessionFactory.
-{
-public:
- HTTPSessionFactory();
- /// Creates the HTTPSessionFactory.
-
- HTTPSessionFactory(const std::string& proxyHost, Poco::UInt16 proxyPort);
- /// Creates the HTTPSessionFactory and sets the proxy host and port.
-
- ~HTTPSessionFactory();
- /// Destroys the HTTPSessionFactory.
-
- void registerProtocol(const std::string& protocol, HTTPSessionInstantiator* pSessionInstantiator);
- /// Registers the session instantiator for the given protocol.
- /// The factory takes ownership of the SessionInstantiator.
- ///
- /// A protocol can be registered more than once. However, only the instantiator
- /// that has been registered first is used. Also, for each call to
- /// registerProtocol(), a corresponding call to unregisterProtocol() must
- /// be made.
-
- void unregisterProtocol(const std::string& protocol);
- /// Removes the registration of a protocol.
- ///
- /// Throws a NotFoundException if no instantiator has been registered
- /// for the given protocol.
-
- bool supportsProtocol(const std::string& protocol);
- /// Returns true if a session instantiator for the given protocol has been registered.
-
- HTTPClientSession* createClientSession(const Poco::URI& uri);
- /// Creates a client session for the given uri scheme. Throws exception if no factory is registered for the given scheme
-
- const std::string& proxyHost() const;
- /// Returns the proxy host, if one has been set, or an empty string otherwise.
-
- Poco::UInt16 proxyPort() const;
- /// Returns the proxy port number, if one has been set, or zero otherwise.
-
- void setProxy(const std::string& proxyHost, Poco::UInt16 proxyPort);
- /// Sets the proxy host and port number.
-
- void setProxyCredentials(const std::string& username, const std::string& password);
- /// Sets the username and password for proxy authorization (Basic auth only).
-
- const std::string& proxyUsername() const;
- /// Returns the username for proxy authorization.
-
- const std::string& proxyPassword() const;
- /// Returns the password for proxy authorization.
-
- static HTTPSessionFactory& defaultFactory();
- /// Returns the default HTTPSessionFactory.
-
-private:
- struct InstantiatorInfo
- {
- HTTPSessionInstantiator* pIn;
- int cnt;
- InstantiatorInfo(HTTPSessionInstantiator* pInst);
- // no destructor!!! this is by purpose, don't add one!
- };
-
-
- HTTPSessionFactory(const HTTPSessionFactory&);
- HTTPSessionFactory& operator = (const HTTPSessionFactory&);
-
- typedef std::map<std::string, InstantiatorInfo> Instantiators;
-
- Instantiators _instantiators;
- std::string _proxyHost;
- Poco::UInt16 _proxyPort;
- std::string _proxyUsername;
- std::string _proxyPassword;
-
- mutable Poco::FastMutex _mutex;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPSessionFactory::proxyHost() const
-{
- return _proxyHost;
-}
-
-
-inline Poco::UInt16 HTTPSessionFactory::proxyPort() const
-{
- return _proxyPort;
-}
-
-
-inline const std::string& HTTPSessionFactory::proxyUsername() const
-{
- return _proxyUsername;
-}
-
-
-inline const std::string& HTTPSessionFactory::proxyPassword() const
-{
- return _proxyPassword;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPSessionFactoryMgr_INCLUDED
+//
+// HTTPSessionFactory.h
+//
+// Library: Net
+// Package: HTTPClient
+// Module: HTTPSessionFactory
+//
+// Definition of the HTTPSessionFactory class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPSessionFactoryMgr_INCLUDED
+#define Net_HTTPSessionFactoryMgr_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Mutex.h"
+#include "Poco/URI.h"
+#include "Poco/SingletonHolder.h"
+#include "Poco/SharedPtr.h"
+#include <map>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPSessionInstantiator;
+class HTTPClientSession;
+
+
+class Net_API HTTPSessionFactory
+ /// A factory for HTTPClientSession objects.
+ ///
+ /// Given a URI, this class creates a HTTPClientSession
+ /// (for http) or a HTTPSClientSession (for https) for
+ /// accessing the URI.
+ ///
+ /// The actual work of creating the session is done by
+ /// HTTPSessionInstantiator objects that must be registered
+ /// with a HTTPSessionFactory.
+{
+public:
+ HTTPSessionFactory();
+ /// Creates the HTTPSessionFactory.
+
+ HTTPSessionFactory(const std::string& proxyHost, Poco::UInt16 proxyPort);
+ /// Creates the HTTPSessionFactory and sets the proxy host and port.
+
+ ~HTTPSessionFactory();
+ /// Destroys the HTTPSessionFactory.
+
+ void registerProtocol(const std::string& protocol, HTTPSessionInstantiator* pSessionInstantiator);
+ /// Registers the session instantiator for the given protocol.
+ /// The factory takes ownership of the SessionInstantiator.
+ ///
+ /// A protocol can be registered more than once. However, only the instantiator
+ /// that has been registered first is used. Also, for each call to
+ /// registerProtocol(), a corresponding call to unregisterProtocol() must
+ /// be made.
+
+ void unregisterProtocol(const std::string& protocol);
+ /// Removes the registration of a protocol.
+ ///
+ /// Throws a NotFoundException if no instantiator has been registered
+ /// for the given protocol.
+
+ bool supportsProtocol(const std::string& protocol);
+ /// Returns true if a session instantiator for the given protocol has been registered.
+
+ HTTPClientSession* createClientSession(const Poco::URI& uri);
+ /// Creates a client session for the given uri scheme. Throws exception if no factory is registered for the given scheme
+
+ const std::string& proxyHost() const;
+ /// Returns the proxy host, if one has been set, or an empty string otherwise.
+
+ Poco::UInt16 proxyPort() const;
+ /// Returns the proxy port number, if one has been set, or zero otherwise.
+
+ void setProxy(const std::string& proxyHost, Poco::UInt16 proxyPort);
+ /// Sets the proxy host and port number.
+
+ void setProxyCredentials(const std::string& username, const std::string& password);
+ /// Sets the username and password for proxy authorization (Basic auth only).
+
+ const std::string& proxyUsername() const;
+ /// Returns the username for proxy authorization.
+
+ const std::string& proxyPassword() const;
+ /// Returns the password for proxy authorization.
+
+ static HTTPSessionFactory& defaultFactory();
+ /// Returns the default HTTPSessionFactory.
+
+private:
+ struct InstantiatorInfo
+ {
+ HTTPSessionInstantiator* pIn;
+ int cnt;
+ InstantiatorInfo(HTTPSessionInstantiator* pInst);
+ // no destructor!!! this is by purpose, don't add one!
+ };
+
+
+ HTTPSessionFactory(const HTTPSessionFactory&);
+ HTTPSessionFactory& operator = (const HTTPSessionFactory&);
+
+ typedef std::map<std::string, InstantiatorInfo> Instantiators;
+
+ Instantiators _instantiators;
+ std::string _proxyHost;
+ Poco::UInt16 _proxyPort;
+ std::string _proxyUsername;
+ std::string _proxyPassword;
+
+ mutable Poco::FastMutex _mutex;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPSessionFactory::proxyHost() const
+{
+ return _proxyHost;
+}
+
+
+inline Poco::UInt16 HTTPSessionFactory::proxyPort() const
+{
+ return _proxyPort;
+}
+
+
+inline const std::string& HTTPSessionFactory::proxyUsername() const
+{
+ return _proxyUsername;
+}
+
+
+inline const std::string& HTTPSessionFactory::proxyPassword() const
+{
+ return _proxyPassword;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPSessionFactoryMgr_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionInstantiator.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionInstantiator.h
index d58ad2688c..cbb6ee82f2 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionInstantiator.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPSessionInstantiator.h
@@ -1,117 +1,117 @@
-//
-// HTTPSessionInstantiator.h
-//
-// Library: Net
-// Package: HTTPClient
-// Module: HTTPSessionInstantiator
-//
-// Definition of the HTTPSessionInstantiator class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPSessionInstantiator_INCLUDED
-#define Net_HTTPSessionInstantiator_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPSession.h"
-#include "Poco/URI.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPClientSession;
-
-
-class Net_API HTTPSessionInstantiator
- /// A factory for HTTPClientSession objects.
- ///
- /// Creates a HTTP session for a given URI.
- /// A HTTPSessionInstantiator is not used directly.
- /// Instances are registered with a HTTPSessionFactory,
- /// and used through it.
-{
-public:
- HTTPSessionInstantiator();
- /// Creates the HTTPSessionInstantiator.
-
- virtual ~HTTPSessionInstantiator();
- /// Destroys the HTTPSessionInstantiator.
-
- virtual HTTPClientSession* createClientSession(const Poco::URI& uri);
- /// Creates a HTTPClientSession for the given URI.
-
- static void registerInstantiator();
- /// Registers the instantiator with the global HTTPSessionFactory.
-
- static void unregisterInstantiator();
- /// Unregisters the factory with the global HTTPSessionFactory.
-
-protected:
- void setProxy(const std::string& host, Poco::UInt16 port);
- /// Sets the proxy host and port.
- /// Called by HTTPSessionFactory.
-
- const std::string& proxyHost() const;
- /// Returns the proxy post.
-
- Poco::UInt16 proxyPort() const;
- /// Returns the proxy port.
-
- void setProxyCredentials(const std::string& username, const std::string& password);
- /// Sets the username and password for proxy authorization (Basic auth only).
-
- const std::string& proxyUsername() const;
- /// Returns the username for proxy authorization.
-
- const std::string& proxyPassword() const;
- /// Returns the password for proxy authorization.
-
-private:
- std::string _proxyHost;
- Poco::UInt16 _proxyPort;
- std::string _proxyUsername;
- std::string _proxyPassword;
-
- friend class HTTPSessionFactory;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HTTPSessionInstantiator::proxyHost() const
-{
- return _proxyHost;
-}
-
-
-inline Poco::UInt16 HTTPSessionInstantiator::proxyPort() const
-{
- return _proxyPort;
-}
-
-
-inline const std::string& HTTPSessionInstantiator::proxyUsername() const
-{
- return _proxyUsername;
-}
-
-
-inline const std::string& HTTPSessionInstantiator::proxyPassword() const
-{
- return _proxyPassword;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPSessionInstantiator_INCLUDED
+//
+// HTTPSessionInstantiator.h
+//
+// Library: Net
+// Package: HTTPClient
+// Module: HTTPSessionInstantiator
+//
+// Definition of the HTTPSessionInstantiator class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPSessionInstantiator_INCLUDED
+#define Net_HTTPSessionInstantiator_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPSession.h"
+#include "Poco/URI.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPClientSession;
+
+
+class Net_API HTTPSessionInstantiator
+ /// A factory for HTTPClientSession objects.
+ ///
+ /// Creates a HTTP session for a given URI.
+ /// A HTTPSessionInstantiator is not used directly.
+ /// Instances are registered with a HTTPSessionFactory,
+ /// and used through it.
+{
+public:
+ HTTPSessionInstantiator();
+ /// Creates the HTTPSessionInstantiator.
+
+ virtual ~HTTPSessionInstantiator();
+ /// Destroys the HTTPSessionInstantiator.
+
+ virtual HTTPClientSession* createClientSession(const Poco::URI& uri);
+ /// Creates a HTTPClientSession for the given URI.
+
+ static void registerInstantiator();
+ /// Registers the instantiator with the global HTTPSessionFactory.
+
+ static void unregisterInstantiator();
+ /// Unregisters the factory with the global HTTPSessionFactory.
+
+protected:
+ void setProxy(const std::string& host, Poco::UInt16 port);
+ /// Sets the proxy host and port.
+ /// Called by HTTPSessionFactory.
+
+ const std::string& proxyHost() const;
+ /// Returns the proxy post.
+
+ Poco::UInt16 proxyPort() const;
+ /// Returns the proxy port.
+
+ void setProxyCredentials(const std::string& username, const std::string& password);
+ /// Sets the username and password for proxy authorization (Basic auth only).
+
+ const std::string& proxyUsername() const;
+ /// Returns the username for proxy authorization.
+
+ const std::string& proxyPassword() const;
+ /// Returns the password for proxy authorization.
+
+private:
+ std::string _proxyHost;
+ Poco::UInt16 _proxyPort;
+ std::string _proxyUsername;
+ std::string _proxyPassword;
+
+ friend class HTTPSessionFactory;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HTTPSessionInstantiator::proxyHost() const
+{
+ return _proxyHost;
+}
+
+
+inline Poco::UInt16 HTTPSessionInstantiator::proxyPort() const
+{
+ return _proxyPort;
+}
+
+
+inline const std::string& HTTPSessionInstantiator::proxyUsername() const
+{
+ return _proxyUsername;
+}
+
+
+inline const std::string& HTTPSessionInstantiator::proxyPassword() const
+{
+ return _proxyPassword;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPSessionInstantiator_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPStream.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPStream.h
index 314bd707a3..94d52095c5 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPStream.h
@@ -1,103 +1,103 @@
-//
-// HTTPStream.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPStream
-//
-// Definition of the HTTPStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPStream_INCLUDED
-#define Net_HTTPStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPBasicStreamBuf.h"
-#include "Poco/MemoryPool.h"
-#include <cstddef>
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPSession;
-
-
-class Net_API HTTPStreamBuf: public HTTPBasicStreamBuf
- /// This is the streambuf class used for reading and writing
- /// HTTP message bodies.
-{
-public:
- typedef HTTPBasicStreamBuf::openmode openmode;
-
- HTTPStreamBuf(HTTPSession& session, openmode mode);
- ~HTTPStreamBuf();
- void close();
-
-protected:
- int readFromDevice(char* buffer, std::streamsize length);
- int writeToDevice(const char* buffer, std::streamsize length);
-
-private:
- HTTPSession& _session;
- openmode _mode;
-};
-
-
-class Net_API HTTPIOS: public virtual std::ios
- /// The base class for HTTPInputStream.
-{
-public:
- HTTPIOS(HTTPSession& session, HTTPStreamBuf::openmode mode);
- ~HTTPIOS();
- HTTPStreamBuf* rdbuf();
-
-protected:
- HTTPStreamBuf _buf;
-};
-
-
-class Net_API HTTPInputStream: public HTTPIOS, public std::istream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPInputStream(HTTPSession& session);
- ~HTTPInputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-class Net_API HTTPOutputStream: public HTTPIOS, public std::ostream
- /// This class is for internal use by HTTPSession only.
-{
-public:
- HTTPOutputStream(HTTPSession& session);
- ~HTTPOutputStream();
-
- void* operator new(std::size_t size);
- void operator delete(void* ptr);
-
-private:
- static Poco::MemoryPool _pool;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPStream_INCLUDED
+//
+// HTTPStream.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPStream
+//
+// Definition of the HTTPStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPStream_INCLUDED
+#define Net_HTTPStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPBasicStreamBuf.h"
+#include "Poco/MemoryPool.h"
+#include <cstddef>
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPSession;
+
+
+class Net_API HTTPStreamBuf: public HTTPBasicStreamBuf
+ /// This is the streambuf class used for reading and writing
+ /// HTTP message bodies.
+{
+public:
+ typedef HTTPBasicStreamBuf::openmode openmode;
+
+ HTTPStreamBuf(HTTPSession& session, openmode mode);
+ ~HTTPStreamBuf();
+ void close();
+
+protected:
+ int readFromDevice(char* buffer, std::streamsize length);
+ int writeToDevice(const char* buffer, std::streamsize length);
+
+private:
+ HTTPSession& _session;
+ openmode _mode;
+};
+
+
+class Net_API HTTPIOS: public virtual std::ios
+ /// The base class for HTTPInputStream.
+{
+public:
+ HTTPIOS(HTTPSession& session, HTTPStreamBuf::openmode mode);
+ ~HTTPIOS();
+ HTTPStreamBuf* rdbuf();
+
+protected:
+ HTTPStreamBuf _buf;
+};
+
+
+class Net_API HTTPInputStream: public HTTPIOS, public std::istream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPInputStream(HTTPSession& session);
+ ~HTTPInputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+class Net_API HTTPOutputStream: public HTTPIOS, public std::ostream
+ /// This class is for internal use by HTTPSession only.
+{
+public:
+ HTTPOutputStream(HTTPSession& session);
+ ~HTTPOutputStream();
+
+ void* operator new(std::size_t size);
+ void operator delete(void* ptr);
+
+private:
+ static Poco::MemoryPool _pool;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HTTPStreamFactory.h b/contrib/libs/poco/Net/include/Poco/Net/HTTPStreamFactory.h
index 951cb5cbc7..df4a5f3336 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HTTPStreamFactory.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HTTPStreamFactory.h
@@ -1,92 +1,92 @@
-//
-// HTTPStreamFactory.h
-//
-// Library: Net
-// Package: HTTP
-// Module: HTTPStreamFactory
-//
-// Definition of the HTTPStreamFactory class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HTTPStreamFactory_INCLUDED
-#define Net_HTTPStreamFactory_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/HTTPSession.h"
-#include "Poco/URIStreamFactory.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HTTPStreamFactory: public Poco::URIStreamFactory
- /// An implementation of the URIStreamFactory interface
- /// that handles Hyper-Text Transfer Protocol (http) URIs.
-{
-public:
- HTTPStreamFactory();
- /// Creates the HTTPStreamFactory.
-
- HTTPStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort = HTTPSession::HTTP_PORT);
- /// Creates the HTTPStreamFactory.
- ///
- /// HTTP connections will use the given proxy.
-
- HTTPStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort, const std::string& proxyUsername, const std::string& proxyPassword);
- /// Creates the HTTPStreamFactory.
- ///
- /// HTTP connections will use the given proxy and
- /// will be authorized against the proxy using Basic authentication
- /// with the given proxyUsername and proxyPassword.
-
- virtual ~HTTPStreamFactory();
- /// Destroys the HTTPStreamFactory.
-
- virtual std::istream* open(const Poco::URI& uri);
- /// Creates and opens a HTTP stream for the given URI.
- /// The URI must be a http://... URI.
- ///
- /// Throws a NetException if anything goes wrong.
- ///
- /// Redirect responses are handled and the redirect
- /// location is automatically resolved, as long
- /// as the redirect location is still accessible
- /// via the HTTP protocol. If a redirection to
- /// a non http://... URI is received, a
- /// UnsupportedRedirectException exception is thrown.
- /// The offending URI can then be obtained via the message()
- /// method of UnsupportedRedirectException.
-
- static void registerFactory();
- /// Registers the HTTPStreamFactory with the
- /// default URIStreamOpener instance.
-
- static void unregisterFactory();
- /// Unregisters the HTTPStreamFactory with the
- /// default URIStreamOpener instance.
-
-private:
- enum
- {
- MAX_REDIRECTS = 10
- };
-
- std::string _proxyHost;
- Poco::UInt16 _proxyPort;
- std::string _proxyUsername;
- std::string _proxyPassword;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HTTPStreamFactory_INCLUDED
+//
+// HTTPStreamFactory.h
+//
+// Library: Net
+// Package: HTTP
+// Module: HTTPStreamFactory
+//
+// Definition of the HTTPStreamFactory class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HTTPStreamFactory_INCLUDED
+#define Net_HTTPStreamFactory_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/HTTPSession.h"
+#include "Poco/URIStreamFactory.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HTTPStreamFactory: public Poco::URIStreamFactory
+ /// An implementation of the URIStreamFactory interface
+ /// that handles Hyper-Text Transfer Protocol (http) URIs.
+{
+public:
+ HTTPStreamFactory();
+ /// Creates the HTTPStreamFactory.
+
+ HTTPStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort = HTTPSession::HTTP_PORT);
+ /// Creates the HTTPStreamFactory.
+ ///
+ /// HTTP connections will use the given proxy.
+
+ HTTPStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort, const std::string& proxyUsername, const std::string& proxyPassword);
+ /// Creates the HTTPStreamFactory.
+ ///
+ /// HTTP connections will use the given proxy and
+ /// will be authorized against the proxy using Basic authentication
+ /// with the given proxyUsername and proxyPassword.
+
+ virtual ~HTTPStreamFactory();
+ /// Destroys the HTTPStreamFactory.
+
+ virtual std::istream* open(const Poco::URI& uri);
+ /// Creates and opens a HTTP stream for the given URI.
+ /// The URI must be a http://... URI.
+ ///
+ /// Throws a NetException if anything goes wrong.
+ ///
+ /// Redirect responses are handled and the redirect
+ /// location is automatically resolved, as long
+ /// as the redirect location is still accessible
+ /// via the HTTP protocol. If a redirection to
+ /// a non http://... URI is received, a
+ /// UnsupportedRedirectException exception is thrown.
+ /// The offending URI can then be obtained via the message()
+ /// method of UnsupportedRedirectException.
+
+ static void registerFactory();
+ /// Registers the HTTPStreamFactory with the
+ /// default URIStreamOpener instance.
+
+ static void unregisterFactory();
+ /// Unregisters the HTTPStreamFactory with the
+ /// default URIStreamOpener instance.
+
+private:
+ enum
+ {
+ MAX_REDIRECTS = 10
+ };
+
+ std::string _proxyHost;
+ Poco::UInt16 _proxyPort;
+ std::string _proxyUsername;
+ std::string _proxyPassword;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HTTPStreamFactory_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/HostEntry.h b/contrib/libs/poco/Net/include/Poco/Net/HostEntry.h
index 1093201861..23cccdffb5 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/HostEntry.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/HostEntry.h
@@ -1,115 +1,115 @@
-//
-// HostEntry.h
-//
-// Library: Net
-// Package: NetCore
-// Module: HostEntry
-//
-// Definition of the HostEntry class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_HostEntry_INCLUDED
-#define Net_HostEntry_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketDefs.h"
-#include "Poco/Net/IPAddress.h"
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API HostEntry
- /// This class stores information about a host
- /// such as host name, alias names and a list
- /// of IP addresses.
-{
-public:
- typedef std::vector<std::string> AliasList;
- typedef std::vector<IPAddress> AddressList;
-
- HostEntry();
- /// Creates an empty HostEntry.
-
- HostEntry(struct hostent* entry);
- /// Creates the HostEntry from the data in a hostent structure.
-
-#if defined(POCO_HAVE_IPv6) || defined(POCO_HAVE_ADDRINFO)
- HostEntry(struct addrinfo* info);
- /// Creates the HostEntry from the data in an addrinfo structure.
-#endif
-
-#if defined(POCO_VXWORKS)
- HostEntry(const std::string& name, const IPAddress& addr);
-#endif
-
- HostEntry(const HostEntry& entry);
- /// Creates the HostEntry by copying another one.
-
- HostEntry& operator = (const HostEntry& entry);
- /// Assigns another HostEntry.
-
- void swap(HostEntry& hostEntry);
- /// Swaps the HostEntry with another one.
-
- ~HostEntry();
- /// Destroys the HostEntry.
-
- const std::string& name() const;
- /// Returns the canonical host name.
-
- const AliasList& aliases() const;
- /// Returns a vector containing alias names for
- /// the host name.
-
- const AddressList& addresses() const;
- /// Returns a vector containing the IPAddresses
- /// for the host.
-
-private:
- std::string _name;
- AliasList _aliases;
- AddressList _addresses;
-};
-
-
-//
-// inlines
-//
-inline const std::string& HostEntry::name() const
-{
- return _name;
-}
-
-
-inline const HostEntry::AliasList& HostEntry::aliases() const
-{
- return _aliases;
-}
-
-
-inline const HostEntry::AddressList& HostEntry::addresses() const
-{
- return _addresses;
-}
-
-
-inline void swap(HostEntry& h1, HostEntry& h2)
-{
- h1.swap(h2);
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_HostEntry_INCLUDED
+//
+// HostEntry.h
+//
+// Library: Net
+// Package: NetCore
+// Module: HostEntry
+//
+// Definition of the HostEntry class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_HostEntry_INCLUDED
+#define Net_HostEntry_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketDefs.h"
+#include "Poco/Net/IPAddress.h"
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API HostEntry
+ /// This class stores information about a host
+ /// such as host name, alias names and a list
+ /// of IP addresses.
+{
+public:
+ typedef std::vector<std::string> AliasList;
+ typedef std::vector<IPAddress> AddressList;
+
+ HostEntry();
+ /// Creates an empty HostEntry.
+
+ HostEntry(struct hostent* entry);
+ /// Creates the HostEntry from the data in a hostent structure.
+
+#if defined(POCO_HAVE_IPv6) || defined(POCO_HAVE_ADDRINFO)
+ HostEntry(struct addrinfo* info);
+ /// Creates the HostEntry from the data in an addrinfo structure.
+#endif
+
+#if defined(POCO_VXWORKS)
+ HostEntry(const std::string& name, const IPAddress& addr);
+#endif
+
+ HostEntry(const HostEntry& entry);
+ /// Creates the HostEntry by copying another one.
+
+ HostEntry& operator = (const HostEntry& entry);
+ /// Assigns another HostEntry.
+
+ void swap(HostEntry& hostEntry);
+ /// Swaps the HostEntry with another one.
+
+ ~HostEntry();
+ /// Destroys the HostEntry.
+
+ const std::string& name() const;
+ /// Returns the canonical host name.
+
+ const AliasList& aliases() const;
+ /// Returns a vector containing alias names for
+ /// the host name.
+
+ const AddressList& addresses() const;
+ /// Returns a vector containing the IPAddresses
+ /// for the host.
+
+private:
+ std::string _name;
+ AliasList _aliases;
+ AddressList _addresses;
+};
+
+
+//
+// inlines
+//
+inline const std::string& HostEntry::name() const
+{
+ return _name;
+}
+
+
+inline const HostEntry::AliasList& HostEntry::aliases() const
+{
+ return _aliases;
+}
+
+
+inline const HostEntry::AddressList& HostEntry::addresses() const
+{
+ return _addresses;
+}
+
+
+inline void swap(HostEntry& h1, HostEntry& h2)
+{
+ h1.swap(h2);
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_HostEntry_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPClient.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPClient.h
index 333f4de58c..31fb5202af 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPClient.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPClient.h
@@ -1,97 +1,97 @@
-//
-// ICMPClient.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPClient
-//
-// Definition of the ICMPClient class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPClient_INCLUDED
-#define Net_ICMPClient_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/ICMPSocket.h"
-#include "Poco/Net/ICMPEventArgs.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/BasicEvent.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPClient
- /// This class provides ICMP Ping functionality.
+//
+// ICMPClient.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPClient
+//
+// Definition of the ICMPClient class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPClient_INCLUDED
+#define Net_ICMPClient_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/ICMPSocket.h"
+#include "Poco/Net/ICMPEventArgs.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/BasicEvent.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPClient
+ /// This class provides ICMP Ping functionality.
+ ///
+ /// The events are available when class is instantiated
+ /// and non-static member functions are called.
///
- /// The events are available when class is instantiated
- /// and non-static member functions are called.
- ///
- /// A "lightweight" alternative is direct (without instantiation)
- /// use of static member functions.
-{
-public:
- mutable Poco::BasicEvent<ICMPEventArgs> pingBegin;
- mutable Poco::BasicEvent<ICMPEventArgs> pingReply;
- mutable Poco::BasicEvent<ICMPEventArgs> pingError;
- mutable Poco::BasicEvent<ICMPEventArgs> pingEnd;
-
- explicit ICMPClient(SocketAddress::Family family, int dataSize = 48, int ttl = 128, int timeout = 50000);
- /// Creates an ICMP client.
-
- ~ICMPClient();
- /// Destroys the ICMP client.
-
- int ping(SocketAddress& address, int repeat = 1) const;
- /// Pings the specified address [repeat] times.
- /// Notifications are posted for events.
- ///
- /// Returns the number of valid replies.
-
- int ping(const std::string& address, int repeat = 1) const;
- /// Calls ICMPClient::ping(SocketAddress&, int) and
- /// returns the result.
- ///
- /// Returns the number of valid replies.
-
- static int ping(SocketAddress& address,
- SocketAddress::Family family,
- int repeat = 1,
- int dataSize = 48,
- int ttl = 128,
- int timeout = 50000);
- /// Pings the specified address [repeat] times.
- /// Notifications are not posted for events.
- ///
- /// Returns the number of valid replies.
-
- static int pingIPv4(const std::string& address,
- int repeat = 1,
- int dataSize = 48,
- int ttl = 128,
- int timeout = 50000);
- /// Calls ICMPClient::ping(SocketAddress&, int) and
- /// returns the result.
- ///
- /// Returns the number of valid replies.
-
-private:
- mutable SocketAddress::Family _family;
- int _dataSize;
- int _ttl;
- int _timeout;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ICMPClient_INCLUDED
+ /// A "lightweight" alternative is direct (without instantiation)
+ /// use of static member functions.
+{
+public:
+ mutable Poco::BasicEvent<ICMPEventArgs> pingBegin;
+ mutable Poco::BasicEvent<ICMPEventArgs> pingReply;
+ mutable Poco::BasicEvent<ICMPEventArgs> pingError;
+ mutable Poco::BasicEvent<ICMPEventArgs> pingEnd;
+
+ explicit ICMPClient(SocketAddress::Family family, int dataSize = 48, int ttl = 128, int timeout = 50000);
+ /// Creates an ICMP client.
+
+ ~ICMPClient();
+ /// Destroys the ICMP client.
+
+ int ping(SocketAddress& address, int repeat = 1) const;
+ /// Pings the specified address [repeat] times.
+ /// Notifications are posted for events.
+ ///
+ /// Returns the number of valid replies.
+
+ int ping(const std::string& address, int repeat = 1) const;
+ /// Calls ICMPClient::ping(SocketAddress&, int) and
+ /// returns the result.
+ ///
+ /// Returns the number of valid replies.
+
+ static int ping(SocketAddress& address,
+ SocketAddress::Family family,
+ int repeat = 1,
+ int dataSize = 48,
+ int ttl = 128,
+ int timeout = 50000);
+ /// Pings the specified address [repeat] times.
+ /// Notifications are not posted for events.
+ ///
+ /// Returns the number of valid replies.
+
+ static int pingIPv4(const std::string& address,
+ int repeat = 1,
+ int dataSize = 48,
+ int ttl = 128,
+ int timeout = 50000);
+ /// Calls ICMPClient::ping(SocketAddress&, int) and
+ /// returns the result.
+ ///
+ /// Returns the number of valid replies.
+
+private:
+ mutable SocketAddress::Family _family;
+ int _dataSize;
+ int _ttl;
+ int _timeout;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ICMPClient_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPEventArgs.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPEventArgs.h
index ea2de2047c..2a663eb32f 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPEventArgs.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPEventArgs.h
@@ -1,163 +1,163 @@
-//
-// ICMPEventArgs.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPEventArgs
-//
-// Definition of ICMPEventArgs.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPEventArgs_INCLUDED
-#define Net_ICMPEventArgs_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketAddress.h"
-#include <vector>
-#include <algorithm>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPEventArgs
- /// The purpose of the ICMPEventArgs class is to be used as template parameter
- /// to instantiate event members in ICMPClient class.
- /// When clients register for an event notification, the reference to the class is
- /// passed to the handler function to provide information about the event.
-{
-public:
- ICMPEventArgs(const SocketAddress& address, int repetitions, int dataSize, int ttl);
- /// Creates ICMPEventArgs.
-
- virtual ~ICMPEventArgs();
- /// Destroys ICMPEventArgs.
-
- std::string hostName() const;
- /// Tries to resolve the target IP address into host name.
- /// If unsuccessful, all exceptions are silently ignored and
- /// the IP address is returned.
-
- std::string hostAddress() const;
- /// Returns the target IP address.
-
- int repetitions() const;
- /// Returns the number of repetitions for the ping operation.
-
- int dataSize() const;
- /// Returns the packet data size in bytes.
-
- int ttl() const;
- /// Returns time to live.
-
- int sent() const;
- /// Returns the number of packets sent.
-
- int received() const;
- /// Returns the number of packets received.
-
- int replyTime(int index = -1) const;
- /// Returns the reply time for the request specified with index.
- /// If index == -1 (default), returns the most recent reply time.
-
- const std::string& error(int index = -1) const;
- /// Returns the error string for the request specified with index.
- /// If index == -1 (default), returns the most recent error string.
-
- int minRTT() const;
- /// Returns the minimum round trip time for a sequence of requests.
-
- int maxRTT() const;
- /// Returns the maximum round trip time for a sequence of requests.
-
- int avgRTT() const;
- /// Returns the average round trip time for a sequence of requests.
-
- float percent() const;
- /// Returns the success percentage for a sequence of requests.
-
-private:
- ICMPEventArgs();
-
- void setRepetitions(int repetitions);
- void setDataSize(int sz);
- void setTTL(int timeToLive);
- void setReplyTime(int index, int time);
- void setError(int index, const std::string& text);
- ICMPEventArgs& operator ++ ();
- ICMPEventArgs operator ++ (int);
-
- SocketAddress _address;
- int _sent;
- int _dataSize;
- int _ttl;
- std::vector<int> _rtt;
- std::vector<std::string> _errors;
-
- friend class ICMPClient;
-};
-
-
-//
-// inlines
-//
-inline int ICMPEventArgs::repetitions() const
-{
- return (int) _rtt.size();
-}
-
-
-inline void ICMPEventArgs::setDataSize(int sz)
-{
- _dataSize = sz;
-}
-
-
-inline int ICMPEventArgs::dataSize() const
-{
- return _dataSize;
-}
-
-
-inline void ICMPEventArgs::setTTL(int timeToLive)
-{
- _ttl = timeToLive;
-}
-
-
-inline int ICMPEventArgs::ttl() const
-{
- return _ttl;
-}
-
-
-inline int ICMPEventArgs::sent() const
-{
- return _sent;
-}
-
-
-inline int ICMPEventArgs::minRTT() const
-{
- return *std::min_element(_rtt.begin(), _rtt.end());
-}
-
-
-inline int ICMPEventArgs::maxRTT() const
-{
- return *std::max_element(_rtt.begin(), _rtt.end());
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif
+//
+// ICMPEventArgs.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPEventArgs
+//
+// Definition of ICMPEventArgs.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPEventArgs_INCLUDED
+#define Net_ICMPEventArgs_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketAddress.h"
+#include <vector>
+#include <algorithm>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPEventArgs
+ /// The purpose of the ICMPEventArgs class is to be used as template parameter
+ /// to instantiate event members in ICMPClient class.
+ /// When clients register for an event notification, the reference to the class is
+ /// passed to the handler function to provide information about the event.
+{
+public:
+ ICMPEventArgs(const SocketAddress& address, int repetitions, int dataSize, int ttl);
+ /// Creates ICMPEventArgs.
+
+ virtual ~ICMPEventArgs();
+ /// Destroys ICMPEventArgs.
+
+ std::string hostName() const;
+ /// Tries to resolve the target IP address into host name.
+ /// If unsuccessful, all exceptions are silently ignored and
+ /// the IP address is returned.
+
+ std::string hostAddress() const;
+ /// Returns the target IP address.
+
+ int repetitions() const;
+ /// Returns the number of repetitions for the ping operation.
+
+ int dataSize() const;
+ /// Returns the packet data size in bytes.
+
+ int ttl() const;
+ /// Returns time to live.
+
+ int sent() const;
+ /// Returns the number of packets sent.
+
+ int received() const;
+ /// Returns the number of packets received.
+
+ int replyTime(int index = -1) const;
+ /// Returns the reply time for the request specified with index.
+ /// If index == -1 (default), returns the most recent reply time.
+
+ const std::string& error(int index = -1) const;
+ /// Returns the error string for the request specified with index.
+ /// If index == -1 (default), returns the most recent error string.
+
+ int minRTT() const;
+ /// Returns the minimum round trip time for a sequence of requests.
+
+ int maxRTT() const;
+ /// Returns the maximum round trip time for a sequence of requests.
+
+ int avgRTT() const;
+ /// Returns the average round trip time for a sequence of requests.
+
+ float percent() const;
+ /// Returns the success percentage for a sequence of requests.
+
+private:
+ ICMPEventArgs();
+
+ void setRepetitions(int repetitions);
+ void setDataSize(int sz);
+ void setTTL(int timeToLive);
+ void setReplyTime(int index, int time);
+ void setError(int index, const std::string& text);
+ ICMPEventArgs& operator ++ ();
+ ICMPEventArgs operator ++ (int);
+
+ SocketAddress _address;
+ int _sent;
+ int _dataSize;
+ int _ttl;
+ std::vector<int> _rtt;
+ std::vector<std::string> _errors;
+
+ friend class ICMPClient;
+};
+
+
+//
+// inlines
+//
+inline int ICMPEventArgs::repetitions() const
+{
+ return (int) _rtt.size();
+}
+
+
+inline void ICMPEventArgs::setDataSize(int sz)
+{
+ _dataSize = sz;
+}
+
+
+inline int ICMPEventArgs::dataSize() const
+{
+ return _dataSize;
+}
+
+
+inline void ICMPEventArgs::setTTL(int timeToLive)
+{
+ _ttl = timeToLive;
+}
+
+
+inline int ICMPEventArgs::ttl() const
+{
+ return _ttl;
+}
+
+
+inline int ICMPEventArgs::sent() const
+{
+ return _sent;
+}
+
+
+inline int ICMPEventArgs::minRTT() const
+{
+ return *std::min_element(_rtt.begin(), _rtt.end());
+}
+
+
+inline int ICMPEventArgs::maxRTT() const
+{
+ return *std::max_element(_rtt.begin(), _rtt.end());
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPPacket.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPPacket.h
index 6859506c01..52d0e87f87 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPPacket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPPacket.h
@@ -1,89 +1,89 @@
-//
-// ICMPPacket.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPPacket
-//
-// Definition of the ICMPPacket class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPPacket_INCLUDED
-#define Net_ICMPPacket_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/Net/ICMPPacketImpl.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPPacket
- /// This class is the ICMP packet abstraction.
-{
-public:
- ICMPPacket(SocketAddress::Family family, int dataSize = 48);
- /// Creates an ICMPPacket of specified family.
-
- ~ICMPPacket();
- /// Destroys the ICMPPacket.
-
- const Poco::UInt8* packet();
- /// Returns raw ICMP packet. ICMP header and data are included in the returned packet.
-
- int packetSize() const;
- /// Returns the total length of packet (header + data);
-
- Poco::UInt16 sequence() const;
- /// Returns the most recent sequence number generated.
-
- void setDataSize(int dataSize);
- /// Sets data size.
-
- int getDataSize() const;
- /// Returns data size.
-
- int maxPacketSize() const;
- /// Returns the total length of packet (header + data);
-
- struct timeval time(Poco::UInt8* buffer = 0, int length = 0) const;
- /// Returns current epoch time if either buffer or length are equal to zero.
- /// Otherwise, it extracts the time value from the supplied buffer and
- /// returns the extracted value.
- ///
- /// Supplied buffer includes IP header, ICMP header and data.
-
- bool validReplyID(Poco::UInt8* buffer, int length) const;
- /// Returns true if the extracted id is recognized
- /// (equals the process id).
- ///
- /// Supplied buffer includes IP header, ICMP header and data.
-
- std::string errorDescription(Poco::UInt8* buffer, int length);
- /// Returns error description string.
- /// If supplied buffer contains an ICMP echo reply packet, an
- /// empty string is returned indicating the absence of error.
- ///
- /// Supplied buffer includes IP header, ICMP header and data.
-
- std::string typeDescription(int typeId);
- /// Returns the description of the packet type.
-
-private:
- ICMPPacketImpl* _pImpl;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ICMPPacket_INCLUDED
+//
+// ICMPPacket.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPPacket
+//
+// Definition of the ICMPPacket class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPPacket_INCLUDED
+#define Net_ICMPPacket_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/Net/ICMPPacketImpl.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPPacket
+ /// This class is the ICMP packet abstraction.
+{
+public:
+ ICMPPacket(SocketAddress::Family family, int dataSize = 48);
+ /// Creates an ICMPPacket of specified family.
+
+ ~ICMPPacket();
+ /// Destroys the ICMPPacket.
+
+ const Poco::UInt8* packet();
+ /// Returns raw ICMP packet. ICMP header and data are included in the returned packet.
+
+ int packetSize() const;
+ /// Returns the total length of packet (header + data);
+
+ Poco::UInt16 sequence() const;
+ /// Returns the most recent sequence number generated.
+
+ void setDataSize(int dataSize);
+ /// Sets data size.
+
+ int getDataSize() const;
+ /// Returns data size.
+
+ int maxPacketSize() const;
+ /// Returns the total length of packet (header + data);
+
+ struct timeval time(Poco::UInt8* buffer = 0, int length = 0) const;
+ /// Returns current epoch time if either buffer or length are equal to zero.
+ /// Otherwise, it extracts the time value from the supplied buffer and
+ /// returns the extracted value.
+ ///
+ /// Supplied buffer includes IP header, ICMP header and data.
+
+ bool validReplyID(Poco::UInt8* buffer, int length) const;
+ /// Returns true if the extracted id is recognized
+ /// (equals the process id).
+ ///
+ /// Supplied buffer includes IP header, ICMP header and data.
+
+ std::string errorDescription(Poco::UInt8* buffer, int length);
+ /// Returns error description string.
+ /// If supplied buffer contains an ICMP echo reply packet, an
+ /// empty string is returned indicating the absence of error.
+ ///
+ /// Supplied buffer includes IP header, ICMP header and data.
+
+ std::string typeDescription(int typeId);
+ /// Returns the description of the packet type.
+
+private:
+ ICMPPacketImpl* _pImpl;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ICMPPacket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPPacketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPPacketImpl.h
index 66e74fe1a7..da6bf46484 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPPacketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPPacketImpl.h
@@ -1,141 +1,141 @@
-//
-// ICMPPacketImpl.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPPacketImpl
-//
-// Definition of the ICMPPacketImpl class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPPacketImpl_INCLUDED
-#define Net_ICMPPacketImpl_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/Net/Socket.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPPacketImpl
- /// This is the abstract class for ICMP packet implementations.
-{
-public:
- ICMPPacketImpl(int dataSize = 48);
- /// Constructor. Creates an ICMPPacketImpl.
-
- virtual ~ICMPPacketImpl();
- /// Destructor.
-
- const Poco::UInt8* packet(bool init = true);
- /// Returns raw ICMP packet.
- /// ICMP header and data are included in the packet.
- /// If init is true, initPacket() is called.
-
- virtual int packetSize() const = 0;
- /// Returns the total size of packet (ICMP header + data) in number of octets.
- /// Must be overriden.
-
- virtual int maxPacketSize() const;
- /// Returns the maximum permitted size of packet in number of octets.
-
- Poco::UInt16 sequence() const;
- /// Returns the most recent sequence number generated.
-
- void setDataSize(int dataSize);
- /// Sets data size.
-
- int getDataSize() const;
- /// Returns data size.
-
- virtual struct timeval time(Poco::UInt8* buffer = 0, int length = 0) const = 0;
- /// Returns current epoch time if either argument is equal to zero.
- /// Otherwise, it extracts the time value from the supplied buffer.
- ///
- /// Supplied buffer includes IP header, ICMP header and data.
- /// Must be overriden.
-
- virtual bool validReplyID(unsigned char* buffer, int length) const = 0;
- /// Returns true if the extracted id is recognized
- /// (i.e. equals the process id).
- ///
- /// Supplied buffer includes IP header, ICMP header and data.
- /// Must be overriden.
-
- virtual std::string errorDescription(Poco::UInt8* buffer, int length) = 0;
- /// Returns error description string.
- /// If supplied buffer contains an ICMP echo reply packet, an
- /// empty string is returned indicating the absence of error.
- ///
- /// Supplied buffer includes IP header, ICMP header and data.
- /// Must be overriden.
-
- virtual std::string typeDescription(int typeId) = 0;
- /// Returns the description of the packet type.
- /// Must be overriden.
-
- static const Poco::UInt16 MAX_PACKET_SIZE;
- static const Poco::UInt16 MAX_SEQ_VALUE;
-
-protected:
- Poco::UInt16 nextSequence();
- /// Increments sequence number and returns the new value.
-
- void resetSequence();
- /// Resets the sequence to zero.
-
- virtual void initPacket() = 0;
- /// (Re)assembles the packet.
- /// Must be overriden.
-
- Poco::UInt16 checksum(Poco::UInt16 *addr, Poco::Int32 len);
- /// Calculates the checksum for supplied buffer.
-
-private:
- Poco::UInt16 _seq;
- Poco::UInt8* _pPacket;
- int _dataSize;
-
-};
-
-
-//
-// inlines
-//
-inline Poco::UInt16 ICMPPacketImpl::sequence() const
-{
- return _seq;
-}
-
-
-inline Poco::UInt16 ICMPPacketImpl::nextSequence()
-{
- return ++_seq;
-}
-
-
-inline void ICMPPacketImpl::resetSequence()
-{
- _seq = 0;
-}
-
-
-inline int ICMPPacketImpl::maxPacketSize() const
-{
- return MAX_PACKET_SIZE;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ICMPPacketImpl_INCLUDED
+//
+// ICMPPacketImpl.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPPacketImpl
+//
+// Definition of the ICMPPacketImpl class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPPacketImpl_INCLUDED
+#define Net_ICMPPacketImpl_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/Net/Socket.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPPacketImpl
+ /// This is the abstract class for ICMP packet implementations.
+{
+public:
+ ICMPPacketImpl(int dataSize = 48);
+ /// Constructor. Creates an ICMPPacketImpl.
+
+ virtual ~ICMPPacketImpl();
+ /// Destructor.
+
+ const Poco::UInt8* packet(bool init = true);
+ /// Returns raw ICMP packet.
+ /// ICMP header and data are included in the packet.
+ /// If init is true, initPacket() is called.
+
+ virtual int packetSize() const = 0;
+ /// Returns the total size of packet (ICMP header + data) in number of octets.
+ /// Must be overriden.
+
+ virtual int maxPacketSize() const;
+ /// Returns the maximum permitted size of packet in number of octets.
+
+ Poco::UInt16 sequence() const;
+ /// Returns the most recent sequence number generated.
+
+ void setDataSize(int dataSize);
+ /// Sets data size.
+
+ int getDataSize() const;
+ /// Returns data size.
+
+ virtual struct timeval time(Poco::UInt8* buffer = 0, int length = 0) const = 0;
+ /// Returns current epoch time if either argument is equal to zero.
+ /// Otherwise, it extracts the time value from the supplied buffer.
+ ///
+ /// Supplied buffer includes IP header, ICMP header and data.
+ /// Must be overriden.
+
+ virtual bool validReplyID(unsigned char* buffer, int length) const = 0;
+ /// Returns true if the extracted id is recognized
+ /// (i.e. equals the process id).
+ ///
+ /// Supplied buffer includes IP header, ICMP header and data.
+ /// Must be overriden.
+
+ virtual std::string errorDescription(Poco::UInt8* buffer, int length) = 0;
+ /// Returns error description string.
+ /// If supplied buffer contains an ICMP echo reply packet, an
+ /// empty string is returned indicating the absence of error.
+ ///
+ /// Supplied buffer includes IP header, ICMP header and data.
+ /// Must be overriden.
+
+ virtual std::string typeDescription(int typeId) = 0;
+ /// Returns the description of the packet type.
+ /// Must be overriden.
+
+ static const Poco::UInt16 MAX_PACKET_SIZE;
+ static const Poco::UInt16 MAX_SEQ_VALUE;
+
+protected:
+ Poco::UInt16 nextSequence();
+ /// Increments sequence number and returns the new value.
+
+ void resetSequence();
+ /// Resets the sequence to zero.
+
+ virtual void initPacket() = 0;
+ /// (Re)assembles the packet.
+ /// Must be overriden.
+
+ Poco::UInt16 checksum(Poco::UInt16 *addr, Poco::Int32 len);
+ /// Calculates the checksum for supplied buffer.
+
+private:
+ Poco::UInt16 _seq;
+ Poco::UInt8* _pPacket;
+ int _dataSize;
+
+};
+
+
+//
+// inlines
+//
+inline Poco::UInt16 ICMPPacketImpl::sequence() const
+{
+ return _seq;
+}
+
+
+inline Poco::UInt16 ICMPPacketImpl::nextSequence()
+{
+ return ++_seq;
+}
+
+
+inline void ICMPPacketImpl::resetSequence()
+{
+ _seq = 0;
+}
+
+
+inline int ICMPPacketImpl::maxPacketSize() const
+{
+ return MAX_PACKET_SIZE;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ICMPPacketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPSocket.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPSocket.h
index 048fb295f9..75e049b382 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPSocket.h
@@ -1,91 +1,91 @@
-//
-// ICMPSocket.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPSocket
-//
-// Definition of the ICMPSocket class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPSocket_INCLUDED
-#define Net_ICMPSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPSocket: public Socket
- /// This class provides an interface to an
- /// ICMP client socket.
-{
-public:
- ICMPSocket(SocketAddress::Family family, int dataSize = 48, int ttl = 128, int timeout = 5000000);
- /// Creates an unconnected ICMP socket.
- ///
- /// The socket will be created for the
- /// given address family.
-
- ICMPSocket(const Socket& socket);
- /// Creates the ICMPSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a ICMPSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- ~ICMPSocket();
- /// Destroys the ICMPSocket.
-
- ICMPSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- int sendTo(const SocketAddress& address, int flags = 0);
- /// Sends an ICMP request through
- /// the socket to the given address.
- ///
- /// Returns the number of bytes sent.
-
- int receiveFrom(SocketAddress& address, int flags = 0);
- /// Receives data from the socket.
- /// Stores the address of the sender in address.
- ///
- /// Returns the time elapsed since the originating
- /// request was sent.
-
- int dataSize() const;
- /// Returns the data size in bytes.
-
- int ttl() const;
- /// Returns the Time-To-Live value.
-
- int timeout() const;
- /// Returns the socket timeout value.
-
-protected:
- ICMPSocket(SocketImpl* pImpl);
- /// Creates the Socket and attaches the given SocketImpl.
- /// The socket takes ownership of the SocketImpl.
- ///
- /// The SocketImpl must be a ICMPSocketImpl, otherwise
- /// an InvalidArgumentException will be thrown.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ICMPSocket_INCLUDED
+//
+// ICMPSocket.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPSocket
+//
+// Definition of the ICMPSocket class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPSocket_INCLUDED
+#define Net_ICMPSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPSocket: public Socket
+ /// This class provides an interface to an
+ /// ICMP client socket.
+{
+public:
+ ICMPSocket(SocketAddress::Family family, int dataSize = 48, int ttl = 128, int timeout = 5000000);
+ /// Creates an unconnected ICMP socket.
+ ///
+ /// The socket will be created for the
+ /// given address family.
+
+ ICMPSocket(const Socket& socket);
+ /// Creates the ICMPSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a ICMPSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ ~ICMPSocket();
+ /// Destroys the ICMPSocket.
+
+ ICMPSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ int sendTo(const SocketAddress& address, int flags = 0);
+ /// Sends an ICMP request through
+ /// the socket to the given address.
+ ///
+ /// Returns the number of bytes sent.
+
+ int receiveFrom(SocketAddress& address, int flags = 0);
+ /// Receives data from the socket.
+ /// Stores the address of the sender in address.
+ ///
+ /// Returns the time elapsed since the originating
+ /// request was sent.
+
+ int dataSize() const;
+ /// Returns the data size in bytes.
+
+ int ttl() const;
+ /// Returns the Time-To-Live value.
+
+ int timeout() const;
+ /// Returns the socket timeout value.
+
+protected:
+ ICMPSocket(SocketImpl* pImpl);
+ /// Creates the Socket and attaches the given SocketImpl.
+ /// The socket takes ownership of the SocketImpl.
+ ///
+ /// The SocketImpl must be a ICMPSocketImpl, otherwise
+ /// an InvalidArgumentException will be thrown.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ICMPSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPSocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPSocketImpl.h
index 911487c0d0..98ba9a2259 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPSocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPSocketImpl.h
@@ -1,94 +1,94 @@
-//
-// ICMPSocketImpl.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPSocketImpl
-//
-// Definition of the ICMPSocketImpl class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPSocketImpl_INCLUDED
-#define Net_ICMPSocketImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/RawSocketImpl.h"
-#include "Poco/Net/ICMPPacket.h"
-#include "Poco/Timestamp.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPSocketImpl: public RawSocketImpl
- /// This class implements an ICMP socket.
-{
-public:
- ICMPSocketImpl(SocketAddress::Family family, int dataSize, int ttl, int timeout);
- /// Creates an unconnected ICMP socket.
- ///
- /// The socket will be created for the given address family.
-
- int sendTo(const void*, int, const SocketAddress& address, int flags = 0);
- /// Sends an ICMP request through the socket to the given address.
- ///
- /// Returns the number of bytes sent.
-
- int receiveFrom(void*, int, SocketAddress& address, int flags = 0);
- /// Receives data from the socket.
- /// Stores the address of the sender in address.
- ///
- /// Returns the time elapsed since the originating request was sent.
-
- int dataSize() const;
- /// Returns the data size in bytes.
-
- int ttl() const;
- /// Returns the Time-To-Live value.
-
- int timeout() const;
- /// Returns the socket timeout value.
-
-protected:
- ~ICMPSocketImpl();
-
-private:
- ICMPPacket _icmpPacket;
- int _ttl;
- int _timeout;
-};
-
-
-//
-// inlines
-//
-inline int ICMPSocketImpl::dataSize() const
-{
- return _icmpPacket.getDataSize();
-}
-
-
-inline int ICMPSocketImpl::ttl() const
-{
- return _ttl;
-}
-
-
-inline int ICMPSocketImpl::timeout() const
-{
- return _timeout;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ICMPSocketImpl_INCLUDED
+//
+// ICMPSocketImpl.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPSocketImpl
+//
+// Definition of the ICMPSocketImpl class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPSocketImpl_INCLUDED
+#define Net_ICMPSocketImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/RawSocketImpl.h"
+#include "Poco/Net/ICMPPacket.h"
+#include "Poco/Timestamp.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPSocketImpl: public RawSocketImpl
+ /// This class implements an ICMP socket.
+{
+public:
+ ICMPSocketImpl(SocketAddress::Family family, int dataSize, int ttl, int timeout);
+ /// Creates an unconnected ICMP socket.
+ ///
+ /// The socket will be created for the given address family.
+
+ int sendTo(const void*, int, const SocketAddress& address, int flags = 0);
+ /// Sends an ICMP request through the socket to the given address.
+ ///
+ /// Returns the number of bytes sent.
+
+ int receiveFrom(void*, int, SocketAddress& address, int flags = 0);
+ /// Receives data from the socket.
+ /// Stores the address of the sender in address.
+ ///
+ /// Returns the time elapsed since the originating request was sent.
+
+ int dataSize() const;
+ /// Returns the data size in bytes.
+
+ int ttl() const;
+ /// Returns the Time-To-Live value.
+
+ int timeout() const;
+ /// Returns the socket timeout value.
+
+protected:
+ ~ICMPSocketImpl();
+
+private:
+ ICMPPacket _icmpPacket;
+ int _ttl;
+ int _timeout;
+};
+
+
+//
+// inlines
+//
+inline int ICMPSocketImpl::dataSize() const
+{
+ return _icmpPacket.getDataSize();
+}
+
+
+inline int ICMPSocketImpl::ttl() const
+{
+ return _ttl;
+}
+
+
+inline int ICMPSocketImpl::timeout() const
+{
+ return _timeout;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ICMPSocketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ICMPv4PacketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/ICMPv4PacketImpl.h
index eaca5a9f99..116f8c7617 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ICMPv4PacketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ICMPv4PacketImpl.h
@@ -1,173 +1,173 @@
-//
-// ICMPv4PacketImpl.h
-//
-// Library: Net
-// Package: ICMP
-// Module: ICMPv4PacketImpl
-//
-// Definition of the ICMPv4PacketImpl class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ICMPv4PacketImpl_INCLUDED
-#define Net_ICMPv4PacketImpl_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/Net/ICMPPacketImpl.h"
-#include <cstddef>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ICMPv4PacketImpl : public ICMPPacketImpl
- /// This class implements the ICMPv4 packet.
- /// Parts are based on original ICMP code by
- /// Mike Muuss
- /// U. S. Army Ballistic Research Laboratory
- /// December, 1983
-{
-public:
- // ICMPv4 header
- struct Header
- {
- Poco::UInt8 type; // ICMP packet type
- Poco::UInt8 code; // Type sub code
- Poco::UInt16 checksum;
- Poco::UInt16 id;
- Poco::UInt16 seq;
- };
-
- // compile-time shield against misalignment
-#if POCO_OS != POCO_OS_ANDROID
- poco_static_assert (offsetof(Header, code) == 0x01);
- poco_static_assert (offsetof(Header, checksum) == 0x02);
- poco_static_assert (offsetof(Header, id) == 0x04);
- poco_static_assert (offsetof(Header, seq) == 0x06);
-#endif
-
- enum MessageType
- {
- ECHO_REPLY,
- ICMP_1,
- ICMP_2,
- DESTINATION_UNREACHABLE,
- SOURCE_QUENCH,
- REDIRECT,
- ICMP_6,
- ICMP_7,
- ECHO_REQUEST,
- ICMP_9,
- ICMP_10,
- TIME_EXCEEDED,
- PARAMETER_PROBLEM,
- TIMESTAMP_REQUEST,
- TIMESTAMP_REPLY,
- INFORMATION_REQUEST,
- INFORMATION_REPLY,
- MESSAGE_TYPE_UNKNOWN, // non-standard default, must remain last but one
- MESSAGE_TYPE_LENGTH // length indicator, must remain last
- };
-
- enum DestinationUnreachableCode
- {
- NET_UNREACHABLE,
- HOST_UNREACHABLE,
- PROTOCOL_UNREACHABLE,
- PORT_UNREACHABLE,
- FRAGMENTATION_NEEDED_AND_DF_SET,
- SOURCE_ROUTE_FAILED,
- DESTINATION_UNREACHABLE_UNKNOWN, // non-standard default, must remain last but one
- DESTINATION_UNREACHABLE_LENGTH // length indicator, must remain last
- };
-
- enum RedirectMessageCode
- {
- REDIRECT_NETWORK,
- REDIRECT_HOST,
- REDIRECT_SERVICE_NETWORK,
- REDIRECT_SERVICE_HOST,
- REDIRECT_MESSAGE_UNKNOWN, // non-standard default, must remain last but one
- REDIRECT_MESSAGE_LENGTH // length indicator, must remain last
- };
-
- enum TimeExceededCode
- {
- TIME_TO_LIVE,
- FRAGMENT_REASSEMBLY,
- TIME_EXCEEDED_UNKNOWN, // non-standard default, must remain last but one
- TIME_EXCEEDED_LENGTH // length indicator, must remain last
- };
-
- enum ParameterProblemCode
- {
- POINTER_INDICATES_THE_ERROR,
- PARAMETER_PROBLEM_UNKNOWN, // non-standard default, must remain last but one
- PARAMETER_PROBLEM_LENGTH // length indicator, must remain last
- };
-
- ICMPv4PacketImpl(int dataSize = 48);
- /// Constructor. Creates an ICMPv4PacketImpl.
-
- ~ICMPv4PacketImpl();
- /// Destructor.
-
- int packetSize() const;
- /// Returns the total length of packet (header + data);
-
- struct timeval time(Poco::UInt8* buffer = 0, int length = 0) const;
- /// Returns current epoch time if either buffer or length are equal to zero.
- /// Otherwise, it extracts the time value from the supplied buffer.
- ///
- /// Buffer includes IP header, ICMP header and data.
-
- bool validReplyID(Poco::UInt8* buffer, int length) const;
- /// Returns true if the extracted id is recognized
- /// (i.e. equals the process id).
- ///
- /// Buffer includes IP header, ICMP header and data.
-
- virtual std::string errorDescription(Poco::UInt8* buffer, int length);
- /// Returns error description string.
- /// If supplied buffer contains ICMPv4 echo reply packet, an
- /// empty string is returned indicating the absence of error.
- ///
- /// Buffer includes IP header, ICMP header and data.
-
- virtual std::string typeDescription(int typeId);
- /// Returns the description of the packet type.
-
- static const Poco::UInt16 MAX_PACKET_SIZE;
- static const std::string MESSAGE_TYPE[MESSAGE_TYPE_LENGTH];
- static const Poco::UInt8 DESTINATION_UNREACHABLE_TYPE; // 3
- static const Poco::UInt8 SOURCE_QUENCH_TYPE; // 4
- static const Poco::UInt8 REDIRECT_MESSAGE_TYPE; // 5
- static const Poco::UInt8 TIME_EXCEEDED_TYPE; // 11
- static const Poco::UInt8 PARAMETER_PROBLEM_TYPE; // 12
-
-private:
- void initPacket();
- Header* header(Poco::UInt8* buffer, int length) const;
- Poco::UInt8* data(Poco::UInt8* buffer, int length) const;
-
- static const std::string DESTINATION_UNREACHABLE_CODE[DESTINATION_UNREACHABLE_LENGTH];
- static const std::string REDIRECT_MESSAGE_CODE[REDIRECT_MESSAGE_LENGTH];
- static const std::string TIME_EXCEEDED_CODE[TIME_EXCEEDED_LENGTH];
- static const std::string PARAMETER_PROBLEM_CODE[PARAMETER_PROBLEM_LENGTH];
-
- Poco::UInt16 _seq;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ICMPv4PacketImpl_INCLUDED
+//
+// ICMPv4PacketImpl.h
+//
+// Library: Net
+// Package: ICMP
+// Module: ICMPv4PacketImpl
+//
+// Definition of the ICMPv4PacketImpl class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ICMPv4PacketImpl_INCLUDED
+#define Net_ICMPv4PacketImpl_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/Net/ICMPPacketImpl.h"
+#include <cstddef>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ICMPv4PacketImpl : public ICMPPacketImpl
+ /// This class implements the ICMPv4 packet.
+ /// Parts are based on original ICMP code by
+ /// Mike Muuss
+ /// U. S. Army Ballistic Research Laboratory
+ /// December, 1983
+{
+public:
+ // ICMPv4 header
+ struct Header
+ {
+ Poco::UInt8 type; // ICMP packet type
+ Poco::UInt8 code; // Type sub code
+ Poco::UInt16 checksum;
+ Poco::UInt16 id;
+ Poco::UInt16 seq;
+ };
+
+ // compile-time shield against misalignment
+#if POCO_OS != POCO_OS_ANDROID
+ poco_static_assert (offsetof(Header, code) == 0x01);
+ poco_static_assert (offsetof(Header, checksum) == 0x02);
+ poco_static_assert (offsetof(Header, id) == 0x04);
+ poco_static_assert (offsetof(Header, seq) == 0x06);
+#endif
+
+ enum MessageType
+ {
+ ECHO_REPLY,
+ ICMP_1,
+ ICMP_2,
+ DESTINATION_UNREACHABLE,
+ SOURCE_QUENCH,
+ REDIRECT,
+ ICMP_6,
+ ICMP_7,
+ ECHO_REQUEST,
+ ICMP_9,
+ ICMP_10,
+ TIME_EXCEEDED,
+ PARAMETER_PROBLEM,
+ TIMESTAMP_REQUEST,
+ TIMESTAMP_REPLY,
+ INFORMATION_REQUEST,
+ INFORMATION_REPLY,
+ MESSAGE_TYPE_UNKNOWN, // non-standard default, must remain last but one
+ MESSAGE_TYPE_LENGTH // length indicator, must remain last
+ };
+
+ enum DestinationUnreachableCode
+ {
+ NET_UNREACHABLE,
+ HOST_UNREACHABLE,
+ PROTOCOL_UNREACHABLE,
+ PORT_UNREACHABLE,
+ FRAGMENTATION_NEEDED_AND_DF_SET,
+ SOURCE_ROUTE_FAILED,
+ DESTINATION_UNREACHABLE_UNKNOWN, // non-standard default, must remain last but one
+ DESTINATION_UNREACHABLE_LENGTH // length indicator, must remain last
+ };
+
+ enum RedirectMessageCode
+ {
+ REDIRECT_NETWORK,
+ REDIRECT_HOST,
+ REDIRECT_SERVICE_NETWORK,
+ REDIRECT_SERVICE_HOST,
+ REDIRECT_MESSAGE_UNKNOWN, // non-standard default, must remain last but one
+ REDIRECT_MESSAGE_LENGTH // length indicator, must remain last
+ };
+
+ enum TimeExceededCode
+ {
+ TIME_TO_LIVE,
+ FRAGMENT_REASSEMBLY,
+ TIME_EXCEEDED_UNKNOWN, // non-standard default, must remain last but one
+ TIME_EXCEEDED_LENGTH // length indicator, must remain last
+ };
+
+ enum ParameterProblemCode
+ {
+ POINTER_INDICATES_THE_ERROR,
+ PARAMETER_PROBLEM_UNKNOWN, // non-standard default, must remain last but one
+ PARAMETER_PROBLEM_LENGTH // length indicator, must remain last
+ };
+
+ ICMPv4PacketImpl(int dataSize = 48);
+ /// Constructor. Creates an ICMPv4PacketImpl.
+
+ ~ICMPv4PacketImpl();
+ /// Destructor.
+
+ int packetSize() const;
+ /// Returns the total length of packet (header + data);
+
+ struct timeval time(Poco::UInt8* buffer = 0, int length = 0) const;
+ /// Returns current epoch time if either buffer or length are equal to zero.
+ /// Otherwise, it extracts the time value from the supplied buffer.
+ ///
+ /// Buffer includes IP header, ICMP header and data.
+
+ bool validReplyID(Poco::UInt8* buffer, int length) const;
+ /// Returns true if the extracted id is recognized
+ /// (i.e. equals the process id).
+ ///
+ /// Buffer includes IP header, ICMP header and data.
+
+ virtual std::string errorDescription(Poco::UInt8* buffer, int length);
+ /// Returns error description string.
+ /// If supplied buffer contains ICMPv4 echo reply packet, an
+ /// empty string is returned indicating the absence of error.
+ ///
+ /// Buffer includes IP header, ICMP header and data.
+
+ virtual std::string typeDescription(int typeId);
+ /// Returns the description of the packet type.
+
+ static const Poco::UInt16 MAX_PACKET_SIZE;
+ static const std::string MESSAGE_TYPE[MESSAGE_TYPE_LENGTH];
+ static const Poco::UInt8 DESTINATION_UNREACHABLE_TYPE; // 3
+ static const Poco::UInt8 SOURCE_QUENCH_TYPE; // 4
+ static const Poco::UInt8 REDIRECT_MESSAGE_TYPE; // 5
+ static const Poco::UInt8 TIME_EXCEEDED_TYPE; // 11
+ static const Poco::UInt8 PARAMETER_PROBLEM_TYPE; // 12
+
+private:
+ void initPacket();
+ Header* header(Poco::UInt8* buffer, int length) const;
+ Poco::UInt8* data(Poco::UInt8* buffer, int length) const;
+
+ static const std::string DESTINATION_UNREACHABLE_CODE[DESTINATION_UNREACHABLE_LENGTH];
+ static const std::string REDIRECT_MESSAGE_CODE[REDIRECT_MESSAGE_LENGTH];
+ static const std::string TIME_EXCEEDED_CODE[TIME_EXCEEDED_LENGTH];
+ static const std::string PARAMETER_PROBLEM_CODE[PARAMETER_PROBLEM_LENGTH];
+
+ Poco::UInt16 _seq;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ICMPv4PacketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/IPAddress.h b/contrib/libs/poco/Net/include/Poco/Net/IPAddress.h
index 254cf69604..7d9cb6fa83 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/IPAddress.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/IPAddress.h
@@ -1,450 +1,450 @@
-//
-// IPAddress.h
-//
-// Library: Net
-// Package: NetCore
-// Module: IPAddress
-//
-// Definition of the IPAddress class.
-//
-// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_IPAddress_INCLUDED
-#define Net_IPAddress_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketDefs.h"
-#include "Poco/Net/IPAddressImpl.h"
-#include "Poco/AutoPtr.h"
-#include "Poco/Exception.h"
-#include <vector>
-#include <ostream>
-
-
-namespace Poco {
-
-class BinaryReader;
-class BinaryWriter;
-
-namespace Net {
-
-
-class Net_API IPAddress
- /// This class represents an internet (IP) host
- /// address. The address can belong either to the
- /// IPv4 or the IPv6 address family.
- ///
- /// Relational operators (==, !=, <, <=, >, >=) are
- /// supported. However, you must not interpret any
- /// special meaning into the result of these
- /// operations, other than that the results are
- /// consistent.
- ///
- /// Especially, an IPv4 address is never equal to
- /// an IPv6 address, even if the IPv6 address is
- /// IPv4 compatible and the addresses are the same.
- ///
- /// IPv6 addresses are supported only if the target platform
- /// supports IPv6.
-{
-public:
- typedef std::vector<IPAddress> List;
-
- // The following declarations keep the Family type
- // backwards compatible with the previously used
- // enum declaration.
- typedef AddressFamily::Family Family;
- static const Family IPv4 = AddressFamily::IPv4;
-#if defined(POCO_HAVE_IPv6)
- static const Family IPv6 = AddressFamily::IPv6;
-#endif
-
- IPAddress();
- /// Creates a wildcard (zero) IPv4 IPAddress.
-
- IPAddress(const IPAddress& addr);
- /// Creates an IPAddress by copying another one.
-
- explicit IPAddress(Family family);
- /// Creates a wildcard (zero) IPAddress for the
- /// given address family.
-
- explicit IPAddress(const std::string& addr);
- /// Creates an IPAddress from the string containing
- /// an IP address in presentation format (dotted decimal
- /// for IPv4, hex string for IPv6).
- ///
- /// Depending on the format of addr, either an IPv4 or
- /// an IPv6 address is created.
- ///
- /// See toString() for details on the supported formats.
- ///
- /// Throws an InvalidAddressException if the address cannot be parsed.
-
- IPAddress(const std::string& addr, Family family);
- /// Creates an IPAddress from the string containing
- /// an IP address in presentation format (dotted decimal
- /// for IPv4, hex string for IPv6).
-
- IPAddress(const void* addr, poco_socklen_t length);
- /// Creates an IPAddress from a native internet address.
- /// A pointer to a in_addr or a in6_addr structure may be
- /// passed.
-
- IPAddress(const void* addr, poco_socklen_t length, Poco::UInt32 scope);
- /// Creates an IPAddress from a native internet address.
- /// A pointer to a in_addr or a in6_addr structure may be
- /// passed. Additionally, for an IPv6 address, a scope ID
- /// may be specified. The scope ID will be ignored if an IPv4
- /// address is specified.
-
- IPAddress(unsigned prefix, Family family);
- /// Creates an IPAddress mask with the given length of prefix.
-
-#if defined(_WIN32)
- IPAddress(const SOCKET_ADDRESS& socket_address);
- /// Creates an IPAddress from Windows SOCKET_ADDRESS structure.
-#endif
-
- IPAddress(const struct sockaddr& sockaddr);
- /// Same for struct sock_addr on POSIX.
-
-
- ~IPAddress();
- /// Destroys the IPAddress.
-
- IPAddress& operator = (const IPAddress& addr);
- /// Assigns an IPAddress.
-
- Family family() const;
- /// Returns the address family (IPv4 or IPv6) of the address.
-
- Poco::UInt32 scope() const;
- /// Returns the IPv6 scope identifier of the address. Returns 0 if
- /// the address is an IPv4 address, or the address is an
- /// IPv6 address but does not have a scope identifier.
-
- std::string toString() const;
- /// Returns a string containing a representation of the address
- /// in presentation format.
- ///
- /// For IPv4 addresses the result will be in dotted-decimal
- /// (d.d.d.d) notation.
- ///
- /// Textual representation of IPv6 address is one of the following forms:
- ///
- /// The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the hexadecimal
- /// values of the eight 16-bit pieces of the address. This is the full form.
- /// Example: 1080:0:0:0:8:600:200A:425C
- ///
- /// It is not necessary to write the leading zeros in an individual field.
- /// However, there must be at least one numeral in every field, except as described below.
- ///
- /// It is common for IPv6 addresses to contain long strings of zero bits.
- /// In order to make writing addresses containing zero bits easier, a special syntax is
- /// available to compress the zeros. The use of "::" indicates multiple groups of 16-bits of zeros.
- /// The "::" can only appear once in an address. The "::" can also be used to compress the leading
- /// and/or trailing zeros in an address. Example: 1080::8:600:200A:425C
- ///
- /// For dealing with IPv4 compatible addresses in a mixed environment,
- /// a special syntax is available: x:x:x:x:x:x:d.d.d.d, where the 'x's are the
- /// hexadecimal values of the six high-order 16-bit pieces of the address,
- /// and the 'd's are the decimal values of the four low-order 8-bit pieces of the
- /// standard IPv4 representation address. Example: ::FFFF:192.168.1.120
- ///
- /// If an IPv6 address contains a non-zero scope identifier, it is added
- /// to the string, delimited by a percent character. On Windows platforms,
- /// the numeric value (which specifies an interface index) is directly
- /// appended. On Unix platforms, the name of the interface corresponding
- /// to the index (interpretation of the scope identifier) is added.
-
- bool isWildcard() const;
- /// Returns true iff the address is a wildcard (all zero)
- /// address.
-
- bool isBroadcast() const;
- /// Returns true iff the address is a broadcast address.
- ///
- /// Only IPv4 addresses can be broadcast addresses. In a broadcast
- /// address, all bits are one.
- ///
- /// For an IPv6 address, returns always false.
-
- bool isLoopback() const;
- /// Returns true iff the address is a loopback address.
- ///
- /// For IPv4, the loopback address is 127.0.0.1.
- ///
- /// For IPv6, the loopback address is ::1.
-
- bool isMulticast() const;
- /// Returns true iff the address is a multicast address.
- ///
- /// IPv4 multicast addresses are in the
- /// 224.0.0.0 to 239.255.255.255 range
- /// (the first four bits have the value 1110).
- ///
- /// IPv6 multicast addresses are in the
- /// FFxx:x:x:x:x:x:x:x range.
-
- bool isUnicast() const;
- /// Returns true iff the address is a unicast address.
- ///
- /// An address is unicast if it is neither a wildcard,
- /// broadcast or multicast address.
-
- bool isLinkLocal() const;
- /// Returns true iff the address is a link local unicast address.
- ///
- /// IPv4 link local addresses are in the 169.254.0.0/16 range,
- /// according to RFC 3927.
- ///
- /// IPv6 link local addresses have 1111 1110 10 as the first
- /// 10 bits, followed by 54 zeros.
-
- bool isSiteLocal() const;
- /// Returns true iff the address is a site local unicast address.
- ///
- /// IPv4 site local addresses are in on of the 10.0.0.0/24,
- /// 192.168.0.0/16 or 172.16.0.0 to 172.31.255.255 ranges.
- ///
- /// Originally, IPv6 site-local addresses had FEC0/10 (1111 1110 11)
- /// prefix (RFC 4291), followed by 38 zeros. Interfaces using
- /// this mask are supported, but obsolete; RFC 4193 prescribes
- /// fc00::/7 (1111 110) as local unicast prefix.
-
- bool isIPv4Compatible() const;
- /// Returns true iff the address is IPv4 compatible.
- ///
- /// For IPv4 addresses, this is always true.
- ///
- /// For IPv6, the address must be in the ::x:x range (the
- /// first 96 bits are zero).
-
- bool isIPv4Mapped() const;
- /// Returns true iff the address is an IPv4 mapped IPv6 address.
- ///
- /// For IPv4 addresses, this is always true.
- ///
- /// For IPv6, the address must be in the ::FFFF:x:x range.
-
- bool isWellKnownMC() const;
- /// Returns true iff the address is a well-known multicast address.
- ///
- /// For IPv4, well-known multicast addresses are in the
- /// 224.0.0.0/8 range.
- ///
- /// For IPv6, well-known multicast addresses are in the
- /// FF0x:x:x:x:x:x:x:x range.
-
- bool isNodeLocalMC() const;
- /// Returns true iff the address is a node-local multicast address.
- ///
- /// IPv4 does not support node-local addresses, thus the result is
- /// always false for an IPv4 address.
- ///
- /// For IPv6, node-local multicast addresses are in the
- /// FFx1:x:x:x:x:x:x:x range.
-
- bool isLinkLocalMC() const;
- /// Returns true iff the address is a link-local multicast address.
- ///
- /// For IPv4, link-local multicast addresses are in the
- /// 224.0.0.0/24 range. Note that this overlaps with the range for well-known
- /// multicast addresses.
- ///
- /// For IPv6, link-local multicast addresses are in the
- /// FFx2:x:x:x:x:x:x:x range.
-
- bool isSiteLocalMC() const;
- /// Returns true iff the address is a site-local multicast address.
- ///
- /// For IPv4, site local multicast addresses are in the
- /// 239.255.0.0/16 range.
- ///
- /// For IPv6, site-local multicast addresses are in the
- /// FFx5:x:x:x:x:x:x:x range.
-
- bool isOrgLocalMC() const;
- /// Returns true iff the address is a organization-local multicast address.
- ///
- /// For IPv4, organization-local multicast addresses are in the
- /// 239.192.0.0/16 range.
- ///
- /// For IPv6, organization-local multicast addresses are in the
- /// FFx8:x:x:x:x:x:x:x range.
-
- bool isGlobalMC() const;
- /// Returns true iff the address is a global multicast address.
- ///
- /// For IPv4, global multicast addresses are in the
- /// 224.0.1.0 to 238.255.255.255 range.
- ///
- /// For IPv6, global multicast addresses are in the
- /// FFxF:x:x:x:x:x:x:x range.
-
- bool operator == (const IPAddress& addr) const;
- bool operator != (const IPAddress& addr) const;
- bool operator < (const IPAddress& addr) const;
- bool operator <= (const IPAddress& addr) const;
- bool operator > (const IPAddress& addr) const;
- bool operator >= (const IPAddress& addr) const;
- IPAddress operator & (const IPAddress& addr) const;
- IPAddress operator | (const IPAddress& addr) const;
- IPAddress operator ^ (const IPAddress& addr) const;
- IPAddress operator ~ () const;
-
- poco_socklen_t length() const;
- /// Returns the length in bytes of the internal socket address structure.
-
- const void* addr() const;
- /// Returns the internal address structure.
-
- int af() const;
- /// Returns the address family (AF_INET or AF_INET6) of the address.
-
- unsigned prefixLength() const;
- /// Returns the prefix length.
-
- void mask(const IPAddress& mask);
- /// Masks the IP address using the given netmask, which is usually
- /// a IPv4 subnet mask. Only supported for IPv4 addresses.
- ///
- /// The new address is (address & mask).
-
- void mask(const IPAddress& mask, const IPAddress& set);
- /// Masks the IP address using the given netmask, which is usually
- /// a IPv4 subnet mask. Only supported for IPv4 addresses.
- ///
- /// The new address is (address & mask) | (set & ~mask).
-
- static IPAddress parse(const std::string& addr);
- /// Creates an IPAddress from the string containing
- /// an IP address in presentation format (dotted decimal
- /// for IPv4, hex string for IPv6).
- ///
- /// Depending on the format of addr, either an IPv4 or
- /// an IPv6 address is created.
- ///
- /// See toString() for details on the supported formats.
- ///
- /// Throws an InvalidAddressException if the address cannot be parsed.
-
- static bool tryParse(const std::string& addr, IPAddress& result);
- /// Tries to interpret the given address string as an
- /// IP address in presentation format (dotted decimal
- /// for IPv4, hex string for IPv6).
- ///
- /// Returns true and stores the IPAddress in result if the
- /// string contains a valid address.
- ///
- /// Returns false and leaves result unchanged otherwise.
-
- static IPAddress wildcard(Family family = IPv4);
- /// Returns a wildcard IPv4 or IPv6 address (0.0.0.0).
-
- static IPAddress broadcast();
- /// Returns a broadcast IPv4 address (255.255.255.255).
-
- enum
- {
- MAX_ADDRESS_LENGTH =
-#if defined(POCO_HAVE_IPv6)
- sizeof(struct in6_addr)
-#else
- sizeof(struct in_addr)
-#endif
- /// Maximum length in bytes of a socket address.
- };
-
-private:
- typedef Poco::Net::Impl::IPAddressImpl Impl;
- typedef Poco::AutoPtr<Impl> Ptr;
-
- Ptr pImpl() const;
- void newIPv4();
- void newIPv4(const void* hostAddr);
- void newIPv4(unsigned prefix);
-#if defined(POCO_HAVE_IPv6)
- void newIPv6();
- void newIPv6(const void* hostAddr);
- void newIPv6(const void* hostAddr, Poco::UInt32 scope);
- void newIPv6(unsigned prefix);
-#endif
- Ptr _pImpl;
-};
-
-
-//
-// inlines
-//
-inline IPAddress::Ptr IPAddress::pImpl() const
-{
- if (_pImpl) return _pImpl;
- throw NullPointerException("IPaddress implementation pointer is NULL.");
-}
-
-
-inline void IPAddress::newIPv4()
-{
- _pImpl = new Poco::Net::Impl::IPv4AddressImpl;
-}
-
-
-inline void IPAddress::newIPv4(const void* hostAddr)
-{
- _pImpl = new Poco::Net::Impl::IPv4AddressImpl(hostAddr);
-}
-
-
-inline void IPAddress::newIPv4(unsigned prefix)
-{
- _pImpl = new Poco::Net::Impl::IPv4AddressImpl(prefix);
-}
-
-
-#if defined(POCO_HAVE_IPv6)
-
-
-inline void IPAddress::newIPv6()
-{
- _pImpl = new Poco::Net::Impl::IPv6AddressImpl;
-}
-
-
-inline void IPAddress::newIPv6(const void* hostAddr)
-{
- _pImpl = new Poco::Net::Impl::IPv6AddressImpl(hostAddr);
-}
-
-
-inline void IPAddress::newIPv6(const void* hostAddr, Poco::UInt32 scope)
-{
- _pImpl = new Poco::Net::Impl::IPv6AddressImpl(hostAddr, scope);
-}
-
-
-inline void IPAddress::newIPv6(unsigned prefix)
-{
- _pImpl = new Poco::Net::Impl::IPv6AddressImpl(prefix);
-}
-
-
-#endif // POCO_HAVE_IPv6
-
-
-} } // namespace Poco::Net
-
-
-Net_API Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::IPAddress& value);
-Net_API Poco::BinaryReader& operator >> (Poco::BinaryReader& reader, Poco::Net::IPAddress& value);
-Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::IPAddress& addr);
-
-
-#endif // Net_IPAddress_INCLUDED
+//
+// IPAddress.h
+//
+// Library: Net
+// Package: NetCore
+// Module: IPAddress
+//
+// Definition of the IPAddress class.
+//
+// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_IPAddress_INCLUDED
+#define Net_IPAddress_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketDefs.h"
+#include "Poco/Net/IPAddressImpl.h"
+#include "Poco/AutoPtr.h"
+#include "Poco/Exception.h"
+#include <vector>
+#include <ostream>
+
+
+namespace Poco {
+
+class BinaryReader;
+class BinaryWriter;
+
+namespace Net {
+
+
+class Net_API IPAddress
+ /// This class represents an internet (IP) host
+ /// address. The address can belong either to the
+ /// IPv4 or the IPv6 address family.
+ ///
+ /// Relational operators (==, !=, <, <=, >, >=) are
+ /// supported. However, you must not interpret any
+ /// special meaning into the result of these
+ /// operations, other than that the results are
+ /// consistent.
+ ///
+ /// Especially, an IPv4 address is never equal to
+ /// an IPv6 address, even if the IPv6 address is
+ /// IPv4 compatible and the addresses are the same.
+ ///
+ /// IPv6 addresses are supported only if the target platform
+ /// supports IPv6.
+{
+public:
+ typedef std::vector<IPAddress> List;
+
+ // The following declarations keep the Family type
+ // backwards compatible with the previously used
+ // enum declaration.
+ typedef AddressFamily::Family Family;
+ static const Family IPv4 = AddressFamily::IPv4;
+#if defined(POCO_HAVE_IPv6)
+ static const Family IPv6 = AddressFamily::IPv6;
+#endif
+
+ IPAddress();
+ /// Creates a wildcard (zero) IPv4 IPAddress.
+
+ IPAddress(const IPAddress& addr);
+ /// Creates an IPAddress by copying another one.
+
+ explicit IPAddress(Family family);
+ /// Creates a wildcard (zero) IPAddress for the
+ /// given address family.
+
+ explicit IPAddress(const std::string& addr);
+ /// Creates an IPAddress from the string containing
+ /// an IP address in presentation format (dotted decimal
+ /// for IPv4, hex string for IPv6).
+ ///
+ /// Depending on the format of addr, either an IPv4 or
+ /// an IPv6 address is created.
+ ///
+ /// See toString() for details on the supported formats.
+ ///
+ /// Throws an InvalidAddressException if the address cannot be parsed.
+
+ IPAddress(const std::string& addr, Family family);
+ /// Creates an IPAddress from the string containing
+ /// an IP address in presentation format (dotted decimal
+ /// for IPv4, hex string for IPv6).
+
+ IPAddress(const void* addr, poco_socklen_t length);
+ /// Creates an IPAddress from a native internet address.
+ /// A pointer to a in_addr or a in6_addr structure may be
+ /// passed.
+
+ IPAddress(const void* addr, poco_socklen_t length, Poco::UInt32 scope);
+ /// Creates an IPAddress from a native internet address.
+ /// A pointer to a in_addr or a in6_addr structure may be
+ /// passed. Additionally, for an IPv6 address, a scope ID
+ /// may be specified. The scope ID will be ignored if an IPv4
+ /// address is specified.
+
+ IPAddress(unsigned prefix, Family family);
+ /// Creates an IPAddress mask with the given length of prefix.
+
+#if defined(_WIN32)
+ IPAddress(const SOCKET_ADDRESS& socket_address);
+ /// Creates an IPAddress from Windows SOCKET_ADDRESS structure.
+#endif
+
+ IPAddress(const struct sockaddr& sockaddr);
+ /// Same for struct sock_addr on POSIX.
+
+
+ ~IPAddress();
+ /// Destroys the IPAddress.
+
+ IPAddress& operator = (const IPAddress& addr);
+ /// Assigns an IPAddress.
+
+ Family family() const;
+ /// Returns the address family (IPv4 or IPv6) of the address.
+
+ Poco::UInt32 scope() const;
+ /// Returns the IPv6 scope identifier of the address. Returns 0 if
+ /// the address is an IPv4 address, or the address is an
+ /// IPv6 address but does not have a scope identifier.
+
+ std::string toString() const;
+ /// Returns a string containing a representation of the address
+ /// in presentation format.
+ ///
+ /// For IPv4 addresses the result will be in dotted-decimal
+ /// (d.d.d.d) notation.
+ ///
+ /// Textual representation of IPv6 address is one of the following forms:
+ ///
+ /// The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the hexadecimal
+ /// values of the eight 16-bit pieces of the address. This is the full form.
+ /// Example: 1080:0:0:0:8:600:200A:425C
+ ///
+ /// It is not necessary to write the leading zeros in an individual field.
+ /// However, there must be at least one numeral in every field, except as described below.
+ ///
+ /// It is common for IPv6 addresses to contain long strings of zero bits.
+ /// In order to make writing addresses containing zero bits easier, a special syntax is
+ /// available to compress the zeros. The use of "::" indicates multiple groups of 16-bits of zeros.
+ /// The "::" can only appear once in an address. The "::" can also be used to compress the leading
+ /// and/or trailing zeros in an address. Example: 1080::8:600:200A:425C
+ ///
+ /// For dealing with IPv4 compatible addresses in a mixed environment,
+ /// a special syntax is available: x:x:x:x:x:x:d.d.d.d, where the 'x's are the
+ /// hexadecimal values of the six high-order 16-bit pieces of the address,
+ /// and the 'd's are the decimal values of the four low-order 8-bit pieces of the
+ /// standard IPv4 representation address. Example: ::FFFF:192.168.1.120
+ ///
+ /// If an IPv6 address contains a non-zero scope identifier, it is added
+ /// to the string, delimited by a percent character. On Windows platforms,
+ /// the numeric value (which specifies an interface index) is directly
+ /// appended. On Unix platforms, the name of the interface corresponding
+ /// to the index (interpretation of the scope identifier) is added.
+
+ bool isWildcard() const;
+ /// Returns true iff the address is a wildcard (all zero)
+ /// address.
+
+ bool isBroadcast() const;
+ /// Returns true iff the address is a broadcast address.
+ ///
+ /// Only IPv4 addresses can be broadcast addresses. In a broadcast
+ /// address, all bits are one.
+ ///
+ /// For an IPv6 address, returns always false.
+
+ bool isLoopback() const;
+ /// Returns true iff the address is a loopback address.
+ ///
+ /// For IPv4, the loopback address is 127.0.0.1.
+ ///
+ /// For IPv6, the loopback address is ::1.
+
+ bool isMulticast() const;
+ /// Returns true iff the address is a multicast address.
+ ///
+ /// IPv4 multicast addresses are in the
+ /// 224.0.0.0 to 239.255.255.255 range
+ /// (the first four bits have the value 1110).
+ ///
+ /// IPv6 multicast addresses are in the
+ /// FFxx:x:x:x:x:x:x:x range.
+
+ bool isUnicast() const;
+ /// Returns true iff the address is a unicast address.
+ ///
+ /// An address is unicast if it is neither a wildcard,
+ /// broadcast or multicast address.
+
+ bool isLinkLocal() const;
+ /// Returns true iff the address is a link local unicast address.
+ ///
+ /// IPv4 link local addresses are in the 169.254.0.0/16 range,
+ /// according to RFC 3927.
+ ///
+ /// IPv6 link local addresses have 1111 1110 10 as the first
+ /// 10 bits, followed by 54 zeros.
+
+ bool isSiteLocal() const;
+ /// Returns true iff the address is a site local unicast address.
+ ///
+ /// IPv4 site local addresses are in on of the 10.0.0.0/24,
+ /// 192.168.0.0/16 or 172.16.0.0 to 172.31.255.255 ranges.
+ ///
+ /// Originally, IPv6 site-local addresses had FEC0/10 (1111 1110 11)
+ /// prefix (RFC 4291), followed by 38 zeros. Interfaces using
+ /// this mask are supported, but obsolete; RFC 4193 prescribes
+ /// fc00::/7 (1111 110) as local unicast prefix.
+
+ bool isIPv4Compatible() const;
+ /// Returns true iff the address is IPv4 compatible.
+ ///
+ /// For IPv4 addresses, this is always true.
+ ///
+ /// For IPv6, the address must be in the ::x:x range (the
+ /// first 96 bits are zero).
+
+ bool isIPv4Mapped() const;
+ /// Returns true iff the address is an IPv4 mapped IPv6 address.
+ ///
+ /// For IPv4 addresses, this is always true.
+ ///
+ /// For IPv6, the address must be in the ::FFFF:x:x range.
+
+ bool isWellKnownMC() const;
+ /// Returns true iff the address is a well-known multicast address.
+ ///
+ /// For IPv4, well-known multicast addresses are in the
+ /// 224.0.0.0/8 range.
+ ///
+ /// For IPv6, well-known multicast addresses are in the
+ /// FF0x:x:x:x:x:x:x:x range.
+
+ bool isNodeLocalMC() const;
+ /// Returns true iff the address is a node-local multicast address.
+ ///
+ /// IPv4 does not support node-local addresses, thus the result is
+ /// always false for an IPv4 address.
+ ///
+ /// For IPv6, node-local multicast addresses are in the
+ /// FFx1:x:x:x:x:x:x:x range.
+
+ bool isLinkLocalMC() const;
+ /// Returns true iff the address is a link-local multicast address.
+ ///
+ /// For IPv4, link-local multicast addresses are in the
+ /// 224.0.0.0/24 range. Note that this overlaps with the range for well-known
+ /// multicast addresses.
+ ///
+ /// For IPv6, link-local multicast addresses are in the
+ /// FFx2:x:x:x:x:x:x:x range.
+
+ bool isSiteLocalMC() const;
+ /// Returns true iff the address is a site-local multicast address.
+ ///
+ /// For IPv4, site local multicast addresses are in the
+ /// 239.255.0.0/16 range.
+ ///
+ /// For IPv6, site-local multicast addresses are in the
+ /// FFx5:x:x:x:x:x:x:x range.
+
+ bool isOrgLocalMC() const;
+ /// Returns true iff the address is a organization-local multicast address.
+ ///
+ /// For IPv4, organization-local multicast addresses are in the
+ /// 239.192.0.0/16 range.
+ ///
+ /// For IPv6, organization-local multicast addresses are in the
+ /// FFx8:x:x:x:x:x:x:x range.
+
+ bool isGlobalMC() const;
+ /// Returns true iff the address is a global multicast address.
+ ///
+ /// For IPv4, global multicast addresses are in the
+ /// 224.0.1.0 to 238.255.255.255 range.
+ ///
+ /// For IPv6, global multicast addresses are in the
+ /// FFxF:x:x:x:x:x:x:x range.
+
+ bool operator == (const IPAddress& addr) const;
+ bool operator != (const IPAddress& addr) const;
+ bool operator < (const IPAddress& addr) const;
+ bool operator <= (const IPAddress& addr) const;
+ bool operator > (const IPAddress& addr) const;
+ bool operator >= (const IPAddress& addr) const;
+ IPAddress operator & (const IPAddress& addr) const;
+ IPAddress operator | (const IPAddress& addr) const;
+ IPAddress operator ^ (const IPAddress& addr) const;
+ IPAddress operator ~ () const;
+
+ poco_socklen_t length() const;
+ /// Returns the length in bytes of the internal socket address structure.
+
+ const void* addr() const;
+ /// Returns the internal address structure.
+
+ int af() const;
+ /// Returns the address family (AF_INET or AF_INET6) of the address.
+
+ unsigned prefixLength() const;
+ /// Returns the prefix length.
+
+ void mask(const IPAddress& mask);
+ /// Masks the IP address using the given netmask, which is usually
+ /// a IPv4 subnet mask. Only supported for IPv4 addresses.
+ ///
+ /// The new address is (address & mask).
+
+ void mask(const IPAddress& mask, const IPAddress& set);
+ /// Masks the IP address using the given netmask, which is usually
+ /// a IPv4 subnet mask. Only supported for IPv4 addresses.
+ ///
+ /// The new address is (address & mask) | (set & ~mask).
+
+ static IPAddress parse(const std::string& addr);
+ /// Creates an IPAddress from the string containing
+ /// an IP address in presentation format (dotted decimal
+ /// for IPv4, hex string for IPv6).
+ ///
+ /// Depending on the format of addr, either an IPv4 or
+ /// an IPv6 address is created.
+ ///
+ /// See toString() for details on the supported formats.
+ ///
+ /// Throws an InvalidAddressException if the address cannot be parsed.
+
+ static bool tryParse(const std::string& addr, IPAddress& result);
+ /// Tries to interpret the given address string as an
+ /// IP address in presentation format (dotted decimal
+ /// for IPv4, hex string for IPv6).
+ ///
+ /// Returns true and stores the IPAddress in result if the
+ /// string contains a valid address.
+ ///
+ /// Returns false and leaves result unchanged otherwise.
+
+ static IPAddress wildcard(Family family = IPv4);
+ /// Returns a wildcard IPv4 or IPv6 address (0.0.0.0).
+
+ static IPAddress broadcast();
+ /// Returns a broadcast IPv4 address (255.255.255.255).
+
+ enum
+ {
+ MAX_ADDRESS_LENGTH =
+#if defined(POCO_HAVE_IPv6)
+ sizeof(struct in6_addr)
+#else
+ sizeof(struct in_addr)
+#endif
+ /// Maximum length in bytes of a socket address.
+ };
+
+private:
+ typedef Poco::Net::Impl::IPAddressImpl Impl;
+ typedef Poco::AutoPtr<Impl> Ptr;
+
+ Ptr pImpl() const;
+ void newIPv4();
+ void newIPv4(const void* hostAddr);
+ void newIPv4(unsigned prefix);
+#if defined(POCO_HAVE_IPv6)
+ void newIPv6();
+ void newIPv6(const void* hostAddr);
+ void newIPv6(const void* hostAddr, Poco::UInt32 scope);
+ void newIPv6(unsigned prefix);
+#endif
+ Ptr _pImpl;
+};
+
+
+//
+// inlines
+//
+inline IPAddress::Ptr IPAddress::pImpl() const
+{
+ if (_pImpl) return _pImpl;
+ throw NullPointerException("IPaddress implementation pointer is NULL.");
+}
+
+
+inline void IPAddress::newIPv4()
+{
+ _pImpl = new Poco::Net::Impl::IPv4AddressImpl;
+}
+
+
+inline void IPAddress::newIPv4(const void* hostAddr)
+{
+ _pImpl = new Poco::Net::Impl::IPv4AddressImpl(hostAddr);
+}
+
+
+inline void IPAddress::newIPv4(unsigned prefix)
+{
+ _pImpl = new Poco::Net::Impl::IPv4AddressImpl(prefix);
+}
+
+
+#if defined(POCO_HAVE_IPv6)
+
+
+inline void IPAddress::newIPv6()
+{
+ _pImpl = new Poco::Net::Impl::IPv6AddressImpl;
+}
+
+
+inline void IPAddress::newIPv6(const void* hostAddr)
+{
+ _pImpl = new Poco::Net::Impl::IPv6AddressImpl(hostAddr);
+}
+
+
+inline void IPAddress::newIPv6(const void* hostAddr, Poco::UInt32 scope)
+{
+ _pImpl = new Poco::Net::Impl::IPv6AddressImpl(hostAddr, scope);
+}
+
+
+inline void IPAddress::newIPv6(unsigned prefix)
+{
+ _pImpl = new Poco::Net::Impl::IPv6AddressImpl(prefix);
+}
+
+
+#endif // POCO_HAVE_IPv6
+
+
+} } // namespace Poco::Net
+
+
+Net_API Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::IPAddress& value);
+Net_API Poco::BinaryReader& operator >> (Poco::BinaryReader& reader, Poco::Net::IPAddress& value);
+Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::IPAddress& addr);
+
+
+#endif // Net_IPAddress_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/IPAddressImpl.h b/contrib/libs/poco/Net/include/Poco/Net/IPAddressImpl.h
index 4bdbd2f45d..e43d685509 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/IPAddressImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/IPAddressImpl.h
@@ -1,179 +1,179 @@
-//
-// IPAddressImpl.h
-//
-// Library: Net
-// Package: NetCore
-// Module: IPAddressImpl
-//
-// Definition of the IPAddressImpl class.
-//
-// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_IPAddressImpl_INCLUDED
-#define Net_IPAddressImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketDefs.h"
-#include "Poco/RefCountedObject.h"
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-namespace Impl {
-
-
-class IPAddressImpl : public Poco::RefCountedObject
-{
-public:
- typedef AddressFamily::Family Family;
-
- virtual ~IPAddressImpl();
-
- virtual IPAddressImpl* clone() const = 0;
- virtual std::string toString() const = 0;
- virtual poco_socklen_t length() const = 0;
- virtual const void* addr() const = 0;
- virtual Family family() const = 0;
- virtual int af() const = 0;
- virtual Poco::UInt32 scope() const = 0;
- virtual bool isWildcard() const = 0;
- virtual bool isBroadcast() const = 0;
- virtual bool isLoopback() const = 0;
- virtual bool isMulticast() const = 0;
- virtual bool isLinkLocal() const = 0;
- virtual bool isSiteLocal() const = 0;
- virtual bool isIPv4Mapped() const = 0;
- virtual bool isIPv4Compatible() const = 0;
- virtual bool isWellKnownMC() const = 0;
- virtual bool isNodeLocalMC() const = 0;
- virtual bool isLinkLocalMC() const = 0;
- virtual bool isSiteLocalMC() const = 0;
- virtual bool isOrgLocalMC() const = 0;
- virtual bool isGlobalMC() const = 0;
- virtual void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet) = 0;
- virtual unsigned prefixLength() const = 0;
-
-protected:
- IPAddressImpl();
-
-private:
- IPAddressImpl(const IPAddressImpl&);
- IPAddressImpl& operator = (const IPAddressImpl&);
-};
-
-
-//
-// IPv4AddressImpl
-//
-
-class IPv4AddressImpl: public IPAddressImpl
-{
-public:
- IPv4AddressImpl();
- IPv4AddressImpl(const void* addr);
- IPv4AddressImpl(unsigned prefix);
- IPv4AddressImpl(const IPv4AddressImpl& addr);
- IPv4AddressImpl& operator = (const IPv4AddressImpl&);
- std::string toString() const;
- poco_socklen_t length() const;
- const void* addr() const;
- Family family() const;
- int af() const;
- unsigned prefixLength() const;
- Poco::UInt32 scope() const;
- bool isWildcard() const;
- bool isBroadcast() const;
- bool isLoopback() const;
- bool isMulticast() const;
- bool isLinkLocal() const;
- bool isSiteLocal() const;
- bool isIPv4Compatible() const;
- bool isIPv4Mapped() const;
- bool isWellKnownMC() const;
- bool isNodeLocalMC() const;
- bool isLinkLocalMC() const;
- bool isSiteLocalMC() const;
- bool isOrgLocalMC() const;
- bool isGlobalMC() const;
- static IPv4AddressImpl parse(const std::string& addr);
- void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet);
- IPAddressImpl* clone() const;
- IPv4AddressImpl operator & (const IPv4AddressImpl& addr) const;
- IPv4AddressImpl operator | (const IPv4AddressImpl& addr) const;
- IPv4AddressImpl operator ^ (const IPv4AddressImpl& addr) const;
- IPv4AddressImpl operator ~ () const;
- bool operator == (const IPv4AddressImpl& addr) const;
- bool operator != (const IPv4AddressImpl& addr) const;
-
-private:
- struct in_addr _addr;
-};
-
-
-#if defined(POCO_HAVE_IPv6)
-
-
-//
-// IPv6AddressImpl
-//
-
-class IPv6AddressImpl: public IPAddressImpl
-{
-public:
- IPv6AddressImpl();
- IPv6AddressImpl(const void* addr);
- IPv6AddressImpl(const void* addr, Poco::UInt32 scope);
- IPv6AddressImpl(unsigned prefix);
- std::string toString() const;
- poco_socklen_t length() const;
- const void* addr() const;
- Family family() const;
- int af() const;
- unsigned prefixLength() const;
- Poco::UInt32 scope() const;
- bool isWildcard() const;
- bool isBroadcast() const;
- bool isLoopback() const;
- bool isMulticast() const;
- bool isLinkLocal() const;
- bool isSiteLocal() const;
- bool isIPv4Compatible() const;
- bool isIPv4Mapped() const;
- bool isWellKnownMC() const;
- bool isNodeLocalMC() const;
- bool isLinkLocalMC() const;
- bool isSiteLocalMC() const;
- bool isOrgLocalMC() const;
- bool isGlobalMC() const;
- static IPv6AddressImpl parse(const std::string& addr);
- void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet);
- IPAddressImpl* clone() const;
- IPv6AddressImpl operator & (const IPv6AddressImpl& addr) const;
- IPv6AddressImpl operator | (const IPv6AddressImpl& addr) const;
- IPv6AddressImpl operator ^ (const IPv6AddressImpl& addr) const;
- IPv6AddressImpl operator ~ () const;
- bool operator == (const IPv6AddressImpl& addr) const;
- bool operator != (const IPv6AddressImpl& addr) const;
- IPv6AddressImpl(const IPv6AddressImpl& addr);
- IPv6AddressImpl& operator = (const IPv6AddressImpl&);
-
-private:
- struct in6_addr _addr;
- unsigned int _scope;
-};
-
-
-#endif // POCO_HAVE_IPv6
-
-
-} } } // namespace Poco::Net::Impl
-
-
-#endif // Net_IPAddressImpl_INCLUDED
+//
+// IPAddressImpl.h
+//
+// Library: Net
+// Package: NetCore
+// Module: IPAddressImpl
+//
+// Definition of the IPAddressImpl class.
+//
+// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_IPAddressImpl_INCLUDED
+#define Net_IPAddressImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketDefs.h"
+#include "Poco/RefCountedObject.h"
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+namespace Impl {
+
+
+class IPAddressImpl : public Poco::RefCountedObject
+{
+public:
+ typedef AddressFamily::Family Family;
+
+ virtual ~IPAddressImpl();
+
+ virtual IPAddressImpl* clone() const = 0;
+ virtual std::string toString() const = 0;
+ virtual poco_socklen_t length() const = 0;
+ virtual const void* addr() const = 0;
+ virtual Family family() const = 0;
+ virtual int af() const = 0;
+ virtual Poco::UInt32 scope() const = 0;
+ virtual bool isWildcard() const = 0;
+ virtual bool isBroadcast() const = 0;
+ virtual bool isLoopback() const = 0;
+ virtual bool isMulticast() const = 0;
+ virtual bool isLinkLocal() const = 0;
+ virtual bool isSiteLocal() const = 0;
+ virtual bool isIPv4Mapped() const = 0;
+ virtual bool isIPv4Compatible() const = 0;
+ virtual bool isWellKnownMC() const = 0;
+ virtual bool isNodeLocalMC() const = 0;
+ virtual bool isLinkLocalMC() const = 0;
+ virtual bool isSiteLocalMC() const = 0;
+ virtual bool isOrgLocalMC() const = 0;
+ virtual bool isGlobalMC() const = 0;
+ virtual void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet) = 0;
+ virtual unsigned prefixLength() const = 0;
+
+protected:
+ IPAddressImpl();
+
+private:
+ IPAddressImpl(const IPAddressImpl&);
+ IPAddressImpl& operator = (const IPAddressImpl&);
+};
+
+
+//
+// IPv4AddressImpl
+//
+
+class IPv4AddressImpl: public IPAddressImpl
+{
+public:
+ IPv4AddressImpl();
+ IPv4AddressImpl(const void* addr);
+ IPv4AddressImpl(unsigned prefix);
+ IPv4AddressImpl(const IPv4AddressImpl& addr);
+ IPv4AddressImpl& operator = (const IPv4AddressImpl&);
+ std::string toString() const;
+ poco_socklen_t length() const;
+ const void* addr() const;
+ Family family() const;
+ int af() const;
+ unsigned prefixLength() const;
+ Poco::UInt32 scope() const;
+ bool isWildcard() const;
+ bool isBroadcast() const;
+ bool isLoopback() const;
+ bool isMulticast() const;
+ bool isLinkLocal() const;
+ bool isSiteLocal() const;
+ bool isIPv4Compatible() const;
+ bool isIPv4Mapped() const;
+ bool isWellKnownMC() const;
+ bool isNodeLocalMC() const;
+ bool isLinkLocalMC() const;
+ bool isSiteLocalMC() const;
+ bool isOrgLocalMC() const;
+ bool isGlobalMC() const;
+ static IPv4AddressImpl parse(const std::string& addr);
+ void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet);
+ IPAddressImpl* clone() const;
+ IPv4AddressImpl operator & (const IPv4AddressImpl& addr) const;
+ IPv4AddressImpl operator | (const IPv4AddressImpl& addr) const;
+ IPv4AddressImpl operator ^ (const IPv4AddressImpl& addr) const;
+ IPv4AddressImpl operator ~ () const;
+ bool operator == (const IPv4AddressImpl& addr) const;
+ bool operator != (const IPv4AddressImpl& addr) const;
+
+private:
+ struct in_addr _addr;
+};
+
+
+#if defined(POCO_HAVE_IPv6)
+
+
+//
+// IPv6AddressImpl
+//
+
+class IPv6AddressImpl: public IPAddressImpl
+{
+public:
+ IPv6AddressImpl();
+ IPv6AddressImpl(const void* addr);
+ IPv6AddressImpl(const void* addr, Poco::UInt32 scope);
+ IPv6AddressImpl(unsigned prefix);
+ std::string toString() const;
+ poco_socklen_t length() const;
+ const void* addr() const;
+ Family family() const;
+ int af() const;
+ unsigned prefixLength() const;
+ Poco::UInt32 scope() const;
+ bool isWildcard() const;
+ bool isBroadcast() const;
+ bool isLoopback() const;
+ bool isMulticast() const;
+ bool isLinkLocal() const;
+ bool isSiteLocal() const;
+ bool isIPv4Compatible() const;
+ bool isIPv4Mapped() const;
+ bool isWellKnownMC() const;
+ bool isNodeLocalMC() const;
+ bool isLinkLocalMC() const;
+ bool isSiteLocalMC() const;
+ bool isOrgLocalMC() const;
+ bool isGlobalMC() const;
+ static IPv6AddressImpl parse(const std::string& addr);
+ void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet);
+ IPAddressImpl* clone() const;
+ IPv6AddressImpl operator & (const IPv6AddressImpl& addr) const;
+ IPv6AddressImpl operator | (const IPv6AddressImpl& addr) const;
+ IPv6AddressImpl operator ^ (const IPv6AddressImpl& addr) const;
+ IPv6AddressImpl operator ~ () const;
+ bool operator == (const IPv6AddressImpl& addr) const;
+ bool operator != (const IPv6AddressImpl& addr) const;
+ IPv6AddressImpl(const IPv6AddressImpl& addr);
+ IPv6AddressImpl& operator = (const IPv6AddressImpl&);
+
+private:
+ struct in6_addr _addr;
+ unsigned int _scope;
+};
+
+
+#endif // POCO_HAVE_IPv6
+
+
+} } } // namespace Poco::Net::Impl
+
+
+#endif // Net_IPAddressImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MailMessage.h b/contrib/libs/poco/Net/include/Poco/Net/MailMessage.h
index 472284316f..474186036e 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MailMessage.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MailMessage.h
@@ -1,314 +1,314 @@
-//
-// MailMessage.h
-//
-// Library: Net
-// Package: Mail
-// Module: MailMessage
-//
-// Definition of the MailMessage class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MailMessage_INCLUDED
-#define Net_MailMessage_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/MessageHeader.h"
-#include "Poco/Net/MailRecipient.h"
-#include "Poco/Net/PartStore.h"
-#include "Poco/Timestamp.h"
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class MediaType;
-class PartSource;
-class PartHandler;
-class MultipartWriter;
-
-
-class Net_API MailMessage: public MessageHeader
- /// This class represents an e-mail message for
- /// use with the SMTPClientSession and POPClientSession
- /// classes.
- ///
- /// MailMessage supports both old-style plain text messages,
- /// as well as MIME multipart mail messages with attachments.
- ///
- /// For multi-part messages, the following content transfer
- /// encodings are supported: 7bit, 8bit, quoted-printable
- /// and base64.
-{
-public:
- typedef std::vector<MailRecipient> Recipients;
-
- enum ContentDisposition
- {
- CONTENT_INLINE,
- CONTENT_ATTACHMENT
- };
-
- enum ContentTransferEncoding
- {
- ENCODING_7BIT,
- ENCODING_8BIT,
- ENCODING_QUOTED_PRINTABLE,
- ENCODING_BASE64
- };
-
- struct Part
- {
- std::string name;
- PartSource* pSource;
- ContentDisposition disposition;
- ContentTransferEncoding encoding;
- };
-
- typedef std::vector<Part> PartVec;
-
- MailMessage(PartStoreFactory* pStoreFactory = 0);
- /// Creates an empty MailMessage.
- ///
- /// If pStoreFactory is not null, message attachments will be
- /// handled by the object created by the factory. Most
- /// common reason is to temporarily save attachments to
- /// the file system in order to avoid potential memory
- /// exhaustion when attachment files are very large.
-
- virtual ~MailMessage();
- /// Destroys the MailMessage.
-
- void addRecipient(const MailRecipient& recipient);
- /// Adds a recipient for the message.
-
- void setRecipients(const Recipients& recipient);
- /// Clears existing and sets new recipient list for the message.
-
- const Recipients& recipients() const;
- /// Returns the recipients of the message.
-
- void setSubject(const std::string& subject);
- /// Sets the subject of the message.
- ///
- /// The subject must not contain any non-ASCII
- /// characters. To include non-ASCII characters
- /// in the subject, use RFC 2047 word encoding
- /// (see encodeWord()).
-
- const std::string& getSubject() const;
- /// Returns the subject of the message.
-
- void setSender(const std::string& sender);
- /// Sets the sender of the message (which
- /// ends up in the From header field).
- ///
- /// The sender must either be a valid email
- /// address, or a real name followed by
- /// an email address enclosed in < and >.
- ///
- /// The sender must not contain any non-ASCII
- /// characters. To include non-ASCII characters
- /// in the sender, use RFC 2047 word encoding
- /// (see encodeWord()).
-
- const std::string& getSender() const;
- /// Returns the sender of the message (taken
- /// from the From header field).
-
- void setContent(const std::string& content, ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE);
- /// Sets the content of the mail message.
- ///
- /// If the content transfer encoding is ENCODING_7BIT or
- /// ENCODING_8BIT, the content string must be formatted
- /// according to the rules of an internet email message.
- ///
- /// The message will be sent as a single-part
- /// message.
- ///
- /// Note that single CR or LF characters as line delimiters must
- /// not be used. Content lines always should be terminated with a
- /// proper CRLF sequence.
-
- const std::string& getContent() const;
- /// Returns the content of the mail message.
- ///
- /// A content will only be returned for single-part
- /// messages. The content of multi-part mail messages
- /// will be reported through the registered PartHandler.
-
- void setContentType(const std::string& mediaType);
- /// Sets the content type for the message.
-
- void setContentType(const MediaType& mediaType);
- /// Sets the content type for the message.
-
- const std::string& getContentType() const;
- /// Returns the content type for the message.
-
- void setDate(const Poco::Timestamp& dateTime);
- /// Sets the Date header to the given date/time value.
-
- Poco::Timestamp getDate() const;
- /// Returns the value of the Date header.
-
- bool isMultipart() const;
- /// Returns true iff the message is a multipart message.
-
- void addPart(const std::string& name,
- PartSource* pSource,
- ContentDisposition disposition,
- ContentTransferEncoding encoding);
- /// Adds a part/attachment to the mail message.
- ///
- /// The MailMessage takes ownership of the PartSource and deletes it
- /// when it is no longer needed.
- ///
- /// The MailMessage will be converted to a multipart message
- /// if it is not already one.
- ///
- /// The part name, and the filename specified in the part source
- /// must not contain any non-ASCII characters.
- /// To include non-ASCII characters in the part name or filename,
- /// use RFC 2047 word encoding (see encodeWord()).
-
- void addContent(PartSource* pSource,
- ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE);
- /// Adds a part to the mail message by calling
- /// addPart("", pSource, CONTENT_INLINE, encoding);
- ///
- /// The part name, and the filename specified in the part source
- /// must not contain any non-ASCII characters.
- /// To include non-ASCII characters in the part name or filename,
- /// use RFC 2047 word encoding (see encodeWord()).
-
- void addAttachment(const std::string& name,
- PartSource* pSource,
- ContentTransferEncoding encoding = ENCODING_BASE64);
- /// Adds an attachment to the mail message by calling
- /// addPart(name, pSource, CONTENT_ATTACHMENT, encoding);
- ///
- /// The part name, and the filename specified in the part source
- /// must not contain any non-ASCII characters.
- /// To include non-ASCII characters in the part name or filename,
- /// use RFC 2047 word encoding (see encodeWord()).
-
- PartSource* createPartStore(const std::string& content,
- const std::string& mediaType,
- const std::string& filename = "");
- /// Returns either default StringPartSource part store or,
- /// if the part store factory was provided during construction,
- /// the one created by PartStoreFactory.
- /// Returned part store is allocated on the heap; it is caller's
- /// responsibility to delete it after use. Typical use is handler
- /// passing it back to MailMessage, which takes care of the cleanup.
-
- const PartVec& parts() const;
- /// Returns const reference to the vector containing part stores.
-
- void read(std::istream& istr, PartHandler& handler);
- /// Reads the MailMessage from the given input stream.
- ///
- /// If the message has multiple parts, the parts
- /// are reported to the PartHandler. If the message
- /// is not a multi-part message, the content is stored
- /// in a string available by calling getContent().
-
- void read(std::istream& istr);
- /// Reads the MailMessage from the given input stream.
- ///
- /// The raw message (including all MIME parts) is stored
- /// in a string and available by calling getContent().
-
- void write(std::ostream& ostr) const;
- /// Writes the mail message to the given output stream.
-
- static std::string encodeWord(const std::string& text, const std::string& charset = "UTF-8");
- /// If the given string contains non-ASCII characters,
- /// encodes the given string using RFC 2047 "Q" word encoding.
- ///
- /// The given text must already be encoded in the character set
- /// given in charset (default is UTF-8).
- ///
- /// Returns the encoded string, or the original string if it
- /// consists only of ASCII characters.
-
- static const std::string HEADER_SUBJECT;
- static const std::string HEADER_FROM;
- static const std::string HEADER_TO;
- static const std::string HEADER_CC;
- static const std::string HEADER_BCC;
- static const std::string HEADER_DATE;
- static const std::string HEADER_CONTENT_TYPE;
- static const std::string HEADER_CONTENT_TRANSFER_ENCODING;
- static const std::string HEADER_CONTENT_DISPOSITION;
- static const std::string HEADER_CONTENT_ID;
- static const std::string HEADER_MIME_VERSION;
- static const std::string EMPTY_HEADER;
- static const std::string TEXT_PLAIN;
- static const std::string CTE_7BIT;
- static const std::string CTE_8BIT;
- static const std::string CTE_QUOTED_PRINTABLE;
- static const std::string CTE_BASE64;
-
-protected:
- void makeMultipart();
- void writeHeader(const MessageHeader& header, std::ostream& ostr) const;
- void writeMultipart(MessageHeader& header, std::ostream& ostr) const;
- void writePart(MultipartWriter& writer, const Part& part) const;
- void writeEncoded(std::istream& istr, std::ostream& ostr, ContentTransferEncoding encoding) const;
- void setRecipientHeaders(MessageHeader& headers) const;
- void readHeader(std::istream& istr);
- void readMultipart(std::istream& istr, PartHandler& handler);
- void readPart(std::istream& istr, const MessageHeader& header, PartHandler& handler);
- void handlePart(std::istream& istr, const MessageHeader& header, PartHandler& handler);
- static const std::string& contentTransferEncodingToString(ContentTransferEncoding encoding);
- static int lineLength(const std::string& str);
- static void appendRecipient(const MailRecipient& recipient, std::string& str);
-
-private:
- MailMessage(const MailMessage&);
- MailMessage& operator = (const MailMessage&);
-
- Recipients _recipients;
- PartVec _parts;
- std::string _content;
- ContentTransferEncoding _encoding;
- mutable std::string _boundary;
- PartStoreFactory* _pStoreFactory;
-};
-
-
-//
-// inlines
-//
-inline const MailMessage::Recipients& MailMessage::recipients() const
-{
- return _recipients;
-}
-
-
-inline const std::string& MailMessage::getContent() const
-{
- return _content;
-}
-
-
-inline const MailMessage::PartVec& MailMessage::parts() const
-{
- return _parts;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MailMessage_INCLUDED
+//
+// MailMessage.h
+//
+// Library: Net
+// Package: Mail
+// Module: MailMessage
+//
+// Definition of the MailMessage class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MailMessage_INCLUDED
+#define Net_MailMessage_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/MessageHeader.h"
+#include "Poco/Net/MailRecipient.h"
+#include "Poco/Net/PartStore.h"
+#include "Poco/Timestamp.h"
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class MediaType;
+class PartSource;
+class PartHandler;
+class MultipartWriter;
+
+
+class Net_API MailMessage: public MessageHeader
+ /// This class represents an e-mail message for
+ /// use with the SMTPClientSession and POPClientSession
+ /// classes.
+ ///
+ /// MailMessage supports both old-style plain text messages,
+ /// as well as MIME multipart mail messages with attachments.
+ ///
+ /// For multi-part messages, the following content transfer
+ /// encodings are supported: 7bit, 8bit, quoted-printable
+ /// and base64.
+{
+public:
+ typedef std::vector<MailRecipient> Recipients;
+
+ enum ContentDisposition
+ {
+ CONTENT_INLINE,
+ CONTENT_ATTACHMENT
+ };
+
+ enum ContentTransferEncoding
+ {
+ ENCODING_7BIT,
+ ENCODING_8BIT,
+ ENCODING_QUOTED_PRINTABLE,
+ ENCODING_BASE64
+ };
+
+ struct Part
+ {
+ std::string name;
+ PartSource* pSource;
+ ContentDisposition disposition;
+ ContentTransferEncoding encoding;
+ };
+
+ typedef std::vector<Part> PartVec;
+
+ MailMessage(PartStoreFactory* pStoreFactory = 0);
+ /// Creates an empty MailMessage.
+ ///
+ /// If pStoreFactory is not null, message attachments will be
+ /// handled by the object created by the factory. Most
+ /// common reason is to temporarily save attachments to
+ /// the file system in order to avoid potential memory
+ /// exhaustion when attachment files are very large.
+
+ virtual ~MailMessage();
+ /// Destroys the MailMessage.
+
+ void addRecipient(const MailRecipient& recipient);
+ /// Adds a recipient for the message.
+
+ void setRecipients(const Recipients& recipient);
+ /// Clears existing and sets new recipient list for the message.
+
+ const Recipients& recipients() const;
+ /// Returns the recipients of the message.
+
+ void setSubject(const std::string& subject);
+ /// Sets the subject of the message.
+ ///
+ /// The subject must not contain any non-ASCII
+ /// characters. To include non-ASCII characters
+ /// in the subject, use RFC 2047 word encoding
+ /// (see encodeWord()).
+
+ const std::string& getSubject() const;
+ /// Returns the subject of the message.
+
+ void setSender(const std::string& sender);
+ /// Sets the sender of the message (which
+ /// ends up in the From header field).
+ ///
+ /// The sender must either be a valid email
+ /// address, or a real name followed by
+ /// an email address enclosed in < and >.
+ ///
+ /// The sender must not contain any non-ASCII
+ /// characters. To include non-ASCII characters
+ /// in the sender, use RFC 2047 word encoding
+ /// (see encodeWord()).
+
+ const std::string& getSender() const;
+ /// Returns the sender of the message (taken
+ /// from the From header field).
+
+ void setContent(const std::string& content, ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE);
+ /// Sets the content of the mail message.
+ ///
+ /// If the content transfer encoding is ENCODING_7BIT or
+ /// ENCODING_8BIT, the content string must be formatted
+ /// according to the rules of an internet email message.
+ ///
+ /// The message will be sent as a single-part
+ /// message.
+ ///
+ /// Note that single CR or LF characters as line delimiters must
+ /// not be used. Content lines always should be terminated with a
+ /// proper CRLF sequence.
+
+ const std::string& getContent() const;
+ /// Returns the content of the mail message.
+ ///
+ /// A content will only be returned for single-part
+ /// messages. The content of multi-part mail messages
+ /// will be reported through the registered PartHandler.
+
+ void setContentType(const std::string& mediaType);
+ /// Sets the content type for the message.
+
+ void setContentType(const MediaType& mediaType);
+ /// Sets the content type for the message.
+
+ const std::string& getContentType() const;
+ /// Returns the content type for the message.
+
+ void setDate(const Poco::Timestamp& dateTime);
+ /// Sets the Date header to the given date/time value.
+
+ Poco::Timestamp getDate() const;
+ /// Returns the value of the Date header.
+
+ bool isMultipart() const;
+ /// Returns true iff the message is a multipart message.
+
+ void addPart(const std::string& name,
+ PartSource* pSource,
+ ContentDisposition disposition,
+ ContentTransferEncoding encoding);
+ /// Adds a part/attachment to the mail message.
+ ///
+ /// The MailMessage takes ownership of the PartSource and deletes it
+ /// when it is no longer needed.
+ ///
+ /// The MailMessage will be converted to a multipart message
+ /// if it is not already one.
+ ///
+ /// The part name, and the filename specified in the part source
+ /// must not contain any non-ASCII characters.
+ /// To include non-ASCII characters in the part name or filename,
+ /// use RFC 2047 word encoding (see encodeWord()).
+
+ void addContent(PartSource* pSource,
+ ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE);
+ /// Adds a part to the mail message by calling
+ /// addPart("", pSource, CONTENT_INLINE, encoding);
+ ///
+ /// The part name, and the filename specified in the part source
+ /// must not contain any non-ASCII characters.
+ /// To include non-ASCII characters in the part name or filename,
+ /// use RFC 2047 word encoding (see encodeWord()).
+
+ void addAttachment(const std::string& name,
+ PartSource* pSource,
+ ContentTransferEncoding encoding = ENCODING_BASE64);
+ /// Adds an attachment to the mail message by calling
+ /// addPart(name, pSource, CONTENT_ATTACHMENT, encoding);
+ ///
+ /// The part name, and the filename specified in the part source
+ /// must not contain any non-ASCII characters.
+ /// To include non-ASCII characters in the part name or filename,
+ /// use RFC 2047 word encoding (see encodeWord()).
+
+ PartSource* createPartStore(const std::string& content,
+ const std::string& mediaType,
+ const std::string& filename = "");
+ /// Returns either default StringPartSource part store or,
+ /// if the part store factory was provided during construction,
+ /// the one created by PartStoreFactory.
+ /// Returned part store is allocated on the heap; it is caller's
+ /// responsibility to delete it after use. Typical use is handler
+ /// passing it back to MailMessage, which takes care of the cleanup.
+
+ const PartVec& parts() const;
+ /// Returns const reference to the vector containing part stores.
+
+ void read(std::istream& istr, PartHandler& handler);
+ /// Reads the MailMessage from the given input stream.
+ ///
+ /// If the message has multiple parts, the parts
+ /// are reported to the PartHandler. If the message
+ /// is not a multi-part message, the content is stored
+ /// in a string available by calling getContent().
+
+ void read(std::istream& istr);
+ /// Reads the MailMessage from the given input stream.
+ ///
+ /// The raw message (including all MIME parts) is stored
+ /// in a string and available by calling getContent().
+
+ void write(std::ostream& ostr) const;
+ /// Writes the mail message to the given output stream.
+
+ static std::string encodeWord(const std::string& text, const std::string& charset = "UTF-8");
+ /// If the given string contains non-ASCII characters,
+ /// encodes the given string using RFC 2047 "Q" word encoding.
+ ///
+ /// The given text must already be encoded in the character set
+ /// given in charset (default is UTF-8).
+ ///
+ /// Returns the encoded string, or the original string if it
+ /// consists only of ASCII characters.
+
+ static const std::string HEADER_SUBJECT;
+ static const std::string HEADER_FROM;
+ static const std::string HEADER_TO;
+ static const std::string HEADER_CC;
+ static const std::string HEADER_BCC;
+ static const std::string HEADER_DATE;
+ static const std::string HEADER_CONTENT_TYPE;
+ static const std::string HEADER_CONTENT_TRANSFER_ENCODING;
+ static const std::string HEADER_CONTENT_DISPOSITION;
+ static const std::string HEADER_CONTENT_ID;
+ static const std::string HEADER_MIME_VERSION;
+ static const std::string EMPTY_HEADER;
+ static const std::string TEXT_PLAIN;
+ static const std::string CTE_7BIT;
+ static const std::string CTE_8BIT;
+ static const std::string CTE_QUOTED_PRINTABLE;
+ static const std::string CTE_BASE64;
+
+protected:
+ void makeMultipart();
+ void writeHeader(const MessageHeader& header, std::ostream& ostr) const;
+ void writeMultipart(MessageHeader& header, std::ostream& ostr) const;
+ void writePart(MultipartWriter& writer, const Part& part) const;
+ void writeEncoded(std::istream& istr, std::ostream& ostr, ContentTransferEncoding encoding) const;
+ void setRecipientHeaders(MessageHeader& headers) const;
+ void readHeader(std::istream& istr);
+ void readMultipart(std::istream& istr, PartHandler& handler);
+ void readPart(std::istream& istr, const MessageHeader& header, PartHandler& handler);
+ void handlePart(std::istream& istr, const MessageHeader& header, PartHandler& handler);
+ static const std::string& contentTransferEncodingToString(ContentTransferEncoding encoding);
+ static int lineLength(const std::string& str);
+ static void appendRecipient(const MailRecipient& recipient, std::string& str);
+
+private:
+ MailMessage(const MailMessage&);
+ MailMessage& operator = (const MailMessage&);
+
+ Recipients _recipients;
+ PartVec _parts;
+ std::string _content;
+ ContentTransferEncoding _encoding;
+ mutable std::string _boundary;
+ PartStoreFactory* _pStoreFactory;
+};
+
+
+//
+// inlines
+//
+inline const MailMessage::Recipients& MailMessage::recipients() const
+{
+ return _recipients;
+}
+
+
+inline const std::string& MailMessage::getContent() const
+{
+ return _content;
+}
+
+
+inline const MailMessage::PartVec& MailMessage::parts() const
+{
+ return _parts;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MailMessage_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MailRecipient.h b/contrib/libs/poco/Net/include/Poco/Net/MailRecipient.h
index da2faedc0c..7b146141af 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MailRecipient.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MailRecipient.h
@@ -1,120 +1,120 @@
-//
-// MailRecipient.h
-//
-// Library: Net
-// Package: Mail
-// Module: MailRecipient
-//
-// Definition of the MailRecipient class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MailRecipient_INCLUDED
-#define Net_MailRecipient_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API MailRecipient
- /// The recipient of an e-mail message.
- ///
- /// A recipient has a type (primary recipient,
- /// carbon-copy recipient, blind-carbon-copy
- /// recipient), an e-mail address and an optional
- /// real name.
-{
-public:
- enum RecipientType
- {
- PRIMARY_RECIPIENT,
- CC_RECIPIENT,
- BCC_RECIPIENT
- };
-
- MailRecipient();
- /// Creates an empty MailRecipient.
-
- MailRecipient(const MailRecipient& recipient);
- /// Creates a MailRecipient by copying another one.
-
- MailRecipient(RecipientType type, const std::string& address);
- /// Creates a MailRecipient of the given type.
-
- MailRecipient(RecipientType type, const std::string& address, const std::string& realName);
- /// Creates a MailRecipient of the given type.
-
- ~MailRecipient();
- /// Destroys the MailRecipient.
-
- MailRecipient& operator = (const MailRecipient& recipient);
- /// Assigns another recipient.
-
- void swap(MailRecipient& recipient);
- /// Exchanges the content of two recipients.
-
- RecipientType getType() const;
- /// Returns the type of the recipient.
-
- void setType(RecipientType type);
- /// Sets the type of the recipient.
-
- const std::string& getAddress() const;
- /// Returns the address of the recipient.
-
- void setAddress(const std::string& address);
- /// Sets the address of the recipient.
-
- const std::string& getRealName() const;
- /// Returns the real name of the recipient.
-
- void setRealName(const std::string& realName);
- /// Sets the real name of the recipient.
-
-private:
- std::string _address;
- std::string _realName;
- RecipientType _type;
-};
-
-
-//
-// inlines
-//
-inline MailRecipient::RecipientType MailRecipient::getType() const
-{
- return _type;
-}
-
-
-inline const std::string& MailRecipient::getAddress() const
-{
- return _address;
-}
-
-
-inline const std::string& MailRecipient::getRealName() const
-{
- return _realName;
-}
-
-
-inline void swap(MailRecipient& r1, MailRecipient& r2)
-{
- r1.swap(r2);
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MailRecipient_INCLUDED
+//
+// MailRecipient.h
+//
+// Library: Net
+// Package: Mail
+// Module: MailRecipient
+//
+// Definition of the MailRecipient class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MailRecipient_INCLUDED
+#define Net_MailRecipient_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API MailRecipient
+ /// The recipient of an e-mail message.
+ ///
+ /// A recipient has a type (primary recipient,
+ /// carbon-copy recipient, blind-carbon-copy
+ /// recipient), an e-mail address and an optional
+ /// real name.
+{
+public:
+ enum RecipientType
+ {
+ PRIMARY_RECIPIENT,
+ CC_RECIPIENT,
+ BCC_RECIPIENT
+ };
+
+ MailRecipient();
+ /// Creates an empty MailRecipient.
+
+ MailRecipient(const MailRecipient& recipient);
+ /// Creates a MailRecipient by copying another one.
+
+ MailRecipient(RecipientType type, const std::string& address);
+ /// Creates a MailRecipient of the given type.
+
+ MailRecipient(RecipientType type, const std::string& address, const std::string& realName);
+ /// Creates a MailRecipient of the given type.
+
+ ~MailRecipient();
+ /// Destroys the MailRecipient.
+
+ MailRecipient& operator = (const MailRecipient& recipient);
+ /// Assigns another recipient.
+
+ void swap(MailRecipient& recipient);
+ /// Exchanges the content of two recipients.
+
+ RecipientType getType() const;
+ /// Returns the type of the recipient.
+
+ void setType(RecipientType type);
+ /// Sets the type of the recipient.
+
+ const std::string& getAddress() const;
+ /// Returns the address of the recipient.
+
+ void setAddress(const std::string& address);
+ /// Sets the address of the recipient.
+
+ const std::string& getRealName() const;
+ /// Returns the real name of the recipient.
+
+ void setRealName(const std::string& realName);
+ /// Sets the real name of the recipient.
+
+private:
+ std::string _address;
+ std::string _realName;
+ RecipientType _type;
+};
+
+
+//
+// inlines
+//
+inline MailRecipient::RecipientType MailRecipient::getType() const
+{
+ return _type;
+}
+
+
+inline const std::string& MailRecipient::getAddress() const
+{
+ return _address;
+}
+
+
+inline const std::string& MailRecipient::getRealName() const
+{
+ return _realName;
+}
+
+
+inline void swap(MailRecipient& r1, MailRecipient& r2)
+{
+ r1.swap(r2);
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MailRecipient_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MailStream.h b/contrib/libs/poco/Net/include/Poco/Net/MailStream.h
index e9e7a7e65d..bc674b014d 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MailStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MailStream.h
@@ -1,146 +1,146 @@
-//
-// MailStream.h
-//
-// Library: Net
-// Package: Mail
-// Module: MailStream
-//
-// Definition of the MailStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MailStream_INCLUDED
-#define Net_MailStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/UnbufferedStreamBuf.h"
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API MailStreamBuf: public Poco::UnbufferedStreamBuf
- /// The sole purpose of this stream buffer is to replace
- /// a "\r\n.\r\n" character sequence with a "\r\n..\r\n" sequence for
- /// output streams and vice-versa for input streams.
- ///
- /// This is used when sending mail messages to SMTP servers, or
- /// receiving mail messages from POP servers.
- ///
- /// See RFC 2181 (Simple Mail Transfer Protocol) and RFC 1939
- /// (Post Office Protocol - Version 3) for more information.
-{
-public:
- MailStreamBuf(std::istream& istr);
- /// Creates the MailStreamBuf and connects it
- /// to the given input stream.
-
- MailStreamBuf(std::ostream& ostr);
- /// Creates the MailStreamBuf and connects it
- /// to the given output stream.
-
- ~MailStreamBuf();
- /// Destroys the MailStreamBuf.
-
- void close();
- /// Writes the terminating period, followed by
- /// CR-LF.
-
-protected:
- int readFromDevice();
- int writeToDevice(char c);
- int readOne();
-
-private:
- enum State
- {
- ST_DATA,
- ST_CR,
- ST_CR_LF,
- ST_CR_LF_DOT,
- ST_CR_LF_DOT_DOT,
- ST_CR_LF_DOT_CR,
- ST_CR_LF_DOT_CR_LF
- };
-
- std::istream* _pIstr;
- std::ostream* _pOstr;
- std::string _buffer;
- State _state;
-};
-
-
-class Net_API MailIOS: public virtual std::ios
- /// The base class for MailInputStream and MailOutputStream.
- ///
- /// This class provides common methods and is also needed to ensure
- /// the correct initialization order of the stream buffer and base classes.
-{
-public:
- MailIOS(std::istream& istr);
- /// Creates the MailIOS and connects it
- /// to the given input stream.
-
- MailIOS(std::ostream& ostr);
- /// Creates the MailIOS and connects it
- /// to the given output stream.
-
- ~MailIOS();
- /// Destroys the stream.
-
- void close();
- /// Writes the terminating period, followed by
- /// CR-LF.
-
- MailStreamBuf* rdbuf();
- /// Returns a pointer to the underlying streambuf.
-
-protected:
- MailStreamBuf _buf;
-};
-
-
-class Net_API MailInputStream: public MailIOS, public std::istream
- /// This class is used for reading E-Mail messages from a
- /// POP3 server. All occurrences of "\r\n..\r\n" are replaced with
- /// "\r\n.\r\n". The first occurrence of "\r\n.\r\n" denotes the end
- /// of the stream.
-{
-public:
- MailInputStream(std::istream& istr);
- /// Creates the MailInputStream and connects it
- /// to the given input stream.
-
- ~MailInputStream();
- /// Destroys the MailInputStream.
-};
-
-
-class Net_API MailOutputStream: public MailIOS, public std::ostream
- /// This class is used for writing E-Mail messages to a
- /// SMTP server. All occurrences of "\r\n.\r\n" are replaced with
- /// "\r\n..\r\n".
-{
-public:
- MailOutputStream(std::ostream& ostr);
- /// Creates the MailOutputStream and connects it
- /// to the given input stream.
-
- ~MailOutputStream();
- /// Destroys the MailOutputStream.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MailStream_INCLUDED
+//
+// MailStream.h
+//
+// Library: Net
+// Package: Mail
+// Module: MailStream
+//
+// Definition of the MailStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MailStream_INCLUDED
+#define Net_MailStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/UnbufferedStreamBuf.h"
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API MailStreamBuf: public Poco::UnbufferedStreamBuf
+ /// The sole purpose of this stream buffer is to replace
+ /// a "\r\n.\r\n" character sequence with a "\r\n..\r\n" sequence for
+ /// output streams and vice-versa for input streams.
+ ///
+ /// This is used when sending mail messages to SMTP servers, or
+ /// receiving mail messages from POP servers.
+ ///
+ /// See RFC 2181 (Simple Mail Transfer Protocol) and RFC 1939
+ /// (Post Office Protocol - Version 3) for more information.
+{
+public:
+ MailStreamBuf(std::istream& istr);
+ /// Creates the MailStreamBuf and connects it
+ /// to the given input stream.
+
+ MailStreamBuf(std::ostream& ostr);
+ /// Creates the MailStreamBuf and connects it
+ /// to the given output stream.
+
+ ~MailStreamBuf();
+ /// Destroys the MailStreamBuf.
+
+ void close();
+ /// Writes the terminating period, followed by
+ /// CR-LF.
+
+protected:
+ int readFromDevice();
+ int writeToDevice(char c);
+ int readOne();
+
+private:
+ enum State
+ {
+ ST_DATA,
+ ST_CR,
+ ST_CR_LF,
+ ST_CR_LF_DOT,
+ ST_CR_LF_DOT_DOT,
+ ST_CR_LF_DOT_CR,
+ ST_CR_LF_DOT_CR_LF
+ };
+
+ std::istream* _pIstr;
+ std::ostream* _pOstr;
+ std::string _buffer;
+ State _state;
+};
+
+
+class Net_API MailIOS: public virtual std::ios
+ /// The base class for MailInputStream and MailOutputStream.
+ ///
+ /// This class provides common methods and is also needed to ensure
+ /// the correct initialization order of the stream buffer and base classes.
+{
+public:
+ MailIOS(std::istream& istr);
+ /// Creates the MailIOS and connects it
+ /// to the given input stream.
+
+ MailIOS(std::ostream& ostr);
+ /// Creates the MailIOS and connects it
+ /// to the given output stream.
+
+ ~MailIOS();
+ /// Destroys the stream.
+
+ void close();
+ /// Writes the terminating period, followed by
+ /// CR-LF.
+
+ MailStreamBuf* rdbuf();
+ /// Returns a pointer to the underlying streambuf.
+
+protected:
+ MailStreamBuf _buf;
+};
+
+
+class Net_API MailInputStream: public MailIOS, public std::istream
+ /// This class is used for reading E-Mail messages from a
+ /// POP3 server. All occurrences of "\r\n..\r\n" are replaced with
+ /// "\r\n.\r\n". The first occurrence of "\r\n.\r\n" denotes the end
+ /// of the stream.
+{
+public:
+ MailInputStream(std::istream& istr);
+ /// Creates the MailInputStream and connects it
+ /// to the given input stream.
+
+ ~MailInputStream();
+ /// Destroys the MailInputStream.
+};
+
+
+class Net_API MailOutputStream: public MailIOS, public std::ostream
+ /// This class is used for writing E-Mail messages to a
+ /// SMTP server. All occurrences of "\r\n.\r\n" are replaced with
+ /// "\r\n..\r\n".
+{
+public:
+ MailOutputStream(std::ostream& ostr);
+ /// Creates the MailOutputStream and connects it
+ /// to the given input stream.
+
+ ~MailOutputStream();
+ /// Destroys the MailOutputStream.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MailStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MediaType.h b/contrib/libs/poco/Net/include/Poco/Net/MediaType.h
index a99cc03bb8..8440cb6245 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MediaType.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MediaType.h
@@ -1,169 +1,169 @@
-//
-// MediaType.h
-//
-// Library: Net
-// Package: Messages
-// Module: MediaType
-//
-// Definition of the MediaType class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MediaType_INCLUDED
-#define Net_MediaType_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/NameValueCollection.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API MediaType
- /// This class represents a MIME media type, consisting of
- /// a top-level type, a subtype and an optional set of
- /// parameters.
- ///
- /// The implementation conforms with RFC 2045 and RFC 2046.
-{
-public:
- MediaType(const std::string& mediaType);
- /// Creates the MediaType from the given string, which
- /// must have the format <type>/<subtype>{;<parameter>=<value>}.
-
- MediaType(const std::string& type, const std::string& subType);
- /// Creates the MediaType, using the given type and subtype.
-
- MediaType(const MediaType& mediaType);
- /// Creates a MediaType from another one.
-
- ~MediaType();
- /// Destroys the MediaType.
-
- MediaType& operator = (const MediaType& mediaType);
- /// Assigns another media type.
-
- MediaType& operator = (const std::string& mediaType);
- /// Assigns another media type.
-
- void swap(MediaType& mediaType);
- /// Swaps the MediaType with another one.
-
- void setType(const std::string& type);
- /// Sets the top-level type.
-
- const std::string& getType() const;
- /// Returns the top-level type.
-
- void setSubType(const std::string& subType);
- /// Sets the sub type.
-
- const std::string& getSubType() const;
- /// Returns the sub type.
-
- void setParameter(const std::string& name, const std::string& value);
- /// Sets the parameter with the given name.
-
- const std::string& getParameter(const std::string& name) const;
- /// Returns the parameter with the given name.
- ///
- /// Throws a NotFoundException if the parameter does not exist.
-
- bool hasParameter(const std::string& name) const;
- /// Returns true iff a parameter with the given name exists.
-
- void removeParameter(const std::string& name);
- /// Removes the parameter with the given name.
-
- const NameValueCollection& parameters() const;
- /// Returns the parameters.
-
- std::string toString() const;
- /// Returns the string representation of the media type
- /// which is <type>/<subtype>{;<parameter>=<value>}
-
- bool matches(const MediaType& mediaType) const;
- /// Returns true iff the type and subtype match
- /// the type and subtype of the given media type.
- /// Matching is case insensitive.
-
- bool matches(const std::string& type, const std::string& subType) const;
- /// Returns true iff the type and subtype match
- /// the given type and subtype.
- /// Matching is case insensitive.
-
- bool matches(const std::string& type) const;
- /// Returns true iff the type matches the given type.
- /// Matching is case insensitive.
-
- bool matchesRange(const MediaType& mediaType) const;
- /// Returns true if the type and subtype match
- /// the type and subtype of the given media type.
- /// If the MIME type is a range of types it matches
- /// any media type within the range (e.g. "image/*" matches
- /// any image media type, "*/*" matches anything).
- /// Matching is case insensitive.
-
- bool matchesRange(const std::string& type, const std::string& subType) const;
- /// Returns true if the type and subtype match
- /// the given type and subtype.
- /// If the MIME type is a range of types it matches
- /// any media type within the range (e.g. "image/*" matches
- /// any image media type, "*/*" matches anything).
- /// Matching is case insensitive.
-
- bool matchesRange(const std::string& type) const;
- /// Returns true if the type matches the given type or
- /// the type is a range of types denoted by "*".
- /// Matching is case insensitive.
-
-protected:
- void parse(const std::string& mediaType);
-
-private:
- MediaType();
-
- std::string _type;
- std::string _subType;
- NameValueCollection _parameters;
-};
-
-
-//
-// inlines
-//
-inline const std::string& MediaType::getType() const
-{
- return _type;
-}
-
-
-inline const std::string& MediaType::getSubType() const
-{
- return _subType;
-}
-
-
-inline const NameValueCollection& MediaType::parameters() const
-{
- return _parameters;
-}
-
-
-inline void swap(MediaType& m1, MediaType& m2)
-{
- m1.swap(m2);
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MediaType_INCLUDED
+//
+// MediaType.h
+//
+// Library: Net
+// Package: Messages
+// Module: MediaType
+//
+// Definition of the MediaType class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MediaType_INCLUDED
+#define Net_MediaType_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/NameValueCollection.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API MediaType
+ /// This class represents a MIME media type, consisting of
+ /// a top-level type, a subtype and an optional set of
+ /// parameters.
+ ///
+ /// The implementation conforms with RFC 2045 and RFC 2046.
+{
+public:
+ MediaType(const std::string& mediaType);
+ /// Creates the MediaType from the given string, which
+ /// must have the format <type>/<subtype>{;<parameter>=<value>}.
+
+ MediaType(const std::string& type, const std::string& subType);
+ /// Creates the MediaType, using the given type and subtype.
+
+ MediaType(const MediaType& mediaType);
+ /// Creates a MediaType from another one.
+
+ ~MediaType();
+ /// Destroys the MediaType.
+
+ MediaType& operator = (const MediaType& mediaType);
+ /// Assigns another media type.
+
+ MediaType& operator = (const std::string& mediaType);
+ /// Assigns another media type.
+
+ void swap(MediaType& mediaType);
+ /// Swaps the MediaType with another one.
+
+ void setType(const std::string& type);
+ /// Sets the top-level type.
+
+ const std::string& getType() const;
+ /// Returns the top-level type.
+
+ void setSubType(const std::string& subType);
+ /// Sets the sub type.
+
+ const std::string& getSubType() const;
+ /// Returns the sub type.
+
+ void setParameter(const std::string& name, const std::string& value);
+ /// Sets the parameter with the given name.
+
+ const std::string& getParameter(const std::string& name) const;
+ /// Returns the parameter with the given name.
+ ///
+ /// Throws a NotFoundException if the parameter does not exist.
+
+ bool hasParameter(const std::string& name) const;
+ /// Returns true iff a parameter with the given name exists.
+
+ void removeParameter(const std::string& name);
+ /// Removes the parameter with the given name.
+
+ const NameValueCollection& parameters() const;
+ /// Returns the parameters.
+
+ std::string toString() const;
+ /// Returns the string representation of the media type
+ /// which is <type>/<subtype>{;<parameter>=<value>}
+
+ bool matches(const MediaType& mediaType) const;
+ /// Returns true iff the type and subtype match
+ /// the type and subtype of the given media type.
+ /// Matching is case insensitive.
+
+ bool matches(const std::string& type, const std::string& subType) const;
+ /// Returns true iff the type and subtype match
+ /// the given type and subtype.
+ /// Matching is case insensitive.
+
+ bool matches(const std::string& type) const;
+ /// Returns true iff the type matches the given type.
+ /// Matching is case insensitive.
+
+ bool matchesRange(const MediaType& mediaType) const;
+ /// Returns true if the type and subtype match
+ /// the type and subtype of the given media type.
+ /// If the MIME type is a range of types it matches
+ /// any media type within the range (e.g. "image/*" matches
+ /// any image media type, "*/*" matches anything).
+ /// Matching is case insensitive.
+
+ bool matchesRange(const std::string& type, const std::string& subType) const;
+ /// Returns true if the type and subtype match
+ /// the given type and subtype.
+ /// If the MIME type is a range of types it matches
+ /// any media type within the range (e.g. "image/*" matches
+ /// any image media type, "*/*" matches anything).
+ /// Matching is case insensitive.
+
+ bool matchesRange(const std::string& type) const;
+ /// Returns true if the type matches the given type or
+ /// the type is a range of types denoted by "*".
+ /// Matching is case insensitive.
+
+protected:
+ void parse(const std::string& mediaType);
+
+private:
+ MediaType();
+
+ std::string _type;
+ std::string _subType;
+ NameValueCollection _parameters;
+};
+
+
+//
+// inlines
+//
+inline const std::string& MediaType::getType() const
+{
+ return _type;
+}
+
+
+inline const std::string& MediaType::getSubType() const
+{
+ return _subType;
+}
+
+
+inline const NameValueCollection& MediaType::parameters() const
+{
+ return _parameters;
+}
+
+
+inline void swap(MediaType& m1, MediaType& m2)
+{
+ m1.swap(m2);
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MediaType_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MessageHeader.h b/contrib/libs/poco/Net/include/Poco/Net/MessageHeader.h
index 72221b7618..9b05ccb279 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MessageHeader.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MessageHeader.h
@@ -1,169 +1,169 @@
-//
-// MessageHeader.h
-//
-// Library: Net
-// Package: Messages
-// Module: MessageHeader
-//
-// Definition of the MessageHeader class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MessageHeader_INCLUDED
-#define Net_MessageHeader_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/NameValueCollection.h"
-#include <ostream>
-#include <istream>
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API MessageHeader: public NameValueCollection
- /// A collection of name-value pairs that are used in
- /// various internet protocols like HTTP and SMTP.
- ///
- /// The name is case-insensitive.
- ///
- /// There can be more than one name-value pair with the
- /// same name.
- ///
- /// MessageHeader supports writing and reading the
- /// header data in RFC 2822 format.
- ///
- /// The maximum number of fields can be restricted
- /// by calling setFieldLimit(). This is useful to
- /// defend against certain kinds of denial-of-service
- /// attacks. The limit is only enforced when parsing
- /// header fields from a stream, not when programmatically
- /// adding them. The default limit is 100.
-{
-public:
- MessageHeader();
- /// Creates the MessageHeader.
-
- MessageHeader(const MessageHeader& messageHeader);
- /// Creates the MessageHeader by copying
- /// another one.
-
- virtual ~MessageHeader();
- /// Destroys the MessageHeader.
-
- MessageHeader& operator = (const MessageHeader& messageHeader);
- /// Assigns the content of another MessageHeader.
-
- virtual void write(std::ostream& ostr) const;
- /// Writes the message header to the given output stream.
- ///
- /// The format is one name-value pair per line, with
- /// name and value separated by a colon and lines
- /// delimited by a carriage return and a linefeed
- /// character. See RFC 2822 for details.
-
- virtual void read(std::istream& istr);
- /// Reads the message header from the given input stream.
- ///
- /// See write() for the expected format.
- /// Also supported is folding of field content, according
- /// to section 2.2.3 of RFC 2822.
- ///
- /// Reading stops at the first empty line (a line only
- /// containing \r\n or \n), as well as at the end of
- /// the stream.
- ///
- /// Some basic sanity checking of the input stream is
- /// performed.
- ///
- /// Throws a MessageException if the input stream is
- /// malformed.
-
- int getFieldLimit() const;
- /// Returns the maximum number of header fields
- /// allowed.
- ///
- /// See setFieldLimit() for more information.
-
- void setFieldLimit(int limit);
- /// Sets the maximum number of header fields
- /// allowed. This limit is used to defend certain
- /// kinds of denial-of-service attacks.
- /// Specify 0 for unlimited (not recommended).
- ///
- /// The default limit is 100.
-
- bool hasToken(const std::string& fieldName, const std::string& token) const;
- /// Returns true iff the field with the given fieldName contains
- /// the given token. Tokens in a header field are expected to be
- /// comma-separated and are case insensitive.
-
- static void splitElements(const std::string& s, std::vector<std::string>& elements, bool ignoreEmpty = true);
- /// Splits the given string into separate elements. Elements are expected
- /// to be separated by commas.
- ///
- /// For example, the string
- /// text/plain; q=0.5, text/html, text/x-dvi; q=0.8
- /// is split into the elements
- /// text/plain; q=0.5
- /// text/html
- /// text/x-dvi; q=0.8
- ///
- /// Commas enclosed in double quotes do not split elements.
- ///
- /// If ignoreEmpty is true, empty elements are not returned.
-
- static void splitParameters(const std::string& s, std::string& value, NameValueCollection& parameters);
- /// Splits the given string into a value and a collection of parameters.
- /// Parameters are expected to be separated by semicolons.
- ///
- /// Enclosing quotes of parameter values are removed.
- ///
+//
+// MessageHeader.h
+//
+// Library: Net
+// Package: Messages
+// Module: MessageHeader
+//
+// Definition of the MessageHeader class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MessageHeader_INCLUDED
+#define Net_MessageHeader_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/NameValueCollection.h"
+#include <ostream>
+#include <istream>
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API MessageHeader: public NameValueCollection
+ /// A collection of name-value pairs that are used in
+ /// various internet protocols like HTTP and SMTP.
+ ///
+ /// The name is case-insensitive.
+ ///
+ /// There can be more than one name-value pair with the
+ /// same name.
+ ///
+ /// MessageHeader supports writing and reading the
+ /// header data in RFC 2822 format.
+ ///
+ /// The maximum number of fields can be restricted
+ /// by calling setFieldLimit(). This is useful to
+ /// defend against certain kinds of denial-of-service
+ /// attacks. The limit is only enforced when parsing
+ /// header fields from a stream, not when programmatically
+ /// adding them. The default limit is 100.
+{
+public:
+ MessageHeader();
+ /// Creates the MessageHeader.
+
+ MessageHeader(const MessageHeader& messageHeader);
+ /// Creates the MessageHeader by copying
+ /// another one.
+
+ virtual ~MessageHeader();
+ /// Destroys the MessageHeader.
+
+ MessageHeader& operator = (const MessageHeader& messageHeader);
+ /// Assigns the content of another MessageHeader.
+
+ virtual void write(std::ostream& ostr) const;
+ /// Writes the message header to the given output stream.
+ ///
+ /// The format is one name-value pair per line, with
+ /// name and value separated by a colon and lines
+ /// delimited by a carriage return and a linefeed
+ /// character. See RFC 2822 for details.
+
+ virtual void read(std::istream& istr);
+ /// Reads the message header from the given input stream.
+ ///
+ /// See write() for the expected format.
+ /// Also supported is folding of field content, according
+ /// to section 2.2.3 of RFC 2822.
+ ///
+ /// Reading stops at the first empty line (a line only
+ /// containing \r\n or \n), as well as at the end of
+ /// the stream.
+ ///
+ /// Some basic sanity checking of the input stream is
+ /// performed.
+ ///
+ /// Throws a MessageException if the input stream is
+ /// malformed.
+
+ int getFieldLimit() const;
+ /// Returns the maximum number of header fields
+ /// allowed.
+ ///
+ /// See setFieldLimit() for more information.
+
+ void setFieldLimit(int limit);
+ /// Sets the maximum number of header fields
+ /// allowed. This limit is used to defend certain
+ /// kinds of denial-of-service attacks.
+ /// Specify 0 for unlimited (not recommended).
+ ///
+ /// The default limit is 100.
+
+ bool hasToken(const std::string& fieldName, const std::string& token) const;
+ /// Returns true iff the field with the given fieldName contains
+ /// the given token. Tokens in a header field are expected to be
+ /// comma-separated and are case insensitive.
+
+ static void splitElements(const std::string& s, std::vector<std::string>& elements, bool ignoreEmpty = true);
+ /// Splits the given string into separate elements. Elements are expected
+ /// to be separated by commas.
+ ///
/// For example, the string
- /// multipart/mixed; boundary="MIME_boundary_01234567"
- /// is split into the value
- /// multipart/mixed
- /// and the parameter
- /// boundary -> MIME_boundary_01234567
-
- static void splitParameters(const std::string::const_iterator& begin, const std::string::const_iterator& end, NameValueCollection& parameters);
- /// Splits the given string into a collection of parameters.
- /// Parameters are expected to be separated by semicolons.
- ///
- /// Enclosing quotes of parameter values are removed.
-
- static void quote(const std::string& value, std::string& result, bool allowSpace = false);
- /// Checks if the value must be quoted. If so, the value is
- /// appended to result, enclosed in double-quotes.
- /// Otherwise, the value is appended to result as-is.
-
- static void decodeRFC2047(const std::string& ins, std::string& outs, const std::string& charset = "UTF-8");
- static std::string decodeWord(const std::string& text, const std::string& charset = "UTF-8");
- /// Decode RFC2047 string.
-
-
-private:
- enum Limits
- /// Limits for basic sanity checks when reading a header
- {
- MAX_NAME_LENGTH = 256,
+ /// text/plain; q=0.5, text/html, text/x-dvi; q=0.8
+ /// is split into the elements
+ /// text/plain; q=0.5
+ /// text/html
+ /// text/x-dvi; q=0.8
+ ///
+ /// Commas enclosed in double quotes do not split elements.
+ ///
+ /// If ignoreEmpty is true, empty elements are not returned.
+
+ static void splitParameters(const std::string& s, std::string& value, NameValueCollection& parameters);
+ /// Splits the given string into a value and a collection of parameters.
+ /// Parameters are expected to be separated by semicolons.
+ ///
+ /// Enclosing quotes of parameter values are removed.
+ ///
+ /// For example, the string
+ /// multipart/mixed; boundary="MIME_boundary_01234567"
+ /// is split into the value
+ /// multipart/mixed
+ /// and the parameter
+ /// boundary -> MIME_boundary_01234567
+
+ static void splitParameters(const std::string::const_iterator& begin, const std::string::const_iterator& end, NameValueCollection& parameters);
+ /// Splits the given string into a collection of parameters.
+ /// Parameters are expected to be separated by semicolons.
+ ///
+ /// Enclosing quotes of parameter values are removed.
+
+ static void quote(const std::string& value, std::string& result, bool allowSpace = false);
+ /// Checks if the value must be quoted. If so, the value is
+ /// appended to result, enclosed in double-quotes.
+ /// Otherwise, the value is appended to result as-is.
+
+ static void decodeRFC2047(const std::string& ins, std::string& outs, const std::string& charset = "UTF-8");
+ static std::string decodeWord(const std::string& text, const std::string& charset = "UTF-8");
+ /// Decode RFC2047 string.
+
+
+private:
+ enum Limits
+ /// Limits for basic sanity checks when reading a header
+ {
+ MAX_NAME_LENGTH = 256,
MAX_VALUE_LENGTH = 16384,
- DFL_FIELD_LIMIT = 100
- };
-
- int _fieldLimit;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MessageHeader_INCLUDED
+ DFL_FIELD_LIMIT = 100
+ };
+
+ int _fieldLimit;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MessageHeader_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MulticastSocket.h b/contrib/libs/poco/Net/include/Poco/Net/MulticastSocket.h
index d056156651..6ae465775f 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MulticastSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MulticastSocket.h
@@ -1,135 +1,135 @@
-//
-// MulticastSocket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: MulticastSocket
-//
-// Definition of the MulticastSocket class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MulticastSocket_INCLUDED
-#define Net_MulticastSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-#ifdef POCO_NET_HAS_INTERFACE
-
-
-#include "Poco/Net/DatagramSocket.h"
-#include "Poco/Net/NetworkInterface.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API MulticastSocket: public DatagramSocket
- /// A MulticastSocket is a special DatagramSocket
- /// that can be used to send packets to and receive
- /// packets from multicast groups.
-{
-public:
- MulticastSocket();
- /// Creates an unconnected, unbound multicast socket.
- ///
- /// Before the multicast socket can be used, bind(),
- /// bind6() or connect() must be called.
- ///
- /// Notice: The behavior of this constructor has changed
- /// in release 2.0. Previously, the constructor created
- /// an unbound IPv4 multicast socket.
-
- explicit MulticastSocket(SocketAddress::Family family);
- /// Creates an unconnected datagram socket.
- ///
- /// The socket will be created for the
- /// given address family.
-
- MulticastSocket(const SocketAddress& address, bool reuseAddress = false);
- /// Creates a datagram socket and binds it
- /// to the given address.
- ///
- /// Depending on the address family, the socket
- /// will be either an IPv4 or an IPv6 socket.
-
- MulticastSocket(const Socket& socket);
- /// Creates the DatagramSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a DatagramSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- ~MulticastSocket();
- /// Destroys the DatagramSocket.
-
- MulticastSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- void setInterface(const NetworkInterface& interfc);
- /// Sets the interface used for sending multicast packets.
- ///
- /// To select the default interface, specify an empty
- /// interface.
- ///
- /// This is done by setting the IP_MULTICAST_IF/IPV6_MULTICAST_IF
- /// socket option.
-
- NetworkInterface getInterface() const;
- /// Returns the interface used for sending multicast packets.
-
- void setLoopback(bool flag);
- /// Enable or disable loopback for multicast packets.
- ///
- /// Sets the value of the IP_MULTICAST_LOOP/IPV6_MULTICAST_LOOP
- /// socket option.
-
- bool getLoopback() const;
- /// Returns true iff loopback for multicast packets is enabled,
- /// false otherwise.
-
- void setTimeToLive(unsigned value);
- /// Specifies the TTL/hop limit for outgoing packets.
- ///
- /// Sets the value of the IP_MULTICAST_TTL/IPV6_MULTICAST_HOPS
- /// socket option.
-
- unsigned getTimeToLive() const;
- /// Returns the TTL/hop limit for outgoing packets.
-
- void joinGroup(const IPAddress& groupAddress);
- /// Joins the specified multicast group at the default interface.
-
- void joinGroup(const IPAddress& groupAddress, const NetworkInterface& interfc);
- /// Joins the specified multicast group at the given interface.
-
- void leaveGroup(const IPAddress& groupAddress);
- /// Leaves the specified multicast group at the default interface.
-
- void leaveGroup(const IPAddress& groupAddress, const NetworkInterface& interfc);
- /// Leaves the specified multicast group at the given interface.
-
-private:
- static NetworkInterface findFirstInterface(const IPAddress& groupAddress);
- /// Returns first multicast-eligible network interface.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // POCO_NET_HAS_INTERFACE
-
-
-#endif // Net_MulticastSocket_INCLUDED
+//
+// MulticastSocket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: MulticastSocket
+//
+// Definition of the MulticastSocket class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MulticastSocket_INCLUDED
+#define Net_MulticastSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+#ifdef POCO_NET_HAS_INTERFACE
+
+
+#include "Poco/Net/DatagramSocket.h"
+#include "Poco/Net/NetworkInterface.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API MulticastSocket: public DatagramSocket
+ /// A MulticastSocket is a special DatagramSocket
+ /// that can be used to send packets to and receive
+ /// packets from multicast groups.
+{
+public:
+ MulticastSocket();
+ /// Creates an unconnected, unbound multicast socket.
+ ///
+ /// Before the multicast socket can be used, bind(),
+ /// bind6() or connect() must be called.
+ ///
+ /// Notice: The behavior of this constructor has changed
+ /// in release 2.0. Previously, the constructor created
+ /// an unbound IPv4 multicast socket.
+
+ explicit MulticastSocket(SocketAddress::Family family);
+ /// Creates an unconnected datagram socket.
+ ///
+ /// The socket will be created for the
+ /// given address family.
+
+ MulticastSocket(const SocketAddress& address, bool reuseAddress = false);
+ /// Creates a datagram socket and binds it
+ /// to the given address.
+ ///
+ /// Depending on the address family, the socket
+ /// will be either an IPv4 or an IPv6 socket.
+
+ MulticastSocket(const Socket& socket);
+ /// Creates the DatagramSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a DatagramSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ ~MulticastSocket();
+ /// Destroys the DatagramSocket.
+
+ MulticastSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ void setInterface(const NetworkInterface& interfc);
+ /// Sets the interface used for sending multicast packets.
+ ///
+ /// To select the default interface, specify an empty
+ /// interface.
+ ///
+ /// This is done by setting the IP_MULTICAST_IF/IPV6_MULTICAST_IF
+ /// socket option.
+
+ NetworkInterface getInterface() const;
+ /// Returns the interface used for sending multicast packets.
+
+ void setLoopback(bool flag);
+ /// Enable or disable loopback for multicast packets.
+ ///
+ /// Sets the value of the IP_MULTICAST_LOOP/IPV6_MULTICAST_LOOP
+ /// socket option.
+
+ bool getLoopback() const;
+ /// Returns true iff loopback for multicast packets is enabled,
+ /// false otherwise.
+
+ void setTimeToLive(unsigned value);
+ /// Specifies the TTL/hop limit for outgoing packets.
+ ///
+ /// Sets the value of the IP_MULTICAST_TTL/IPV6_MULTICAST_HOPS
+ /// socket option.
+
+ unsigned getTimeToLive() const;
+ /// Returns the TTL/hop limit for outgoing packets.
+
+ void joinGroup(const IPAddress& groupAddress);
+ /// Joins the specified multicast group at the default interface.
+
+ void joinGroup(const IPAddress& groupAddress, const NetworkInterface& interfc);
+ /// Joins the specified multicast group at the given interface.
+
+ void leaveGroup(const IPAddress& groupAddress);
+ /// Leaves the specified multicast group at the default interface.
+
+ void leaveGroup(const IPAddress& groupAddress, const NetworkInterface& interfc);
+ /// Leaves the specified multicast group at the given interface.
+
+private:
+ static NetworkInterface findFirstInterface(const IPAddress& groupAddress);
+ /// Returns first multicast-eligible network interface.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // POCO_NET_HAS_INTERFACE
+
+
+#endif // Net_MulticastSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MultipartReader.h b/contrib/libs/poco/Net/include/Poco/Net/MultipartReader.h
index 648fa427c9..5f972dcba2 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MultipartReader.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MultipartReader.h
@@ -1,160 +1,160 @@
-//
-// MultipartReader.h
-//
-// Library: Net
-// Package: Messages
-// Module: MultipartReader
-//
-// Definition of the MultipartReader class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MultipartReader_INCLUDED
-#define Net_MultipartReader_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/BufferedStreamBuf.h"
-#include <istream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class MessageHeader;
-
-
-class Net_API MultipartStreamBuf: public Poco::BufferedStreamBuf
- /// This is the streambuf class used for reading from a multipart message stream.
-{
-public:
- MultipartStreamBuf(std::istream& istr, const std::string& boundary);
- ~MultipartStreamBuf();
- bool lastPart() const;
-
-protected:
- int readFromDevice(char* buffer, std::streamsize length);
-
-private:
- enum
- {
- STREAM_BUFFER_SIZE = 1024
- };
-
- std::istream& _istr;
- std::string _boundary;
- bool _lastPart;
-};
-
-
-class Net_API MultipartIOS: public virtual std::ios
- /// The base class for MultipartInputStream.
-{
-public:
- MultipartIOS(std::istream& istr, const std::string& boundary);
- ~MultipartIOS();
- MultipartStreamBuf* rdbuf();
- bool lastPart() const;
-
-protected:
- MultipartStreamBuf _buf;
-};
-
-
-class Net_API MultipartInputStream: public MultipartIOS, public std::istream
- /// This class is for internal use by MultipartReader only.
-{
-public:
- MultipartInputStream(std::istream& istr, const std::string& boundary);
- ~MultipartInputStream();
-};
-
-
-
-class Net_API MultipartReader
- /// This class is used to split a MIME multipart
- /// message into its single parts.
- ///
- /// The format of multipart messages is described
- /// in section 5.1 of RFC 2046.
- ///
- /// To split a multipart message into its parts,
- /// do the following:
- /// - Create a MultipartReader object, passing it
- /// an input stream and optionally a boundary string.
- /// - while hasNextPart() returns true, call nextPart()
- /// and read the part from stream().
- ///
- /// Always ensure that you read all data from the part
- /// stream, otherwise the MultipartReader will fail to
- /// find the next part.
-{
-public:
- explicit MultipartReader(std::istream& istr);
- /// Creates the MultipartReader and attaches it to the
- /// given input stream.
- ///
- /// The boundary string is determined from the input
- /// stream. The message must not contain a preamble
- /// preceding the first encapsulation boundary.
-
- MultipartReader(std::istream& istr, const std::string& boundary);
- /// Creates the MultipartReader and attaches it to the
- /// given input stream. The given boundary string is
- /// used to find message boundaries.
-
- ~MultipartReader();
- /// Destroys the MultipartReader.
-
- void nextPart(MessageHeader& messageHeader);
- /// Moves to the next part in the message and stores the
- /// part's header fields in messageHeader.
- ///
- /// Throws an MultipartException if there are no more parts
- /// available, or if no boundary line can be found in
- /// the input stream.
-
- bool hasNextPart();
- /// Returns true iff more parts are available.
- ///
- /// Before the first call to nextPart(), returns
- /// always true.
-
- std::istream& stream() const;
- /// Returns a reference to the reader's stream that
- /// can be used to read the current part.
- ///
- /// The returned reference will be valid until
- /// nextPart() is called or the MultipartReader
- /// object is destroyed.
-
- const std::string& boundary() const;
- /// Returns the multipart boundary used by this reader.
-
-protected:
- void findFirstBoundary();
- void guessBoundary();
- void parseHeader(MessageHeader& messageHeader);
- bool readLine(std::string& line, std::string::size_type n);
-
-private:
- MultipartReader();
- MultipartReader(const MultipartReader&);
- MultipartReader& operator = (const MultipartReader&);
-
- std::istream& _istr;
- std::string _boundary;
- MultipartInputStream* _pMPI;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MultipartReader_INCLUDED
+//
+// MultipartReader.h
+//
+// Library: Net
+// Package: Messages
+// Module: MultipartReader
+//
+// Definition of the MultipartReader class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MultipartReader_INCLUDED
+#define Net_MultipartReader_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/BufferedStreamBuf.h"
+#include <istream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class MessageHeader;
+
+
+class Net_API MultipartStreamBuf: public Poco::BufferedStreamBuf
+ /// This is the streambuf class used for reading from a multipart message stream.
+{
+public:
+ MultipartStreamBuf(std::istream& istr, const std::string& boundary);
+ ~MultipartStreamBuf();
+ bool lastPart() const;
+
+protected:
+ int readFromDevice(char* buffer, std::streamsize length);
+
+private:
+ enum
+ {
+ STREAM_BUFFER_SIZE = 1024
+ };
+
+ std::istream& _istr;
+ std::string _boundary;
+ bool _lastPart;
+};
+
+
+class Net_API MultipartIOS: public virtual std::ios
+ /// The base class for MultipartInputStream.
+{
+public:
+ MultipartIOS(std::istream& istr, const std::string& boundary);
+ ~MultipartIOS();
+ MultipartStreamBuf* rdbuf();
+ bool lastPart() const;
+
+protected:
+ MultipartStreamBuf _buf;
+};
+
+
+class Net_API MultipartInputStream: public MultipartIOS, public std::istream
+ /// This class is for internal use by MultipartReader only.
+{
+public:
+ MultipartInputStream(std::istream& istr, const std::string& boundary);
+ ~MultipartInputStream();
+};
+
+
+
+class Net_API MultipartReader
+ /// This class is used to split a MIME multipart
+ /// message into its single parts.
+ ///
+ /// The format of multipart messages is described
+ /// in section 5.1 of RFC 2046.
+ ///
+ /// To split a multipart message into its parts,
+ /// do the following:
+ /// - Create a MultipartReader object, passing it
+ /// an input stream and optionally a boundary string.
+ /// - while hasNextPart() returns true, call nextPart()
+ /// and read the part from stream().
+ ///
+ /// Always ensure that you read all data from the part
+ /// stream, otherwise the MultipartReader will fail to
+ /// find the next part.
+{
+public:
+ explicit MultipartReader(std::istream& istr);
+ /// Creates the MultipartReader and attaches it to the
+ /// given input stream.
+ ///
+ /// The boundary string is determined from the input
+ /// stream. The message must not contain a preamble
+ /// preceding the first encapsulation boundary.
+
+ MultipartReader(std::istream& istr, const std::string& boundary);
+ /// Creates the MultipartReader and attaches it to the
+ /// given input stream. The given boundary string is
+ /// used to find message boundaries.
+
+ ~MultipartReader();
+ /// Destroys the MultipartReader.
+
+ void nextPart(MessageHeader& messageHeader);
+ /// Moves to the next part in the message and stores the
+ /// part's header fields in messageHeader.
+ ///
+ /// Throws an MultipartException if there are no more parts
+ /// available, or if no boundary line can be found in
+ /// the input stream.
+
+ bool hasNextPart();
+ /// Returns true iff more parts are available.
+ ///
+ /// Before the first call to nextPart(), returns
+ /// always true.
+
+ std::istream& stream() const;
+ /// Returns a reference to the reader's stream that
+ /// can be used to read the current part.
+ ///
+ /// The returned reference will be valid until
+ /// nextPart() is called or the MultipartReader
+ /// object is destroyed.
+
+ const std::string& boundary() const;
+ /// Returns the multipart boundary used by this reader.
+
+protected:
+ void findFirstBoundary();
+ void guessBoundary();
+ void parseHeader(MessageHeader& messageHeader);
+ bool readLine(std::string& line, std::string::size_type n);
+
+private:
+ MultipartReader();
+ MultipartReader(const MultipartReader&);
+ MultipartReader& operator = (const MultipartReader&);
+
+ std::istream& _istr;
+ std::string _boundary;
+ MultipartInputStream* _pMPI;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MultipartReader_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/MultipartWriter.h b/contrib/libs/poco/Net/include/Poco/Net/MultipartWriter.h
index 81e4cf86fd..97b3fd2356 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/MultipartWriter.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/MultipartWriter.h
@@ -1,109 +1,109 @@
-//
-// MultipartWriter.h
-//
-// Library: Net
-// Package: Messages
-// Module: MultipartWriter
-//
-// Definition of the MultipartWriter class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_MultipartWriter_INCLUDED
-#define Net_MultipartWriter_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class MessageHeader;
-
-
-class Net_API MultipartWriter
- /// This class is used to write MIME multipart
- /// messages to an output stream.
- ///
- /// The format of multipart messages is described
- /// in section 5.1 of RFC 2046.
- ///
- /// To create a multipart message, first create
- /// a MultipartWriter object.
- /// Then, for each part, call nextPart() and
- /// write the content to the output stream.
- /// Repeat for all parts.
- /// After the last part has been written,
- /// call close() to finish the multipart message.
-{
-public:
- explicit MultipartWriter(std::ostream& ostr);
- /// Creates the MultipartWriter, using the
- /// given output stream.
- ///
- /// Creates a random boundary string.
-
- MultipartWriter(std::ostream& ostr, const std::string& boundary);
- /// Creates the MultipartWriter, using the
- /// given output stream and boundary string.
-
- ~MultipartWriter();
- /// Destroys the MultipartWriter.
-
- void nextPart(const MessageHeader& header);
- /// Opens a new message part and writes
- /// the message boundary string, followed
- /// by the message header to the stream.
-
- void close();
- /// Closes the multipart message and writes
- /// the terminating boundary string.
- ///
- /// Does not close the underlying stream.
-
- std::ostream& stream();
- /// Returns the writer's stream.
-
- const std::string& boundary() const;
- /// Returns the multipart boundary used by this writer.
-
- static std::string createBoundary();
- /// Creates a random boundary string.
- ///
- /// The string always has the form
- /// MIME_boundary_XXXXXXXXXXXX, where
- /// XXXXXXXXXXXX is a random hexadecimal
- /// number.
-
-private:
- MultipartWriter();
- MultipartWriter(const MultipartWriter&);
- MultipartWriter& operator = (const MultipartWriter&);
-
- std::ostream& _ostr;
- std::string _boundary;
- bool _firstPart;
-};
-
-
-//
-// inlines
-//
-inline std::ostream& MultipartWriter::stream()
-{
- return _ostr;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_MultipartWriter_INCLUDED
+//
+// MultipartWriter.h
+//
+// Library: Net
+// Package: Messages
+// Module: MultipartWriter
+//
+// Definition of the MultipartWriter class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_MultipartWriter_INCLUDED
+#define Net_MultipartWriter_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class MessageHeader;
+
+
+class Net_API MultipartWriter
+ /// This class is used to write MIME multipart
+ /// messages to an output stream.
+ ///
+ /// The format of multipart messages is described
+ /// in section 5.1 of RFC 2046.
+ ///
+ /// To create a multipart message, first create
+ /// a MultipartWriter object.
+ /// Then, for each part, call nextPart() and
+ /// write the content to the output stream.
+ /// Repeat for all parts.
+ /// After the last part has been written,
+ /// call close() to finish the multipart message.
+{
+public:
+ explicit MultipartWriter(std::ostream& ostr);
+ /// Creates the MultipartWriter, using the
+ /// given output stream.
+ ///
+ /// Creates a random boundary string.
+
+ MultipartWriter(std::ostream& ostr, const std::string& boundary);
+ /// Creates the MultipartWriter, using the
+ /// given output stream and boundary string.
+
+ ~MultipartWriter();
+ /// Destroys the MultipartWriter.
+
+ void nextPart(const MessageHeader& header);
+ /// Opens a new message part and writes
+ /// the message boundary string, followed
+ /// by the message header to the stream.
+
+ void close();
+ /// Closes the multipart message and writes
+ /// the terminating boundary string.
+ ///
+ /// Does not close the underlying stream.
+
+ std::ostream& stream();
+ /// Returns the writer's stream.
+
+ const std::string& boundary() const;
+ /// Returns the multipart boundary used by this writer.
+
+ static std::string createBoundary();
+ /// Creates a random boundary string.
+ ///
+ /// The string always has the form
+ /// MIME_boundary_XXXXXXXXXXXX, where
+ /// XXXXXXXXXXXX is a random hexadecimal
+ /// number.
+
+private:
+ MultipartWriter();
+ MultipartWriter(const MultipartWriter&);
+ MultipartWriter& operator = (const MultipartWriter&);
+
+ std::ostream& _ostr;
+ std::string _boundary;
+ bool _firstPart;
+};
+
+
+//
+// inlines
+//
+inline std::ostream& MultipartWriter::stream()
+{
+ return _ostr;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_MultipartWriter_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NTPClient.h b/contrib/libs/poco/Net/include/Poco/Net/NTPClient.h
index 741ecd7cc2..044a486a73 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NTPClient.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NTPClient.h
@@ -1,64 +1,64 @@
-//
-// NTPClient.h
-//
-// Library: Net
-// Package: NTP
-// Module: NTPClient
-//
-// Definition of the NTPClient class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NTPClient_INCLUDED
-#define Net_NTPClient_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/NTPEventArgs.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/BasicEvent.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API NTPClient
- /// This class provides NTP (Network Time Protocol) client functionality.
-{
-public:
- mutable Poco::BasicEvent<NTPEventArgs> response;
-
- explicit NTPClient(SocketAddress::Family family, int timeout = 3000000);
- /// Creates an NTP client.
-
- ~NTPClient();
- /// Destroys the NTP client.
-
- int request(SocketAddress& address) const;
- /// Request the time from the server at address.
- /// Notifications are posted for events.
- ///
- /// Returns the number of valid replies.
-
- int request(const std::string& address) const;
- /// Request the time from the server at address.
- /// Notifications are posted for events.
- ///
- /// Returns the number of valid replies.
-
-private:
- mutable SocketAddress::Family _family;
- int _timeout;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_NTPClient_INCLUDED
+//
+// NTPClient.h
+//
+// Library: Net
+// Package: NTP
+// Module: NTPClient
+//
+// Definition of the NTPClient class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NTPClient_INCLUDED
+#define Net_NTPClient_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/NTPEventArgs.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/BasicEvent.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API NTPClient
+ /// This class provides NTP (Network Time Protocol) client functionality.
+{
+public:
+ mutable Poco::BasicEvent<NTPEventArgs> response;
+
+ explicit NTPClient(SocketAddress::Family family, int timeout = 3000000);
+ /// Creates an NTP client.
+
+ ~NTPClient();
+ /// Destroys the NTP client.
+
+ int request(SocketAddress& address) const;
+ /// Request the time from the server at address.
+ /// Notifications are posted for events.
+ ///
+ /// Returns the number of valid replies.
+
+ int request(const std::string& address) const;
+ /// Request the time from the server at address.
+ /// Notifications are posted for events.
+ ///
+ /// Returns the number of valid replies.
+
+private:
+ mutable SocketAddress::Family _family;
+ int _timeout;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_NTPClient_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NTPEventArgs.h b/contrib/libs/poco/Net/include/Poco/Net/NTPEventArgs.h
index 84d638293a..89c12751c3 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NTPEventArgs.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NTPEventArgs.h
@@ -1,84 +1,84 @@
-//
-// NTPEventArgs.h
-//
-// Library: Net
-// Package: NTP
-// Module: NTPEventArgs
-//
-// Definition of NTPEventArgs.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NTPEventArgs_INCLUDED
-#define Net_NTPEventArgs_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/Net/NTPPacket.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API NTPEventArgs
- /// The purpose of the NTPEventArgs class is to be used as template parameter
- /// to instantiate event members in NTPClient class.
- /// When clients register for an event notification, the reference to the class is
- /// passed to the handler function to provide information about the event.
-{
-public:
- NTPEventArgs(const SocketAddress& address);
- /// Creates NTPEventArgs.
-
- virtual ~NTPEventArgs();
- /// Destroys NTPEventArgs.
-
- std::string hostName() const;
- /// Tries to resolve the target IP address into host name.
- /// If unsuccessful, all exceptions are silently ignored and
- /// the IP address is returned.
-
- std::string hostAddress() const;
- /// Returns the target IP address.
-
- const NTPPacket &packet();
- /// Returns the NTP packet.
-
-private:
- NTPEventArgs();
-
- void setPacket(NTPPacket &packet);
-
- SocketAddress _address;
- NTPPacket _packet;
-
- friend class NTPClient;
-};
-
-
-//
-// inlines
-//
-inline const NTPPacket &NTPEventArgs::packet()
-{
- return _packet;
-}
-
-
-inline void NTPEventArgs::setPacket(NTPPacket &packet)
-{
- _packet = packet;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif
+//
+// NTPEventArgs.h
+//
+// Library: Net
+// Package: NTP
+// Module: NTPEventArgs
+//
+// Definition of NTPEventArgs.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NTPEventArgs_INCLUDED
+#define Net_NTPEventArgs_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/Net/NTPPacket.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API NTPEventArgs
+ /// The purpose of the NTPEventArgs class is to be used as template parameter
+ /// to instantiate event members in NTPClient class.
+ /// When clients register for an event notification, the reference to the class is
+ /// passed to the handler function to provide information about the event.
+{
+public:
+ NTPEventArgs(const SocketAddress& address);
+ /// Creates NTPEventArgs.
+
+ virtual ~NTPEventArgs();
+ /// Destroys NTPEventArgs.
+
+ std::string hostName() const;
+ /// Tries to resolve the target IP address into host name.
+ /// If unsuccessful, all exceptions are silently ignored and
+ /// the IP address is returned.
+
+ std::string hostAddress() const;
+ /// Returns the target IP address.
+
+ const NTPPacket &packet();
+ /// Returns the NTP packet.
+
+private:
+ NTPEventArgs();
+
+ void setPacket(NTPPacket &packet);
+
+ SocketAddress _address;
+ NTPPacket _packet;
+
+ friend class NTPClient;
+};
+
+
+//
+// inlines
+//
+inline const NTPPacket &NTPEventArgs::packet()
+{
+ return _packet;
+}
+
+
+inline void NTPEventArgs::setPacket(NTPPacket &packet)
+{
+ _packet = packet;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NTPPacket.h b/contrib/libs/poco/Net/include/Poco/Net/NTPPacket.h
index de3298e917..4dae347888 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NTPPacket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NTPPacket.h
@@ -1,207 +1,207 @@
-//
-// NTPPacket.h
-//
-// Library: Net
-// Package: NTP
-// Module: NTPPacket
-//
-// Definition of the NTPPacket class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NTPPacket_INCLUDED
-#define Net_NTPPacket_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/Net/Net.h"
-#include "Poco/Timestamp.h"
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API NTPPacket
- /// This class is the NTP packet abstraction.
-{
-public:
- NTPPacket();
- /// Creates an NTPPacket.
-
- NTPPacket(Poco::UInt8 *packet);
- /// Creates an NTPPacket.
- ///
- /// Assumed to have at least 48 bytes.
-
- ~NTPPacket();
- /// Destroys the NTPPacket.
-
- void packet(Poco::UInt8 *packet) const;
- /// Returns the NTP packet.
- ///
- /// Assumed to have at least 48 bytes.
-
- void setPacket(Poco::UInt8 *packet);
- /// Returns the NTP packet.
- ///
- /// Assumed to have exactly 48 bytes.
-
- Poco::Int8 leapIndicator() const;
- /// Returns the leap indicator.
-
- Poco::Int8 version() const;
- /// Returns the version.
-
- Poco::Int8 mode() const;
- /// Returns the mode.
-
- Poco::Int8 stratum() const;
- /// Returns the stratum.
-
- Poco::Int8 pool() const;
- /// Returns the pool.
-
- Poco::Int8 precision() const;
- /// Returns the precision
-
- Poco::Int32 rootDelay() const;
- /// Returns the root delay
-
- Poco::Int32 rootDispersion() const;
- /// Returns the root dispersion
-
- Poco::Int32 referenceId() const;
- /// Returns the reference id
-
- Poco::Int64 referenceTimestamp() const;
- /// Returns the reference timestamp
-
- Poco::Int64 originateTimestamp() const;
- /// Returns the originate timestamp
-
- Poco::Int64 receiveTimestamp() const;
- /// Returns the receive timestamp
-
- Poco::Int64 transmitTimestamp() const;
- /// Returns the transmit timestamp
-
- Poco::Timestamp referenceTime() const;
- /// Returns the reference time
-
- Poco::Timestamp originateTime() const;
- /// Returns the originate time
-
- Poco::Timestamp receiveTime() const;
- /// Returns the receive time
-
- Poco::Timestamp transmitTime() const;
- /// Returns the transmit time
-private:
- Poco::Timestamp convertTime(Poco::Int64 tm) const;
-
- Poco::Int8 _leapIndicator;
- Poco::Int8 _version;
- Poco::Int8 _mode;
- Poco::Int8 _stratum;
- Poco::Int8 _pool;
- Poco::Int8 _precision;
- Poco::Int32 _rootDelay;
- Poco::Int32 _rootDispersion;
- Poco::Int32 _referenceId;
- Poco::Int64 _referenceTimestamp;
- Poco::Int64 _originateTimestamp;
- Poco::Int64 _receiveTimestamp;
- Poco::Int64 _transmitTimestamp;
-};
-
-
-//
-// inlines
-//
-inline Poco::Int8 NTPPacket::leapIndicator() const
-{
- return _leapIndicator;
-}
-
-
-inline Poco::Int8 NTPPacket::version() const
-{
- return _version;
-}
-
-
-inline Poco::Int8 NTPPacket::mode() const
-{
- return _mode;
-}
-
-
-inline Poco::Int8 NTPPacket::stratum() const
-{
- return _stratum;
-}
-
-
-inline Poco::Int8 NTPPacket::pool() const
-{
- return _pool;
-}
-
-
-inline Poco::Int8 NTPPacket::precision() const
-{
- return _precision;
-}
-
-
-inline Poco::Int32 NTPPacket::rootDelay() const
-{
- return _rootDelay;
-}
-
-
-inline Poco::Int32 NTPPacket::rootDispersion() const
-{
- return _rootDispersion;
-}
-
-
-inline Poco::Int32 NTPPacket::referenceId() const
-{
- return _referenceId;
-}
-
-
-inline Poco::Int64 NTPPacket::referenceTimestamp() const
-{
- return _referenceTimestamp;
-}
-
-
-inline Poco::Int64 NTPPacket::originateTimestamp() const
-{
- return _originateTimestamp;
-}
-
-
-inline Poco::Int64 NTPPacket::receiveTimestamp() const
-{
- return _receiveTimestamp;
-}
-
-
-inline Poco::Int64 NTPPacket::transmitTimestamp() const
-{
- return _transmitTimestamp;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_NTPPacket_INCLUDED
+//
+// NTPPacket.h
+//
+// Library: Net
+// Package: NTP
+// Module: NTPPacket
+//
+// Definition of the NTPPacket class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NTPPacket_INCLUDED
+#define Net_NTPPacket_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/Net/Net.h"
+#include "Poco/Timestamp.h"
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API NTPPacket
+ /// This class is the NTP packet abstraction.
+{
+public:
+ NTPPacket();
+ /// Creates an NTPPacket.
+
+ NTPPacket(Poco::UInt8 *packet);
+ /// Creates an NTPPacket.
+ ///
+ /// Assumed to have at least 48 bytes.
+
+ ~NTPPacket();
+ /// Destroys the NTPPacket.
+
+ void packet(Poco::UInt8 *packet) const;
+ /// Returns the NTP packet.
+ ///
+ /// Assumed to have at least 48 bytes.
+
+ void setPacket(Poco::UInt8 *packet);
+ /// Returns the NTP packet.
+ ///
+ /// Assumed to have exactly 48 bytes.
+
+ Poco::Int8 leapIndicator() const;
+ /// Returns the leap indicator.
+
+ Poco::Int8 version() const;
+ /// Returns the version.
+
+ Poco::Int8 mode() const;
+ /// Returns the mode.
+
+ Poco::Int8 stratum() const;
+ /// Returns the stratum.
+
+ Poco::Int8 pool() const;
+ /// Returns the pool.
+
+ Poco::Int8 precision() const;
+ /// Returns the precision
+
+ Poco::Int32 rootDelay() const;
+ /// Returns the root delay
+
+ Poco::Int32 rootDispersion() const;
+ /// Returns the root dispersion
+
+ Poco::Int32 referenceId() const;
+ /// Returns the reference id
+
+ Poco::Int64 referenceTimestamp() const;
+ /// Returns the reference timestamp
+
+ Poco::Int64 originateTimestamp() const;
+ /// Returns the originate timestamp
+
+ Poco::Int64 receiveTimestamp() const;
+ /// Returns the receive timestamp
+
+ Poco::Int64 transmitTimestamp() const;
+ /// Returns the transmit timestamp
+
+ Poco::Timestamp referenceTime() const;
+ /// Returns the reference time
+
+ Poco::Timestamp originateTime() const;
+ /// Returns the originate time
+
+ Poco::Timestamp receiveTime() const;
+ /// Returns the receive time
+
+ Poco::Timestamp transmitTime() const;
+ /// Returns the transmit time
+private:
+ Poco::Timestamp convertTime(Poco::Int64 tm) const;
+
+ Poco::Int8 _leapIndicator;
+ Poco::Int8 _version;
+ Poco::Int8 _mode;
+ Poco::Int8 _stratum;
+ Poco::Int8 _pool;
+ Poco::Int8 _precision;
+ Poco::Int32 _rootDelay;
+ Poco::Int32 _rootDispersion;
+ Poco::Int32 _referenceId;
+ Poco::Int64 _referenceTimestamp;
+ Poco::Int64 _originateTimestamp;
+ Poco::Int64 _receiveTimestamp;
+ Poco::Int64 _transmitTimestamp;
+};
+
+
+//
+// inlines
+//
+inline Poco::Int8 NTPPacket::leapIndicator() const
+{
+ return _leapIndicator;
+}
+
+
+inline Poco::Int8 NTPPacket::version() const
+{
+ return _version;
+}
+
+
+inline Poco::Int8 NTPPacket::mode() const
+{
+ return _mode;
+}
+
+
+inline Poco::Int8 NTPPacket::stratum() const
+{
+ return _stratum;
+}
+
+
+inline Poco::Int8 NTPPacket::pool() const
+{
+ return _pool;
+}
+
+
+inline Poco::Int8 NTPPacket::precision() const
+{
+ return _precision;
+}
+
+
+inline Poco::Int32 NTPPacket::rootDelay() const
+{
+ return _rootDelay;
+}
+
+
+inline Poco::Int32 NTPPacket::rootDispersion() const
+{
+ return _rootDispersion;
+}
+
+
+inline Poco::Int32 NTPPacket::referenceId() const
+{
+ return _referenceId;
+}
+
+
+inline Poco::Int64 NTPPacket::referenceTimestamp() const
+{
+ return _referenceTimestamp;
+}
+
+
+inline Poco::Int64 NTPPacket::originateTimestamp() const
+{
+ return _originateTimestamp;
+}
+
+
+inline Poco::Int64 NTPPacket::receiveTimestamp() const
+{
+ return _receiveTimestamp;
+}
+
+
+inline Poco::Int64 NTPPacket::transmitTimestamp() const
+{
+ return _transmitTimestamp;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_NTPPacket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NameValueCollection.h b/contrib/libs/poco/Net/include/Poco/Net/NameValueCollection.h
index 9ffa9e9a30..e2edce3408 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NameValueCollection.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NameValueCollection.h
@@ -1,126 +1,126 @@
-//
-// NameValueCollection.h
-//
-// Library: Net
-// Package: Messages
-// Module: NameValueCollection
-//
-// Definition of the NameValueCollection class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NameValueCollection_INCLUDED
-#define Net_NameValueCollection_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/String.h"
-#include "Poco/ListMap.h"
-#include <cstddef>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API NameValueCollection
- /// A collection of name-value pairs that are used in
- /// various internet protocols like HTTP and SMTP.
- ///
- /// The name is case-insensitive.
- ///
- /// There can be more than one name-value pair with the
- /// same name.
-{
-public:
- typedef Poco::ListMap<std::string, std::string> HeaderMap;
- typedef HeaderMap::Iterator Iterator;
- typedef HeaderMap::ConstIterator ConstIterator;
-
- NameValueCollection();
- /// Creates an empty NameValueCollection.
-
- NameValueCollection(const NameValueCollection& nvc);
- /// Creates a NameValueCollection by copying another one.
-
- virtual ~NameValueCollection();
- /// Destroys the NameValueCollection.
-
- NameValueCollection& operator = (const NameValueCollection& nvc);
- /// Assigns the name-value pairs of another NameValueCollection to this one.
-
- void swap(NameValueCollection& nvc);
- /// Swaps the NameValueCollection with another one.
-
- const std::string& operator [] (const std::string& name) const;
- /// Returns the value of the (first) name-value pair with the given name.
- ///
- /// Throws a NotFoundException if the name-value pair does not exist.
-
- void set(const std::string& name, const std::string& value);
- /// Sets the value of the (first) name-value pair with the given name.
-
- void add(const std::string& name, const std::string& value);
- /// Adds a new name-value pair with the given name and value.
-
- const std::string& get(const std::string& name) const;
- /// Returns the value of the first name-value pair with the given name.
- ///
- /// Throws a NotFoundException if the name-value pair does not exist.
-
- const std::string& get(const std::string& name, const std::string& defaultValue) const;
- /// Returns the value of the first name-value pair with the given name.
- /// If no value with the given name has been found, the defaultValue is returned.
-
- bool has(const std::string& name) const;
- /// Returns true if there is at least one name-value pair
- /// with the given name.
-
- ConstIterator find(const std::string& name) const;
- /// Returns an iterator pointing to the first name-value pair
- /// with the given name.
-
- ConstIterator begin() const;
- /// Returns an iterator pointing to the begin of
- /// the name-value pair collection.
-
- ConstIterator end() const;
- /// Returns an iterator pointing to the end of
- /// the name-value pair collection.
-
- bool empty() const;
- /// Returns true iff the header does not have any content.
-
- std::size_t size() const;
- /// Returns the number of name-value pairs in the
- /// collection.
-
- void erase(const std::string& name);
- /// Removes all name-value pairs with the given name.
-
- void clear();
- /// Removes all name-value pairs and their values.
-
-private:
- HeaderMap _map;
-};
-
-
-//
-// inlines
-//
-inline void swap(NameValueCollection& nvc1, NameValueCollection& nvc2)
-{
- nvc1.swap(nvc2);
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_NameValueCollection_INCLUDED
+//
+// NameValueCollection.h
+//
+// Library: Net
+// Package: Messages
+// Module: NameValueCollection
+//
+// Definition of the NameValueCollection class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NameValueCollection_INCLUDED
+#define Net_NameValueCollection_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/String.h"
+#include "Poco/ListMap.h"
+#include <cstddef>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API NameValueCollection
+ /// A collection of name-value pairs that are used in
+ /// various internet protocols like HTTP and SMTP.
+ ///
+ /// The name is case-insensitive.
+ ///
+ /// There can be more than one name-value pair with the
+ /// same name.
+{
+public:
+ typedef Poco::ListMap<std::string, std::string> HeaderMap;
+ typedef HeaderMap::Iterator Iterator;
+ typedef HeaderMap::ConstIterator ConstIterator;
+
+ NameValueCollection();
+ /// Creates an empty NameValueCollection.
+
+ NameValueCollection(const NameValueCollection& nvc);
+ /// Creates a NameValueCollection by copying another one.
+
+ virtual ~NameValueCollection();
+ /// Destroys the NameValueCollection.
+
+ NameValueCollection& operator = (const NameValueCollection& nvc);
+ /// Assigns the name-value pairs of another NameValueCollection to this one.
+
+ void swap(NameValueCollection& nvc);
+ /// Swaps the NameValueCollection with another one.
+
+ const std::string& operator [] (const std::string& name) const;
+ /// Returns the value of the (first) name-value pair with the given name.
+ ///
+ /// Throws a NotFoundException if the name-value pair does not exist.
+
+ void set(const std::string& name, const std::string& value);
+ /// Sets the value of the (first) name-value pair with the given name.
+
+ void add(const std::string& name, const std::string& value);
+ /// Adds a new name-value pair with the given name and value.
+
+ const std::string& get(const std::string& name) const;
+ /// Returns the value of the first name-value pair with the given name.
+ ///
+ /// Throws a NotFoundException if the name-value pair does not exist.
+
+ const std::string& get(const std::string& name, const std::string& defaultValue) const;
+ /// Returns the value of the first name-value pair with the given name.
+ /// If no value with the given name has been found, the defaultValue is returned.
+
+ bool has(const std::string& name) const;
+ /// Returns true if there is at least one name-value pair
+ /// with the given name.
+
+ ConstIterator find(const std::string& name) const;
+ /// Returns an iterator pointing to the first name-value pair
+ /// with the given name.
+
+ ConstIterator begin() const;
+ /// Returns an iterator pointing to the begin of
+ /// the name-value pair collection.
+
+ ConstIterator end() const;
+ /// Returns an iterator pointing to the end of
+ /// the name-value pair collection.
+
+ bool empty() const;
+ /// Returns true iff the header does not have any content.
+
+ std::size_t size() const;
+ /// Returns the number of name-value pairs in the
+ /// collection.
+
+ void erase(const std::string& name);
+ /// Removes all name-value pairs with the given name.
+
+ void clear();
+ /// Removes all name-value pairs and their values.
+
+private:
+ HeaderMap _map;
+};
+
+
+//
+// inlines
+//
+inline void swap(NameValueCollection& nvc1, NameValueCollection& nvc2)
+{
+ nvc1.swap(nvc2);
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_NameValueCollection_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/Net.h b/contrib/libs/poco/Net/include/Poco/Net/Net.h
index d93d024e40..4ec0203515 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/Net.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/Net.h
@@ -1,122 +1,122 @@
-//
-// Net.h
-//
-// Library: Net
-// Package: NetCore
-// Module: Net
-//
-// Basic definitions for the Poco Net library.
-// This file must be the first file included by every other Net
-// header file.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_Net_INCLUDED
-#define Net_Net_INCLUDED
-
-
-#include "Poco/Foundation.h"
-
-
-//
-// The following block is the standard way of creating macros which make exporting
-// from a DLL simpler. All files within this DLL are compiled with the Net_EXPORTS
-// symbol defined on the command line. this symbol should not be defined on any project
-// that uses this DLL. This way any other project whose source files include this file see
-// Net_API functions as being imported from a DLL, wheras this DLL sees symbols
-// defined with this macro as being exported.
-//
-#if defined(_WIN32) && defined(POCO_DLL)
- #if defined(Net_EXPORTS)
- #define Net_API __declspec(dllexport)
- #else
- #define Net_API __declspec(dllimport)
- #endif
-#endif
-
-
-#if !defined(Net_API)
- #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4)
- #define Net_API __attribute__ ((visibility ("default")))
- #else
- #define Net_API
- #endif
-#endif
-
-
-//
-// Automatically link Net library.
-//
-#if defined(_MSC_VER)
- #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Net_EXPORTS)
- #pragma comment(lib, "PocoNet" POCO_LIB_SUFFIX)
- #endif
-#endif
-
-
-// Default to enabled IPv6 support if not explicitly disabled
-#if !defined(POCO_NET_NO_IPv6) && !defined (POCO_HAVE_IPv6)
- #define POCO_HAVE_IPv6
-#elif defined(POCO_NET_NO_IPv6) && defined (POCO_HAVE_IPv6)
- #undef POCO_HAVE_IPv6
-#endif // POCO_NET_NO_IPv6, POCO_HAVE_IPv6
-
-
-namespace Poco {
-namespace Net {
-
-
-void Net_API initializeNetwork();
- /// Initialize the network subsystem.
- /// (Windows only, no-op elsewhere)
-
-
-void Net_API uninitializeNetwork();
- /// Uninitialize the network subsystem.
- /// (Windows only, no-op elsewhere)
-
-
-}} // namespace Poco::Net
-
-
-//
-// Automate network initialization (only relevant on Windows).
-//
-
-#if defined(POCO_OS_FAMILY_WINDOWS) && !defined(POCO_NO_AUTOMATIC_LIB_INIT) && !defined(__GNUC__)
-
-extern "C" const struct Net_API NetworkInitializer pocoNetworkInitializer;
-
-#if defined(Net_EXPORTS)
- #if defined(_WIN64) || defined(_WIN32_WCE)
- #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:"#s))
- #elif defined(_WIN32)
- #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:_"#s))
- #endif
-#else // !Net_EXPORTS
- #if defined(_WIN64) || defined(_WIN32_WCE)
- #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:"#s))
- #elif defined(_WIN32)
- #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:_"#s))
- #endif
-#endif // Net_EXPORTS
-
-POCO_NET_FORCE_SYMBOL(pocoNetworkInitializer)
-
-#endif // POCO_OS_FAMILY_WINDOWS
-
-
-//
-// Define POCO_NET_HAS_INTERFACE for platforms that have network interface detection implemented.
-//
-#if defined(POCO_OS_FAMILY_WINDOWS) || (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID) || defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX)
- #define POCO_NET_HAS_INTERFACE
-#endif
-
-
-#endif // Net_Net_INCLUDED
+//
+// Net.h
+//
+// Library: Net
+// Package: NetCore
+// Module: Net
+//
+// Basic definitions for the Poco Net library.
+// This file must be the first file included by every other Net
+// header file.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_Net_INCLUDED
+#define Net_Net_INCLUDED
+
+
+#include "Poco/Foundation.h"
+
+
+//
+// The following block is the standard way of creating macros which make exporting
+// from a DLL simpler. All files within this DLL are compiled with the Net_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see
+// Net_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+//
+#if defined(_WIN32) && defined(POCO_DLL)
+ #if defined(Net_EXPORTS)
+ #define Net_API __declspec(dllexport)
+ #else
+ #define Net_API __declspec(dllimport)
+ #endif
+#endif
+
+
+#if !defined(Net_API)
+ #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4)
+ #define Net_API __attribute__ ((visibility ("default")))
+ #else
+ #define Net_API
+ #endif
+#endif
+
+
+//
+// Automatically link Net library.
+//
+#if defined(_MSC_VER)
+ #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Net_EXPORTS)
+ #pragma comment(lib, "PocoNet" POCO_LIB_SUFFIX)
+ #endif
+#endif
+
+
+// Default to enabled IPv6 support if not explicitly disabled
+#if !defined(POCO_NET_NO_IPv6) && !defined (POCO_HAVE_IPv6)
+ #define POCO_HAVE_IPv6
+#elif defined(POCO_NET_NO_IPv6) && defined (POCO_HAVE_IPv6)
+ #undef POCO_HAVE_IPv6
+#endif // POCO_NET_NO_IPv6, POCO_HAVE_IPv6
+
+
+namespace Poco {
+namespace Net {
+
+
+void Net_API initializeNetwork();
+ /// Initialize the network subsystem.
+ /// (Windows only, no-op elsewhere)
+
+
+void Net_API uninitializeNetwork();
+ /// Uninitialize the network subsystem.
+ /// (Windows only, no-op elsewhere)
+
+
+}} // namespace Poco::Net
+
+
+//
+// Automate network initialization (only relevant on Windows).
+//
+
+#if defined(POCO_OS_FAMILY_WINDOWS) && !defined(POCO_NO_AUTOMATIC_LIB_INIT) && !defined(__GNUC__)
+
+extern "C" const struct Net_API NetworkInitializer pocoNetworkInitializer;
+
+#if defined(Net_EXPORTS)
+ #if defined(_WIN64) || defined(_WIN32_WCE)
+ #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:"#s))
+ #elif defined(_WIN32)
+ #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:_"#s))
+ #endif
+#else // !Net_EXPORTS
+ #if defined(_WIN64) || defined(_WIN32_WCE)
+ #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:"#s))
+ #elif defined(_WIN32)
+ #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:_"#s))
+ #endif
+#endif // Net_EXPORTS
+
+POCO_NET_FORCE_SYMBOL(pocoNetworkInitializer)
+
+#endif // POCO_OS_FAMILY_WINDOWS
+
+
+//
+// Define POCO_NET_HAS_INTERFACE for platforms that have network interface detection implemented.
+//
+#if defined(POCO_OS_FAMILY_WINDOWS) || (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID) || defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX)
+ #define POCO_NET_HAS_INTERFACE
+#endif
+
+
+#endif // Net_Net_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NetException.h b/contrib/libs/poco/Net/include/Poco/Net/NetException.h
index 82acac93df..92bb3ed912 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NetException.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NetException.h
@@ -1,60 +1,60 @@
-//
-// NetException.h
-//
-// Library: Net
-// Package: NetCore
-// Module: NetException
-//
-// Definition of the NetException class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NetException_INCLUDED
-#define Net_NetException_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Exception.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-POCO_DECLARE_EXCEPTION(Net_API, NetException, Poco::IOException)
-POCO_DECLARE_EXCEPTION(Net_API, InvalidAddressException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, InvalidSocketException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, ServiceNotFoundException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, ConnectionAbortedException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, ConnectionResetException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, ConnectionRefusedException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, DNSException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, HostNotFoundException, DNSException)
-POCO_DECLARE_EXCEPTION(Net_API, NoAddressFoundException, DNSException)
-POCO_DECLARE_EXCEPTION(Net_API, InterfaceNotFoundException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, NoMessageException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, MessageException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, MultipartException, MessageException)
-POCO_DECLARE_EXCEPTION(Net_API, HTTPException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, NotAuthenticatedException, HTTPException)
-POCO_DECLARE_EXCEPTION(Net_API, UnsupportedRedirectException, HTTPException)
-POCO_DECLARE_EXCEPTION(Net_API, FTPException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, SMTPException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, POP3Exception, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, ICMPException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, NTPException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, HTMLFormException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, WebSocketException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, UnsupportedFamilyException, NetException)
-POCO_DECLARE_EXCEPTION(Net_API, AddressFamilyMismatchException, NetException)
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_NetException_INCLUDED
+//
+// NetException.h
+//
+// Library: Net
+// Package: NetCore
+// Module: NetException
+//
+// Definition of the NetException class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NetException_INCLUDED
+#define Net_NetException_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Exception.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+POCO_DECLARE_EXCEPTION(Net_API, NetException, Poco::IOException)
+POCO_DECLARE_EXCEPTION(Net_API, InvalidAddressException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, InvalidSocketException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, ServiceNotFoundException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, ConnectionAbortedException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, ConnectionResetException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, ConnectionRefusedException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, DNSException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, HostNotFoundException, DNSException)
+POCO_DECLARE_EXCEPTION(Net_API, NoAddressFoundException, DNSException)
+POCO_DECLARE_EXCEPTION(Net_API, InterfaceNotFoundException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, NoMessageException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, MessageException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, MultipartException, MessageException)
+POCO_DECLARE_EXCEPTION(Net_API, HTTPException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, NotAuthenticatedException, HTTPException)
+POCO_DECLARE_EXCEPTION(Net_API, UnsupportedRedirectException, HTTPException)
+POCO_DECLARE_EXCEPTION(Net_API, FTPException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, SMTPException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, POP3Exception, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, ICMPException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, NTPException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, HTMLFormException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, WebSocketException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, UnsupportedFamilyException, NetException)
+POCO_DECLARE_EXCEPTION(Net_API, AddressFamilyMismatchException, NetException)
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_NetException_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NetworkInterface.h b/contrib/libs/poco/Net/include/Poco/Net/NetworkInterface.h
index 4f2ade2783..17e10fdf6c 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NetworkInterface.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NetworkInterface.h
@@ -1,352 +1,352 @@
-//
-// NetworkInterface.h
-//
-// Library: Net
-// Package: Sockets
-// Module: NetworkInterface
-//
-// Definition of the NetworkInterface class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NetworkInterface_INCLUDED
-#define Net_NetworkInterface_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-#ifdef POCO_NET_HAS_INTERFACE
-
-
-#include "Poco/Net/IPAddress.h"
-#include "Poco/Mutex.h"
-#include "Poco/Tuple.h"
-#include <map>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class NetworkInterfaceImpl;
-
-
-class Net_API NetworkInterface
- /// This class represents a network interface.
- ///
- /// NetworkInterface is used with MulticastSocket to specify
- /// multicast interfaces for sending and receiving multicast
- /// messages.
- ///
- /// The class also provides static member functions for
- /// enumerating or searching network interfaces and their
- /// respective configuration values.
+//
+// NetworkInterface.h
+//
+// Library: Net
+// Package: Sockets
+// Module: NetworkInterface
+//
+// Definition of the NetworkInterface class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NetworkInterface_INCLUDED
+#define Net_NetworkInterface_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+#ifdef POCO_NET_HAS_INTERFACE
+
+
+#include "Poco/Net/IPAddress.h"
+#include "Poco/Mutex.h"
+#include "Poco/Tuple.h"
+#include <map>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class NetworkInterfaceImpl;
+
+
+class Net_API NetworkInterface
+ /// This class represents a network interface.
///
- /// On Windows, detection capabilities vary depending on the
- /// OS version/service pack. Although the best effort is made
- /// not to attempt access to non-existent features through a
- /// combination of compile/runtime checks, when running binaries
- /// compiled on a newer version of the OS on an older one
- /// problems may occur; if possible, it is best to run
- /// binaries on the OS version where they were compiled.
- /// This particularly applies to OS versions older than Vista
- /// and XP.
-{
-public:
- typedef std::vector<NetworkInterface> List;
- typedef List NetworkInterfaceList;//@deprecated
- typedef std::map<unsigned, NetworkInterface> Map;
- typedef Poco::Tuple<IPAddress, IPAddress, IPAddress> AddressTuple;
- typedef std::vector<AddressTuple> AddressList;
- typedef AddressList::iterator AddressIterator;
- typedef AddressList::const_iterator ConstAddressIterator;
- typedef std::vector<unsigned char> MACAddress;
-
- enum AddressType
- {
- IP_ADDRESS,
- SUBNET_MASK,
- BROADCAST_ADDRESS
- };
-
- enum Type
- {
- NI_TYPE_ETHERNET_CSMACD,
- NI_TYPE_ISO88025_TOKENRING,
- NI_TYPE_FRAMERELAY,
- NI_TYPE_PPP,
- NI_TYPE_SOFTWARE_LOOPBACK,
- NI_TYPE_ATM,
- NI_TYPE_IEEE80211,
- NI_TYPE_TUNNEL,
- NI_TYPE_IEEE1394,
- NI_TYPE_OTHER
- };
-
- enum IPVersion
- {
- IPv4_ONLY, /// Return interfaces with IPv4 address only
- IPv6_ONLY, /// Return interfaces with IPv6 address only
- IPv4_OR_IPv6 /// Return interfaces with IPv4 or IPv6 address
- };
-
- static const unsigned NO_INDEX = ~0;
-#if defined(POCO_OS_FAMILY_WINDOWS)
- static const char MAC_SEPARATOR = '-';
-#else
- static const char MAC_SEPARATOR = ':';
-#endif
-
- NetworkInterface(unsigned index = NO_INDEX);
- /// Creates a NetworkInterface representing the
- /// default interface.
- ///
- /// The name is empty, the IP address is the wildcard
- /// address and the index is max value of unsigned integer.
-
- NetworkInterface(const NetworkInterface& interfc);
- /// Creates the NetworkInterface by copying another one.
-
- ~NetworkInterface();
- /// Destroys the NetworkInterface.
-
- NetworkInterface& operator = (const NetworkInterface& interfc);
- /// Assigns another NetworkInterface.
-
- bool operator < (const NetworkInterface& other) const;
- /// Operator less-than.
-
- bool operator == (const NetworkInterface& other) const;
- /// Operator equal. Compares interface indices.
-
- void swap(NetworkInterface& other);
- /// Swaps the NetworkInterface with another one.
-
- unsigned index() const;
- /// Returns the interface OS index.
-
- const std::string& name() const;
- /// Returns the interface name.
-
- const std::string& displayName() const;
- /// Returns the interface display name.
- ///
- /// On Windows platforms, this is currently the network adapter
- /// name. This may change to the "friendly name" of the network
- /// connection in a future version, however.
- ///
- /// On other platforms this is the same as name().
-
- const std::string& adapterName() const;
- /// Returns the interface adapter name.
- ///
- /// On Windows platforms, this is the network adapter LUID.
- /// The adapter name is used by some Windows Net APIs like DHCP.
- ///
- /// On other platforms this is the same as name().
-
- const IPAddress& firstAddress(IPAddress::Family family) const;
- /// Returns the first IP address bound to the interface.
- /// Throws NotFoundException if the address family is not
- /// configured on the interface.
-
- void firstAddress(IPAddress& addr, IPAddress::Family family = IPAddress::IPv4) const;
- /// Returns the first IP address bound to the interface.
- /// If the address family is not configured on the interface,
- /// the address returned in addr will be unspecified (wildcard).
-
- const IPAddress& address(unsigned index = 0) const;
- /// Returns the IP address bound to the interface at index position.
-
- void addAddress(const IPAddress& address);
- /// Adds address to the interface.
-
- void addAddress(const IPAddress& address, const IPAddress& subnetMask, const IPAddress& broadcastAddress);
- /// Adds address to the interface.
-
- const AddressList& addressList() const;
- /// Returns the list of IP addresses bound to the interface.
-
- const IPAddress& subnetMask(unsigned index = 0) const;
- /// Returns the subnet mask for this network interface.
-
- const IPAddress& broadcastAddress(unsigned index = 0) const;
- /// Returns the broadcast address for this network interface.
-
- const IPAddress& destAddress(unsigned index = 0) const;
- /// Returns the IPv4 point-to-point destination address for this network interface.
-
- const MACAddress& macAddress() const;
- /// Returns MAC (Media Access Control) address for the interface.
-
- unsigned mtu() const;
- /// Returns the MTU for this interface.
-
- NetworkInterface::Type type() const;
- /// returns the MIB IfType of the interface.
-
- bool supportsIP() const;
- /// Returns true if the interface supports IP.
-
- bool supportsIPv4() const;
- /// Returns true if the interface supports IPv4.
-
- bool supportsIPv6() const;
- /// Returns true if the interface supports IPv6.
-
- bool supportsBroadcast() const;
- /// Returns true if the interface supports broadcast.
-
- bool supportsMulticast() const;
- /// Returns true if the interface supports multicast.
-
- bool isLoopback() const;
- /// Returns true if the interface is loopback.
-
- bool isPointToPoint() const;
- /// Returns true if the interface is point-to-point.
-
- bool isRunning() const;
- /// Returns true if the interface is running.
-
- bool isUp() const;
- /// Returns true if the interface is up.
-
- static NetworkInterface forName(const std::string& name, bool requireIPv6 = false);
- /// Returns the NetworkInterface for the given name.
- ///
- /// If requireIPv6 is false, an IPv4 interface is returned.
- /// Otherwise, an IPv6 interface is returned.
- ///
- /// Throws an InterfaceNotFoundException if an interface
- /// with the give name does not exist.
-
- static NetworkInterface forName(const std::string& name, IPVersion ipVersion);
- /// Returns the NetworkInterface for the given name.
- ///
- /// The ipVersion argument can be used to specify whether
- /// an IPv4 (IPv4_ONLY) or IPv6 (IPv6_ONLY) interface is required,
- /// or whether the caller does not care (IPv4_OR_IPv6).
- ///
- /// Throws an InterfaceNotFoundException if an interface
- /// with the give name does not exist.
-
- static NetworkInterface forAddress(const IPAddress& address);
- /// Returns the NetworkInterface for the given IP address.
- ///
- /// Throws an InterfaceNotFoundException if an interface
- /// with the give address does not exist.
-
- static NetworkInterface forIndex(unsigned index);
- /// Returns the NetworkInterface for the given interface index.
- ///
- /// Throws an InterfaceNotFoundException if an interface
- /// with the given index does not exist.
-
- static List list(bool ipOnly = true, bool upOnly = true);
- /// Returns a list with all network interfaces
- /// on the system.
- ///
- /// If ipOnly is true, only interfaces supporting IP
- /// are returned. Otherwise, all system network interfaces
- /// are returned.
- ///
- /// If upOnly is true, only interfaces being up are returned.
- /// Otherwise, both interfaces being up and down are returned.
- ///
- /// If there are multiple addresses bound to one interface,
- /// multiple NetworkInterface entries are listed for
- /// the same interface.
-
- static Map map(bool ipOnly = true, bool upOnly = true);
- /// Returns a map containing system network interfaces
- /// Map is keyed by interface system indices.
- ///
- /// If ipOnly is true, only interfaces supporting IP
- /// are returned. Otherwise, all system network interfaces
- /// are returned.
+ /// NetworkInterface is used with MulticastSocket to specify
+ /// multicast interfaces for sending and receiving multicast
+ /// messages.
+ ///
+ /// The class also provides static member functions for
+ /// enumerating or searching network interfaces and their
+ /// respective configuration values.
+ ///
+ /// On Windows, detection capabilities vary depending on the
+ /// OS version/service pack. Although the best effort is made
+ /// not to attempt access to non-existent features through a
+ /// combination of compile/runtime checks, when running binaries
+ /// compiled on a newer version of the OS on an older one
+ /// problems may occur; if possible, it is best to run
+ /// binaries on the OS version where they were compiled.
+ /// This particularly applies to OS versions older than Vista
+ /// and XP.
+{
+public:
+ typedef std::vector<NetworkInterface> List;
+ typedef List NetworkInterfaceList;//@deprecated
+ typedef std::map<unsigned, NetworkInterface> Map;
+ typedef Poco::Tuple<IPAddress, IPAddress, IPAddress> AddressTuple;
+ typedef std::vector<AddressTuple> AddressList;
+ typedef AddressList::iterator AddressIterator;
+ typedef AddressList::const_iterator ConstAddressIterator;
+ typedef std::vector<unsigned char> MACAddress;
+
+ enum AddressType
+ {
+ IP_ADDRESS,
+ SUBNET_MASK,
+ BROADCAST_ADDRESS
+ };
+
+ enum Type
+ {
+ NI_TYPE_ETHERNET_CSMACD,
+ NI_TYPE_ISO88025_TOKENRING,
+ NI_TYPE_FRAMERELAY,
+ NI_TYPE_PPP,
+ NI_TYPE_SOFTWARE_LOOPBACK,
+ NI_TYPE_ATM,
+ NI_TYPE_IEEE80211,
+ NI_TYPE_TUNNEL,
+ NI_TYPE_IEEE1394,
+ NI_TYPE_OTHER
+ };
+
+ enum IPVersion
+ {
+ IPv4_ONLY, /// Return interfaces with IPv4 address only
+ IPv6_ONLY, /// Return interfaces with IPv6 address only
+ IPv4_OR_IPv6 /// Return interfaces with IPv4 or IPv6 address
+ };
+
+ static const unsigned NO_INDEX = ~0;
+#if defined(POCO_OS_FAMILY_WINDOWS)
+ static const char MAC_SEPARATOR = '-';
+#else
+ static const char MAC_SEPARATOR = ':';
+#endif
+
+ NetworkInterface(unsigned index = NO_INDEX);
+ /// Creates a NetworkInterface representing the
+ /// default interface.
+ ///
+ /// The name is empty, the IP address is the wildcard
+ /// address and the index is max value of unsigned integer.
+
+ NetworkInterface(const NetworkInterface& interfc);
+ /// Creates the NetworkInterface by copying another one.
+
+ ~NetworkInterface();
+ /// Destroys the NetworkInterface.
+
+ NetworkInterface& operator = (const NetworkInterface& interfc);
+ /// Assigns another NetworkInterface.
+
+ bool operator < (const NetworkInterface& other) const;
+ /// Operator less-than.
+
+ bool operator == (const NetworkInterface& other) const;
+ /// Operator equal. Compares interface indices.
+
+ void swap(NetworkInterface& other);
+ /// Swaps the NetworkInterface with another one.
+
+ unsigned index() const;
+ /// Returns the interface OS index.
+
+ const std::string& name() const;
+ /// Returns the interface name.
+
+ const std::string& displayName() const;
+ /// Returns the interface display name.
+ ///
+ /// On Windows platforms, this is currently the network adapter
+ /// name. This may change to the "friendly name" of the network
+ /// connection in a future version, however.
+ ///
+ /// On other platforms this is the same as name().
+
+ const std::string& adapterName() const;
+ /// Returns the interface adapter name.
+ ///
+ /// On Windows platforms, this is the network adapter LUID.
+ /// The adapter name is used by some Windows Net APIs like DHCP.
+ ///
+ /// On other platforms this is the same as name().
+
+ const IPAddress& firstAddress(IPAddress::Family family) const;
+ /// Returns the first IP address bound to the interface.
+ /// Throws NotFoundException if the address family is not
+ /// configured on the interface.
+
+ void firstAddress(IPAddress& addr, IPAddress::Family family = IPAddress::IPv4) const;
+ /// Returns the first IP address bound to the interface.
+ /// If the address family is not configured on the interface,
+ /// the address returned in addr will be unspecified (wildcard).
+
+ const IPAddress& address(unsigned index = 0) const;
+ /// Returns the IP address bound to the interface at index position.
+
+ void addAddress(const IPAddress& address);
+ /// Adds address to the interface.
+
+ void addAddress(const IPAddress& address, const IPAddress& subnetMask, const IPAddress& broadcastAddress);
+ /// Adds address to the interface.
+
+ const AddressList& addressList() const;
+ /// Returns the list of IP addresses bound to the interface.
+
+ const IPAddress& subnetMask(unsigned index = 0) const;
+ /// Returns the subnet mask for this network interface.
+
+ const IPAddress& broadcastAddress(unsigned index = 0) const;
+ /// Returns the broadcast address for this network interface.
+
+ const IPAddress& destAddress(unsigned index = 0) const;
+ /// Returns the IPv4 point-to-point destination address for this network interface.
+
+ const MACAddress& macAddress() const;
+ /// Returns MAC (Media Access Control) address for the interface.
+
+ unsigned mtu() const;
+ /// Returns the MTU for this interface.
+
+ NetworkInterface::Type type() const;
+ /// returns the MIB IfType of the interface.
+
+ bool supportsIP() const;
+ /// Returns true if the interface supports IP.
+
+ bool supportsIPv4() const;
+ /// Returns true if the interface supports IPv4.
+
+ bool supportsIPv6() const;
+ /// Returns true if the interface supports IPv6.
+
+ bool supportsBroadcast() const;
+ /// Returns true if the interface supports broadcast.
+
+ bool supportsMulticast() const;
+ /// Returns true if the interface supports multicast.
+
+ bool isLoopback() const;
+ /// Returns true if the interface is loopback.
+
+ bool isPointToPoint() const;
+ /// Returns true if the interface is point-to-point.
+
+ bool isRunning() const;
+ /// Returns true if the interface is running.
+
+ bool isUp() const;
+ /// Returns true if the interface is up.
+
+ static NetworkInterface forName(const std::string& name, bool requireIPv6 = false);
+ /// Returns the NetworkInterface for the given name.
///
- /// If upOnly is true, only interfaces being up are returned.
- /// Otherwise, both interfaces being up and down are returned.
+ /// If requireIPv6 is false, an IPv4 interface is returned.
+ /// Otherwise, an IPv6 interface is returned.
+ ///
+ /// Throws an InterfaceNotFoundException if an interface
+ /// with the give name does not exist.
+
+ static NetworkInterface forName(const std::string& name, IPVersion ipVersion);
+ /// Returns the NetworkInterface for the given name.
///
- /// If there are multiple addresses bound to one interface,
- /// they are contained within the NetworkInterface (second)
- /// member of the pair.
-
-protected:
- NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0);
- /// Creates the NetworkInterface.
-
- NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, unsigned index, MACAddress* pMACAddress = 0);
- /// Creates the NetworkInterface.
-
- NetworkInterface(const std::string& name, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0);
- /// Creates the NetworkInterface.
-
- NetworkInterface(const std::string& name,
- const std::string& displayName,
- const std::string& adapterName,
- const IPAddress& address,
- const IPAddress& subnetMask,
- const IPAddress& broadcastAddress,
- unsigned index,
- MACAddress* pMACAddress = 0);
- /// Creates the NetworkInterface.
-
- NetworkInterface(const std::string& name,
- const IPAddress& address,
- const IPAddress& subnetMask,
- const IPAddress& broadcastAddress,
- unsigned index,
- MACAddress* pMACAddress = 0);
- /// Creates the NetworkInterface.
-
- IPAddress interfaceNameToAddress(const std::string& interfaceName) const;
- /// Determines the IPAddress bound to the interface with the given name.
-
- unsigned interfaceNameToIndex(const std::string& interfaceName) const;
- /// Determines the interface index of the interface with the given name.
-
- NetworkInterfaceImpl& impl() { return *_pImpl; };
-
-private:
- NetworkInterfaceImpl* _pImpl;
-
- static Poco::FastMutex _mutex;
-};
-
-
-///
-/// inlines
-///
-
-
-inline bool NetworkInterface::operator < (const NetworkInterface& other) const
-{
- return this->index() < other.index();
-}
-
-
-inline bool NetworkInterface::operator == (const NetworkInterface& other) const
-{
- return this->index() == other.index();
-}
-
-
-} } // namespace Poco::Net
-
-
-Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::NetworkInterface::MACAddress& addr);
-
-
-#endif // POCO_NET_HAS_INTERFACE
-
-
-#endif // Net_NetworkInterface_INCLUDED
+ /// The ipVersion argument can be used to specify whether
+ /// an IPv4 (IPv4_ONLY) or IPv6 (IPv6_ONLY) interface is required,
+ /// or whether the caller does not care (IPv4_OR_IPv6).
+ ///
+ /// Throws an InterfaceNotFoundException if an interface
+ /// with the give name does not exist.
+
+ static NetworkInterface forAddress(const IPAddress& address);
+ /// Returns the NetworkInterface for the given IP address.
+ ///
+ /// Throws an InterfaceNotFoundException if an interface
+ /// with the give address does not exist.
+
+ static NetworkInterface forIndex(unsigned index);
+ /// Returns the NetworkInterface for the given interface index.
+ ///
+ /// Throws an InterfaceNotFoundException if an interface
+ /// with the given index does not exist.
+
+ static List list(bool ipOnly = true, bool upOnly = true);
+ /// Returns a list with all network interfaces
+ /// on the system.
+ ///
+ /// If ipOnly is true, only interfaces supporting IP
+ /// are returned. Otherwise, all system network interfaces
+ /// are returned.
+ ///
+ /// If upOnly is true, only interfaces being up are returned.
+ /// Otherwise, both interfaces being up and down are returned.
+ ///
+ /// If there are multiple addresses bound to one interface,
+ /// multiple NetworkInterface entries are listed for
+ /// the same interface.
+
+ static Map map(bool ipOnly = true, bool upOnly = true);
+ /// Returns a map containing system network interfaces
+ /// Map is keyed by interface system indices.
+ ///
+ /// If ipOnly is true, only interfaces supporting IP
+ /// are returned. Otherwise, all system network interfaces
+ /// are returned.
+ ///
+ /// If upOnly is true, only interfaces being up are returned.
+ /// Otherwise, both interfaces being up and down are returned.
+ ///
+ /// If there are multiple addresses bound to one interface,
+ /// they are contained within the NetworkInterface (second)
+ /// member of the pair.
+
+protected:
+ NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0);
+ /// Creates the NetworkInterface.
+
+ NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, unsigned index, MACAddress* pMACAddress = 0);
+ /// Creates the NetworkInterface.
+
+ NetworkInterface(const std::string& name, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0);
+ /// Creates the NetworkInterface.
+
+ NetworkInterface(const std::string& name,
+ const std::string& displayName,
+ const std::string& adapterName,
+ const IPAddress& address,
+ const IPAddress& subnetMask,
+ const IPAddress& broadcastAddress,
+ unsigned index,
+ MACAddress* pMACAddress = 0);
+ /// Creates the NetworkInterface.
+
+ NetworkInterface(const std::string& name,
+ const IPAddress& address,
+ const IPAddress& subnetMask,
+ const IPAddress& broadcastAddress,
+ unsigned index,
+ MACAddress* pMACAddress = 0);
+ /// Creates the NetworkInterface.
+
+ IPAddress interfaceNameToAddress(const std::string& interfaceName) const;
+ /// Determines the IPAddress bound to the interface with the given name.
+
+ unsigned interfaceNameToIndex(const std::string& interfaceName) const;
+ /// Determines the interface index of the interface with the given name.
+
+ NetworkInterfaceImpl& impl() { return *_pImpl; };
+
+private:
+ NetworkInterfaceImpl* _pImpl;
+
+ static Poco::FastMutex _mutex;
+};
+
+
+///
+/// inlines
+///
+
+
+inline bool NetworkInterface::operator < (const NetworkInterface& other) const
+{
+ return this->index() < other.index();
+}
+
+
+inline bool NetworkInterface::operator == (const NetworkInterface& other) const
+{
+ return this->index() == other.index();
+}
+
+
+} } // namespace Poco::Net
+
+
+Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::NetworkInterface::MACAddress& addr);
+
+
+#endif // POCO_NET_HAS_INTERFACE
+
+
+#endif // Net_NetworkInterface_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/NullPartHandler.h b/contrib/libs/poco/Net/include/Poco/Net/NullPartHandler.h
index ce9ed0c40d..21c45c6805 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/NullPartHandler.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/NullPartHandler.h
@@ -1,47 +1,47 @@
-//
-// NullPartHandler.h
-//
-// Library: Net
-// Package: Messages
-// Module: NullPartHandler
-//
-// Definition of the NullPartHandler class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_NullPartHandler_INCLUDED
-#define Net_NullPartHandler_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/PartHandler.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API NullPartHandler: public PartHandler
- /// A very special PartHandler that simply discards all data.
-{
-public:
- NullPartHandler();
- /// Creates the NullPartHandler.
-
- ~NullPartHandler();
- /// Destroys the NullPartHandler.
-
- void handlePart(const MessageHeader& header, std::istream& stream);
- /// Reads and discards all data from the stream.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_NullPartHandler_INCLUDED
+//
+// NullPartHandler.h
+//
+// Library: Net
+// Package: Messages
+// Module: NullPartHandler
+//
+// Definition of the NullPartHandler class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_NullPartHandler_INCLUDED
+#define Net_NullPartHandler_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/PartHandler.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API NullPartHandler: public PartHandler
+ /// A very special PartHandler that simply discards all data.
+{
+public:
+ NullPartHandler();
+ /// Creates the NullPartHandler.
+
+ ~NullPartHandler();
+ /// Destroys the NullPartHandler.
+
+ void handlePart(const MessageHeader& header, std::istream& stream);
+ /// Reads and discards all data from the stream.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_NullPartHandler_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/OAuth10Credentials.h b/contrib/libs/poco/Net/include/Poco/Net/OAuth10Credentials.h
index e0d06e7f0b..1402d40d5b 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/OAuth10Credentials.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/OAuth10Credentials.h
@@ -1,274 +1,274 @@
-//
-// OAuth10Credentials.h
-//
-// Library: Net
-// Package: OAuth
-// Module: OAuth10Credentials
-//
-// Definition of the OAuth10Credentials class.
-//
-// Copyright (c) 2014, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_OAuth10Credentials_INCLUDED
-#define Net_OAuth10Credentials_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/URI.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-class HTMLForm;
-
-
-class Net_API OAuth10Credentials
- /// This class implements OAuth 1.0A authentication for HTTP requests,
- /// according to RFC 5849.
- ///
- /// Only PLAINTEXT and HMAC-SHA1 signature methods are
- /// supported. The RSA-SHA1 signature method is not supported.
+//
+// OAuth10Credentials.h
+//
+// Library: Net
+// Package: OAuth
+// Module: OAuth10Credentials
+//
+// Definition of the OAuth10Credentials class.
+//
+// Copyright (c) 2014, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_OAuth10Credentials_INCLUDED
+#define Net_OAuth10Credentials_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/URI.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+class HTMLForm;
+
+
+class Net_API OAuth10Credentials
+ /// This class implements OAuth 1.0A authentication for HTTP requests,
+ /// according to RFC 5849.
///
- /// The OAuth10Credentials can be used to sign a client request, as
- /// well as to verify the signature of a request on the server.
- ///
- /// To sign a client request, using a known consumer (client) key, consumer (client) secret,
- /// OAuth token and token secret:
- ///
- /// 1. Create an OAuth10Credentials object using all four credentials, either using
- /// the four argument constructor, or by using the default constructor and setting
- /// the credentials using the setter methods.
- /// 2. Create a URI containing the full request URI.
- /// 3. Create an appropriate HTTPRequest object.
- /// 4. Optionally, create a HTMLForm object containing additional parameters to sign.
- /// 5. Sign the request by calling authenticate(). This will add an OAuth
- /// Authorization header to the request.
- /// 6. Send the request using a HTTPClientSession.
- ///
- /// To request the OAuth request token from a server, using only the consumer (client) key
- /// and consumer (client) secret:
- ///
- /// 1. Create an OAuth10Credentials object using the two consumer credentials, either using
- /// the two argument constructor, or by using the default constructor and setting
- /// the credentials using the setter methods.
- /// 2. Specify the callback URI using setCallback().
- /// 3. Create a URI containing the full request URI to obtain the token.
- /// 4. Create an appropriate HTTPRequest object.
- /// 5. Sign the request by calling authenticate(). This will add an OAuth
- /// Authorization header to the request.
- /// 6. Send the request using a HTTPClientSession.
- /// 7. The response will contain the request token and request token secret.
- /// These can be extracted from the response body using a HTMLForm object.
- ///
- /// Requesting the access token and secret (temporary credentials) from the server
- /// is analogous to signing a client request using consumer key, consumer secret,
- /// request token and request token secret.
- /// The server response will contain the access token and access token secret,
- /// which can again be extracted from the response body using a HTMLForm object.
- ///
- /// To verify a request on the server:
- ///
- /// 1. Create an OAuth10Credentials object using the constructor taking a
- /// HTTPRequest object. This will extract the consumer key and token (if
- /// provided).
- /// 2. Provide the consumer secret and token secret (if required) matching the
- /// consumer key and token to the OAuth10Credentials object using the
- /// setter methods.
- /// 3. Create an URI object containing the full request URI.
- /// 4. Call verify() to verify the signature.
- /// 5. If verification was successful, and the request was a request for
- /// a request (temporary) token, call getCallback() to
- /// obtain the callback URI provided by the client.
-{
-public:
- enum SignatureMethod
- /// OAuth 1.0A Signature Method.
- {
- SIGN_PLAINTEXT, /// OAuth 1.0A PLAINTEXT signature method
- SIGN_HMAC_SHA1 /// OAuth 1.0A HMAC-SHA1 signature method
- };
-
- OAuth10Credentials();
- /// Creates an empty OAuth10Credentials object.
-
- OAuth10Credentials(const std::string& consumerKey, const std::string& consumerSecret);
- /// Creates an OAuth10Credentials object with the given consumer key and consumer secret.
- ///
- /// The token and tokenSecret will be left empty.
-
- OAuth10Credentials(const std::string& consumerKey, const std::string& consumerSecret, const std::string& token, const std::string& tokenSecret);
- /// Creates an OAuth10Credentials object with the given consumer key and
- /// consumer secret, as well as token and token secret.
-
- explicit OAuth10Credentials(const HTTPRequest& request);
- /// Creates an OAuth10Credentials object from a HTTPRequest object.
- ///
- /// Extracts consumer key and token (if available) from the Authorization header.
- ///
- /// Throws a NotAuthenticatedException if the request does
- /// not contain OAuth 1.0 credentials.
-
- ~OAuth10Credentials();
- /// Destroys the OAuth10Credentials.
-
- void setConsumerKey(const std::string& consumerKey);
- /// Sets the consumer key.
-
- const std::string& getConsumerKey() const;
- /// Returns the consumer key.
-
- void setConsumerSecret(const std::string& consumerSecret);
- /// Sets the consumer secret.
-
- const std::string& getConsumerSecret() const;
- /// Returns the consumer secret.
-
- void setToken(const std::string& token);
- /// Sets the token.
-
- const std::string& getToken() const;
- /// Returns the token.
-
- void setTokenSecret(const std::string& tokenSecret);
- /// Sets the token.
-
- const std::string& getTokenSecret() const;
- /// Returns the token secret.
-
- void setRealm(const std::string& realm);
- /// Sets the optional realm to be included in the Authorization header.
-
- const std::string& getRealm() const;
- /// Returns the optional realm to be included in the Authorization header.
-
- void setCallback(const std::string& uri);
- /// Sets the callback URI.
-
- const std::string& getCallback() const;
- /// Returns the callback URI.
-
- void authenticate(HTTPRequest& request, const Poco::URI& uri, SignatureMethod method = SIGN_HMAC_SHA1);
- /// Adds an OAuth 1.0A Authentication header to the given request, using
- /// the given signature method.
-
- void authenticate(HTTPRequest& request, const Poco::URI& uri, const Poco::Net::HTMLForm& params, SignatureMethod method = SIGN_HMAC_SHA1);
- /// Adds an OAuth 1.0A Authentication header to the given request, using
- /// the given signature method.
-
- bool verify(const HTTPRequest& request, const Poco::URI& uri);
- /// Verifies the signature of the given request.
- ///
- /// The consumer key, consumer secret, token and token secret must have been set.
- ///
- /// Returns true if the signature is valid, otherwise false.
- ///
- /// Throws a NotAuthenticatedException if the request does not contain OAuth
- /// credentials, or in case of an unsupported OAuth version or signature method.
-
- bool verify(const HTTPRequest& request, const Poco::URI& uri, const Poco::Net::HTMLForm& params);
- /// Verifies the signature of the given request.
- ///
- /// The consumer key, consumer secret, token and token secret must have been set.
- ///
- /// Returns true if the signature is valid, otherwise false.
- ///
- /// Throws a NotAuthenticatedException if the request does not contain OAuth
- /// credentials, or in case of an unsupported OAuth version or signature method.
-
- void nonceAndTimestampForTesting(const std::string& nonce, const std::string& timestamp);
- /// Sets the nonce and timestamp to a wellknown value.
- ///
- /// For use by testsuite only, to test the signature
- /// algorithm with wellknown inputs.
- ///
- /// In normal operation, the nonce is a random value
- /// computed by createNonce() and the timestamp is taken
- /// from the system time.
-
- static const std::string SCHEME;
-
-protected:
- void signPlaintext(Poco::Net::HTTPRequest& request) const;
- /// Signs the given HTTP request according to OAuth 1.0A PLAINTEXT signature method.
-
- void signHMACSHA1(Poco::Net::HTTPRequest& request, const std::string& uri, const Poco::Net::HTMLForm& params) const;
- /// Signs the given HTTP request according to OAuth 1.0A HMAC-SHA1 signature method.
-
- std::string createNonce() const;
- /// Creates a nonce, which is basically a Base64-encoded 32 character random
- /// string, with non-alphanumeric characters removed.
-
- std::string createSignature(const Poco::Net::HTTPRequest& request, const std::string& uri, const Poco::Net::HTMLForm& params, const std::string& nonce, const std::string& timestamp) const;
- /// Creates a OAuth signature for the given request and its parameters, according
- /// to <https://dev.twitter.com/docs/auth/creating-signature>.
-
- static std::string percentEncode(const std::string& str);
- /// Percent-encodes the given string according to Twitter API's rules,
- /// given in <https://dev.twitter.com/docs/auth/percent-encoding-parameters>.
-
-private:
- OAuth10Credentials(const OAuth10Credentials&);
- OAuth10Credentials& operator = (const OAuth10Credentials&);
-
- std::string _consumerKey;
- std::string _consumerSecret;
- std::string _token;
- std::string _tokenSecret;
- std::string _callback;
- std::string _realm;
- std::string _nonce;
- std::string _timestamp;
-};
-
-
-//
-// inlines
-//
-inline const std::string& OAuth10Credentials::getConsumerKey() const
-{
- return _consumerKey;
-}
-
-
-inline const std::string& OAuth10Credentials::getConsumerSecret() const
-{
- return _consumerSecret;
-}
-
-
-inline const std::string& OAuth10Credentials::getToken() const
-{
- return _token;
-}
-
-
-inline const std::string& OAuth10Credentials::getTokenSecret() const
-{
- return _tokenSecret;
-}
-
-
-inline const std::string& OAuth10Credentials::getRealm() const
-{
- return _realm;
-}
-
-
-inline const std::string& OAuth10Credentials::getCallback() const
-{
- return _callback;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_OAuth10Credentials_INCLUDED
+ /// Only PLAINTEXT and HMAC-SHA1 signature methods are
+ /// supported. The RSA-SHA1 signature method is not supported.
+ ///
+ /// The OAuth10Credentials can be used to sign a client request, as
+ /// well as to verify the signature of a request on the server.
+ ///
+ /// To sign a client request, using a known consumer (client) key, consumer (client) secret,
+ /// OAuth token and token secret:
+ ///
+ /// 1. Create an OAuth10Credentials object using all four credentials, either using
+ /// the four argument constructor, or by using the default constructor and setting
+ /// the credentials using the setter methods.
+ /// 2. Create a URI containing the full request URI.
+ /// 3. Create an appropriate HTTPRequest object.
+ /// 4. Optionally, create a HTMLForm object containing additional parameters to sign.
+ /// 5. Sign the request by calling authenticate(). This will add an OAuth
+ /// Authorization header to the request.
+ /// 6. Send the request using a HTTPClientSession.
+ ///
+ /// To request the OAuth request token from a server, using only the consumer (client) key
+ /// and consumer (client) secret:
+ ///
+ /// 1. Create an OAuth10Credentials object using the two consumer credentials, either using
+ /// the two argument constructor, or by using the default constructor and setting
+ /// the credentials using the setter methods.
+ /// 2. Specify the callback URI using setCallback().
+ /// 3. Create a URI containing the full request URI to obtain the token.
+ /// 4. Create an appropriate HTTPRequest object.
+ /// 5. Sign the request by calling authenticate(). This will add an OAuth
+ /// Authorization header to the request.
+ /// 6. Send the request using a HTTPClientSession.
+ /// 7. The response will contain the request token and request token secret.
+ /// These can be extracted from the response body using a HTMLForm object.
+ ///
+ /// Requesting the access token and secret (temporary credentials) from the server
+ /// is analogous to signing a client request using consumer key, consumer secret,
+ /// request token and request token secret.
+ /// The server response will contain the access token and access token secret,
+ /// which can again be extracted from the response body using a HTMLForm object.
+ ///
+ /// To verify a request on the server:
+ ///
+ /// 1. Create an OAuth10Credentials object using the constructor taking a
+ /// HTTPRequest object. This will extract the consumer key and token (if
+ /// provided).
+ /// 2. Provide the consumer secret and token secret (if required) matching the
+ /// consumer key and token to the OAuth10Credentials object using the
+ /// setter methods.
+ /// 3. Create an URI object containing the full request URI.
+ /// 4. Call verify() to verify the signature.
+ /// 5. If verification was successful, and the request was a request for
+ /// a request (temporary) token, call getCallback() to
+ /// obtain the callback URI provided by the client.
+{
+public:
+ enum SignatureMethod
+ /// OAuth 1.0A Signature Method.
+ {
+ SIGN_PLAINTEXT, /// OAuth 1.0A PLAINTEXT signature method
+ SIGN_HMAC_SHA1 /// OAuth 1.0A HMAC-SHA1 signature method
+ };
+
+ OAuth10Credentials();
+ /// Creates an empty OAuth10Credentials object.
+
+ OAuth10Credentials(const std::string& consumerKey, const std::string& consumerSecret);
+ /// Creates an OAuth10Credentials object with the given consumer key and consumer secret.
+ ///
+ /// The token and tokenSecret will be left empty.
+
+ OAuth10Credentials(const std::string& consumerKey, const std::string& consumerSecret, const std::string& token, const std::string& tokenSecret);
+ /// Creates an OAuth10Credentials object with the given consumer key and
+ /// consumer secret, as well as token and token secret.
+
+ explicit OAuth10Credentials(const HTTPRequest& request);
+ /// Creates an OAuth10Credentials object from a HTTPRequest object.
+ ///
+ /// Extracts consumer key and token (if available) from the Authorization header.
+ ///
+ /// Throws a NotAuthenticatedException if the request does
+ /// not contain OAuth 1.0 credentials.
+
+ ~OAuth10Credentials();
+ /// Destroys the OAuth10Credentials.
+
+ void setConsumerKey(const std::string& consumerKey);
+ /// Sets the consumer key.
+
+ const std::string& getConsumerKey() const;
+ /// Returns the consumer key.
+
+ void setConsumerSecret(const std::string& consumerSecret);
+ /// Sets the consumer secret.
+
+ const std::string& getConsumerSecret() const;
+ /// Returns the consumer secret.
+
+ void setToken(const std::string& token);
+ /// Sets the token.
+
+ const std::string& getToken() const;
+ /// Returns the token.
+
+ void setTokenSecret(const std::string& tokenSecret);
+ /// Sets the token.
+
+ const std::string& getTokenSecret() const;
+ /// Returns the token secret.
+
+ void setRealm(const std::string& realm);
+ /// Sets the optional realm to be included in the Authorization header.
+
+ const std::string& getRealm() const;
+ /// Returns the optional realm to be included in the Authorization header.
+
+ void setCallback(const std::string& uri);
+ /// Sets the callback URI.
+
+ const std::string& getCallback() const;
+ /// Returns the callback URI.
+
+ void authenticate(HTTPRequest& request, const Poco::URI& uri, SignatureMethod method = SIGN_HMAC_SHA1);
+ /// Adds an OAuth 1.0A Authentication header to the given request, using
+ /// the given signature method.
+
+ void authenticate(HTTPRequest& request, const Poco::URI& uri, const Poco::Net::HTMLForm& params, SignatureMethod method = SIGN_HMAC_SHA1);
+ /// Adds an OAuth 1.0A Authentication header to the given request, using
+ /// the given signature method.
+
+ bool verify(const HTTPRequest& request, const Poco::URI& uri);
+ /// Verifies the signature of the given request.
+ ///
+ /// The consumer key, consumer secret, token and token secret must have been set.
+ ///
+ /// Returns true if the signature is valid, otherwise false.
+ ///
+ /// Throws a NotAuthenticatedException if the request does not contain OAuth
+ /// credentials, or in case of an unsupported OAuth version or signature method.
+
+ bool verify(const HTTPRequest& request, const Poco::URI& uri, const Poco::Net::HTMLForm& params);
+ /// Verifies the signature of the given request.
+ ///
+ /// The consumer key, consumer secret, token and token secret must have been set.
+ ///
+ /// Returns true if the signature is valid, otherwise false.
+ ///
+ /// Throws a NotAuthenticatedException if the request does not contain OAuth
+ /// credentials, or in case of an unsupported OAuth version or signature method.
+
+ void nonceAndTimestampForTesting(const std::string& nonce, const std::string& timestamp);
+ /// Sets the nonce and timestamp to a wellknown value.
+ ///
+ /// For use by testsuite only, to test the signature
+ /// algorithm with wellknown inputs.
+ ///
+ /// In normal operation, the nonce is a random value
+ /// computed by createNonce() and the timestamp is taken
+ /// from the system time.
+
+ static const std::string SCHEME;
+
+protected:
+ void signPlaintext(Poco::Net::HTTPRequest& request) const;
+ /// Signs the given HTTP request according to OAuth 1.0A PLAINTEXT signature method.
+
+ void signHMACSHA1(Poco::Net::HTTPRequest& request, const std::string& uri, const Poco::Net::HTMLForm& params) const;
+ /// Signs the given HTTP request according to OAuth 1.0A HMAC-SHA1 signature method.
+
+ std::string createNonce() const;
+ /// Creates a nonce, which is basically a Base64-encoded 32 character random
+ /// string, with non-alphanumeric characters removed.
+
+ std::string createSignature(const Poco::Net::HTTPRequest& request, const std::string& uri, const Poco::Net::HTMLForm& params, const std::string& nonce, const std::string& timestamp) const;
+ /// Creates a OAuth signature for the given request and its parameters, according
+ /// to <https://dev.twitter.com/docs/auth/creating-signature>.
+
+ static std::string percentEncode(const std::string& str);
+ /// Percent-encodes the given string according to Twitter API's rules,
+ /// given in <https://dev.twitter.com/docs/auth/percent-encoding-parameters>.
+
+private:
+ OAuth10Credentials(const OAuth10Credentials&);
+ OAuth10Credentials& operator = (const OAuth10Credentials&);
+
+ std::string _consumerKey;
+ std::string _consumerSecret;
+ std::string _token;
+ std::string _tokenSecret;
+ std::string _callback;
+ std::string _realm;
+ std::string _nonce;
+ std::string _timestamp;
+};
+
+
+//
+// inlines
+//
+inline const std::string& OAuth10Credentials::getConsumerKey() const
+{
+ return _consumerKey;
+}
+
+
+inline const std::string& OAuth10Credentials::getConsumerSecret() const
+{
+ return _consumerSecret;
+}
+
+
+inline const std::string& OAuth10Credentials::getToken() const
+{
+ return _token;
+}
+
+
+inline const std::string& OAuth10Credentials::getTokenSecret() const
+{
+ return _tokenSecret;
+}
+
+
+inline const std::string& OAuth10Credentials::getRealm() const
+{
+ return _realm;
+}
+
+
+inline const std::string& OAuth10Credentials::getCallback() const
+{
+ return _callback;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_OAuth10Credentials_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/OAuth20Credentials.h b/contrib/libs/poco/Net/include/Poco/Net/OAuth20Credentials.h
index 04ab66e35d..6935f2dfa6 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/OAuth20Credentials.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/OAuth20Credentials.h
@@ -1,132 +1,132 @@
-//
-// OAuth20Credentials.h
-//
-// Library: Net
-// Package: OAuth
-// Module: OAuth20Credentials
-//
-// Definition of the OAuth20Credentials class.
-//
-// Copyright (c) 2014, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_OAuth20Credentials_INCLUDED
-#define Net_OAuth20Credentials_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPRequest;
-
-
-class Net_API OAuth20Credentials
- /// This class implements OAuth 2.0 authentication for HTTP requests,
- /// via Bearer tokens in the Authorization header,
- /// according to RFC 6749 and RFC 6750.
- ///
- /// To add an Authorization header containing a bearer token
- /// to a HTTPRequest object, create an OAuth20Credentials object
- /// with the bearer token and call authenticate().
- ///
- /// The bearer token can also be extracted from a HTTPRequest
- /// by creating the OAuth20Credentials object with a HTTPRequest
- /// object containing a "Bearer" Authorization header and
- /// calling getBearerToken().
- ///
- /// The authorization header scheme can be changed from
- /// "Bearer" to a custom value. For example, GitHub uses
- /// the "token" scheme.
-{
-public:
- OAuth20Credentials();
- /// Creates an empty OAuth20Credentials object.
-
- explicit OAuth20Credentials(const std::string& bearerToken);
- /// Creates an OAuth20Credentials object with the given bearer token.
-
- OAuth20Credentials(const std::string& bearerToken, const std::string& scheme);
- /// Creates an OAuth20Credentials object with the given bearer token
- /// and authorization scheme, which overrides the default scheme ("Bearer").
- ///
- /// This is useful for services like GitHub, which use "token" as scheme.
-
- explicit OAuth20Credentials(const HTTPRequest& request);
- /// Creates an OAuth20Credentials object from a HTTPRequest object.
- ///
- /// Extracts bearer token from the Authorization header, which
- /// must use the "Bearer" authorization scheme.
- ///
- /// Throws a NotAuthenticatedException if the request does
- /// not contain a bearer token in the Authorization header.
-
- OAuth20Credentials(const HTTPRequest& request, const std::string& scheme);
- /// Creates an OAuth20Credentials object from a HTTPRequest object.
- ///
- /// Extracts bearer token from the Authorization header, which must
- /// use the given authorization scheme.
- ///
- /// Throws a NotAuthenticatedException if the request does
- /// not contain a bearer token in the Authorization header.
-
- ~OAuth20Credentials();
- /// Destroys the HTTPCredentials.
-
- void setBearerToken(const std::string& bearerToken);
- /// Sets the bearer token.
-
- const std::string& getBearerToken() const;
- /// Returns the bearer token.
-
- void setScheme(const std::string& scheme);
- /// Sets the Authorization header scheme.
-
- const std::string& getScheme() const;
- /// Returns the Authorization header scheme.
-
- void authenticate(HTTPRequest& request);
- /// Adds an Authorization header containing the bearer token to
- /// the HTTPRequest.
-
- static const std::string SCHEME;
-
-protected:
- void extractBearerToken(const HTTPRequest& request);
- /// Extracts the bearer token from the HTTPRequest.
-
-private:
- OAuth20Credentials(const OAuth20Credentials&);
- OAuth20Credentials& operator = (const OAuth20Credentials&);
-
- std::string _bearerToken;
- std::string _scheme;
-};
-
-
-//
-// inlines
-//
-inline const std::string& OAuth20Credentials::getBearerToken() const
-{
- return _bearerToken;
-}
-
-
-inline const std::string& OAuth20Credentials::getScheme() const
-{
- return _scheme;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_OAuth20Credentials_INCLUDED
+//
+// OAuth20Credentials.h
+//
+// Library: Net
+// Package: OAuth
+// Module: OAuth20Credentials
+//
+// Definition of the OAuth20Credentials class.
+//
+// Copyright (c) 2014, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_OAuth20Credentials_INCLUDED
+#define Net_OAuth20Credentials_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPRequest;
+
+
+class Net_API OAuth20Credentials
+ /// This class implements OAuth 2.0 authentication for HTTP requests,
+ /// via Bearer tokens in the Authorization header,
+ /// according to RFC 6749 and RFC 6750.
+ ///
+ /// To add an Authorization header containing a bearer token
+ /// to a HTTPRequest object, create an OAuth20Credentials object
+ /// with the bearer token and call authenticate().
+ ///
+ /// The bearer token can also be extracted from a HTTPRequest
+ /// by creating the OAuth20Credentials object with a HTTPRequest
+ /// object containing a "Bearer" Authorization header and
+ /// calling getBearerToken().
+ ///
+ /// The authorization header scheme can be changed from
+ /// "Bearer" to a custom value. For example, GitHub uses
+ /// the "token" scheme.
+{
+public:
+ OAuth20Credentials();
+ /// Creates an empty OAuth20Credentials object.
+
+ explicit OAuth20Credentials(const std::string& bearerToken);
+ /// Creates an OAuth20Credentials object with the given bearer token.
+
+ OAuth20Credentials(const std::string& bearerToken, const std::string& scheme);
+ /// Creates an OAuth20Credentials object with the given bearer token
+ /// and authorization scheme, which overrides the default scheme ("Bearer").
+ ///
+ /// This is useful for services like GitHub, which use "token" as scheme.
+
+ explicit OAuth20Credentials(const HTTPRequest& request);
+ /// Creates an OAuth20Credentials object from a HTTPRequest object.
+ ///
+ /// Extracts bearer token from the Authorization header, which
+ /// must use the "Bearer" authorization scheme.
+ ///
+ /// Throws a NotAuthenticatedException if the request does
+ /// not contain a bearer token in the Authorization header.
+
+ OAuth20Credentials(const HTTPRequest& request, const std::string& scheme);
+ /// Creates an OAuth20Credentials object from a HTTPRequest object.
+ ///
+ /// Extracts bearer token from the Authorization header, which must
+ /// use the given authorization scheme.
+ ///
+ /// Throws a NotAuthenticatedException if the request does
+ /// not contain a bearer token in the Authorization header.
+
+ ~OAuth20Credentials();
+ /// Destroys the HTTPCredentials.
+
+ void setBearerToken(const std::string& bearerToken);
+ /// Sets the bearer token.
+
+ const std::string& getBearerToken() const;
+ /// Returns the bearer token.
+
+ void setScheme(const std::string& scheme);
+ /// Sets the Authorization header scheme.
+
+ const std::string& getScheme() const;
+ /// Returns the Authorization header scheme.
+
+ void authenticate(HTTPRequest& request);
+ /// Adds an Authorization header containing the bearer token to
+ /// the HTTPRequest.
+
+ static const std::string SCHEME;
+
+protected:
+ void extractBearerToken(const HTTPRequest& request);
+ /// Extracts the bearer token from the HTTPRequest.
+
+private:
+ OAuth20Credentials(const OAuth20Credentials&);
+ OAuth20Credentials& operator = (const OAuth20Credentials&);
+
+ std::string _bearerToken;
+ std::string _scheme;
+};
+
+
+//
+// inlines
+//
+inline const std::string& OAuth20Credentials::getBearerToken() const
+{
+ return _bearerToken;
+}
+
+
+inline const std::string& OAuth20Credentials::getScheme() const
+{
+ return _scheme;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_OAuth20Credentials_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/POP3ClientSession.h b/contrib/libs/poco/Net/include/Poco/Net/POP3ClientSession.h
index 05fc09f135..a4b12ce1ed 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/POP3ClientSession.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/POP3ClientSession.h
@@ -1,185 +1,185 @@
-//
-// POP3ClientSession.h
-//
-// Library: Net
-// Package: Mail
-// Module: POP3ClientSession
-//
-// Definition of the POP3ClientSession class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_POP3ClientSession_INCLUDED
-#define Net_POP3ClientSession_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/DialogSocket.h"
-#include "Poco/Timespan.h"
-#include <ostream>
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class MessageHeader;
-class MailMessage;
-class PartHandler;
-
-
-class Net_API POP3ClientSession
- /// This class implements an Post Office Protocol
- /// Version 3 (POP3, RFC 1939)
- /// client for receiving e-mail messages.
-{
-public:
- enum
- {
- POP3_PORT = 110
- };
-
- struct MessageInfo
- /// Information returned by listMessages().
- {
- int id;
- int size;
- };
-
- typedef std::vector<MessageInfo> MessageInfoVec;
-
- explicit POP3ClientSession(const StreamSocket& socket);
- /// Creates the POP3ClientSession using
- /// the given socket, which must be connected
- /// to a POP3 server.
-
- POP3ClientSession(const std::string& host, Poco::UInt16 port = POP3_PORT);
- /// Creates the POP3ClientSession using a socket connected
- /// to the given host and port.
-
- virtual ~POP3ClientSession();
- /// Destroys the SMTPClientSession.
-
- void setTimeout(const Poco::Timespan& timeout);
- /// Sets the timeout for socket read operations.
-
- Poco::Timespan getTimeout() const;
- /// Returns the timeout for socket read operations.
-
- void login(const std::string& username, const std::string& password);
- /// Logs in to the POP3 server by sending a USER command
- /// followed by a PASS command.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void close();
- /// Sends a QUIT command and closes the connection to the server.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- int messageCount();
- /// Sends a STAT command to determine the number of messages
- /// available on the server and returns that number.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void listMessages(MessageInfoVec& messages);
- /// Fills the given vector with the ids and sizes of all
- /// messages available on the server.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void retrieveMessage(int id, MailMessage& message);
- /// Retrieves the message with the given id from the server and
- /// stores the raw message content in the message's
- /// content string, available with message.getContent().
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void retrieveMessage(int id, MailMessage& message, PartHandler& handler);
- /// Retrieves the message with the given id from the server and
- /// stores it in message.
- ///
- /// If the message has multiple parts, the parts
- /// are reported to the PartHandler. If the message
- /// is not a multi-part message, the content is stored
- /// in a string available by calling message.getContent().
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void retrieveMessage(int id, std::ostream& ostr);
- /// Retrieves the raw message with the given id from the
- /// server and copies it to the given output stream.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void retrieveHeader(int id, MessageHeader& header);
- /// Retrieves the message header of the message with the
- /// given id and stores it in header.
- ///
- /// For this to work, the server must support the TOP command.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void deleteMessage(int id);
- /// Marks the message with the given ID for deletion. The message
- /// will be deleted when the connection to the server is
- /// closed by calling close().
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- bool sendCommand(const std::string& command, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
- ///
- /// Returns true if the response is positive, false otherwise.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- bool sendCommand(const std::string& command, const std::string& arg, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
- ///
- /// Returns true if the response is positive, false otherwise.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
- bool sendCommand(const std::string& command, const std::string& arg1, const std::string& arg2, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
- ///
- /// Returns true if the response is positive, false otherwise.
- ///
- /// Throws a POP3Exception in case of a POP3-specific error, or a
- /// NetException in case of a general network communication failure.
-
-protected:
- static bool isPositive(const std::string& response);
-
-private:
- DialogSocket _socket;
- bool _isOpen;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_POP3ClientSession_INCLUDED
+//
+// POP3ClientSession.h
+//
+// Library: Net
+// Package: Mail
+// Module: POP3ClientSession
+//
+// Definition of the POP3ClientSession class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_POP3ClientSession_INCLUDED
+#define Net_POP3ClientSession_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/DialogSocket.h"
+#include "Poco/Timespan.h"
+#include <ostream>
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class MessageHeader;
+class MailMessage;
+class PartHandler;
+
+
+class Net_API POP3ClientSession
+ /// This class implements an Post Office Protocol
+ /// Version 3 (POP3, RFC 1939)
+ /// client for receiving e-mail messages.
+{
+public:
+ enum
+ {
+ POP3_PORT = 110
+ };
+
+ struct MessageInfo
+ /// Information returned by listMessages().
+ {
+ int id;
+ int size;
+ };
+
+ typedef std::vector<MessageInfo> MessageInfoVec;
+
+ explicit POP3ClientSession(const StreamSocket& socket);
+ /// Creates the POP3ClientSession using
+ /// the given socket, which must be connected
+ /// to a POP3 server.
+
+ POP3ClientSession(const std::string& host, Poco::UInt16 port = POP3_PORT);
+ /// Creates the POP3ClientSession using a socket connected
+ /// to the given host and port.
+
+ virtual ~POP3ClientSession();
+ /// Destroys the SMTPClientSession.
+
+ void setTimeout(const Poco::Timespan& timeout);
+ /// Sets the timeout for socket read operations.
+
+ Poco::Timespan getTimeout() const;
+ /// Returns the timeout for socket read operations.
+
+ void login(const std::string& username, const std::string& password);
+ /// Logs in to the POP3 server by sending a USER command
+ /// followed by a PASS command.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void close();
+ /// Sends a QUIT command and closes the connection to the server.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ int messageCount();
+ /// Sends a STAT command to determine the number of messages
+ /// available on the server and returns that number.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void listMessages(MessageInfoVec& messages);
+ /// Fills the given vector with the ids and sizes of all
+ /// messages available on the server.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void retrieveMessage(int id, MailMessage& message);
+ /// Retrieves the message with the given id from the server and
+ /// stores the raw message content in the message's
+ /// content string, available with message.getContent().
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void retrieveMessage(int id, MailMessage& message, PartHandler& handler);
+ /// Retrieves the message with the given id from the server and
+ /// stores it in message.
+ ///
+ /// If the message has multiple parts, the parts
+ /// are reported to the PartHandler. If the message
+ /// is not a multi-part message, the content is stored
+ /// in a string available by calling message.getContent().
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void retrieveMessage(int id, std::ostream& ostr);
+ /// Retrieves the raw message with the given id from the
+ /// server and copies it to the given output stream.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void retrieveHeader(int id, MessageHeader& header);
+ /// Retrieves the message header of the message with the
+ /// given id and stores it in header.
+ ///
+ /// For this to work, the server must support the TOP command.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void deleteMessage(int id);
+ /// Marks the message with the given ID for deletion. The message
+ /// will be deleted when the connection to the server is
+ /// closed by calling close().
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ bool sendCommand(const std::string& command, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+ ///
+ /// Returns true if the response is positive, false otherwise.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ bool sendCommand(const std::string& command, const std::string& arg, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+ ///
+ /// Returns true if the response is positive, false otherwise.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ bool sendCommand(const std::string& command, const std::string& arg1, const std::string& arg2, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+ ///
+ /// Returns true if the response is positive, false otherwise.
+ ///
+ /// Throws a POP3Exception in case of a POP3-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+protected:
+ static bool isPositive(const std::string& response);
+
+private:
+ DialogSocket _socket;
+ bool _isOpen;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_POP3ClientSession_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketAcceptor.h b/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketAcceptor.h
index 458bf4a692..514bcfbfa1 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketAcceptor.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketAcceptor.h
@@ -1,233 +1,233 @@
-//
-// ParallelSocketAcceptor.h
-//
-// Library: Net
-// Package: Reactor
-// Module: ParallelSocketAcceptor
-//
-// Definition of the ParallelSocketAcceptor class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ParallelSocketAcceptor_INCLUDED
-#define Net_ParallelSocketAcceptor_INCLUDED
-
-
-#include "Poco/Net/ParallelSocketReactor.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Net/ServerSocket.h"
-#include "Poco/Environment.h"
-#include "Poco/NObserver.h"
-#include "Poco/SharedPtr.h"
-#include <vector>
-
-
-using Poco::Net::Socket;
-using Poco::Net::SocketReactor;
-using Poco::Net::ServerSocket;
-using Poco::Net::StreamSocket;
-using Poco::NObserver;
-using Poco::AutoPtr;
-
-
-namespace Poco {
-namespace Net {
-
-
-template <class ServiceHandler, class SR>
-class ParallelSocketAcceptor
- /// This class implements the Acceptor part of the Acceptor-Connector design pattern.
- /// Only the difference from single-threaded version is documented here, For full
- /// description see Poco::Net::SocketAcceptor documentation.
- ///
- /// This is a multi-threaded version of SocketAcceptor, it differs from the
- /// single-threaded version in number of reactors (defaulting to number of processors)
- /// that can be specified at construction time and is rotated in a round-robin fashion
- /// by event handler. See ParallelSocketAcceptor::onAccept and
- /// ParallelSocketAcceptor::createServiceHandler documentation and implementation for
- /// details.
-{
-public:
- typedef Poco::Net::ParallelSocketReactor<SR> ParallelReactor;
-
- explicit ParallelSocketAcceptor(ServerSocket& socket,
- unsigned threads = Poco::Environment::processorCount()):
- _socket(socket),
- _pReactor(0),
- _threads(threads),
- _next(0)
- /// Creates a ParallelSocketAcceptor using the given ServerSocket,
- /// sets number of threads and populates the reactors vector.
- {
- init();
- }
-
- ParallelSocketAcceptor(ServerSocket& socket,
- SocketReactor& reactor,
- unsigned threads = Poco::Environment::processorCount()):
- _socket(socket),
- _pReactor(&reactor),
- _threads(threads),
- _next(0)
- /// Creates a ParallelSocketAcceptor using the given ServerSocket, sets the
- /// number of threads, populates the reactors vector and registers itself
- /// with the given SocketReactor.
- {
- init();
- _pReactor->addEventHandler(_socket,
- Poco::Observer<ParallelSocketAcceptor,
- ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
- }
-
- virtual ~ParallelSocketAcceptor()
- /// Destroys the ParallelSocketAcceptor.
- {
- try
- {
- if (_pReactor)
- {
- _pReactor->removeEventHandler(_socket,
- Poco::Observer<ParallelSocketAcceptor,
- ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
- }
- }
- catch (...)
- {
- poco_unexpected();
- }
- }
-
- void setReactor(SocketReactor& reactor)
- /// Sets the reactor for this acceptor.
- {
- _pReactor = &reactor;
- if (!_pReactor->hasEventHandler(_socket,
- Poco::Observer<ParallelSocketAcceptor,
- ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept)))
- {
- registerAcceptor(reactor);
- }
- }
-
- virtual void registerAcceptor(SocketReactor& reactor)
- /// Registers the ParallelSocketAcceptor with a SocketReactor.
+//
+// ParallelSocketAcceptor.h
+//
+// Library: Net
+// Package: Reactor
+// Module: ParallelSocketAcceptor
+//
+// Definition of the ParallelSocketAcceptor class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ParallelSocketAcceptor_INCLUDED
+#define Net_ParallelSocketAcceptor_INCLUDED
+
+
+#include "Poco/Net/ParallelSocketReactor.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Net/ServerSocket.h"
+#include "Poco/Environment.h"
+#include "Poco/NObserver.h"
+#include "Poco/SharedPtr.h"
+#include <vector>
+
+
+using Poco::Net::Socket;
+using Poco::Net::SocketReactor;
+using Poco::Net::ServerSocket;
+using Poco::Net::StreamSocket;
+using Poco::NObserver;
+using Poco::AutoPtr;
+
+
+namespace Poco {
+namespace Net {
+
+
+template <class ServiceHandler, class SR>
+class ParallelSocketAcceptor
+ /// This class implements the Acceptor part of the Acceptor-Connector design pattern.
+ /// Only the difference from single-threaded version is documented here, For full
+ /// description see Poco::Net::SocketAcceptor documentation.
+ ///
+ /// This is a multi-threaded version of SocketAcceptor, it differs from the
+ /// single-threaded version in number of reactors (defaulting to number of processors)
+ /// that can be specified at construction time and is rotated in a round-robin fashion
+ /// by event handler. See ParallelSocketAcceptor::onAccept and
+ /// ParallelSocketAcceptor::createServiceHandler documentation and implementation for
+ /// details.
+{
+public:
+ typedef Poco::Net::ParallelSocketReactor<SR> ParallelReactor;
+
+ explicit ParallelSocketAcceptor(ServerSocket& socket,
+ unsigned threads = Poco::Environment::processorCount()):
+ _socket(socket),
+ _pReactor(0),
+ _threads(threads),
+ _next(0)
+ /// Creates a ParallelSocketAcceptor using the given ServerSocket,
+ /// sets number of threads and populates the reactors vector.
+ {
+ init();
+ }
+
+ ParallelSocketAcceptor(ServerSocket& socket,
+ SocketReactor& reactor,
+ unsigned threads = Poco::Environment::processorCount()):
+ _socket(socket),
+ _pReactor(&reactor),
+ _threads(threads),
+ _next(0)
+ /// Creates a ParallelSocketAcceptor using the given ServerSocket, sets the
+ /// number of threads, populates the reactors vector and registers itself
+ /// with the given SocketReactor.
+ {
+ init();
+ _pReactor->addEventHandler(_socket,
+ Poco::Observer<ParallelSocketAcceptor,
+ ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
+ }
+
+ virtual ~ParallelSocketAcceptor()
+ /// Destroys the ParallelSocketAcceptor.
+ {
+ try
+ {
+ if (_pReactor)
+ {
+ _pReactor->removeEventHandler(_socket,
+ Poco::Observer<ParallelSocketAcceptor,
+ ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
+ }
+ }
+ catch (...)
+ {
+ poco_unexpected();
+ }
+ }
+
+ void setReactor(SocketReactor& reactor)
+ /// Sets the reactor for this acceptor.
+ {
+ _pReactor = &reactor;
+ if (!_pReactor->hasEventHandler(_socket,
+ Poco::Observer<ParallelSocketAcceptor,
+ ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept)))
+ {
+ registerAcceptor(reactor);
+ }
+ }
+
+ virtual void registerAcceptor(SocketReactor& reactor)
+ /// Registers the ParallelSocketAcceptor with a SocketReactor.
+ ///
+ /// A subclass can override this function to e.g.
+ /// register an event handler for timeout event.
///
- /// A subclass can override this function to e.g.
- /// register an event handler for timeout event.
- ///
- /// The overriding method must either call the base class
- /// implementation or register the accept handler on its own.
- {
- if (_pReactor)
- throw Poco::InvalidAccessException("Acceptor already registered.");
-
- _pReactor = &reactor;
- _pReactor->addEventHandler(_socket,
- Poco::Observer<ParallelSocketAcceptor,
- ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
- }
-
- virtual void unregisterAcceptor()
- /// Unregisters the ParallelSocketAcceptor.
+ /// The overriding method must either call the base class
+ /// implementation or register the accept handler on its own.
+ {
+ if (_pReactor)
+ throw Poco::InvalidAccessException("Acceptor already registered.");
+
+ _pReactor = &reactor;
+ _pReactor->addEventHandler(_socket,
+ Poco::Observer<ParallelSocketAcceptor,
+ ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
+ }
+
+ virtual void unregisterAcceptor()
+ /// Unregisters the ParallelSocketAcceptor.
+ ///
+ /// A subclass can override this function to e.g.
+ /// unregister its event handler for a timeout event.
///
- /// A subclass can override this function to e.g.
- /// unregister its event handler for a timeout event.
- ///
- /// The overriding method must either call the base class
- /// implementation or unregister the accept handler on its own.
- {
- if (_pReactor)
- {
- _pReactor->removeEventHandler(_socket,
- Poco::Observer<ParallelSocketAcceptor,
- ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
- }
- }
-
- void onAccept(ReadableNotification* pNotification)
- /// Accepts connection and creates event handler.
- {
- pNotification->release();
- StreamSocket sock = _socket.acceptConnection();
- _pReactor->wakeUp();
- createServiceHandler(sock);
- }
-
-protected:
- virtual ServiceHandler* createServiceHandler(StreamSocket& socket)
- /// Create and initialize a new ServiceHandler instance.
- ///
- /// Subclasses can override this method.
- {
- std::size_t next = _next++;
- if (_next == _reactors.size()) _next = 0;
- _reactors[next]->wakeUp();
- return new ServiceHandler(socket, *_reactors[next]);
- }
-
- SocketReactor* reactor()
- /// Returns a pointer to the SocketReactor where
- /// this SocketAcceptor is registered.
- ///
- /// The pointer may be null.
- {
- return _pReactor;
- }
-
- Socket& socket()
- /// Returns a reference to the SocketAcceptor's socket.
- {
- return _socket;
- }
-
- void init()
- /// Populates the reactors vector.
- {
- poco_assert (_threads > 0);
-
- for (unsigned i = 0; i < _threads; ++i)
- _reactors.push_back(new ParallelReactor);
- }
-
- typedef std::vector<typename ParallelReactor::Ptr> ReactorVec;
-
- ReactorVec& reactors()
- /// Returns reference to vector of reactors.
- {
- return _reactors;
- }
-
- SocketReactor* reactor(std::size_t idx)
- /// Returns reference to the reactor at position idx.
- {
- return _reactors.at(idx).get();
- }
-
- std::size_t& next()
- /// Returns reference to the next reactor index.
- {
- return _next;
- }
-
-private:
- ParallelSocketAcceptor();
- ParallelSocketAcceptor(const ParallelSocketAcceptor&);
- ParallelSocketAcceptor& operator = (const ParallelSocketAcceptor&);
-
- ServerSocket _socket;
- SocketReactor* _pReactor;
- unsigned _threads;
- ReactorVec _reactors;
- std::size_t _next;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ParallelSocketAcceptor_INCLUDED
+ /// The overriding method must either call the base class
+ /// implementation or unregister the accept handler on its own.
+ {
+ if (_pReactor)
+ {
+ _pReactor->removeEventHandler(_socket,
+ Poco::Observer<ParallelSocketAcceptor,
+ ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept));
+ }
+ }
+
+ void onAccept(ReadableNotification* pNotification)
+ /// Accepts connection and creates event handler.
+ {
+ pNotification->release();
+ StreamSocket sock = _socket.acceptConnection();
+ _pReactor->wakeUp();
+ createServiceHandler(sock);
+ }
+
+protected:
+ virtual ServiceHandler* createServiceHandler(StreamSocket& socket)
+ /// Create and initialize a new ServiceHandler instance.
+ ///
+ /// Subclasses can override this method.
+ {
+ std::size_t next = _next++;
+ if (_next == _reactors.size()) _next = 0;
+ _reactors[next]->wakeUp();
+ return new ServiceHandler(socket, *_reactors[next]);
+ }
+
+ SocketReactor* reactor()
+ /// Returns a pointer to the SocketReactor where
+ /// this SocketAcceptor is registered.
+ ///
+ /// The pointer may be null.
+ {
+ return _pReactor;
+ }
+
+ Socket& socket()
+ /// Returns a reference to the SocketAcceptor's socket.
+ {
+ return _socket;
+ }
+
+ void init()
+ /// Populates the reactors vector.
+ {
+ poco_assert (_threads > 0);
+
+ for (unsigned i = 0; i < _threads; ++i)
+ _reactors.push_back(new ParallelReactor);
+ }
+
+ typedef std::vector<typename ParallelReactor::Ptr> ReactorVec;
+
+ ReactorVec& reactors()
+ /// Returns reference to vector of reactors.
+ {
+ return _reactors;
+ }
+
+ SocketReactor* reactor(std::size_t idx)
+ /// Returns reference to the reactor at position idx.
+ {
+ return _reactors.at(idx).get();
+ }
+
+ std::size_t& next()
+ /// Returns reference to the next reactor index.
+ {
+ return _next;
+ }
+
+private:
+ ParallelSocketAcceptor();
+ ParallelSocketAcceptor(const ParallelSocketAcceptor&);
+ ParallelSocketAcceptor& operator = (const ParallelSocketAcceptor&);
+
+ ServerSocket _socket;
+ SocketReactor* _pReactor;
+ unsigned _threads;
+ ReactorVec _reactors;
+ std::size_t _next;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ParallelSocketAcceptor_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketReactor.h b/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketReactor.h
index 7e65f553eb..a7631ce1d9 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketReactor.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ParallelSocketReactor.h
@@ -1,90 +1,90 @@
-//
-// ParallelSocketReactor.h
-//
-// Library: Net
-// Package: Reactor
-// Module: ParallelSocketReactor
-//
-// Definition of the ParallelSocketReactor class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ParallelSocketReactor_INCLUDED
-#define Net_ParallelSocketReactor_INCLUDED
-
-
-#include "Poco/Net/SocketReactor.h"
-#include "Poco/Net/SocketNotification.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Net/ServerSocket.h"
-#include "Poco/NObserver.h"
-#include "Poco/Thread.h"
-#include "Poco/SharedPtr.h"
-
-
-using Poco::Net::Socket;
-using Poco::Net::SocketReactor;
-using Poco::Net::ReadableNotification;
-using Poco::Net::ShutdownNotification;
-using Poco::Net::ServerSocket;
-using Poco::Net::StreamSocket;
-using Poco::NObserver;
-using Poco::AutoPtr;
-using Poco::Thread;
-
-
-namespace Poco {
-namespace Net {
-
-
-template <class SR>
-class ParallelSocketReactor: public SR
-{
-public:
- typedef Poco::SharedPtr<ParallelSocketReactor> Ptr;
-
- ParallelSocketReactor()
- {
- _thread.start(*this);
- }
-
- ParallelSocketReactor(const Poco::Timespan& timeout):
- SR(timeout)
- {
- _thread.start(*this);
- }
-
- ~ParallelSocketReactor()
- {
- try
- {
- this->stop();
- _thread.join();
- }
- catch (...)
- {
- poco_unexpected();
- }
- }
-
-protected:
- void onIdle()
- {
- SR::onIdle();
- Poco::Thread::yield();
- }
-
-private:
- Poco::Thread _thread;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ParallelSocketReactor_INCLUDED
+//
+// ParallelSocketReactor.h
+//
+// Library: Net
+// Package: Reactor
+// Module: ParallelSocketReactor
+//
+// Definition of the ParallelSocketReactor class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ParallelSocketReactor_INCLUDED
+#define Net_ParallelSocketReactor_INCLUDED
+
+
+#include "Poco/Net/SocketReactor.h"
+#include "Poco/Net/SocketNotification.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Net/ServerSocket.h"
+#include "Poco/NObserver.h"
+#include "Poco/Thread.h"
+#include "Poco/SharedPtr.h"
+
+
+using Poco::Net::Socket;
+using Poco::Net::SocketReactor;
+using Poco::Net::ReadableNotification;
+using Poco::Net::ShutdownNotification;
+using Poco::Net::ServerSocket;
+using Poco::Net::StreamSocket;
+using Poco::NObserver;
+using Poco::AutoPtr;
+using Poco::Thread;
+
+
+namespace Poco {
+namespace Net {
+
+
+template <class SR>
+class ParallelSocketReactor: public SR
+{
+public:
+ typedef Poco::SharedPtr<ParallelSocketReactor> Ptr;
+
+ ParallelSocketReactor()
+ {
+ _thread.start(*this);
+ }
+
+ ParallelSocketReactor(const Poco::Timespan& timeout):
+ SR(timeout)
+ {
+ _thread.start(*this);
+ }
+
+ ~ParallelSocketReactor()
+ {
+ try
+ {
+ this->stop();
+ _thread.join();
+ }
+ catch (...)
+ {
+ poco_unexpected();
+ }
+ }
+
+protected:
+ void onIdle()
+ {
+ SR::onIdle();
+ Poco::Thread::yield();
+ }
+
+private:
+ Poco::Thread _thread;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ParallelSocketReactor_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/PartHandler.h b/contrib/libs/poco/Net/include/Poco/Net/PartHandler.h
index 6d00892fa7..941dd0305c 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/PartHandler.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/PartHandler.h
@@ -1,68 +1,68 @@
-//
-// PartHandler.h
-//
-// Library: Net
-// Package: Messages
-// Module: PartHandler
-//
-// Definition of the PartHandler class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_PartHandler_INCLUDED
-#define Net_PartHandler_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include <istream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class MessageHeader;
-
-
-class Net_API PartHandler
- /// The base class for all part or attachment handlers.
- ///
- /// Part handlers are used for handling email parts and
- /// attachments in MIME multipart messages, as well as file
- /// uploads via HTML forms.
- ///
- /// Subclasses must override handlePart().
-{
-public:
- virtual void handlePart(const MessageHeader& header, std::istream& stream) = 0;
- /// Called for every part encountered during the processing
- /// of an email message or an uploaded HTML form.
- ///
- /// Information about the part can be extracted from
- /// the given message header. What information can be obtained
- /// from header depends on the kind of part.
- ///
- /// The content of the part can be read from stream.
-
-protected:
- PartHandler();
- /// Creates the PartHandler.
-
- virtual ~PartHandler();
- /// Destroys the PartHandler.
-
-private:
- PartHandler(const PartHandler&);
- PartHandler& operator = (const PartHandler&);
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_PartHandler_INCLUDED
+//
+// PartHandler.h
+//
+// Library: Net
+// Package: Messages
+// Module: PartHandler
+//
+// Definition of the PartHandler class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_PartHandler_INCLUDED
+#define Net_PartHandler_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include <istream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class MessageHeader;
+
+
+class Net_API PartHandler
+ /// The base class for all part or attachment handlers.
+ ///
+ /// Part handlers are used for handling email parts and
+ /// attachments in MIME multipart messages, as well as file
+ /// uploads via HTML forms.
+ ///
+ /// Subclasses must override handlePart().
+{
+public:
+ virtual void handlePart(const MessageHeader& header, std::istream& stream) = 0;
+ /// Called for every part encountered during the processing
+ /// of an email message or an uploaded HTML form.
+ ///
+ /// Information about the part can be extracted from
+ /// the given message header. What information can be obtained
+ /// from header depends on the kind of part.
+ ///
+ /// The content of the part can be read from stream.
+
+protected:
+ PartHandler();
+ /// Creates the PartHandler.
+
+ virtual ~PartHandler();
+ /// Destroys the PartHandler.
+
+private:
+ PartHandler(const PartHandler&);
+ PartHandler& operator = (const PartHandler&);
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_PartHandler_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/PartSource.h b/contrib/libs/poco/Net/include/Poco/Net/PartSource.h
index e04c78cf64..06978d74cd 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/PartSource.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/PartSource.h
@@ -1,110 +1,110 @@
-//
-// PartSource.h
-//
-// Library: Net
-// Package: Messages
-// Module: PartSource
-//
-// Definition of the PartSource class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_PartSource_INCLUDED
-#define Net_PartSource_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/MessageHeader.h"
-#include <istream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API PartSource
- /// This abstract class is used for adding parts or attachments
- /// to mail messages, as well as for uploading files as part of a HTML form.
-{
-public:
- virtual std::istream& stream() = 0;
- /// Returns an input stream for reading the
- /// part data.
- ///
- /// Subclasses must override this method.
-
- virtual const std::string& filename() const;
- /// Returns the filename for the part or attachment.
- ///
- /// May be overridded by subclasses. The default
- /// implementation returns an empty string.
-
- const std::string& mediaType() const;
- /// Returns the MIME media type for this part or attachment.
-
- MessageHeader& headers();
- /// Returns a MessageHeader containing additional header
- /// fields for the part.
-
- const MessageHeader& headers() const;
- /// Returns a MessageHeader containing additional header
- /// fields for the part.
-
- virtual std::streamsize getContentLength() const;
- /// Returns the content length for this part
- /// which may be UNKNOWN_CONTENT_LENGTH if
- /// not available.
-
- virtual ~PartSource();
- /// Destroys the PartSource.
-
- static const int UNKNOWN_CONTENT_LENGTH;
-
-protected:
- PartSource();
- /// Creates the PartSource, using
- /// the application/octet-stream MIME type.
-
- PartSource(const std::string& mediaType);
- /// Creates the PartSource, using the
- /// given MIME type.
-
-private:
- PartSource(const PartSource&);
- PartSource& operator = (const PartSource&);
-
- std::string _mediaType;
- MessageHeader _headers;
-};
-
-
-//
-// inlines
-//
-inline const std::string& PartSource::mediaType() const
-{
- return _mediaType;
-}
-
-
-inline MessageHeader& PartSource::headers()
-{
- return _headers;
-}
-
-
-inline const MessageHeader& PartSource::headers() const
-{
- return _headers;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_PartSource_INCLUDED
+//
+// PartSource.h
+//
+// Library: Net
+// Package: Messages
+// Module: PartSource
+//
+// Definition of the PartSource class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_PartSource_INCLUDED
+#define Net_PartSource_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/MessageHeader.h"
+#include <istream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API PartSource
+ /// This abstract class is used for adding parts or attachments
+ /// to mail messages, as well as for uploading files as part of a HTML form.
+{
+public:
+ virtual std::istream& stream() = 0;
+ /// Returns an input stream for reading the
+ /// part data.
+ ///
+ /// Subclasses must override this method.
+
+ virtual const std::string& filename() const;
+ /// Returns the filename for the part or attachment.
+ ///
+ /// May be overridded by subclasses. The default
+ /// implementation returns an empty string.
+
+ const std::string& mediaType() const;
+ /// Returns the MIME media type for this part or attachment.
+
+ MessageHeader& headers();
+ /// Returns a MessageHeader containing additional header
+ /// fields for the part.
+
+ const MessageHeader& headers() const;
+ /// Returns a MessageHeader containing additional header
+ /// fields for the part.
+
+ virtual std::streamsize getContentLength() const;
+ /// Returns the content length for this part
+ /// which may be UNKNOWN_CONTENT_LENGTH if
+ /// not available.
+
+ virtual ~PartSource();
+ /// Destroys the PartSource.
+
+ static const int UNKNOWN_CONTENT_LENGTH;
+
+protected:
+ PartSource();
+ /// Creates the PartSource, using
+ /// the application/octet-stream MIME type.
+
+ PartSource(const std::string& mediaType);
+ /// Creates the PartSource, using the
+ /// given MIME type.
+
+private:
+ PartSource(const PartSource&);
+ PartSource& operator = (const PartSource&);
+
+ std::string _mediaType;
+ MessageHeader _headers;
+};
+
+
+//
+// inlines
+//
+inline const std::string& PartSource::mediaType() const
+{
+ return _mediaType;
+}
+
+
+inline MessageHeader& PartSource::headers()
+{
+ return _headers;
+}
+
+
+inline const MessageHeader& PartSource::headers() const
+{
+ return _headers;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_PartSource_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/PartStore.h b/contrib/libs/poco/Net/include/Poco/Net/PartStore.h
index cdfb23b588..a7be187c80 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/PartStore.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/PartStore.h
@@ -1,106 +1,106 @@
-//
-// PartStore.h
-//
-// Library: Net
-// Package: Messages
-// Module: PartStore
-//
-// Definition of the PartStore class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_PartStore_INCLUDED
-#define Net_PartStore_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/PartSource.h"
-#include "Poco/FileStream.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API PartStore: public PartSource
- /// A parent class for part stores storing message parts.
-{
-public:
- PartStore(const std::string& mediaType);
- /// Creates the PartStore for the given MIME type.
-
- ~PartStore();
- /// Destroys the PartFileStore.
-
-private:
- PartStore();
-};
-
-
-class Net_API FilePartStore: public PartStore
- /// An implementation of PartSource for persisting
- /// parts (usually email attachment files) to the file system.
-{
-public:
- FilePartStore(const std::string& content, const std::string& mediaType, const std::string& filename = "");
- /// Creates the FilePartStore for the given MIME type.
- /// For security purposes, attachment filename is NOT used to save file to the file system.
- /// A unique temporary file name is used to persist the file.
- /// The given filename parameter is the message part (attachment) filename (see filename()) only.
- ///
- /// Throws an exception if the file cannot be opened.
-
- ~FilePartStore();
- /// Destroys the FilePartStore.
-
- std::istream& stream();
- /// Returns a file input stream for the given file.
-
- const std::string& filename() const;
- /// Returns the filename portion of the path.
- /// This is the name under which the file is known
- /// to the user of this class (typically, MailMessage
- /// class). The real name of the file as saved
- /// to the filesystem can be obtained by calling
- /// path() member function.
-
- const std::string& path() const;
- /// Returns the full path to the file as saved
- /// to the file system. For security reasons,
- /// file is not saved under the real file name
- /// (as specified by the user).
-
-private:
- std::string _filename;
- std::string _path;
- Poco::FileStream _fstr;
-};
-
-
-class PartStoreFactory
- /// Parent factory class for part stores creation.
-{
-public:
- virtual PartSource* createPartStore(const std::string& content, const std::string& mediaType, const std::string& filename = "") = 0;
-};
-
-
-class FilePartStoreFactory: public PartStoreFactory
-{
-public:
- PartSource* createPartStore(const std::string& content, const std::string& mediaType, const std::string& filename = "")
- {
- return new FilePartStore(content, mediaType, filename);
- }
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_PartStore_INCLUDED
+//
+// PartStore.h
+//
+// Library: Net
+// Package: Messages
+// Module: PartStore
+//
+// Definition of the PartStore class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_PartStore_INCLUDED
+#define Net_PartStore_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/PartSource.h"
+#include "Poco/FileStream.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API PartStore: public PartSource
+ /// A parent class for part stores storing message parts.
+{
+public:
+ PartStore(const std::string& mediaType);
+ /// Creates the PartStore for the given MIME type.
+
+ ~PartStore();
+ /// Destroys the PartFileStore.
+
+private:
+ PartStore();
+};
+
+
+class Net_API FilePartStore: public PartStore
+ /// An implementation of PartSource for persisting
+ /// parts (usually email attachment files) to the file system.
+{
+public:
+ FilePartStore(const std::string& content, const std::string& mediaType, const std::string& filename = "");
+ /// Creates the FilePartStore for the given MIME type.
+ /// For security purposes, attachment filename is NOT used to save file to the file system.
+ /// A unique temporary file name is used to persist the file.
+ /// The given filename parameter is the message part (attachment) filename (see filename()) only.
+ ///
+ /// Throws an exception if the file cannot be opened.
+
+ ~FilePartStore();
+ /// Destroys the FilePartStore.
+
+ std::istream& stream();
+ /// Returns a file input stream for the given file.
+
+ const std::string& filename() const;
+ /// Returns the filename portion of the path.
+ /// This is the name under which the file is known
+ /// to the user of this class (typically, MailMessage
+ /// class). The real name of the file as saved
+ /// to the filesystem can be obtained by calling
+ /// path() member function.
+
+ const std::string& path() const;
+ /// Returns the full path to the file as saved
+ /// to the file system. For security reasons,
+ /// file is not saved under the real file name
+ /// (as specified by the user).
+
+private:
+ std::string _filename;
+ std::string _path;
+ Poco::FileStream _fstr;
+};
+
+
+class PartStoreFactory
+ /// Parent factory class for part stores creation.
+{
+public:
+ virtual PartSource* createPartStore(const std::string& content, const std::string& mediaType, const std::string& filename = "") = 0;
+};
+
+
+class FilePartStoreFactory: public PartStoreFactory
+{
+public:
+ PartSource* createPartStore(const std::string& content, const std::string& mediaType, const std::string& filename = "")
+ {
+ return new FilePartStore(content, mediaType, filename);
+ }
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_PartStore_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/PollSet.h b/contrib/libs/poco/Net/include/Poco/Net/PollSet.h
index 1e4c60201c..9b24e13591 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/PollSet.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/PollSet.h
@@ -1,86 +1,86 @@
-//
-// PollSet.h
-//
-// Library: Net
-// Package: Sockets
-// Module: PollSet
-//
-// Definition of the PollSet class.
-//
-// Copyright (c) 2016, Applied Informatics Software Engineering GmbH.
-// All rights reserved.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_PollSet_INCLUDED
-#define Net_PollSet_INCLUDED
-
-
-#include "Poco/Net/Socket.h"
-#include <map>
-
-
-namespace Poco {
-namespace Net {
-
-
-class PollSetImpl;
-
-
-class Net_API PollSet
- /// A set of sockets that can be efficiently polled as a whole.
- ///
- /// If supported, PollSet is implemented using epoll (Linux) or
- /// poll (BSD) APIs. A fallback implementation using select()
- /// is also provided.
-{
-public:
- enum Mode
- {
- POLL_READ = 0x01,
- POLL_WRITE = 0x02,
- POLL_ERROR = 0x04
- };
-
- typedef std::map<Poco::Net::Socket, int> SocketModeMap;
-
- PollSet();
- /// Creates an empty PollSet.
-
- ~PollSet();
- /// Destroys the PollSet.
-
- void add(const Poco::Net::Socket& socket, int mode);
- /// Adds the given socket to the set, for polling with
- /// the given mode, which can be an OR'd combination of
- /// POLL_READ, POLL_WRITE and POLL_ERROR.
-
- void remove(const Poco::Net::Socket& socket);
- /// Removes the given socket from the set.
-
- void update(const Poco::Net::Socket& socket, int mode);
- /// Updates the mode of the given socket.
-
- void clear();
- /// Removes all sockets from the PollSet.
-
- SocketModeMap poll(const Poco::Timespan& timeout);
- /// Waits until the state of at least one of the PollSet's sockets
- /// changes accordingly to its mode, or the timeout expires.
- /// Returns a PollMap containing the sockets that have had
- /// their state changed.
-
-private:
- PollSetImpl* _pImpl;
-
- PollSet(const PollSet&);
- PollSet& operator = (const PollSet&);
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_PollSet_INCLUDED
+//
+// PollSet.h
+//
+// Library: Net
+// Package: Sockets
+// Module: PollSet
+//
+// Definition of the PollSet class.
+//
+// Copyright (c) 2016, Applied Informatics Software Engineering GmbH.
+// All rights reserved.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_PollSet_INCLUDED
+#define Net_PollSet_INCLUDED
+
+
+#include "Poco/Net/Socket.h"
+#include <map>
+
+
+namespace Poco {
+namespace Net {
+
+
+class PollSetImpl;
+
+
+class Net_API PollSet
+ /// A set of sockets that can be efficiently polled as a whole.
+ ///
+ /// If supported, PollSet is implemented using epoll (Linux) or
+ /// poll (BSD) APIs. A fallback implementation using select()
+ /// is also provided.
+{
+public:
+ enum Mode
+ {
+ POLL_READ = 0x01,
+ POLL_WRITE = 0x02,
+ POLL_ERROR = 0x04
+ };
+
+ typedef std::map<Poco::Net::Socket, int> SocketModeMap;
+
+ PollSet();
+ /// Creates an empty PollSet.
+
+ ~PollSet();
+ /// Destroys the PollSet.
+
+ void add(const Poco::Net::Socket& socket, int mode);
+ /// Adds the given socket to the set, for polling with
+ /// the given mode, which can be an OR'd combination of
+ /// POLL_READ, POLL_WRITE and POLL_ERROR.
+
+ void remove(const Poco::Net::Socket& socket);
+ /// Removes the given socket from the set.
+
+ void update(const Poco::Net::Socket& socket, int mode);
+ /// Updates the mode of the given socket.
+
+ void clear();
+ /// Removes all sockets from the PollSet.
+
+ SocketModeMap poll(const Poco::Timespan& timeout);
+ /// Waits until the state of at least one of the PollSet's sockets
+ /// changes accordingly to its mode, or the timeout expires.
+ /// Returns a PollMap containing the sockets that have had
+ /// their state changed.
+
+private:
+ PollSetImpl* _pImpl;
+
+ PollSet(const PollSet&);
+ PollSet& operator = (const PollSet&);
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_PollSet_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableDecoder.h b/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableDecoder.h
index b9044f1513..b456660f6e 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableDecoder.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableDecoder.h
@@ -1,86 +1,86 @@
-//
-// QuotedPrintableDecoder.h
-//
-// Library: Net
-// Package: Messages
-// Module: QuotedPrintableDecoder
-//
-// Definition of the QuotedPrintableDecoder class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_QuotedPrintableDecoder_INCLUDED
-#define Net_QuotedPrintableDecoder_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/UnbufferedStreamBuf.h"
-#include <istream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API QuotedPrintableDecoderBuf: public Poco::UnbufferedStreamBuf
- /// This streambuf decodes all quoted-printable (see RFC 2045)
- /// encoded data read from the istream connected to it.
- ///
- /// Note: For performance reasons, the characters
- /// are read directly from the given istream's
- /// underlying streambuf, so the state
- /// of the istream will not reflect that of
- /// its streambuf.
-{
-public:
- QuotedPrintableDecoderBuf(std::istream& istr);
- ~QuotedPrintableDecoderBuf();
-
-private:
- int readFromDevice();
-
- std::streambuf& _buf;
-};
-
-
-class Net_API QuotedPrintableDecoderIOS: public virtual std::ios
- /// The base class for QuotedPrintableDecoder.
- ///
- /// This class is needed to ensure the correct initialization
- /// order of the stream buffer and base classes.
-{
-public:
- QuotedPrintableDecoderIOS(std::istream& istr);
- ~QuotedPrintableDecoderIOS();
- QuotedPrintableDecoderBuf* rdbuf();
-
-protected:
- QuotedPrintableDecoderBuf _buf;
-};
-
-
-class Net_API QuotedPrintableDecoder: public QuotedPrintableDecoderIOS, public std::istream
- /// This istream decodes all quoted-printable (see RFC 2045)
- /// encoded data read from the istream connected to it.
- ///
- /// Note: For performance reasons, the characters
- /// are read directly from the given istream's
- /// underlying streambuf, so the state
- /// of the istream will not reflect that of
- /// its streambuf.
-{
-public:
- QuotedPrintableDecoder(std::istream& istr);
- ~QuotedPrintableDecoder();
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_QuotedPrintableDecoder_INCLUDED
+//
+// QuotedPrintableDecoder.h
+//
+// Library: Net
+// Package: Messages
+// Module: QuotedPrintableDecoder
+//
+// Definition of the QuotedPrintableDecoder class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_QuotedPrintableDecoder_INCLUDED
+#define Net_QuotedPrintableDecoder_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/UnbufferedStreamBuf.h"
+#include <istream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API QuotedPrintableDecoderBuf: public Poco::UnbufferedStreamBuf
+ /// This streambuf decodes all quoted-printable (see RFC 2045)
+ /// encoded data read from the istream connected to it.
+ ///
+ /// Note: For performance reasons, the characters
+ /// are read directly from the given istream's
+ /// underlying streambuf, so the state
+ /// of the istream will not reflect that of
+ /// its streambuf.
+{
+public:
+ QuotedPrintableDecoderBuf(std::istream& istr);
+ ~QuotedPrintableDecoderBuf();
+
+private:
+ int readFromDevice();
+
+ std::streambuf& _buf;
+};
+
+
+class Net_API QuotedPrintableDecoderIOS: public virtual std::ios
+ /// The base class for QuotedPrintableDecoder.
+ ///
+ /// This class is needed to ensure the correct initialization
+ /// order of the stream buffer and base classes.
+{
+public:
+ QuotedPrintableDecoderIOS(std::istream& istr);
+ ~QuotedPrintableDecoderIOS();
+ QuotedPrintableDecoderBuf* rdbuf();
+
+protected:
+ QuotedPrintableDecoderBuf _buf;
+};
+
+
+class Net_API QuotedPrintableDecoder: public QuotedPrintableDecoderIOS, public std::istream
+ /// This istream decodes all quoted-printable (see RFC 2045)
+ /// encoded data read from the istream connected to it.
+ ///
+ /// Note: For performance reasons, the characters
+ /// are read directly from the given istream's
+ /// underlying streambuf, so the state
+ /// of the istream will not reflect that of
+ /// its streambuf.
+{
+public:
+ QuotedPrintableDecoder(std::istream& istr);
+ ~QuotedPrintableDecoder();
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_QuotedPrintableDecoder_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableEncoder.h b/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableEncoder.h
index 7f43db0d64..d0e7d74549 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableEncoder.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/QuotedPrintableEncoder.h
@@ -1,85 +1,85 @@
-//
-// QuotedPrintableEncoder.h
-//
-// Library: Net
-// Package: Messages
-// Module: QuotedPrintableEncoder
-//
-// Definition of the QuotedPrintableEncoder class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_QuotedPrintableEncoder_INCLUDED
-#define Net_QuotedPrintableEncoder_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/UnbufferedStreamBuf.h"
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API QuotedPrintableEncoderBuf: public Poco::UnbufferedStreamBuf
- /// This streambuf encodes all data written
- /// to it in quoted-printable encoding (see RFC 2045)
- /// and forwards it to a connected ostream.
-{
-public:
- QuotedPrintableEncoderBuf(std::ostream& ostr);
- ~QuotedPrintableEncoderBuf();
- int close();
-
-private:
- int writeToDevice(char c);
- void writeEncoded(char c);
- void writeRaw(char c);
-
- int _pending;
- int _lineLength;
- std::ostream& _ostr;
-};
-
-
-class Net_API QuotedPrintableEncoderIOS: public virtual std::ios
- /// The base class for QuotedPrintableEncoder.
- ///
- /// This class is needed to ensure the correct initialization
- /// order of the stream buffer and base classes.
-{
-public:
- QuotedPrintableEncoderIOS(std::ostream& ostr);
- ~QuotedPrintableEncoderIOS();
- int close();
- QuotedPrintableEncoderBuf* rdbuf();
-
-protected:
- QuotedPrintableEncoderBuf _buf;
-};
-
-
-class Net_API QuotedPrintableEncoder: public QuotedPrintableEncoderIOS, public std::ostream
- /// This ostream encodes all data
- /// written to it in quoted-printable encoding
- /// (see RFC 2045) and forwards it to a connected ostream.
- /// Always call close() when done
- /// writing data, to ensure proper
- /// completion of the encoding operation.
-{
-public:
- QuotedPrintableEncoder(std::ostream& ostr);
- ~QuotedPrintableEncoder();
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_QuotedPrintableEncoder_INCLUDED
+//
+// QuotedPrintableEncoder.h
+//
+// Library: Net
+// Package: Messages
+// Module: QuotedPrintableEncoder
+//
+// Definition of the QuotedPrintableEncoder class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_QuotedPrintableEncoder_INCLUDED
+#define Net_QuotedPrintableEncoder_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/UnbufferedStreamBuf.h"
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API QuotedPrintableEncoderBuf: public Poco::UnbufferedStreamBuf
+ /// This streambuf encodes all data written
+ /// to it in quoted-printable encoding (see RFC 2045)
+ /// and forwards it to a connected ostream.
+{
+public:
+ QuotedPrintableEncoderBuf(std::ostream& ostr);
+ ~QuotedPrintableEncoderBuf();
+ int close();
+
+private:
+ int writeToDevice(char c);
+ void writeEncoded(char c);
+ void writeRaw(char c);
+
+ int _pending;
+ int _lineLength;
+ std::ostream& _ostr;
+};
+
+
+class Net_API QuotedPrintableEncoderIOS: public virtual std::ios
+ /// The base class for QuotedPrintableEncoder.
+ ///
+ /// This class is needed to ensure the correct initialization
+ /// order of the stream buffer and base classes.
+{
+public:
+ QuotedPrintableEncoderIOS(std::ostream& ostr);
+ ~QuotedPrintableEncoderIOS();
+ int close();
+ QuotedPrintableEncoderBuf* rdbuf();
+
+protected:
+ QuotedPrintableEncoderBuf _buf;
+};
+
+
+class Net_API QuotedPrintableEncoder: public QuotedPrintableEncoderIOS, public std::ostream
+ /// This ostream encodes all data
+ /// written to it in quoted-printable encoding
+ /// (see RFC 2045) and forwards it to a connected ostream.
+ /// Always call close() when done
+ /// writing data, to ensure proper
+ /// completion of the encoding operation.
+{
+public:
+ QuotedPrintableEncoder(std::ostream& ostr);
+ ~QuotedPrintableEncoder();
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_QuotedPrintableEncoder_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/RawSocket.h b/contrib/libs/poco/Net/include/Poco/Net/RawSocket.h
index f07e369e24..3638b20e45 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/RawSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/RawSocket.h
@@ -1,161 +1,161 @@
-//
-// RawSocket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: RawSocket
-//
-// Definition of the RawSocket class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_RawSocket_INCLUDED
-#define Net_RawSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API RawSocket: public Socket
- /// This class provides an interface to a
- /// raw IP socket.
-{
-public:
- RawSocket();
- /// Creates an unconnected IPv4 raw socket.
-
- RawSocket(SocketAddress::Family family, int proto = IPPROTO_RAW);
- /// Creates an unconnected raw socket.
- ///
- /// The socket will be created for the
- /// given address family.
-
- RawSocket(const SocketAddress& address, bool reuseAddress = false);
- /// Creates a raw socket and binds it
- /// to the given address.
- ///
- /// Depending on the address family, the socket
- /// will be either an IPv4 or an IPv6 socket.
-
- RawSocket(const Socket& socket);
- /// Creates the RawSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a RawSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- ~RawSocket();
- /// Destroys the RawSocket.
-
- RawSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- void connect(const SocketAddress& address);
- /// Restricts incoming and outgoing
- /// packets to the specified address.
- ///
- /// Calls to connect() cannot come before calls to bind().
-
- void bind(const SocketAddress& address, bool reuseAddress = false);
- /// Bind a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// Calls to connect() cannot come before calls to bind().
-
- void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
- /// Bind a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
- ///
- /// Calls to connect() cannot come before calls to bind().
-
- int sendBytes(const void* buffer, int length, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
-
- int receiveBytes(void* buffer, int length, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- ///
- /// Returns the number of bytes received.
-
- int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket to the given address.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
-
- int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- /// Stores the address of the sender in address.
- ///
- /// Returns the number of bytes received.
-
- void setBroadcast(bool flag);
- /// Sets the value of the SO_BROADCAST socket option.
- ///
- /// Setting this flag allows sending datagrams to
- /// the broadcast address.
-
- bool getBroadcast() const;
- /// Returns the value of the SO_BROADCAST socket option.
-
-protected:
- RawSocket(SocketImpl* pImpl);
- /// Creates the Socket and attaches the given SocketImpl.
- /// The socket takes ownership of the SocketImpl.
- ///
- /// The SocketImpl must be a StreamSocketImpl, otherwise
- /// an InvalidArgumentException will be thrown.
-};
-
-
-//
-// inlines
-//
-inline void RawSocket::setBroadcast(bool flag)
-{
- impl()->setBroadcast(flag);
-}
-
-
-inline bool RawSocket::getBroadcast() const
-{
- return impl()->getBroadcast();
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_RawSocket_INCLUDED
+//
+// RawSocket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: RawSocket
+//
+// Definition of the RawSocket class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_RawSocket_INCLUDED
+#define Net_RawSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API RawSocket: public Socket
+ /// This class provides an interface to a
+ /// raw IP socket.
+{
+public:
+ RawSocket();
+ /// Creates an unconnected IPv4 raw socket.
+
+ RawSocket(SocketAddress::Family family, int proto = IPPROTO_RAW);
+ /// Creates an unconnected raw socket.
+ ///
+ /// The socket will be created for the
+ /// given address family.
+
+ RawSocket(const SocketAddress& address, bool reuseAddress = false);
+ /// Creates a raw socket and binds it
+ /// to the given address.
+ ///
+ /// Depending on the address family, the socket
+ /// will be either an IPv4 or an IPv6 socket.
+
+ RawSocket(const Socket& socket);
+ /// Creates the RawSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a RawSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ ~RawSocket();
+ /// Destroys the RawSocket.
+
+ RawSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ void connect(const SocketAddress& address);
+ /// Restricts incoming and outgoing
+ /// packets to the specified address.
+ ///
+ /// Calls to connect() cannot come before calls to bind().
+
+ void bind(const SocketAddress& address, bool reuseAddress = false);
+ /// Bind a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// Calls to connect() cannot come before calls to bind().
+
+ void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
+ /// Bind a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+ ///
+ /// Calls to connect() cannot come before calls to bind().
+
+ int sendBytes(const void* buffer, int length, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+
+ int receiveBytes(void* buffer, int length, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ ///
+ /// Returns the number of bytes received.
+
+ int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket to the given address.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+
+ int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ /// Stores the address of the sender in address.
+ ///
+ /// Returns the number of bytes received.
+
+ void setBroadcast(bool flag);
+ /// Sets the value of the SO_BROADCAST socket option.
+ ///
+ /// Setting this flag allows sending datagrams to
+ /// the broadcast address.
+
+ bool getBroadcast() const;
+ /// Returns the value of the SO_BROADCAST socket option.
+
+protected:
+ RawSocket(SocketImpl* pImpl);
+ /// Creates the Socket and attaches the given SocketImpl.
+ /// The socket takes ownership of the SocketImpl.
+ ///
+ /// The SocketImpl must be a StreamSocketImpl, otherwise
+ /// an InvalidArgumentException will be thrown.
+};
+
+
+//
+// inlines
+//
+inline void RawSocket::setBroadcast(bool flag)
+{
+ impl()->setBroadcast(flag);
+}
+
+
+inline bool RawSocket::getBroadcast() const
+{
+ return impl()->getBroadcast();
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_RawSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/RawSocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/RawSocketImpl.h
index b62724abbb..df10b64587 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/RawSocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/RawSocketImpl.h
@@ -1,56 +1,56 @@
-//
-// RawSocketImpl.h
-//
-// Library: Net
-// Package: Sockets
-// Module: RawSocketImpl
-//
-// Definition of the RawSocketImpl class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_RawSocketImpl_INCLUDED
-#define Net_RawSocketImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketImpl.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API RawSocketImpl: public SocketImpl
- /// This class implements a raw socket.
-{
-public:
- RawSocketImpl();
- /// Creates an unconnected IPv4 raw socket with IPPROTO_RAW.
-
- RawSocketImpl(SocketAddress::Family family, int proto = IPPROTO_RAW);
- /// Creates an unconnected raw socket.
- ///
- /// The socket will be created for the
- /// given address family.
-
- RawSocketImpl(poco_socket_t sockfd);
- /// Creates a RawSocketImpl using the given native socket.
-
-protected:
- void init(int af);
- void init2(int af, int proto);
-
- ~RawSocketImpl();
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_RawSocketImpl_INCLUDED
+//
+// RawSocketImpl.h
+//
+// Library: Net
+// Package: Sockets
+// Module: RawSocketImpl
+//
+// Definition of the RawSocketImpl class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_RawSocketImpl_INCLUDED
+#define Net_RawSocketImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketImpl.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API RawSocketImpl: public SocketImpl
+ /// This class implements a raw socket.
+{
+public:
+ RawSocketImpl();
+ /// Creates an unconnected IPv4 raw socket with IPPROTO_RAW.
+
+ RawSocketImpl(SocketAddress::Family family, int proto = IPPROTO_RAW);
+ /// Creates an unconnected raw socket.
+ ///
+ /// The socket will be created for the
+ /// given address family.
+
+ RawSocketImpl(poco_socket_t sockfd);
+ /// Creates a RawSocketImpl using the given native socket.
+
+protected:
+ void init(int af);
+ void init2(int af, int proto);
+
+ ~RawSocketImpl();
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_RawSocketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogChannel.h b/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogChannel.h
index f8b5ace367..848b1634fb 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogChannel.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogChannel.h
@@ -1,158 +1,158 @@
-//
-// RemoteSyslogChannel.h
-//
-// Library: Net
-// Package: Logging
-// Module: RemoteSyslogChannel
-//
-// Definition of the RemoteSyslogChannel class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_RemoteSyslogChannel_INCLUDED
-#define Net_RemoteSyslogChannel_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Channel.h"
-#include "Poco/Mutex.h"
-#include "Poco/Net/DatagramSocket.h"
-#include "Poco/Net/SocketAddress.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API RemoteSyslogChannel: public Poco::Channel
- /// This Channel implements remote syslog logging over UDP according
- /// to RFC 5424 "The Syslog Protocol"
- /// and RFC 5426 "Transmission of syslog messages over UDP".
- ///
- /// In addition, RemoteSyslogListener also supports the "old" BSD syslog
- /// protocol, as described in RFC 3164.
- ///
- /// RFC 5425 structured data can be passed via the "structured-data"
- /// property of the log Message. The content of the "structured-data"
- /// property must be correct according to RFC 5425.
- ///
- /// Example:
- /// msg.set("structured-data", "[exampleSDID@32473 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"]");
-{
-public:
- static const std::string BSD_TIMEFORMAT;
- static const std::string SYSLOG_TIMEFORMAT;
-
- enum Severity
- {
- SYSLOG_EMERGENCY = 0, /// Emergency: system is unusable
- SYSLOG_ALERT = 1, /// Alert: action must be taken immediately
- SYSLOG_CRITICAL = 2, /// Critical: critical conditions
- SYSLOG_ERROR = 3, /// Error: error conditions
- SYSLOG_WARNING = 4, /// Warning: warning conditions
- SYSLOG_NOTICE = 5, /// Notice: normal but significant condition
- SYSLOG_INFORMATIONAL = 6, /// Informational: informational messages
- SYSLOG_DEBUG = 7 /// Debug: debug-level messages
- };
-
- enum Facility
- {
- SYSLOG_KERN = ( 0<<3), /// kernel messages
- SYSLOG_USER = ( 1<<3), /// random user-level messages
- SYSLOG_MAIL = ( 2<<3), /// mail system
- SYSLOG_DAEMON = ( 3<<3), /// system daemons
- SYSLOG_AUTH = ( 4<<3), /// security/authorization messages
- SYSLOG_SYSLOG = ( 5<<3), /// messages generated internally by syslogd
- SYSLOG_LPR = ( 6<<3), /// line printer subsystem
- SYSLOG_NEWS = ( 7<<3), /// network news subsystem
- SYSLOG_UUCP = ( 8<<3), /// UUCP subsystem
- SYSLOG_CRON = ( 9<<3), /// clock daemon
- SYSLOG_AUTHPRIV = (10<<3), /// security/authorization messages (private)
- SYSLOG_FTP = (11<<3), /// ftp daemon
- SYSLOG_NTP = (12<<3), /// ntp subsystem
- SYSLOG_LOGAUDIT = (13<<3), /// log audit
- SYSLOG_LOGALERT = (14<<3), /// log alert
- SYSLOG_CLOCK = (15<<3), /// clock daemon
- SYSLOG_LOCAL0 = (16<<3), /// reserved for local use
- SYSLOG_LOCAL1 = (17<<3), /// reserved for local use
- SYSLOG_LOCAL2 = (18<<3), /// reserved for local use
- SYSLOG_LOCAL3 = (19<<3), /// reserved for local use
- SYSLOG_LOCAL4 = (20<<3), /// reserved for local use
- SYSLOG_LOCAL5 = (21<<3), /// reserved for local use
- SYSLOG_LOCAL6 = (22<<3), /// reserved for local use
- SYSLOG_LOCAL7 = (23<<3) /// reserved for local use
- };
-
- enum
- {
- SYSLOG_PORT = 514
- };
-
- RemoteSyslogChannel();
- /// Creates a RemoteSyslogChannel.
-
- RemoteSyslogChannel(const std::string& address, const std::string& name, int facility = SYSLOG_USER, bool bsdFormat = false);
- /// Creates a RemoteSyslogChannel with the given target address, name, and facility.
- /// If bsdFormat is true, messages are formatted according to RFC 3164.
-
- void open();
- /// Opens the RemoteSyslogChannel.
-
- void close();
- /// Closes the RemoteSyslogChannel.
-
- void log(const Message& msg);
- /// Sends the message's text to the syslog service.
-
- void setProperty(const std::string& name, const std::string& value);
- /// Sets the property with the given value.
- ///
- /// The following properties are supported:
- /// * name: The name used to identify the source of log messages.
- /// * facility: The facility added to each log message. See the Facility enumeration for a list of supported values.
- /// The LOG_ prefix can be omitted and values are case insensitive (e.g. a facility value "mail" is recognized as SYSLOG_MAIL)
- /// * format: "bsd"/"rfc3164" (RFC 3164 format) or "new"/"rfc5424" (default)
- /// * loghost: The target IP address or host name where log messages are sent. Optionally, a port number (separated
- /// by a colon) can also be specified.
- /// * host: (optional) Host name included in syslog messages. If not specified, the host's real domain name or
- /// IP address will be used.
-
- std::string getProperty(const std::string& name) const;
- /// Returns the value of the property with the given name.
-
- static void registerChannel();
- /// Registers the channel with the global LoggingFactory.
-
- static const std::string PROP_NAME;
- static const std::string PROP_FACILITY;
- static const std::string PROP_FORMAT;
- static const std::string PROP_LOGHOST;
- static const std::string PROP_HOST;
- static const std::string STRUCTURED_DATA;
-
-protected:
- ~RemoteSyslogChannel();
- static int getPrio(const Message& msg);
-
-private:
- std::string _logHost;
- std::string _name;
- std::string _host;
- int _facility;
- bool _bsdFormat;
- DatagramSocket _socket;
- SocketAddress _socketAddress;
- bool _open;
- mutable Poco::FastMutex _mutex;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_RemoteSyslogChannel_INCLUDED
+//
+// RemoteSyslogChannel.h
+//
+// Library: Net
+// Package: Logging
+// Module: RemoteSyslogChannel
+//
+// Definition of the RemoteSyslogChannel class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_RemoteSyslogChannel_INCLUDED
+#define Net_RemoteSyslogChannel_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Channel.h"
+#include "Poco/Mutex.h"
+#include "Poco/Net/DatagramSocket.h"
+#include "Poco/Net/SocketAddress.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API RemoteSyslogChannel: public Poco::Channel
+ /// This Channel implements remote syslog logging over UDP according
+ /// to RFC 5424 "The Syslog Protocol"
+ /// and RFC 5426 "Transmission of syslog messages over UDP".
+ ///
+ /// In addition, RemoteSyslogListener also supports the "old" BSD syslog
+ /// protocol, as described in RFC 3164.
+ ///
+ /// RFC 5425 structured data can be passed via the "structured-data"
+ /// property of the log Message. The content of the "structured-data"
+ /// property must be correct according to RFC 5425.
+ ///
+ /// Example:
+ /// msg.set("structured-data", "[exampleSDID@32473 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"]");
+{
+public:
+ static const std::string BSD_TIMEFORMAT;
+ static const std::string SYSLOG_TIMEFORMAT;
+
+ enum Severity
+ {
+ SYSLOG_EMERGENCY = 0, /// Emergency: system is unusable
+ SYSLOG_ALERT = 1, /// Alert: action must be taken immediately
+ SYSLOG_CRITICAL = 2, /// Critical: critical conditions
+ SYSLOG_ERROR = 3, /// Error: error conditions
+ SYSLOG_WARNING = 4, /// Warning: warning conditions
+ SYSLOG_NOTICE = 5, /// Notice: normal but significant condition
+ SYSLOG_INFORMATIONAL = 6, /// Informational: informational messages
+ SYSLOG_DEBUG = 7 /// Debug: debug-level messages
+ };
+
+ enum Facility
+ {
+ SYSLOG_KERN = ( 0<<3), /// kernel messages
+ SYSLOG_USER = ( 1<<3), /// random user-level messages
+ SYSLOG_MAIL = ( 2<<3), /// mail system
+ SYSLOG_DAEMON = ( 3<<3), /// system daemons
+ SYSLOG_AUTH = ( 4<<3), /// security/authorization messages
+ SYSLOG_SYSLOG = ( 5<<3), /// messages generated internally by syslogd
+ SYSLOG_LPR = ( 6<<3), /// line printer subsystem
+ SYSLOG_NEWS = ( 7<<3), /// network news subsystem
+ SYSLOG_UUCP = ( 8<<3), /// UUCP subsystem
+ SYSLOG_CRON = ( 9<<3), /// clock daemon
+ SYSLOG_AUTHPRIV = (10<<3), /// security/authorization messages (private)
+ SYSLOG_FTP = (11<<3), /// ftp daemon
+ SYSLOG_NTP = (12<<3), /// ntp subsystem
+ SYSLOG_LOGAUDIT = (13<<3), /// log audit
+ SYSLOG_LOGALERT = (14<<3), /// log alert
+ SYSLOG_CLOCK = (15<<3), /// clock daemon
+ SYSLOG_LOCAL0 = (16<<3), /// reserved for local use
+ SYSLOG_LOCAL1 = (17<<3), /// reserved for local use
+ SYSLOG_LOCAL2 = (18<<3), /// reserved for local use
+ SYSLOG_LOCAL3 = (19<<3), /// reserved for local use
+ SYSLOG_LOCAL4 = (20<<3), /// reserved for local use
+ SYSLOG_LOCAL5 = (21<<3), /// reserved for local use
+ SYSLOG_LOCAL6 = (22<<3), /// reserved for local use
+ SYSLOG_LOCAL7 = (23<<3) /// reserved for local use
+ };
+
+ enum
+ {
+ SYSLOG_PORT = 514
+ };
+
+ RemoteSyslogChannel();
+ /// Creates a RemoteSyslogChannel.
+
+ RemoteSyslogChannel(const std::string& address, const std::string& name, int facility = SYSLOG_USER, bool bsdFormat = false);
+ /// Creates a RemoteSyslogChannel with the given target address, name, and facility.
+ /// If bsdFormat is true, messages are formatted according to RFC 3164.
+
+ void open();
+ /// Opens the RemoteSyslogChannel.
+
+ void close();
+ /// Closes the RemoteSyslogChannel.
+
+ void log(const Message& msg);
+ /// Sends the message's text to the syslog service.
+
+ void setProperty(const std::string& name, const std::string& value);
+ /// Sets the property with the given value.
+ ///
+ /// The following properties are supported:
+ /// * name: The name used to identify the source of log messages.
+ /// * facility: The facility added to each log message. See the Facility enumeration for a list of supported values.
+ /// The LOG_ prefix can be omitted and values are case insensitive (e.g. a facility value "mail" is recognized as SYSLOG_MAIL)
+ /// * format: "bsd"/"rfc3164" (RFC 3164 format) or "new"/"rfc5424" (default)
+ /// * loghost: The target IP address or host name where log messages are sent. Optionally, a port number (separated
+ /// by a colon) can also be specified.
+ /// * host: (optional) Host name included in syslog messages. If not specified, the host's real domain name or
+ /// IP address will be used.
+
+ std::string getProperty(const std::string& name) const;
+ /// Returns the value of the property with the given name.
+
+ static void registerChannel();
+ /// Registers the channel with the global LoggingFactory.
+
+ static const std::string PROP_NAME;
+ static const std::string PROP_FACILITY;
+ static const std::string PROP_FORMAT;
+ static const std::string PROP_LOGHOST;
+ static const std::string PROP_HOST;
+ static const std::string STRUCTURED_DATA;
+
+protected:
+ ~RemoteSyslogChannel();
+ static int getPrio(const Message& msg);
+
+private:
+ std::string _logHost;
+ std::string _name;
+ std::string _host;
+ int _facility;
+ bool _bsdFormat;
+ DatagramSocket _socket;
+ SocketAddress _socketAddress;
+ bool _open;
+ mutable Poco::FastMutex _mutex;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_RemoteSyslogChannel_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogListener.h b/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogListener.h
index 435a96cd7c..93895244c2 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogListener.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/RemoteSyslogListener.h
@@ -1,121 +1,121 @@
-//
-// RemoteSyslogListener.h
-//
-// Library: Net
-// Package: Logging
-// Module: RemoteSyslogListener
-//
-// Definition of the RemoteSyslogListener class.
-//
-// Copyright (c) 2007-2011, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_RemoteSyslogListener_INCLUDED
-#define Net_RemoteSyslogListener_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/ThreadPool.h"
-#include "Poco/SplitterChannel.h"
-#include "Poco/NotificationQueue.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class RemoteUDPListener;
-class SyslogParser;
-
-
-class Net_API RemoteSyslogListener: public Poco::SplitterChannel
- /// RemoteSyslogListener implements listening for syslog messages
- /// sent over UDP, according to RFC 5424 "The Syslog Protocol"
- /// and RFC 5426 "Transmission of syslog messages over UDP".
- ///
- /// In addition, RemoteSyslogListener also supports the "old" BSD syslog
- /// protocol, as described in RFC 3164.
- ///
- /// The RemoteSyslogListener is a subclass of Poco::SplitterChannel.
- /// Every received log message is sent to the channels registered
- /// with addChannel() or the "channel" property.
- ///
- /// Poco::Message objects created by RemoteSyslogListener will have
- /// the following named parameters:
- /// - addr: IP address of the host/interface sending the message.
- /// - host: host name; only for "new" syslog messages.
- /// - app: application name; only for "new" syslog messages.
- /// - structured-data: RFC 5424 structured data, or empty if not present.
-{
-public:
- RemoteSyslogListener();
- /// Creates the RemoteSyslogListener.
-
- RemoteSyslogListener(Poco::UInt16 port);
- /// Creates the RemoteSyslogListener, listening on the given port number.
-
- RemoteSyslogListener(Poco::UInt16 port, int threads);
- /// Creates the RemoteSyslogListener, listening on the given port number
- /// and using the number of threads for message processing.
-
- void setProperty(const std::string& name, const std::string& value);
- /// Sets the property with the given value.
- ///
- /// The following properties are supported:
- /// * port: The UDP port number where to listen for UDP packets
- /// containing syslog messages. If 0 is specified, does not
- /// listen for UDP messages.
- /// * threads: The number of parser threads processing
- /// received syslog messages. Defaults to 1. A maximum
- /// of 16 threads is supported.
-
- std::string getProperty(const std::string& name) const;
- /// Returns the value of the property with the given name.
-
- void open();
- /// Starts the listener.
-
- void close();
- /// Stops the listener.
-
- void processMessage(const std::string& messageText);
- /// Parses a single line of text containing a syslog message
- /// and sends it down the filter chain.
-
- void enqueueMessage(const std::string& messageText, const Poco::Net::SocketAddress& senderAddress);
- /// Enqueues a single line of text containing a syslog message
- /// for asynchronous processing by a parser thread.
-
- static void registerChannel();
- /// Registers the channel with the global LoggingFactory.
-
- static const std::string PROP_PORT;
- static const std::string PROP_THREADS;
-
- static const std::string LOG_PROP_APP;
- static const std::string LOG_PROP_HOST;
- static const std::string LOG_PROP_STRUCTURED_DATA;
-
-protected:
- ~RemoteSyslogListener();
- /// Destroys the RemoteSyslogListener.
-
-private:
- RemoteUDPListener* _pListener;
- SyslogParser* _pParser;
- Poco::ThreadPool _threadPool;
- Poco::NotificationQueue _queue;
- Poco::UInt16 _port;
- int _threads;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_RemoteSyslogListener_INCLUDED
+//
+// RemoteSyslogListener.h
+//
+// Library: Net
+// Package: Logging
+// Module: RemoteSyslogListener
+//
+// Definition of the RemoteSyslogListener class.
+//
+// Copyright (c) 2007-2011, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_RemoteSyslogListener_INCLUDED
+#define Net_RemoteSyslogListener_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/ThreadPool.h"
+#include "Poco/SplitterChannel.h"
+#include "Poco/NotificationQueue.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class RemoteUDPListener;
+class SyslogParser;
+
+
+class Net_API RemoteSyslogListener: public Poco::SplitterChannel
+ /// RemoteSyslogListener implements listening for syslog messages
+ /// sent over UDP, according to RFC 5424 "The Syslog Protocol"
+ /// and RFC 5426 "Transmission of syslog messages over UDP".
+ ///
+ /// In addition, RemoteSyslogListener also supports the "old" BSD syslog
+ /// protocol, as described in RFC 3164.
+ ///
+ /// The RemoteSyslogListener is a subclass of Poco::SplitterChannel.
+ /// Every received log message is sent to the channels registered
+ /// with addChannel() or the "channel" property.
+ ///
+ /// Poco::Message objects created by RemoteSyslogListener will have
+ /// the following named parameters:
+ /// - addr: IP address of the host/interface sending the message.
+ /// - host: host name; only for "new" syslog messages.
+ /// - app: application name; only for "new" syslog messages.
+ /// - structured-data: RFC 5424 structured data, or empty if not present.
+{
+public:
+ RemoteSyslogListener();
+ /// Creates the RemoteSyslogListener.
+
+ RemoteSyslogListener(Poco::UInt16 port);
+ /// Creates the RemoteSyslogListener, listening on the given port number.
+
+ RemoteSyslogListener(Poco::UInt16 port, int threads);
+ /// Creates the RemoteSyslogListener, listening on the given port number
+ /// and using the number of threads for message processing.
+
+ void setProperty(const std::string& name, const std::string& value);
+ /// Sets the property with the given value.
+ ///
+ /// The following properties are supported:
+ /// * port: The UDP port number where to listen for UDP packets
+ /// containing syslog messages. If 0 is specified, does not
+ /// listen for UDP messages.
+ /// * threads: The number of parser threads processing
+ /// received syslog messages. Defaults to 1. A maximum
+ /// of 16 threads is supported.
+
+ std::string getProperty(const std::string& name) const;
+ /// Returns the value of the property with the given name.
+
+ void open();
+ /// Starts the listener.
+
+ void close();
+ /// Stops the listener.
+
+ void processMessage(const std::string& messageText);
+ /// Parses a single line of text containing a syslog message
+ /// and sends it down the filter chain.
+
+ void enqueueMessage(const std::string& messageText, const Poco::Net::SocketAddress& senderAddress);
+ /// Enqueues a single line of text containing a syslog message
+ /// for asynchronous processing by a parser thread.
+
+ static void registerChannel();
+ /// Registers the channel with the global LoggingFactory.
+
+ static const std::string PROP_PORT;
+ static const std::string PROP_THREADS;
+
+ static const std::string LOG_PROP_APP;
+ static const std::string LOG_PROP_HOST;
+ static const std::string LOG_PROP_STRUCTURED_DATA;
+
+protected:
+ ~RemoteSyslogListener();
+ /// Destroys the RemoteSyslogListener.
+
+private:
+ RemoteUDPListener* _pListener;
+ SyslogParser* _pParser;
+ Poco::ThreadPool _threadPool;
+ Poco::NotificationQueue _queue;
+ Poco::UInt16 _port;
+ int _threads;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_RemoteSyslogListener_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SMTPChannel.h b/contrib/libs/poco/Net/include/Poco/Net/SMTPChannel.h
index 5e06b78629..373d93ded4 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SMTPChannel.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SMTPChannel.h
@@ -1,108 +1,108 @@
-//
-// SMTPChannel.h
-//
-// Library: Net
-// Package: Logging
-// Module: SMTPChannel
-//
-// Definition of the SMTPChannel class.
-//
-// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SMTPChannel_INCLUDED
-#define Net_SMTPChannel_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Channel.h"
-#include "Poco/String.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API SMTPChannel: public Poco::Channel
- /// This Channel implements SMTP (email) logging.
-{
-public:
- SMTPChannel();
- /// Creates a SMTPChannel.
-
- SMTPChannel(const std::string& mailhost, const std::string& sender, const std::string& recipient);
- /// Creates a SMTPChannel with the given target mailhost, sender, and recipient.
-
- void open();
- /// Opens the SMTPChannel.
-
- void close();
- /// Closes the SMTPChannel.
-
- void log(const Message& msg);
- /// Sends the message's text to the recipient.
-
- void setProperty(const std::string& name, const std::string& value);
- /// Sets the property with the given value.
- ///
- /// The following properties are supported:
- /// * mailhost: The SMTP server. Default is "localhost".
- /// * sender: The sender address.
- /// * recipient: The recipient address.
- /// * local: If true, local time is used. Default is true.
- /// * attachment: Filename of the file to attach.
- /// * type: Content type of the file to attach.
- /// * delete: Boolean value indicating whether to delete
- /// the attachment file after sending.
- /// * throw: Boolean value indicating whether to throw
- /// exception upon failure.
-
- std::string getProperty(const std::string& name) const;
- /// Returns the value of the property with the given name.
-
- static void registerChannel();
- /// Registers the channel with the global LoggingFactory.
-
- static const std::string PROP_MAILHOST;
- static const std::string PROP_SENDER;
- static const std::string PROP_RECIPIENT;
- static const std::string PROP_LOCAL;
- static const std::string PROP_ATTACHMENT;
- static const std::string PROP_TYPE;
- static const std::string PROP_DELETE;
- static const std::string PROP_THROW;
-
-protected:
- ~SMTPChannel();
-
-private:
- bool isTrue(const std::string& value) const;
-
- std::string _mailHost;
- std::string _sender;
- std::string _recipient;
- bool _local;
- std::string _attachment;
- std::string _type;
- bool _delete;
- bool _throw;
-};
-
-
-inline bool SMTPChannel::isTrue(const std::string& value) const
-{
- return ((0 == icompare(value, "true")) ||
- (0 == icompare(value, "t")) ||
- (0 == icompare(value, "yes")) ||
- (0 == icompare(value, "y")));
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SMTPChannel_INCLUDED
+//
+// SMTPChannel.h
+//
+// Library: Net
+// Package: Logging
+// Module: SMTPChannel
+//
+// Definition of the SMTPChannel class.
+//
+// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SMTPChannel_INCLUDED
+#define Net_SMTPChannel_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Channel.h"
+#include "Poco/String.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API SMTPChannel: public Poco::Channel
+ /// This Channel implements SMTP (email) logging.
+{
+public:
+ SMTPChannel();
+ /// Creates a SMTPChannel.
+
+ SMTPChannel(const std::string& mailhost, const std::string& sender, const std::string& recipient);
+ /// Creates a SMTPChannel with the given target mailhost, sender, and recipient.
+
+ void open();
+ /// Opens the SMTPChannel.
+
+ void close();
+ /// Closes the SMTPChannel.
+
+ void log(const Message& msg);
+ /// Sends the message's text to the recipient.
+
+ void setProperty(const std::string& name, const std::string& value);
+ /// Sets the property with the given value.
+ ///
+ /// The following properties are supported:
+ /// * mailhost: The SMTP server. Default is "localhost".
+ /// * sender: The sender address.
+ /// * recipient: The recipient address.
+ /// * local: If true, local time is used. Default is true.
+ /// * attachment: Filename of the file to attach.
+ /// * type: Content type of the file to attach.
+ /// * delete: Boolean value indicating whether to delete
+ /// the attachment file after sending.
+ /// * throw: Boolean value indicating whether to throw
+ /// exception upon failure.
+
+ std::string getProperty(const std::string& name) const;
+ /// Returns the value of the property with the given name.
+
+ static void registerChannel();
+ /// Registers the channel with the global LoggingFactory.
+
+ static const std::string PROP_MAILHOST;
+ static const std::string PROP_SENDER;
+ static const std::string PROP_RECIPIENT;
+ static const std::string PROP_LOCAL;
+ static const std::string PROP_ATTACHMENT;
+ static const std::string PROP_TYPE;
+ static const std::string PROP_DELETE;
+ static const std::string PROP_THROW;
+
+protected:
+ ~SMTPChannel();
+
+private:
+ bool isTrue(const std::string& value) const;
+
+ std::string _mailHost;
+ std::string _sender;
+ std::string _recipient;
+ bool _local;
+ std::string _attachment;
+ std::string _type;
+ bool _delete;
+ bool _throw;
+};
+
+
+inline bool SMTPChannel::isTrue(const std::string& value) const
+{
+ return ((0 == icompare(value, "true")) ||
+ (0 == icompare(value, "t")) ||
+ (0 == icompare(value, "yes")) ||
+ (0 == icompare(value, "y")));
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SMTPChannel_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SMTPClientSession.h b/contrib/libs/poco/Net/include/Poco/Net/SMTPClientSession.h
index c29bfa2a53..5edf999598 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SMTPClientSession.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SMTPClientSession.h
@@ -1,234 +1,234 @@
-//
-// SMTPClientSession.h
-//
-// Library: Net
-// Package: Mail
-// Module: SMTPClientSession
-//
-// Definition of the SMTPClientSession class.
-//
-// Copyright (c) 2005-2008, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SMTPClientSession_INCLUDED
-#define Net_SMTPClientSession_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/DialogSocket.h"
-#include "Poco/DigestEngine.h"
-#include "Poco/Timespan.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class MailMessage;
-
-
-class Net_API SMTPClientSession
- /// This class implements an Simple Mail
- /// Transfer Protocol (SMTP, RFC 2821)
- /// client for sending e-mail messages.
-{
-public:
- typedef std::vector<std::string> Recipients;
-
- enum
- {
- SMTP_PORT = 25
- };
-
- enum LoginMethod
- {
- AUTH_NONE,
- AUTH_CRAM_MD5,
- AUTH_CRAM_SHA1,
- AUTH_LOGIN,
- AUTH_PLAIN,
- AUTH_XOAUTH2
- };
-
- explicit SMTPClientSession(const StreamSocket& socket);
- /// Creates the SMTPClientSession using
- /// the given socket, which must be connected
- /// to a SMTP server.
-
- SMTPClientSession(const std::string& host, Poco::UInt16 port = SMTP_PORT);
- /// Creates the SMTPClientSession using a socket connected
- /// to the given host and port.
-
- virtual ~SMTPClientSession();
- /// Destroys the SMTPClientSession.
-
- void setTimeout(const Poco::Timespan& timeout);
- /// Sets the timeout for socket read operations.
-
- Poco::Timespan getTimeout() const;
- /// Returns the timeout for socket read operations.
-
- void login(const std::string& hostname);
- /// Greets the SMTP server by sending a EHLO command
- /// with the given hostname as argument.
- ///
- /// If the server does not understand the EHLO command,
- /// a HELO command is sent instead.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void login();
- /// Calls login(hostname) with the current host name.
-
- void login(const std::string& hostname, LoginMethod loginMethod, const std::string& username, const std::string& password);
- /// Logs in to the SMTP server using the given authentication method and the given
- /// credentials.
-
- void login(LoginMethod loginMethod, const std::string& username, const std::string& password);
- /// Logs in to the SMTP server using the given authentication method and the given
- /// credentials.
-
- void open();
- /// Reads the initial response from the SMTP server.
- ///
- /// Usually called implicitly through login(), but can
- /// also be called explicitly to implement different forms
- /// of SMTP authentication.
- ///
- /// Does nothing if called more than once.
-
- void close();
- /// Sends a QUIT command and closes the connection to the server.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void sendMessage(const MailMessage& message);
- /// Sends the given mail message by sending a MAIL FROM command,
- /// a RCPT TO command for every recipient, and a DATA command with
- /// the message headers and content. Using this function results in
- /// RCPT TO commands list generated from the recipient list supplied
- /// with the message itself.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void sendMessage(const MailMessage& message, const Recipients& recipients);
- /// Sends the given mail message by sending a MAIL FROM command,
- /// a RCPT TO command for every recipient, and a DATA command with
- /// the message headers and content. Using this function results in
- /// message header being generated from the supplied recipients list.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void sendMessage(std::istream& istr);
- /// Sends the mail message from the supplied stream. Content of the stream
- /// is copied without any checking. Only the completion status is checked and,
- /// if not valid, SMTPExcpetion is thrown.
-
- int sendCommand(const std::string& command, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- int sendCommand(const std::string& command, const std::string& arg, std::string& response);
- /// Sends the given command verbatim to the server
- /// and waits for a response.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void sendAddresses(const std::string& from, const Recipients& recipients);
- /// Sends the message preamble by sending a MAIL FROM command,
- /// and a RCPT TO command for every recipient.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
- void sendData();
- /// Sends the message preamble by sending a DATA command.
- ///
- /// Throws a SMTPException in case of a SMTP-specific error, or a
- /// NetException in case of a general network communication failure.
-
-protected:
- enum StatusClass
- {
- SMTP_POSITIVE_COMPLETION = 2,
- SMTP_POSITIVE_INTERMEDIATE = 3,
- SMTP_TRANSIENT_NEGATIVE = 4,
- SMTP_PERMANENT_NEGATIVE = 5
- };
- enum
- {
- DEFAULT_TIMEOUT = 30000000 // 30 seconds default timeout for socket operations
- };
-
- static bool isPositiveCompletion(int status);
- static bool isPositiveIntermediate(int status);
- static bool isTransientNegative(int status);
- static bool isPermanentNegative(int status);
-
- void login(const std::string& hostname, std::string& response);
- void loginUsingCRAMMD5(const std::string& username, const std::string& password);
- void loginUsingCRAMSHA1(const std::string& username, const std::string& password);
- void loginUsingCRAM(const std::string& username, const std::string& method, Poco::DigestEngine& hmac);
- void loginUsingLogin(const std::string& username, const std::string& password);
- void loginUsingPlain(const std::string& username, const std::string& password);
- void loginUsingXOAUTH2(const std::string& username, const std::string& password);
- DialogSocket& socket();
-
-private:
- void sendCommands(const MailMessage& message, const Recipients* pRecipients = 0);
- void transportMessage(const MailMessage& message);
-
- DialogSocket _socket;
- bool _isOpen;
-};
-
-
-//
-// inlines
-//
-inline bool SMTPClientSession::isPositiveCompletion(int status)
-{
- return status/100 == SMTP_POSITIVE_COMPLETION;
-}
-
-
-inline bool SMTPClientSession::isPositiveIntermediate(int status)
-{
- return status/100 == SMTP_POSITIVE_INTERMEDIATE;
-}
-
-
-inline bool SMTPClientSession::isTransientNegative(int status)
-{
- return status/100 == SMTP_TRANSIENT_NEGATIVE;
-}
-
-
-inline bool SMTPClientSession::isPermanentNegative(int status)
-{
- return status/100 == SMTP_PERMANENT_NEGATIVE;
-}
-
-
-inline DialogSocket& SMTPClientSession::socket()
-{
- return _socket;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SMTPClientSession_INCLUDED
+//
+// SMTPClientSession.h
+//
+// Library: Net
+// Package: Mail
+// Module: SMTPClientSession
+//
+// Definition of the SMTPClientSession class.
+//
+// Copyright (c) 2005-2008, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SMTPClientSession_INCLUDED
+#define Net_SMTPClientSession_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/DialogSocket.h"
+#include "Poco/DigestEngine.h"
+#include "Poco/Timespan.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class MailMessage;
+
+
+class Net_API SMTPClientSession
+ /// This class implements an Simple Mail
+ /// Transfer Protocol (SMTP, RFC 2821)
+ /// client for sending e-mail messages.
+{
+public:
+ typedef std::vector<std::string> Recipients;
+
+ enum
+ {
+ SMTP_PORT = 25
+ };
+
+ enum LoginMethod
+ {
+ AUTH_NONE,
+ AUTH_CRAM_MD5,
+ AUTH_CRAM_SHA1,
+ AUTH_LOGIN,
+ AUTH_PLAIN,
+ AUTH_XOAUTH2
+ };
+
+ explicit SMTPClientSession(const StreamSocket& socket);
+ /// Creates the SMTPClientSession using
+ /// the given socket, which must be connected
+ /// to a SMTP server.
+
+ SMTPClientSession(const std::string& host, Poco::UInt16 port = SMTP_PORT);
+ /// Creates the SMTPClientSession using a socket connected
+ /// to the given host and port.
+
+ virtual ~SMTPClientSession();
+ /// Destroys the SMTPClientSession.
+
+ void setTimeout(const Poco::Timespan& timeout);
+ /// Sets the timeout for socket read operations.
+
+ Poco::Timespan getTimeout() const;
+ /// Returns the timeout for socket read operations.
+
+ void login(const std::string& hostname);
+ /// Greets the SMTP server by sending a EHLO command
+ /// with the given hostname as argument.
+ ///
+ /// If the server does not understand the EHLO command,
+ /// a HELO command is sent instead.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void login();
+ /// Calls login(hostname) with the current host name.
+
+ void login(const std::string& hostname, LoginMethod loginMethod, const std::string& username, const std::string& password);
+ /// Logs in to the SMTP server using the given authentication method and the given
+ /// credentials.
+
+ void login(LoginMethod loginMethod, const std::string& username, const std::string& password);
+ /// Logs in to the SMTP server using the given authentication method and the given
+ /// credentials.
+
+ void open();
+ /// Reads the initial response from the SMTP server.
+ ///
+ /// Usually called implicitly through login(), but can
+ /// also be called explicitly to implement different forms
+ /// of SMTP authentication.
+ ///
+ /// Does nothing if called more than once.
+
+ void close();
+ /// Sends a QUIT command and closes the connection to the server.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void sendMessage(const MailMessage& message);
+ /// Sends the given mail message by sending a MAIL FROM command,
+ /// a RCPT TO command for every recipient, and a DATA command with
+ /// the message headers and content. Using this function results in
+ /// RCPT TO commands list generated from the recipient list supplied
+ /// with the message itself.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void sendMessage(const MailMessage& message, const Recipients& recipients);
+ /// Sends the given mail message by sending a MAIL FROM command,
+ /// a RCPT TO command for every recipient, and a DATA command with
+ /// the message headers and content. Using this function results in
+ /// message header being generated from the supplied recipients list.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void sendMessage(std::istream& istr);
+ /// Sends the mail message from the supplied stream. Content of the stream
+ /// is copied without any checking. Only the completion status is checked and,
+ /// if not valid, SMTPExcpetion is thrown.
+
+ int sendCommand(const std::string& command, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ int sendCommand(const std::string& command, const std::string& arg, std::string& response);
+ /// Sends the given command verbatim to the server
+ /// and waits for a response.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void sendAddresses(const std::string& from, const Recipients& recipients);
+ /// Sends the message preamble by sending a MAIL FROM command,
+ /// and a RCPT TO command for every recipient.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+ void sendData();
+ /// Sends the message preamble by sending a DATA command.
+ ///
+ /// Throws a SMTPException in case of a SMTP-specific error, or a
+ /// NetException in case of a general network communication failure.
+
+protected:
+ enum StatusClass
+ {
+ SMTP_POSITIVE_COMPLETION = 2,
+ SMTP_POSITIVE_INTERMEDIATE = 3,
+ SMTP_TRANSIENT_NEGATIVE = 4,
+ SMTP_PERMANENT_NEGATIVE = 5
+ };
+ enum
+ {
+ DEFAULT_TIMEOUT = 30000000 // 30 seconds default timeout for socket operations
+ };
+
+ static bool isPositiveCompletion(int status);
+ static bool isPositiveIntermediate(int status);
+ static bool isTransientNegative(int status);
+ static bool isPermanentNegative(int status);
+
+ void login(const std::string& hostname, std::string& response);
+ void loginUsingCRAMMD5(const std::string& username, const std::string& password);
+ void loginUsingCRAMSHA1(const std::string& username, const std::string& password);
+ void loginUsingCRAM(const std::string& username, const std::string& method, Poco::DigestEngine& hmac);
+ void loginUsingLogin(const std::string& username, const std::string& password);
+ void loginUsingPlain(const std::string& username, const std::string& password);
+ void loginUsingXOAUTH2(const std::string& username, const std::string& password);
+ DialogSocket& socket();
+
+private:
+ void sendCommands(const MailMessage& message, const Recipients* pRecipients = 0);
+ void transportMessage(const MailMessage& message);
+
+ DialogSocket _socket;
+ bool _isOpen;
+};
+
+
+//
+// inlines
+//
+inline bool SMTPClientSession::isPositiveCompletion(int status)
+{
+ return status/100 == SMTP_POSITIVE_COMPLETION;
+}
+
+
+inline bool SMTPClientSession::isPositiveIntermediate(int status)
+{
+ return status/100 == SMTP_POSITIVE_INTERMEDIATE;
+}
+
+
+inline bool SMTPClientSession::isTransientNegative(int status)
+{
+ return status/100 == SMTP_TRANSIENT_NEGATIVE;
+}
+
+
+inline bool SMTPClientSession::isPermanentNegative(int status)
+{
+ return status/100 == SMTP_PERMANENT_NEGATIVE;
+}
+
+
+inline DialogSocket& SMTPClientSession::socket()
+{
+ return _socket;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SMTPClientSession_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ServerSocket.h b/contrib/libs/poco/Net/include/Poco/Net/ServerSocket.h
index 2cd6765788..d8aca6790a 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ServerSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ServerSocket.h
@@ -1,230 +1,230 @@
-//
-// ServerSocket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: ServerSocket
-//
-// Definition of the ServerSocket class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ServerSocket_INCLUDED
-#define Net_ServerSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/Net/StreamSocket.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ServerSocket: public Socket
- /// This class provides an interface to a
- /// TCP server socket.
-{
-public:
- ServerSocket();
- /// Creates a server socket.
- ///
- /// The server socket must be bound to
- /// an address and put into listening state.
-
- ServerSocket(const Socket& socket);
- /// Creates the ServerSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a ServerSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- ServerSocket(const SocketAddress& address, int backlog = 64);
- /// Creates a server socket, binds it
- /// to the given address and puts it in listening
- /// state.
- ///
- /// After successful construction, the server socket
- /// is ready to accept connections.
-
- ServerSocket(Poco::UInt16 port, int backlog = 64);
- /// Creates a server socket, binds it
- /// to the given port and puts it in listening
- /// state.
- ///
- /// After successful construction, the server socket
- /// is ready to accept connections.
-
- virtual ~ServerSocket();
- /// Destroys the StreamSocket.
-
- ServerSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- virtual void bind(const SocketAddress& address, bool reuseAddress = false);
- /// Binds a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
-
- virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
- /// Binds a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reuseAddress is true, sets the SO_REUSEPORT
- /// socket option.
-
- virtual void bind(Poco::UInt16 port, bool reuseAddress = false);
- /// Binds a local port to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
-
- virtual void bind(Poco::UInt16 port, bool reuseAddress, bool reusePort);
- /// Binds a local port to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
-
- virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false);
- /// Binds a local IPv6 address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// The given address must be an IPv6 address. The
- /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
- /// according to the ipV6Only parameter.
- ///
- /// If the library has not been built with IPv6 support,
- /// a Poco::NotImplementedException will be thrown.
-
- virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only);
- /// Binds a local IPv6 address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
- ///
- /// The given address must be an IPv6 address. The
- /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
- /// according to the ipV6Only parameter.
- ///
- /// If the library has not been built with IPv6 support,
- /// a Poco::NotImplementedException will be thrown.
-
- virtual void bind6(Poco::UInt16 port, bool reuseAddress = false, bool ipV6Only = false);
- /// Binds a local IPv6 port to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// The given address must be an IPv6 address. The
- /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
- /// according to the ipV6Only parameter.
- ///
- /// If the library has not been built with IPv6 support,
- /// a Poco::NotImplementedException will be thrown.
-
- virtual void bind6(Poco::UInt16 port, bool reuseAddress, bool reusePort, bool ipV6Only);
- /// Binds a local IPv6 port to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
- /// The given address must be an IPv6 address. The
- /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
- /// according to the ipV6Only parameter.
- ///
- /// If the library has not been built with IPv6 support,
- /// a Poco::NotImplementedException will be thrown.
-
- virtual void listen(int backlog = 64);
- /// Puts the socket into listening state.
- ///
- /// The socket becomes a passive socket that
- /// can accept incoming connection requests.
- ///
- /// The backlog argument specifies the maximum
- /// number of connections that can be queued
- /// for this socket.
-
- virtual StreamSocket acceptConnection(SocketAddress& clientAddr);
- /// Gets the next completed connection from the
- /// socket's completed connection queue.
- ///
- /// If the queue is empty, waits until a connection
- /// request completes.
- ///
- /// Returns a new TCP socket for the connection
- /// with the client.
- ///
- /// The client socket's address is returned in clientAddr.
-
- virtual StreamSocket acceptConnection();
- /// Gets the next completed connection from the
- /// socket's completed connection queue.
- ///
- /// If the queue is empty, waits until a connection
- /// request completes.
- ///
- /// Returns a new TCP socket for the connection
- /// with the client.
-
-protected:
- ServerSocket(SocketImpl* pImpl, bool);
- /// The bool argument is to resolve an ambiguity with
- /// another constructor (Microsoft Visual C++ 2005)
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ServerSocket_INCLUDED
+//
+// ServerSocket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: ServerSocket
+//
+// Definition of the ServerSocket class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ServerSocket_INCLUDED
+#define Net_ServerSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/Net/StreamSocket.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ServerSocket: public Socket
+ /// This class provides an interface to a
+ /// TCP server socket.
+{
+public:
+ ServerSocket();
+ /// Creates a server socket.
+ ///
+ /// The server socket must be bound to
+ /// an address and put into listening state.
+
+ ServerSocket(const Socket& socket);
+ /// Creates the ServerSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a ServerSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ ServerSocket(const SocketAddress& address, int backlog = 64);
+ /// Creates a server socket, binds it
+ /// to the given address and puts it in listening
+ /// state.
+ ///
+ /// After successful construction, the server socket
+ /// is ready to accept connections.
+
+ ServerSocket(Poco::UInt16 port, int backlog = 64);
+ /// Creates a server socket, binds it
+ /// to the given port and puts it in listening
+ /// state.
+ ///
+ /// After successful construction, the server socket
+ /// is ready to accept connections.
+
+ virtual ~ServerSocket();
+ /// Destroys the StreamSocket.
+
+ ServerSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ virtual void bind(const SocketAddress& address, bool reuseAddress = false);
+ /// Binds a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+
+ virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
+ /// Binds a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEPORT
+ /// socket option.
+
+ virtual void bind(Poco::UInt16 port, bool reuseAddress = false);
+ /// Binds a local port to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+
+ virtual void bind(Poco::UInt16 port, bool reuseAddress, bool reusePort);
+ /// Binds a local port to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+
+ virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false);
+ /// Binds a local IPv6 address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// The given address must be an IPv6 address. The
+ /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
+ /// according to the ipV6Only parameter.
+ ///
+ /// If the library has not been built with IPv6 support,
+ /// a Poco::NotImplementedException will be thrown.
+
+ virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only);
+ /// Binds a local IPv6 address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+ ///
+ /// The given address must be an IPv6 address. The
+ /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
+ /// according to the ipV6Only parameter.
+ ///
+ /// If the library has not been built with IPv6 support,
+ /// a Poco::NotImplementedException will be thrown.
+
+ virtual void bind6(Poco::UInt16 port, bool reuseAddress = false, bool ipV6Only = false);
+ /// Binds a local IPv6 port to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// The given address must be an IPv6 address. The
+ /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
+ /// according to the ipV6Only parameter.
+ ///
+ /// If the library has not been built with IPv6 support,
+ /// a Poco::NotImplementedException will be thrown.
+
+ virtual void bind6(Poco::UInt16 port, bool reuseAddress, bool reusePort, bool ipV6Only);
+ /// Binds a local IPv6 port to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+ /// The given address must be an IPv6 address. The
+ /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
+ /// according to the ipV6Only parameter.
+ ///
+ /// If the library has not been built with IPv6 support,
+ /// a Poco::NotImplementedException will be thrown.
+
+ virtual void listen(int backlog = 64);
+ /// Puts the socket into listening state.
+ ///
+ /// The socket becomes a passive socket that
+ /// can accept incoming connection requests.
+ ///
+ /// The backlog argument specifies the maximum
+ /// number of connections that can be queued
+ /// for this socket.
+
+ virtual StreamSocket acceptConnection(SocketAddress& clientAddr);
+ /// Gets the next completed connection from the
+ /// socket's completed connection queue.
+ ///
+ /// If the queue is empty, waits until a connection
+ /// request completes.
+ ///
+ /// Returns a new TCP socket for the connection
+ /// with the client.
+ ///
+ /// The client socket's address is returned in clientAddr.
+
+ virtual StreamSocket acceptConnection();
+ /// Gets the next completed connection from the
+ /// socket's completed connection queue.
+ ///
+ /// If the queue is empty, waits until a connection
+ /// request completes.
+ ///
+ /// Returns a new TCP socket for the connection
+ /// with the client.
+
+protected:
+ ServerSocket(SocketImpl* pImpl, bool);
+ /// The bool argument is to resolve an ambiguity with
+ /// another constructor (Microsoft Visual C++ 2005)
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ServerSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/ServerSocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/ServerSocketImpl.h
index 903b153281..aaa5c7cc20 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/ServerSocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/ServerSocketImpl.h
@@ -1,45 +1,45 @@
-//
-// ServerSocketImpl.h
-//
-// Library: Net
-// Package: Sockets
-// Module: ServerSocketImpl
-//
-// Definition of the ServerSocketImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_ServerSocketImpl_INCLUDED
-#define Net_ServerSocketImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketImpl.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API ServerSocketImpl: public SocketImpl
- /// This class implements a TCP server socket.
-{
-public:
- ServerSocketImpl();
- /// Creates the ServerSocketImpl.
-
-protected:
- virtual ~ServerSocketImpl();
- /// Destroys the ServerSocketImpl.
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_ServerSocketImpl_INCLUDED
+//
+// ServerSocketImpl.h
+//
+// Library: Net
+// Package: Sockets
+// Module: ServerSocketImpl
+//
+// Definition of the ServerSocketImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_ServerSocketImpl_INCLUDED
+#define Net_ServerSocketImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketImpl.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API ServerSocketImpl: public SocketImpl
+ /// This class implements a TCP server socket.
+{
+public:
+ ServerSocketImpl();
+ /// Creates the ServerSocketImpl.
+
+protected:
+ virtual ~ServerSocketImpl();
+ /// Destroys the ServerSocketImpl.
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_ServerSocketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/Socket.h b/contrib/libs/poco/Net/include/Poco/Net/Socket.h
index 01f3f3ef2d..c509187d8d 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/Socket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/Socket.h
@@ -1,631 +1,631 @@
-//
-// Socket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: Socket
-//
-// Definition of the Socket class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_Socket_INCLUDED
-#define Net_Socket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketImpl.h"
-#include <vector>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API Socket
- /// Socket is the common base class for
- /// StreamSocket, ServerSocket, DatagramSocket and other
- /// socket classes.
- ///
- /// It provides operations common to all socket types.
-{
-public:
- enum SelectMode
- /// The mode argument to poll() and select().
- {
- SELECT_READ = 1,
- SELECT_WRITE = 2,
- SELECT_ERROR = 4
- };
-
- typedef std::vector<Socket> SocketList;
-
- Socket();
- /// Creates an uninitialized socket.
-
- Socket(const Socket& socket);
- /// Copy constructor.
+//
+// Socket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: Socket
+//
+// Definition of the Socket class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_Socket_INCLUDED
+#define Net_Socket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketImpl.h"
+#include <vector>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API Socket
+ /// Socket is the common base class for
+ /// StreamSocket, ServerSocket, DatagramSocket and other
+ /// socket classes.
+ ///
+ /// It provides operations common to all socket types.
+{
+public:
+ enum SelectMode
+ /// The mode argument to poll() and select().
+ {
+ SELECT_READ = 1,
+ SELECT_WRITE = 2,
+ SELECT_ERROR = 4
+ };
+
+ typedef std::vector<Socket> SocketList;
+
+ Socket();
+ /// Creates an uninitialized socket.
+
+ Socket(const Socket& socket);
+ /// Copy constructor.
+ ///
+ /// Attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ Socket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ virtual ~Socket();
+ /// Destroys the Socket and releases the
+ /// SocketImpl.
+
+ bool operator == (const Socket& socket) const;
+ /// Returns true if both sockets share the same
+ /// SocketImpl, false otherwise.
+
+ bool operator != (const Socket& socket) const;
+ /// Returns false if both sockets share the same
+ /// SocketImpl, true otherwise.
+
+ bool operator < (const Socket& socket) const;
+ /// Compares the SocketImpl pointers.
+
+ bool operator <= (const Socket& socket) const;
+ /// Compares the SocketImpl pointers.
+
+ bool operator > (const Socket& socket) const;
+ /// Compares the SocketImpl pointers.
+
+ bool operator >= (const Socket& socket) const;
+ /// Compares the SocketImpl pointers.
+
+ void close();
+ /// Closes the socket.
+
+ static int select(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout);
+ /// Determines the status of one or more sockets,
+ /// using a call to select().
+ ///
+ /// ReadList contains the list of sockets which should be
+ /// checked for readability.
+ ///
+ /// WriteList contains the list of sockets which should be
+ /// checked for writeability.
+ ///
+ /// ExceptList contains a list of sockets which should be
+ /// checked for a pending error.
+ ///
+ /// Returns the number of sockets ready.
+ ///
+ /// After return,
+ /// * readList contains those sockets ready for reading,
+ /// * writeList contains those sockets ready for writing,
+ /// * exceptList contains those sockets with a pending error.
+ ///
+ /// If the total number of sockets passed in readList, writeList and
+ /// exceptList is zero, select() will return immediately and the
+ /// return value will be 0.
+ ///
+ /// If one of the sockets passed to select() is closed while
+ /// select() runs, select will return immediately. However,
+ /// the closed socket will not be included in any list.
+ /// In this case, the return value may be greater than the sum
+ /// of all sockets in all list.
+
+ bool poll(const Poco::Timespan& timeout, int mode) const;
+ /// Determines the status of the socket, using a
+ /// call to poll() or select().
///
- /// Attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- Socket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- virtual ~Socket();
- /// Destroys the Socket and releases the
- /// SocketImpl.
-
- bool operator == (const Socket& socket) const;
- /// Returns true if both sockets share the same
- /// SocketImpl, false otherwise.
-
- bool operator != (const Socket& socket) const;
- /// Returns false if both sockets share the same
- /// SocketImpl, true otherwise.
-
- bool operator < (const Socket& socket) const;
- /// Compares the SocketImpl pointers.
-
- bool operator <= (const Socket& socket) const;
- /// Compares the SocketImpl pointers.
-
- bool operator > (const Socket& socket) const;
- /// Compares the SocketImpl pointers.
-
- bool operator >= (const Socket& socket) const;
- /// Compares the SocketImpl pointers.
-
- void close();
- /// Closes the socket.
-
- static int select(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout);
- /// Determines the status of one or more sockets,
- /// using a call to select().
- ///
- /// ReadList contains the list of sockets which should be
- /// checked for readability.
- ///
- /// WriteList contains the list of sockets which should be
- /// checked for writeability.
- ///
- /// ExceptList contains a list of sockets which should be
- /// checked for a pending error.
- ///
- /// Returns the number of sockets ready.
- ///
- /// After return,
- /// * readList contains those sockets ready for reading,
- /// * writeList contains those sockets ready for writing,
- /// * exceptList contains those sockets with a pending error.
- ///
- /// If the total number of sockets passed in readList, writeList and
- /// exceptList is zero, select() will return immediately and the
- /// return value will be 0.
- ///
- /// If one of the sockets passed to select() is closed while
- /// select() runs, select will return immediately. However,
- /// the closed socket will not be included in any list.
- /// In this case, the return value may be greater than the sum
- /// of all sockets in all list.
-
- bool poll(const Poco::Timespan& timeout, int mode) const;
- /// Determines the status of the socket, using a
- /// call to poll() or select().
- ///
- /// The mode argument is constructed by combining the values
- /// of the SelectMode enumeration.
- ///
- /// Returns true if the next operation corresponding to
- /// mode will not block, false otherwise.
-
- int available() const;
- /// Returns the number of bytes available that can be read
- /// without causing the socket to block.
-
- void setSendBufferSize(int size);
- /// Sets the size of the send buffer.
-
- int getSendBufferSize() const;
- /// Returns the size of the send buffer.
- ///
- /// The returned value may be different than the
- /// value previously set with setSendBufferSize(),
- /// as the system is free to adjust the value.
-
- void setReceiveBufferSize(int size);
- /// Sets the size of the receive buffer.
-
- int getReceiveBufferSize() const;
- /// Returns the size of the receive buffer.
- ///
- /// The returned value may be different than the
- /// value previously set with setReceiveBufferSize(),
- /// as the system is free to adjust the value.
-
- void setSendTimeout(const Poco::Timespan& timeout);
- /// Sets the send timeout for the socket.
-
- Poco::Timespan getSendTimeout() const;
- /// Returns the send timeout for the socket.
- ///
- /// The returned timeout may be different than the
- /// timeout previously set with setSendTimeout(),
- /// as the system is free to adjust the value.
-
- void setReceiveTimeout(const Poco::Timespan& timeout);
- /// Sets the send timeout for the socket.
- ///
- /// On systems that do not support SO_RCVTIMEO, a
- /// workaround using poll() is provided.
-
- Poco::Timespan getReceiveTimeout() const;
- /// Returns the receive timeout for the socket.
- ///
- /// The returned timeout may be different than the
- /// timeout previously set with getReceiveTimeout(),
- /// as the system is free to adjust the value.
-
- void setOption(int level, int option, int value);
- /// Sets the socket option specified by level and option
- /// to the given integer value.
-
- void setOption(int level, int option, unsigned value);
- /// Sets the socket option specified by level and option
- /// to the given integer value.
-
- void setOption(int level, int option, unsigned char value);
- /// Sets the socket option specified by level and option
- /// to the given integer value.
-
- void setOption(int level, int option, const Poco::Timespan& value);
- /// Sets the socket option specified by level and option
- /// to the given time value.
-
- void setOption(int level, int option, const IPAddress& value);
- /// Sets the socket option specified by level and option
- /// to the given time value.
-
- void getOption(int level, int option, int& value) const;
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, unsigned& value) const;
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, unsigned char& value) const;
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, Poco::Timespan& value) const;
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, IPAddress& value) const;
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void setLinger(bool on, int seconds);
- /// Sets the value of the SO_LINGER socket option.
-
- void getLinger(bool& on, int& seconds) const;
- /// Returns the value of the SO_LINGER socket option.
-
- void setNoDelay(bool flag);
- /// Sets the value of the TCP_NODELAY socket option.
-
- bool getNoDelay() const;
- /// Returns the value of the TCP_NODELAY socket option.
-
- void setKeepAlive(bool flag);
- /// Sets the value of the SO_KEEPALIVE socket option.
-
- bool getKeepAlive() const;
- /// Returns the value of the SO_KEEPALIVE socket option.
-
- void setReuseAddress(bool flag);
- /// Sets the value of the SO_REUSEADDR socket option.
-
- bool getReuseAddress() const;
- /// Returns the value of the SO_REUSEADDR socket option.
-
- void setReusePort(bool flag);
- /// Sets the value of the SO_REUSEPORT socket option.
- /// Does nothing if the socket implementation does not
- /// support SO_REUSEPORT.
-
- bool getReusePort() const;
- /// Returns the value of the SO_REUSEPORT socket option.
- ///
- /// Returns false if the socket implementation does not
- /// support SO_REUSEPORT.
-
- void setOOBInline(bool flag);
- /// Sets the value of the SO_OOBINLINE socket option.
-
- bool getOOBInline() const;
- /// Returns the value of the SO_OOBINLINE socket option.
-
- void setBlocking(bool flag);
- /// Sets the socket in blocking mode if flag is true,
- /// disables blocking mode if flag is false.
-
- bool getBlocking() const;
- /// Returns the blocking mode of the socket.
- /// This method will only work if the blocking modes of
- /// the socket are changed via the setBlocking method!
-
- SocketAddress address() const;
- /// Returns the IP address and port number of the socket.
-
- SocketAddress peerAddress() const;
- /// Returns the IP address and port number of the peer socket.
-
- SocketImpl* impl() const;
- /// Returns the SocketImpl for this socket.
-
- bool secure() const;
- /// Returns true iff the socket's connection is secure
- /// (using SSL or TLS).
-
- static bool supportsIPv4();
- /// Returns true if the system supports IPv4.
-
- static bool supportsIPv6();
- /// Returns true if the system supports IPv6.
-
- void init(int af);
- /// Creates the underlying system socket for the given
- /// address family.
- ///
- /// Normally, this method should not be called directly, as
- /// socket creation will be handled automatically. There are
- /// a few situations where calling this method after creation
- /// of the Socket object makes sense. One example is setting
- /// a socket option before calling bind() on a ServerSocket.
-
-protected:
- Socket(SocketImpl* pImpl);
- /// Creates the Socket and attaches the given SocketImpl.
- /// The socket takes ownership of the SocketImpl.
-
- poco_socket_t sockfd() const;
- /// Returns the socket descriptor for this socket.
-
-private:
-
-#if defined(POCO_HAVE_FD_POLL)
-class FDCompare
- /// Utility functor used to compare socket file descriptors.
- /// Used in poll() member function.
-{
-public:
- FDCompare(int fd): _fd(fd) { }
- inline bool operator()(const Socket& socket) const
- { return socket.sockfd() == _fd; }
-
-private:
- FDCompare();
- int _fd;
-};
-#endif
-
- SocketImpl* _pImpl;
-};
-
-
-//
-// inlines
-//
-inline bool Socket::operator == (const Socket& socket) const
-{
- return _pImpl == socket._pImpl;
-}
-
-
-inline bool Socket::operator != (const Socket& socket) const
-{
- return _pImpl != socket._pImpl;
-}
-
-
-inline bool Socket::operator < (const Socket& socket) const
-{
- return _pImpl < socket._pImpl;
-}
-
-
-inline bool Socket::operator <= (const Socket& socket) const
-{
- return _pImpl <= socket._pImpl;
-}
-
-
-inline bool Socket::operator > (const Socket& socket) const
-{
- return _pImpl > socket._pImpl;
-}
-
-
-inline bool Socket::operator >= (const Socket& socket) const
-{
- return _pImpl >= socket._pImpl;
-}
-
-
-inline void Socket::close()
-{
- _pImpl->close();
-}
-
-
-inline bool Socket::poll(const Poco::Timespan& timeout, int mode) const
-{
- return _pImpl->poll(timeout, mode);
-}
-
-
-inline int Socket::available() const
-{
- return _pImpl->available();
-}
-
-
-inline void Socket::setSendBufferSize(int size)
-{
- _pImpl->setSendBufferSize(size);
-}
-
-
-inline int Socket::getSendBufferSize() const
-{
- return _pImpl->getSendBufferSize();
-}
-
-
-inline void Socket::setReceiveBufferSize(int size)
-{
- _pImpl->setReceiveBufferSize(size);
-}
-
-
-inline int Socket::getReceiveBufferSize() const
-{
- return _pImpl->getReceiveBufferSize();
-}
-
-
-inline void Socket::setSendTimeout(const Poco::Timespan& timeout)
-{
- _pImpl->setSendTimeout(timeout);
-}
-
-
-inline Poco::Timespan Socket::getSendTimeout() const
-{
- return _pImpl->getSendTimeout();
-}
-
-
-inline void Socket::setReceiveTimeout(const Poco::Timespan& timeout)
-{
- _pImpl->setReceiveTimeout(timeout);
-}
-
-
-inline Poco::Timespan Socket::getReceiveTimeout() const
-{
- return _pImpl->getReceiveTimeout();
-}
-
-
-inline void Socket::setOption(int level, int option, int value)
-{
- _pImpl->setOption(level, option, value);
-}
-
-
-inline void Socket::setOption(int level, int option, unsigned value)
-{
- _pImpl->setOption(level, option, value);
-}
-
-
-inline void Socket::setOption(int level, int option, unsigned char value)
-{
- _pImpl->setOption(level, option, value);
-}
-
-
-inline void Socket::setOption(int level, int option, const Poco::Timespan& value)
-{
- _pImpl->setOption(level, option, value);
-}
-
-
-inline void Socket::setOption(int level, int option, const IPAddress& value)
-{
- _pImpl->setOption(level, option, value);
-}
-
-
-inline void Socket::getOption(int level, int option, int& value) const
-{
- _pImpl->getOption(level, option, value);
-}
-
-
-inline void Socket::getOption(int level, int option, unsigned& value) const
-{
- _pImpl->getOption(level, option, value);
-}
-
-
-inline void Socket::getOption(int level, int option, unsigned char& value) const
-{
- _pImpl->getOption(level, option, value);
-}
-
-
-inline void Socket::getOption(int level, int option, Poco::Timespan& value) const
-{
- _pImpl->getOption(level, option, value);
-}
-
-
-inline void Socket::getOption(int level, int option, IPAddress& value) const
-{
- _pImpl->getOption(level, option, value);
-}
-
-
-inline void Socket::setLinger(bool on, int seconds)
-{
- _pImpl->setLinger(on, seconds);
-}
-
-
-inline void Socket::getLinger(bool& on, int& seconds) const
-{
- _pImpl->getLinger(on, seconds);
-}
-
-
-inline void Socket::setNoDelay(bool flag)
-{
- _pImpl->setNoDelay(flag);
-}
-
-
-inline bool Socket::getNoDelay() const
-{
- return _pImpl->getNoDelay();
-}
-
-
-inline void Socket::setKeepAlive(bool flag)
-{
- _pImpl->setKeepAlive(flag);
-}
-
-
-inline bool Socket::getKeepAlive() const
-{
- return _pImpl->getKeepAlive();
-}
-
-
-inline void Socket::setReuseAddress(bool flag)
-{
- _pImpl->setReuseAddress(flag);
-}
-
-
-inline bool Socket::getReuseAddress() const
-{
- return _pImpl->getReuseAddress();
-}
-
-
-inline void Socket::setReusePort(bool flag)
-{
- _pImpl->setReusePort(flag);
-}
-
-
-inline bool Socket::getReusePort() const
-{
- return _pImpl->getReusePort();
-}
-
-
-inline void Socket::setOOBInline(bool flag)
-{
- _pImpl->setOOBInline(flag);
-}
-
-
-inline bool Socket::getOOBInline() const
-{
- return _pImpl->getOOBInline();
-}
-
-
-inline void Socket::setBlocking(bool flag)
-{
- _pImpl->setBlocking(flag);
-}
-
-
-inline bool Socket::getBlocking() const
-{
- return _pImpl->getBlocking();
-}
-
-
-inline SocketImpl* Socket::impl() const
-{
- return _pImpl;
-}
-
-
-inline poco_socket_t Socket::sockfd() const
-{
- return _pImpl->sockfd();
-}
-
-
-inline SocketAddress Socket::address() const
-{
- return _pImpl->address();
-}
-
-
-inline SocketAddress Socket::peerAddress() const
-{
- return _pImpl->peerAddress();
-}
-
-
-inline bool Socket::secure() const
-{
- return _pImpl->secure();
-}
-
-
-inline bool Socket::supportsIPv4()
-{
- return true;
-}
-
-
-inline bool Socket::supportsIPv6()
-{
-#if defined(POCO_HAVE_IPv6)
- return true;
-#else
- return false;
-#endif
-}
-
-
-inline void Socket::init(int af)
-{
- _pImpl->init(af);
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_Socket_INCLUDED
+ /// The mode argument is constructed by combining the values
+ /// of the SelectMode enumeration.
+ ///
+ /// Returns true if the next operation corresponding to
+ /// mode will not block, false otherwise.
+
+ int available() const;
+ /// Returns the number of bytes available that can be read
+ /// without causing the socket to block.
+
+ void setSendBufferSize(int size);
+ /// Sets the size of the send buffer.
+
+ int getSendBufferSize() const;
+ /// Returns the size of the send buffer.
+ ///
+ /// The returned value may be different than the
+ /// value previously set with setSendBufferSize(),
+ /// as the system is free to adjust the value.
+
+ void setReceiveBufferSize(int size);
+ /// Sets the size of the receive buffer.
+
+ int getReceiveBufferSize() const;
+ /// Returns the size of the receive buffer.
+ ///
+ /// The returned value may be different than the
+ /// value previously set with setReceiveBufferSize(),
+ /// as the system is free to adjust the value.
+
+ void setSendTimeout(const Poco::Timespan& timeout);
+ /// Sets the send timeout for the socket.
+
+ Poco::Timespan getSendTimeout() const;
+ /// Returns the send timeout for the socket.
+ ///
+ /// The returned timeout may be different than the
+ /// timeout previously set with setSendTimeout(),
+ /// as the system is free to adjust the value.
+
+ void setReceiveTimeout(const Poco::Timespan& timeout);
+ /// Sets the send timeout for the socket.
+ ///
+ /// On systems that do not support SO_RCVTIMEO, a
+ /// workaround using poll() is provided.
+
+ Poco::Timespan getReceiveTimeout() const;
+ /// Returns the receive timeout for the socket.
+ ///
+ /// The returned timeout may be different than the
+ /// timeout previously set with getReceiveTimeout(),
+ /// as the system is free to adjust the value.
+
+ void setOption(int level, int option, int value);
+ /// Sets the socket option specified by level and option
+ /// to the given integer value.
+
+ void setOption(int level, int option, unsigned value);
+ /// Sets the socket option specified by level and option
+ /// to the given integer value.
+
+ void setOption(int level, int option, unsigned char value);
+ /// Sets the socket option specified by level and option
+ /// to the given integer value.
+
+ void setOption(int level, int option, const Poco::Timespan& value);
+ /// Sets the socket option specified by level and option
+ /// to the given time value.
+
+ void setOption(int level, int option, const IPAddress& value);
+ /// Sets the socket option specified by level and option
+ /// to the given time value.
+
+ void getOption(int level, int option, int& value) const;
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, unsigned& value) const;
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, unsigned char& value) const;
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, Poco::Timespan& value) const;
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, IPAddress& value) const;
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void setLinger(bool on, int seconds);
+ /// Sets the value of the SO_LINGER socket option.
+
+ void getLinger(bool& on, int& seconds) const;
+ /// Returns the value of the SO_LINGER socket option.
+
+ void setNoDelay(bool flag);
+ /// Sets the value of the TCP_NODELAY socket option.
+
+ bool getNoDelay() const;
+ /// Returns the value of the TCP_NODELAY socket option.
+
+ void setKeepAlive(bool flag);
+ /// Sets the value of the SO_KEEPALIVE socket option.
+
+ bool getKeepAlive() const;
+ /// Returns the value of the SO_KEEPALIVE socket option.
+
+ void setReuseAddress(bool flag);
+ /// Sets the value of the SO_REUSEADDR socket option.
+
+ bool getReuseAddress() const;
+ /// Returns the value of the SO_REUSEADDR socket option.
+
+ void setReusePort(bool flag);
+ /// Sets the value of the SO_REUSEPORT socket option.
+ /// Does nothing if the socket implementation does not
+ /// support SO_REUSEPORT.
+
+ bool getReusePort() const;
+ /// Returns the value of the SO_REUSEPORT socket option.
+ ///
+ /// Returns false if the socket implementation does not
+ /// support SO_REUSEPORT.
+
+ void setOOBInline(bool flag);
+ /// Sets the value of the SO_OOBINLINE socket option.
+
+ bool getOOBInline() const;
+ /// Returns the value of the SO_OOBINLINE socket option.
+
+ void setBlocking(bool flag);
+ /// Sets the socket in blocking mode if flag is true,
+ /// disables blocking mode if flag is false.
+
+ bool getBlocking() const;
+ /// Returns the blocking mode of the socket.
+ /// This method will only work if the blocking modes of
+ /// the socket are changed via the setBlocking method!
+
+ SocketAddress address() const;
+ /// Returns the IP address and port number of the socket.
+
+ SocketAddress peerAddress() const;
+ /// Returns the IP address and port number of the peer socket.
+
+ SocketImpl* impl() const;
+ /// Returns the SocketImpl for this socket.
+
+ bool secure() const;
+ /// Returns true iff the socket's connection is secure
+ /// (using SSL or TLS).
+
+ static bool supportsIPv4();
+ /// Returns true if the system supports IPv4.
+
+ static bool supportsIPv6();
+ /// Returns true if the system supports IPv6.
+
+ void init(int af);
+ /// Creates the underlying system socket for the given
+ /// address family.
+ ///
+ /// Normally, this method should not be called directly, as
+ /// socket creation will be handled automatically. There are
+ /// a few situations where calling this method after creation
+ /// of the Socket object makes sense. One example is setting
+ /// a socket option before calling bind() on a ServerSocket.
+
+protected:
+ Socket(SocketImpl* pImpl);
+ /// Creates the Socket and attaches the given SocketImpl.
+ /// The socket takes ownership of the SocketImpl.
+
+ poco_socket_t sockfd() const;
+ /// Returns the socket descriptor for this socket.
+
+private:
+
+#if defined(POCO_HAVE_FD_POLL)
+class FDCompare
+ /// Utility functor used to compare socket file descriptors.
+ /// Used in poll() member function.
+{
+public:
+ FDCompare(int fd): _fd(fd) { }
+ inline bool operator()(const Socket& socket) const
+ { return socket.sockfd() == _fd; }
+
+private:
+ FDCompare();
+ int _fd;
+};
+#endif
+
+ SocketImpl* _pImpl;
+};
+
+
+//
+// inlines
+//
+inline bool Socket::operator == (const Socket& socket) const
+{
+ return _pImpl == socket._pImpl;
+}
+
+
+inline bool Socket::operator != (const Socket& socket) const
+{
+ return _pImpl != socket._pImpl;
+}
+
+
+inline bool Socket::operator < (const Socket& socket) const
+{
+ return _pImpl < socket._pImpl;
+}
+
+
+inline bool Socket::operator <= (const Socket& socket) const
+{
+ return _pImpl <= socket._pImpl;
+}
+
+
+inline bool Socket::operator > (const Socket& socket) const
+{
+ return _pImpl > socket._pImpl;
+}
+
+
+inline bool Socket::operator >= (const Socket& socket) const
+{
+ return _pImpl >= socket._pImpl;
+}
+
+
+inline void Socket::close()
+{
+ _pImpl->close();
+}
+
+
+inline bool Socket::poll(const Poco::Timespan& timeout, int mode) const
+{
+ return _pImpl->poll(timeout, mode);
+}
+
+
+inline int Socket::available() const
+{
+ return _pImpl->available();
+}
+
+
+inline void Socket::setSendBufferSize(int size)
+{
+ _pImpl->setSendBufferSize(size);
+}
+
+
+inline int Socket::getSendBufferSize() const
+{
+ return _pImpl->getSendBufferSize();
+}
+
+
+inline void Socket::setReceiveBufferSize(int size)
+{
+ _pImpl->setReceiveBufferSize(size);
+}
+
+
+inline int Socket::getReceiveBufferSize() const
+{
+ return _pImpl->getReceiveBufferSize();
+}
+
+
+inline void Socket::setSendTimeout(const Poco::Timespan& timeout)
+{
+ _pImpl->setSendTimeout(timeout);
+}
+
+
+inline Poco::Timespan Socket::getSendTimeout() const
+{
+ return _pImpl->getSendTimeout();
+}
+
+
+inline void Socket::setReceiveTimeout(const Poco::Timespan& timeout)
+{
+ _pImpl->setReceiveTimeout(timeout);
+}
+
+
+inline Poco::Timespan Socket::getReceiveTimeout() const
+{
+ return _pImpl->getReceiveTimeout();
+}
+
+
+inline void Socket::setOption(int level, int option, int value)
+{
+ _pImpl->setOption(level, option, value);
+}
+
+
+inline void Socket::setOption(int level, int option, unsigned value)
+{
+ _pImpl->setOption(level, option, value);
+}
+
+
+inline void Socket::setOption(int level, int option, unsigned char value)
+{
+ _pImpl->setOption(level, option, value);
+}
+
+
+inline void Socket::setOption(int level, int option, const Poco::Timespan& value)
+{
+ _pImpl->setOption(level, option, value);
+}
+
+
+inline void Socket::setOption(int level, int option, const IPAddress& value)
+{
+ _pImpl->setOption(level, option, value);
+}
+
+
+inline void Socket::getOption(int level, int option, int& value) const
+{
+ _pImpl->getOption(level, option, value);
+}
+
+
+inline void Socket::getOption(int level, int option, unsigned& value) const
+{
+ _pImpl->getOption(level, option, value);
+}
+
+
+inline void Socket::getOption(int level, int option, unsigned char& value) const
+{
+ _pImpl->getOption(level, option, value);
+}
+
+
+inline void Socket::getOption(int level, int option, Poco::Timespan& value) const
+{
+ _pImpl->getOption(level, option, value);
+}
+
+
+inline void Socket::getOption(int level, int option, IPAddress& value) const
+{
+ _pImpl->getOption(level, option, value);
+}
+
+
+inline void Socket::setLinger(bool on, int seconds)
+{
+ _pImpl->setLinger(on, seconds);
+}
+
+
+inline void Socket::getLinger(bool& on, int& seconds) const
+{
+ _pImpl->getLinger(on, seconds);
+}
+
+
+inline void Socket::setNoDelay(bool flag)
+{
+ _pImpl->setNoDelay(flag);
+}
+
+
+inline bool Socket::getNoDelay() const
+{
+ return _pImpl->getNoDelay();
+}
+
+
+inline void Socket::setKeepAlive(bool flag)
+{
+ _pImpl->setKeepAlive(flag);
+}
+
+
+inline bool Socket::getKeepAlive() const
+{
+ return _pImpl->getKeepAlive();
+}
+
+
+inline void Socket::setReuseAddress(bool flag)
+{
+ _pImpl->setReuseAddress(flag);
+}
+
+
+inline bool Socket::getReuseAddress() const
+{
+ return _pImpl->getReuseAddress();
+}
+
+
+inline void Socket::setReusePort(bool flag)
+{
+ _pImpl->setReusePort(flag);
+}
+
+
+inline bool Socket::getReusePort() const
+{
+ return _pImpl->getReusePort();
+}
+
+
+inline void Socket::setOOBInline(bool flag)
+{
+ _pImpl->setOOBInline(flag);
+}
+
+
+inline bool Socket::getOOBInline() const
+{
+ return _pImpl->getOOBInline();
+}
+
+
+inline void Socket::setBlocking(bool flag)
+{
+ _pImpl->setBlocking(flag);
+}
+
+
+inline bool Socket::getBlocking() const
+{
+ return _pImpl->getBlocking();
+}
+
+
+inline SocketImpl* Socket::impl() const
+{
+ return _pImpl;
+}
+
+
+inline poco_socket_t Socket::sockfd() const
+{
+ return _pImpl->sockfd();
+}
+
+
+inline SocketAddress Socket::address() const
+{
+ return _pImpl->address();
+}
+
+
+inline SocketAddress Socket::peerAddress() const
+{
+ return _pImpl->peerAddress();
+}
+
+
+inline bool Socket::secure() const
+{
+ return _pImpl->secure();
+}
+
+
+inline bool Socket::supportsIPv4()
+{
+ return true;
+}
+
+
+inline bool Socket::supportsIPv6()
+{
+#if defined(POCO_HAVE_IPv6)
+ return true;
+#else
+ return false;
+#endif
+}
+
+
+inline void Socket::init(int af)
+{
+ _pImpl->init(af);
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_Socket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketAcceptor.h b/contrib/libs/poco/Net/include/Poco/Net/SocketAcceptor.h
index 63d2959ead..c9021ecd0b 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketAcceptor.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketAcceptor.h
@@ -1,196 +1,196 @@
-//
-// SocketAcceptor.h
-//
-// Library: Net
-// Package: Reactor
-// Module: SocketAcceptor
-//
-// Definition of the SocketAcceptor class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketAcceptor_INCLUDED
-#define Net_SocketAcceptor_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketNotification.h"
-#include "Poco/Net/SocketReactor.h"
-#include "Poco/Net/ServerSocket.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Observer.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-template <class ServiceHandler>
-class SocketAcceptor
- /// This class implements the Acceptor part of the
- /// Acceptor-Connector design pattern.
- ///
- /// The Acceptor-Connector pattern has been described in the book
- /// "Pattern Languages of Program Design 3", edited by Robert Martin,
- /// Frank Buschmann and Dirk Riehle (Addison Wesley, 1997).
- ///
- /// The Acceptor-Connector design pattern decouples connection
- /// establishment and service initialization in a distributed system
- /// from the processing performed once a service is initialized.
- /// This decoupling is achieved with three components: Acceptors,
- /// Connectors and Service Handlers.
- /// The SocketAcceptor passively waits for connection requests (usually
- /// from a remote Connector) and establishes a connection upon
- /// arrival of a connection requests. Also, a Service Handler is
- /// initialized to process the data arriving via the connection in
- /// an application-specific way.
- ///
- /// The SocketAcceptor sets up a ServerSocket and registers itself
- /// for a ReadableNotification, denoting an incoming connection request.
- ///
- /// When the ServerSocket becomes readable the SocketAcceptor accepts
- /// the connection request and creates a ServiceHandler to
- /// service the connection.
- ///
- /// The ServiceHandler class must provide a constructor that
- /// takes a StreamSocket and a SocketReactor as arguments,
- /// e.g.:
- /// MyServiceHandler(const StreamSocket& socket, ServiceReactor& reactor)
- ///
- /// When the ServiceHandler is done, it must destroy itself.
- ///
- /// Subclasses can override the createServiceHandler() factory method
- /// if special steps are necessary to create a ServiceHandler object.
-{
-public:
- explicit SocketAcceptor(ServerSocket& socket):
- _socket(socket),
- _pReactor(0)
- /// Creates a SocketAcceptor, using the given ServerSocket.
- {
- }
-
- SocketAcceptor(ServerSocket& socket, SocketReactor& reactor):
- _socket(socket),
- _pReactor(&reactor)
- /// Creates a SocketAcceptor, using the given ServerSocket.
- /// The SocketAcceptor registers itself with the given SocketReactor.
- {
- _pReactor->addEventHandler(_socket, Poco::Observer<SocketAcceptor,
- ReadableNotification>(*this, &SocketAcceptor::onAccept));
- }
-
- virtual ~SocketAcceptor()
- /// Destroys the SocketAcceptor.
- {
- try
- {
- if (_pReactor)
- {
- _pReactor->removeEventHandler(_socket, Poco::Observer<SocketAcceptor,
- ReadableNotification>(*this, &SocketAcceptor::onAccept));
- }
- }
- catch (...)
- {
- poco_unexpected();
- }
- }
-
- void setReactor(SocketReactor& reactor)
- /// Sets the reactor for this acceptor.
- {
- _pReactor = &reactor;
- if (!_pReactor->hasEventHandler(_socket, Poco::Observer<SocketAcceptor,
- ReadableNotification>(*this, &SocketAcceptor::onAccept)))
- {
- registerAcceptor(reactor);
- }
- }
-
- virtual void registerAcceptor(SocketReactor& reactor)
- /// Registers the SocketAcceptor with a SocketReactor.
+//
+// SocketAcceptor.h
+//
+// Library: Net
+// Package: Reactor
+// Module: SocketAcceptor
+//
+// Definition of the SocketAcceptor class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketAcceptor_INCLUDED
+#define Net_SocketAcceptor_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketNotification.h"
+#include "Poco/Net/SocketReactor.h"
+#include "Poco/Net/ServerSocket.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Observer.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+template <class ServiceHandler>
+class SocketAcceptor
+ /// This class implements the Acceptor part of the
+ /// Acceptor-Connector design pattern.
+ ///
+ /// The Acceptor-Connector pattern has been described in the book
+ /// "Pattern Languages of Program Design 3", edited by Robert Martin,
+ /// Frank Buschmann and Dirk Riehle (Addison Wesley, 1997).
+ ///
+ /// The Acceptor-Connector design pattern decouples connection
+ /// establishment and service initialization in a distributed system
+ /// from the processing performed once a service is initialized.
+ /// This decoupling is achieved with three components: Acceptors,
+ /// Connectors and Service Handlers.
+ /// The SocketAcceptor passively waits for connection requests (usually
+ /// from a remote Connector) and establishes a connection upon
+ /// arrival of a connection requests. Also, a Service Handler is
+ /// initialized to process the data arriving via the connection in
+ /// an application-specific way.
+ ///
+ /// The SocketAcceptor sets up a ServerSocket and registers itself
+ /// for a ReadableNotification, denoting an incoming connection request.
+ ///
+ /// When the ServerSocket becomes readable the SocketAcceptor accepts
+ /// the connection request and creates a ServiceHandler to
+ /// service the connection.
+ ///
+ /// The ServiceHandler class must provide a constructor that
+ /// takes a StreamSocket and a SocketReactor as arguments,
+ /// e.g.:
+ /// MyServiceHandler(const StreamSocket& socket, ServiceReactor& reactor)
+ ///
+ /// When the ServiceHandler is done, it must destroy itself.
+ ///
+ /// Subclasses can override the createServiceHandler() factory method
+ /// if special steps are necessary to create a ServiceHandler object.
+{
+public:
+ explicit SocketAcceptor(ServerSocket& socket):
+ _socket(socket),
+ _pReactor(0)
+ /// Creates a SocketAcceptor, using the given ServerSocket.
+ {
+ }
+
+ SocketAcceptor(ServerSocket& socket, SocketReactor& reactor):
+ _socket(socket),
+ _pReactor(&reactor)
+ /// Creates a SocketAcceptor, using the given ServerSocket.
+ /// The SocketAcceptor registers itself with the given SocketReactor.
+ {
+ _pReactor->addEventHandler(_socket, Poco::Observer<SocketAcceptor,
+ ReadableNotification>(*this, &SocketAcceptor::onAccept));
+ }
+
+ virtual ~SocketAcceptor()
+ /// Destroys the SocketAcceptor.
+ {
+ try
+ {
+ if (_pReactor)
+ {
+ _pReactor->removeEventHandler(_socket, Poco::Observer<SocketAcceptor,
+ ReadableNotification>(*this, &SocketAcceptor::onAccept));
+ }
+ }
+ catch (...)
+ {
+ poco_unexpected();
+ }
+ }
+
+ void setReactor(SocketReactor& reactor)
+ /// Sets the reactor for this acceptor.
+ {
+ _pReactor = &reactor;
+ if (!_pReactor->hasEventHandler(_socket, Poco::Observer<SocketAcceptor,
+ ReadableNotification>(*this, &SocketAcceptor::onAccept)))
+ {
+ registerAcceptor(reactor);
+ }
+ }
+
+ virtual void registerAcceptor(SocketReactor& reactor)
+ /// Registers the SocketAcceptor with a SocketReactor.
+ ///
+ /// A subclass can override this function to e.g.
+ /// register an event handler for timeout event.
///
- /// A subclass can override this function to e.g.
- /// register an event handler for timeout event.
- ///
- /// If acceptor was constructed without providing reactor to it,
- /// the override of this method must either call the base class
- /// implementation or directly register the accept handler with
- /// the reactor.
- {
- if (_pReactor)
- throw Poco::InvalidAccessException("Acceptor already registered.");
-
- _pReactor = &reactor;
- _pReactor->addEventHandler(_socket, Poco::Observer<SocketAcceptor, ReadableNotification>(*this, &SocketAcceptor::onAccept));
- }
-
- virtual void unregisterAcceptor()
- /// Unregisters the SocketAcceptor.
+ /// If acceptor was constructed without providing reactor to it,
+ /// the override of this method must either call the base class
+ /// implementation or directly register the accept handler with
+ /// the reactor.
+ {
+ if (_pReactor)
+ throw Poco::InvalidAccessException("Acceptor already registered.");
+
+ _pReactor = &reactor;
+ _pReactor->addEventHandler(_socket, Poco::Observer<SocketAcceptor, ReadableNotification>(*this, &SocketAcceptor::onAccept));
+ }
+
+ virtual void unregisterAcceptor()
+ /// Unregisters the SocketAcceptor.
+ ///
+ /// A subclass can override this function to e.g.
+ /// unregister its event handler for a timeout event.
///
- /// A subclass can override this function to e.g.
- /// unregister its event handler for a timeout event.
- ///
- /// If the accept handler was registered with the reactor,
- /// the overriding method must either call the base class
- /// implementation or directly unregister the accept handler.
- {
- if (_pReactor)
- {
- _pReactor->removeEventHandler(_socket, Poco::Observer<SocketAcceptor, ReadableNotification>(*this, &SocketAcceptor::onAccept));
- }
- }
-
- void onAccept(ReadableNotification* pNotification)
- /// Accepts connection and creates event handler.
- {
- pNotification->release();
- StreamSocket sock = _socket.acceptConnection();
- _pReactor->wakeUp();
- createServiceHandler(sock);
- }
-
-protected:
- virtual ServiceHandler* createServiceHandler(StreamSocket& socket)
- /// Create and initialize a new ServiceHandler instance.
- ///
- /// Subclasses can override this method.
- {
- return new ServiceHandler(socket, *_pReactor);
- }
-
- SocketReactor* reactor()
- /// Returns a pointer to the SocketReactor where
- /// this SocketAcceptor is registered.
- ///
- /// The pointer may be null.
- {
- return _pReactor;
- }
-
- Socket& socket()
- /// Returns a reference to the SocketAcceptor's socket.
- {
- return _socket;
- }
-
-private:
- SocketAcceptor();
- SocketAcceptor(const SocketAcceptor&);
- SocketAcceptor& operator = (const SocketAcceptor&);
-
- ServerSocket _socket;
- SocketReactor* _pReactor;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketAcceptor_INCLUDED
+ /// If the accept handler was registered with the reactor,
+ /// the overriding method must either call the base class
+ /// implementation or directly unregister the accept handler.
+ {
+ if (_pReactor)
+ {
+ _pReactor->removeEventHandler(_socket, Poco::Observer<SocketAcceptor, ReadableNotification>(*this, &SocketAcceptor::onAccept));
+ }
+ }
+
+ void onAccept(ReadableNotification* pNotification)
+ /// Accepts connection and creates event handler.
+ {
+ pNotification->release();
+ StreamSocket sock = _socket.acceptConnection();
+ _pReactor->wakeUp();
+ createServiceHandler(sock);
+ }
+
+protected:
+ virtual ServiceHandler* createServiceHandler(StreamSocket& socket)
+ /// Create and initialize a new ServiceHandler instance.
+ ///
+ /// Subclasses can override this method.
+ {
+ return new ServiceHandler(socket, *_pReactor);
+ }
+
+ SocketReactor* reactor()
+ /// Returns a pointer to the SocketReactor where
+ /// this SocketAcceptor is registered.
+ ///
+ /// The pointer may be null.
+ {
+ return _pReactor;
+ }
+
+ Socket& socket()
+ /// Returns a reference to the SocketAcceptor's socket.
+ {
+ return _socket;
+ }
+
+private:
+ SocketAcceptor();
+ SocketAcceptor(const SocketAcceptor&);
+ SocketAcceptor& operator = (const SocketAcceptor&);
+
+ ServerSocket _socket;
+ SocketReactor* _pReactor;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketAcceptor_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketAddress.h b/contrib/libs/poco/Net/include/Poco/Net/SocketAddress.h
index 34fd515d9d..61c5581789 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketAddress.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketAddress.h
@@ -1,301 +1,301 @@
-//
-// SocketAddress.h
-//
-// Library: Net
-// Package: NetCore
-// Module: SocketAddress
-//
-// Definition of the SocketAddress class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketAddress_INCLUDED
-#define Net_SocketAddress_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketAddressImpl.h"
-#include <ostream>
-
-
-namespace Poco {
-
-class BinaryReader;
-class BinaryWriter;
-
-namespace Net {
-
-
-class IPAddress;
-
-
-class Net_API SocketAddress
- /// This class represents an internet (IP) endpoint/socket
- /// address. The address can belong either to the
- /// IPv4 or the IPv6 address family and consists of a
- /// host address and a port number.
-{
-public:
- // The following declarations keep the Family type
- // backwards compatible with the previously used
- // enum declaration.
- typedef AddressFamily::Family Family;
- static const Family IPv4 = AddressFamily::IPv4;
-#if defined(POCO_HAVE_IPv6)
- static const Family IPv6 = AddressFamily::IPv6;
-#endif
-#if defined(POCO_OS_FAMILY_UNIX)
- static const Family UNIX_LOCAL = AddressFamily::UNIX_LOCAL;
-#endif
-
- SocketAddress();
- /// Creates a wildcard (all zero) IPv4 SocketAddress.
-
- explicit SocketAddress(Family family);
- /// Creates a SocketAddress with unspecified (wildcard) IP address
- /// of the given family.
-
- SocketAddress(const IPAddress& hostAddress, Poco::UInt16 portNumber);
- /// Creates a SocketAddress from an IP address and given port number.
-
- explicit SocketAddress(Poco::UInt16 port);
- /// Creates a SocketAddress with unspecified (wildcard) IP address
- /// and given port number.
-
- SocketAddress(Family family, Poco::UInt16 port);
- /// Creates a SocketAddress with unspecified (wildcard) IP address
- /// of the given family, and given port number.
-
- SocketAddress(const std::string& hostAddress, Poco::UInt16 portNumber);
- /// Creates a SocketAddress from an IP address and given port number.
- ///
- /// The IP address must either be a domain name, or it must
- /// be in dotted decimal (IPv4) or hex string (IPv6) format.
-
- SocketAddress(Family family, const std::string& hostAddress, Poco::UInt16 portNumber);
- /// Creates a SocketAddress from an IP address and given port number.
- ///
- /// The IP address must either be a domain name, or it must
- /// be in dotted decimal (IPv4) or hex string (IPv6) format.
- ///
- /// If a domain name is given in hostAddress, it is resolved and the address
- /// matching the given family is used. If no address matching the given family
- /// is found, or the IP address given in hostAddress does not match the given
- /// family, an AddressFamilyMismatchException is thrown.
-
- SocketAddress(const std::string& hostAddress, const std::string& portNumber);
- /// Creates a SocketAddress from an IP address and the
- /// service name or port number.
- ///
- /// The IP address must either be a domain name, or it must
- /// be in dotted decimal (IPv4) or hex string (IPv6) format.
- ///
- /// The given port must either be a decimal port number, or
- /// a service name.
-
- SocketAddress(Family family, const std::string& hostAddress, const std::string& portNumber);
- /// Creates a SocketAddress from an IP address and the
- /// service name or port number.
- ///
- /// The IP address must either be a domain name, or it must
- /// be in dotted decimal (IPv4) or hex string (IPv6) format.
- ///
- /// The given port must either be a decimal port number, or
- /// a service name.
- ///
- /// If a domain name is given in hostAddress, it is resolved and the address
- /// matching the given family is used. If no address matching the given family
- /// is found, or the IP address given in hostAddress does not match the given
- /// family, an AddressFamilyMismatchException is thrown.
-
- explicit SocketAddress(const std::string& hostAndPort);
- /// Creates a SocketAddress from an IP address or host name and the
- /// port number/service name. Host name/address and port number must
- /// be separated by a colon. In case of an IPv6 address,
- /// the address part must be enclosed in brackets.
- ///
- /// Examples:
- /// 192.168.1.10:80
- /// [::ffff:192.168.1.120]:2040
- /// www.appinf.com:8080
- ///
- /// On POSIX platforms supporting UNIX_LOCAL sockets, hostAndPort
- /// can also be the absolute path of a local socket, starting with a
- /// slash, e.g. "/tmp/local.socket".
-
- SocketAddress(Family family, const std::string& addr);
- /// Creates a SocketAddress of the given family from a
- /// string representation of the address, which is
- /// either an IP address and port number, separated by
- /// a colon for IPv4 or IPv6 addresses, or a path for
- /// UNIX_LOCAL sockets.
-
- SocketAddress(const SocketAddress& addr);
- /// Creates a SocketAddress by copying another one.
-
- SocketAddress(const struct sockaddr* addr, poco_socklen_t length);
- /// Creates a SocketAddress from a native socket address.
-
- ~SocketAddress();
- /// Destroys the SocketAddress.
-
- SocketAddress& operator = (const SocketAddress& socketAddress);
- /// Assigns another SocketAddress.
-
- IPAddress host() const;
- /// Returns the host IP address.
-
- Poco::UInt16 port() const;
- /// Returns the port number.
-
- poco_socklen_t length() const;
- /// Returns the length of the internal native socket address.
-
- const struct sockaddr* addr() const;
- /// Returns a pointer to the internal native socket address.
-
- int af() const;
- /// Returns the address family (AF_INET or AF_INET6) of the address.
-
- std::string toString() const;
- /// Returns a string representation of the address.
-
- Family family() const;
- /// Returns the address family of the host's address.
-
- bool operator < (const SocketAddress& socketAddress) const;
- bool operator == (const SocketAddress& socketAddress) const;
- bool operator != (const SocketAddress& socketAddress) const;
-
- enum
- {
- MAX_ADDRESS_LENGTH =
-#if defined(POCO_OS_FAMILY_UNIX)
- sizeof(struct sockaddr_un)
-#elif defined(POCO_HAVE_IPv6)
- sizeof(struct sockaddr_in6)
-#else
- sizeof(struct sockaddr_in)
-#endif
- /// Maximum length in bytes of a socket address.
- };
-
-protected:
- void init(const IPAddress& hostAddress, Poco::UInt16 portNumber);
- void init(const std::string& hostAddress, Poco::UInt16 portNumber);
- void init(Family family, const std::string& hostAddress, Poco::UInt16 portNumber);
- void init(Family family, const std::string& address);
- void init(const std::string& hostAndPort);
- Poco::UInt16 resolveService(const std::string& service);
-
-private:
- typedef Poco::Net::Impl::SocketAddressImpl Impl;
- typedef Poco::AutoPtr<Impl> Ptr;
-
- Ptr pImpl() const;
-
- void newIPv4();
- void newIPv4(const sockaddr_in*);
- void newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber);
-
-#if defined(POCO_HAVE_IPv6)
- void newIPv6(const sockaddr_in6*);
- void newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber);
-#endif
-
-#if defined(POCO_OS_FAMILY_UNIX)
- void newLocal(const sockaddr_un* sockAddr);
- void newLocal(const std::string& path);
-#endif
-
- Ptr _pImpl;
-};
-
-
-//
-// inlines
-//
-inline SocketAddress::Ptr SocketAddress::pImpl() const
-{
- if (_pImpl) return _pImpl;
- throw Poco::NullPointerException("Pointer to SocketAddress implementation is NULL.");
-}
-
-
-inline void SocketAddress::newIPv4()
-{
- _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl;
-}
-
-
-inline void SocketAddress::newIPv4(const sockaddr_in* sockAddr)
-{
- _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(sockAddr);
-}
-
-
-inline void SocketAddress::newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber)
-{
- _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(hostAddress.addr(), htons(portNumber));
-}
-
-
-#if defined(POCO_HAVE_IPv6)
-inline void SocketAddress::newIPv6(const sockaddr_in6* sockAddr)
-{
- _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(sockAddr);
-}
-
-
-inline void SocketAddress::newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber)
-{
- _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(hostAddress.addr(), htons(portNumber), hostAddress.scope());
-}
-#endif // POCO_HAVE_IPv6
-
-
-#if defined(POCO_OS_FAMILY_UNIX)
-inline void SocketAddress::newLocal(const sockaddr_un* sockAddr)
-{
- _pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(sockAddr);
-}
-
-
-inline void SocketAddress::newLocal(const std::string& path)
-{
- _pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(path.c_str(), path.size());
-}
-#endif // POCO_OS_FAMILY_UNIX
-
-
-inline bool SocketAddress::operator == (const SocketAddress& socketAddress) const
-{
-#if defined(POCO_OS_FAMILY_UNIX)
- if (family() == UNIX_LOCAL)
- return toString() == socketAddress.toString();
- else
-#endif
- return host() == socketAddress.host() && port() == socketAddress.port();
-}
-
-
-inline bool SocketAddress::operator != (const SocketAddress& socketAddress) const
-{
- return !(operator == (socketAddress));
-}
-
-
-} } // namespace Poco::Net
-
-
-Net_API Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::SocketAddress& value);
-Net_API Poco::BinaryReader& operator >> (Poco::BinaryReader& reader, Poco::Net::SocketAddress& value);
-Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::SocketAddress& address);
-
-
-#endif // Net_SocketAddress_INCLUDED
+//
+// SocketAddress.h
+//
+// Library: Net
+// Package: NetCore
+// Module: SocketAddress
+//
+// Definition of the SocketAddress class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketAddress_INCLUDED
+#define Net_SocketAddress_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketAddressImpl.h"
+#include <ostream>
+
+
+namespace Poco {
+
+class BinaryReader;
+class BinaryWriter;
+
+namespace Net {
+
+
+class IPAddress;
+
+
+class Net_API SocketAddress
+ /// This class represents an internet (IP) endpoint/socket
+ /// address. The address can belong either to the
+ /// IPv4 or the IPv6 address family and consists of a
+ /// host address and a port number.
+{
+public:
+ // The following declarations keep the Family type
+ // backwards compatible with the previously used
+ // enum declaration.
+ typedef AddressFamily::Family Family;
+ static const Family IPv4 = AddressFamily::IPv4;
+#if defined(POCO_HAVE_IPv6)
+ static const Family IPv6 = AddressFamily::IPv6;
+#endif
+#if defined(POCO_OS_FAMILY_UNIX)
+ static const Family UNIX_LOCAL = AddressFamily::UNIX_LOCAL;
+#endif
+
+ SocketAddress();
+ /// Creates a wildcard (all zero) IPv4 SocketAddress.
+
+ explicit SocketAddress(Family family);
+ /// Creates a SocketAddress with unspecified (wildcard) IP address
+ /// of the given family.
+
+ SocketAddress(const IPAddress& hostAddress, Poco::UInt16 portNumber);
+ /// Creates a SocketAddress from an IP address and given port number.
+
+ explicit SocketAddress(Poco::UInt16 port);
+ /// Creates a SocketAddress with unspecified (wildcard) IP address
+ /// and given port number.
+
+ SocketAddress(Family family, Poco::UInt16 port);
+ /// Creates a SocketAddress with unspecified (wildcard) IP address
+ /// of the given family, and given port number.
+
+ SocketAddress(const std::string& hostAddress, Poco::UInt16 portNumber);
+ /// Creates a SocketAddress from an IP address and given port number.
+ ///
+ /// The IP address must either be a domain name, or it must
+ /// be in dotted decimal (IPv4) or hex string (IPv6) format.
+
+ SocketAddress(Family family, const std::string& hostAddress, Poco::UInt16 portNumber);
+ /// Creates a SocketAddress from an IP address and given port number.
+ ///
+ /// The IP address must either be a domain name, or it must
+ /// be in dotted decimal (IPv4) or hex string (IPv6) format.
+ ///
+ /// If a domain name is given in hostAddress, it is resolved and the address
+ /// matching the given family is used. If no address matching the given family
+ /// is found, or the IP address given in hostAddress does not match the given
+ /// family, an AddressFamilyMismatchException is thrown.
+
+ SocketAddress(const std::string& hostAddress, const std::string& portNumber);
+ /// Creates a SocketAddress from an IP address and the
+ /// service name or port number.
+ ///
+ /// The IP address must either be a domain name, or it must
+ /// be in dotted decimal (IPv4) or hex string (IPv6) format.
+ ///
+ /// The given port must either be a decimal port number, or
+ /// a service name.
+
+ SocketAddress(Family family, const std::string& hostAddress, const std::string& portNumber);
+ /// Creates a SocketAddress from an IP address and the
+ /// service name or port number.
+ ///
+ /// The IP address must either be a domain name, or it must
+ /// be in dotted decimal (IPv4) or hex string (IPv6) format.
+ ///
+ /// The given port must either be a decimal port number, or
+ /// a service name.
+ ///
+ /// If a domain name is given in hostAddress, it is resolved and the address
+ /// matching the given family is used. If no address matching the given family
+ /// is found, or the IP address given in hostAddress does not match the given
+ /// family, an AddressFamilyMismatchException is thrown.
+
+ explicit SocketAddress(const std::string& hostAndPort);
+ /// Creates a SocketAddress from an IP address or host name and the
+ /// port number/service name. Host name/address and port number must
+ /// be separated by a colon. In case of an IPv6 address,
+ /// the address part must be enclosed in brackets.
+ ///
+ /// Examples:
+ /// 192.168.1.10:80
+ /// [::ffff:192.168.1.120]:2040
+ /// www.appinf.com:8080
+ ///
+ /// On POSIX platforms supporting UNIX_LOCAL sockets, hostAndPort
+ /// can also be the absolute path of a local socket, starting with a
+ /// slash, e.g. "/tmp/local.socket".
+
+ SocketAddress(Family family, const std::string& addr);
+ /// Creates a SocketAddress of the given family from a
+ /// string representation of the address, which is
+ /// either an IP address and port number, separated by
+ /// a colon for IPv4 or IPv6 addresses, or a path for
+ /// UNIX_LOCAL sockets.
+
+ SocketAddress(const SocketAddress& addr);
+ /// Creates a SocketAddress by copying another one.
+
+ SocketAddress(const struct sockaddr* addr, poco_socklen_t length);
+ /// Creates a SocketAddress from a native socket address.
+
+ ~SocketAddress();
+ /// Destroys the SocketAddress.
+
+ SocketAddress& operator = (const SocketAddress& socketAddress);
+ /// Assigns another SocketAddress.
+
+ IPAddress host() const;
+ /// Returns the host IP address.
+
+ Poco::UInt16 port() const;
+ /// Returns the port number.
+
+ poco_socklen_t length() const;
+ /// Returns the length of the internal native socket address.
+
+ const struct sockaddr* addr() const;
+ /// Returns a pointer to the internal native socket address.
+
+ int af() const;
+ /// Returns the address family (AF_INET or AF_INET6) of the address.
+
+ std::string toString() const;
+ /// Returns a string representation of the address.
+
+ Family family() const;
+ /// Returns the address family of the host's address.
+
+ bool operator < (const SocketAddress& socketAddress) const;
+ bool operator == (const SocketAddress& socketAddress) const;
+ bool operator != (const SocketAddress& socketAddress) const;
+
+ enum
+ {
+ MAX_ADDRESS_LENGTH =
+#if defined(POCO_OS_FAMILY_UNIX)
+ sizeof(struct sockaddr_un)
+#elif defined(POCO_HAVE_IPv6)
+ sizeof(struct sockaddr_in6)
+#else
+ sizeof(struct sockaddr_in)
+#endif
+ /// Maximum length in bytes of a socket address.
+ };
+
+protected:
+ void init(const IPAddress& hostAddress, Poco::UInt16 portNumber);
+ void init(const std::string& hostAddress, Poco::UInt16 portNumber);
+ void init(Family family, const std::string& hostAddress, Poco::UInt16 portNumber);
+ void init(Family family, const std::string& address);
+ void init(const std::string& hostAndPort);
+ Poco::UInt16 resolveService(const std::string& service);
+
+private:
+ typedef Poco::Net::Impl::SocketAddressImpl Impl;
+ typedef Poco::AutoPtr<Impl> Ptr;
+
+ Ptr pImpl() const;
+
+ void newIPv4();
+ void newIPv4(const sockaddr_in*);
+ void newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber);
+
+#if defined(POCO_HAVE_IPv6)
+ void newIPv6(const sockaddr_in6*);
+ void newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber);
+#endif
+
+#if defined(POCO_OS_FAMILY_UNIX)
+ void newLocal(const sockaddr_un* sockAddr);
+ void newLocal(const std::string& path);
+#endif
+
+ Ptr _pImpl;
+};
+
+
+//
+// inlines
+//
+inline SocketAddress::Ptr SocketAddress::pImpl() const
+{
+ if (_pImpl) return _pImpl;
+ throw Poco::NullPointerException("Pointer to SocketAddress implementation is NULL.");
+}
+
+
+inline void SocketAddress::newIPv4()
+{
+ _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl;
+}
+
+
+inline void SocketAddress::newIPv4(const sockaddr_in* sockAddr)
+{
+ _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(sockAddr);
+}
+
+
+inline void SocketAddress::newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber)
+{
+ _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(hostAddress.addr(), htons(portNumber));
+}
+
+
+#if defined(POCO_HAVE_IPv6)
+inline void SocketAddress::newIPv6(const sockaddr_in6* sockAddr)
+{
+ _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(sockAddr);
+}
+
+
+inline void SocketAddress::newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber)
+{
+ _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(hostAddress.addr(), htons(portNumber), hostAddress.scope());
+}
+#endif // POCO_HAVE_IPv6
+
+
+#if defined(POCO_OS_FAMILY_UNIX)
+inline void SocketAddress::newLocal(const sockaddr_un* sockAddr)
+{
+ _pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(sockAddr);
+}
+
+
+inline void SocketAddress::newLocal(const std::string& path)
+{
+ _pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(path.c_str(), path.size());
+}
+#endif // POCO_OS_FAMILY_UNIX
+
+
+inline bool SocketAddress::operator == (const SocketAddress& socketAddress) const
+{
+#if defined(POCO_OS_FAMILY_UNIX)
+ if (family() == UNIX_LOCAL)
+ return toString() == socketAddress.toString();
+ else
+#endif
+ return host() == socketAddress.host() && port() == socketAddress.port();
+}
+
+
+inline bool SocketAddress::operator != (const SocketAddress& socketAddress) const
+{
+ return !(operator == (socketAddress));
+}
+
+
+} } // namespace Poco::Net
+
+
+Net_API Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::SocketAddress& value);
+Net_API Poco::BinaryReader& operator >> (Poco::BinaryReader& reader, Poco::Net::SocketAddress& value);
+Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::SocketAddress& address);
+
+
+#endif // Net_SocketAddress_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketAddressImpl.h b/contrib/libs/poco/Net/include/Poco/Net/SocketAddressImpl.h
index 355a25a3ac..079bece510 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketAddressImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketAddressImpl.h
@@ -1,258 +1,258 @@
-//
-// SocketAddressImpl.h
-//
-// Library: Net
-// Package: NetCore
-// Module: SocketAddressImpl
-//
-// Definition of the SocketAddressImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketAddressImpl_INCLUDED
-#define Net_SocketAddressImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketDefs.h"
-#include "Poco/Net/IPAddress.h"
-#include "Poco/RefCountedObject.h"
-
-
-namespace Poco {
-namespace Net {
-namespace Impl {
-
-
-class Net_API SocketAddressImpl : public Poco::RefCountedObject
-{
-public:
- typedef AddressFamily::Family Family;
-
- virtual ~SocketAddressImpl();
-
- virtual IPAddress host() const = 0;
- virtual UInt16 port() const = 0;
- virtual poco_socklen_t length() const = 0;
- virtual const struct sockaddr* addr() const = 0;
- virtual int af() const = 0;
- virtual Family family() const = 0;
- virtual std::string toString() const = 0;
-
-protected:
- SocketAddressImpl();
-
-private:
- SocketAddressImpl(const SocketAddressImpl&);
- SocketAddressImpl& operator = (const SocketAddressImpl&);
-};
-
-
-class Net_API IPv4SocketAddressImpl: public SocketAddressImpl
-{
-public:
- IPv4SocketAddressImpl();
- IPv4SocketAddressImpl(const struct sockaddr_in* addr);
- IPv4SocketAddressImpl(const void* addr, UInt16 port);
- IPAddress host() const;
- UInt16 port() const;
- poco_socklen_t length() const;
- const struct sockaddr* addr() const;
- int af() const;
- Family family() const;
- std::string toString() const;
-
-private:
- struct sockaddr_in _addr;
-};
-
-
-//
-// inlines
-//
-
-inline IPAddress IPv4SocketAddressImpl::host() const
-{
- return IPAddress(&_addr.sin_addr, sizeof(_addr.sin_addr));
-}
-
-
-inline UInt16 IPv4SocketAddressImpl::port() const
-{
- return _addr.sin_port;
-}
-
-
-inline poco_socklen_t IPv4SocketAddressImpl::length() const
-{
- return sizeof(_addr);
-}
-
-
-inline const struct sockaddr* IPv4SocketAddressImpl::addr() const
-{
- return reinterpret_cast<const struct sockaddr*>(&_addr);
-}
-
-
-inline int IPv4SocketAddressImpl::af() const
-{
- return _addr.sin_family;
-}
-
-
-inline SocketAddressImpl::Family IPv4SocketAddressImpl::family() const
-{
- return AddressFamily::IPv4;
-}
-
-
-#if defined(POCO_HAVE_IPv6)
-
-
-class Net_API IPv6SocketAddressImpl: public SocketAddressImpl
-{
-public:
- IPv6SocketAddressImpl(const struct sockaddr_in6* addr);
- IPv6SocketAddressImpl(const void* addr, UInt16 port);
- IPv6SocketAddressImpl(const void* addr, UInt16 port, UInt32 scope);
- IPAddress host() const;
- UInt16 port() const;
- poco_socklen_t length() const;
- const struct sockaddr* addr() const;
- int af() const;
- Family family() const;
- std::string toString() const;
-
-private:
- struct sockaddr_in6 _addr;
-};
-
-
-//
-// inlines
-//
-
-inline IPAddress IPv6SocketAddressImpl::host() const
-{
- return IPAddress(&_addr.sin6_addr, sizeof(_addr.sin6_addr), _addr.sin6_scope_id);
-}
-
-
-inline UInt16 IPv6SocketAddressImpl::port() const
-{
- return _addr.sin6_port;
-}
-
-
-inline poco_socklen_t IPv6SocketAddressImpl::length() const
-{
- return sizeof(_addr);
-}
-
-
-inline const struct sockaddr* IPv6SocketAddressImpl::addr() const
-{
- return reinterpret_cast<const struct sockaddr*>(&_addr);
-}
-
-
-inline int IPv6SocketAddressImpl::af() const
-{
- return _addr.sin6_family;
-}
-
-
-inline SocketAddressImpl::Family IPv6SocketAddressImpl::family() const
-{
- return AddressFamily::IPv6;
-}
-
-
-#endif // POCO_HAVE_IPv6
-
-
-#if defined(POCO_OS_FAMILY_UNIX)
-
-
-class Net_API LocalSocketAddressImpl: public SocketAddressImpl
-{
-public:
- LocalSocketAddressImpl(const struct sockaddr_un* addr);
- LocalSocketAddressImpl(const char* path);
- LocalSocketAddressImpl(const char* path, std::size_t length);
- ~LocalSocketAddressImpl();
- IPAddress host() const;
- UInt16 port() const;
- poco_socklen_t length() const;
- const struct sockaddr* addr() const;
- int af() const;
- Family family() const;
- const char* path() const;
- std::string toString() const;
-
-private:
- struct sockaddr_un* _pAddr;
- // Note: We allocate struct sockaddr_un on the heap, otherwise we would
- // waste a lot of memory due to small object optimization in SocketAddress.
-};
-
-
-//
-// inlines
-//
-
-inline IPAddress LocalSocketAddressImpl::host() const
-{
- throw Poco::InvalidAccessException("local socket address does not have host IP address");
-}
-
-
-inline UInt16 LocalSocketAddressImpl::port() const
-{
- throw Poco::InvalidAccessException("local socket address does not have port number");
-}
-
-
-inline poco_socklen_t LocalSocketAddressImpl::length() const
-{
- return sizeof(struct sockaddr_un);
-}
-
-
-inline const struct sockaddr* LocalSocketAddressImpl::addr() const
-{
- return reinterpret_cast<const struct sockaddr*>(_pAddr);
-}
-
-
-inline int LocalSocketAddressImpl::af() const
-{
- return _pAddr->sun_family;
-}
-
-
-inline SocketAddressImpl::Family LocalSocketAddressImpl::family() const
-{
- return AddressFamily::UNIX_LOCAL;
-}
-
-
-inline const char* LocalSocketAddressImpl::path() const
-{
- return _pAddr->sun_path;
-}
-
-
-#endif // POCO_OS_FAMILY_UNIX
-
-
-} } } // namespace Poco::Net::Impl
-
-
-#endif // Net_SocketAddressImpl_INCLUDED
+//
+// SocketAddressImpl.h
+//
+// Library: Net
+// Package: NetCore
+// Module: SocketAddressImpl
+//
+// Definition of the SocketAddressImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketAddressImpl_INCLUDED
+#define Net_SocketAddressImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketDefs.h"
+#include "Poco/Net/IPAddress.h"
+#include "Poco/RefCountedObject.h"
+
+
+namespace Poco {
+namespace Net {
+namespace Impl {
+
+
+class Net_API SocketAddressImpl : public Poco::RefCountedObject
+{
+public:
+ typedef AddressFamily::Family Family;
+
+ virtual ~SocketAddressImpl();
+
+ virtual IPAddress host() const = 0;
+ virtual UInt16 port() const = 0;
+ virtual poco_socklen_t length() const = 0;
+ virtual const struct sockaddr* addr() const = 0;
+ virtual int af() const = 0;
+ virtual Family family() const = 0;
+ virtual std::string toString() const = 0;
+
+protected:
+ SocketAddressImpl();
+
+private:
+ SocketAddressImpl(const SocketAddressImpl&);
+ SocketAddressImpl& operator = (const SocketAddressImpl&);
+};
+
+
+class Net_API IPv4SocketAddressImpl: public SocketAddressImpl
+{
+public:
+ IPv4SocketAddressImpl();
+ IPv4SocketAddressImpl(const struct sockaddr_in* addr);
+ IPv4SocketAddressImpl(const void* addr, UInt16 port);
+ IPAddress host() const;
+ UInt16 port() const;
+ poco_socklen_t length() const;
+ const struct sockaddr* addr() const;
+ int af() const;
+ Family family() const;
+ std::string toString() const;
+
+private:
+ struct sockaddr_in _addr;
+};
+
+
+//
+// inlines
+//
+
+inline IPAddress IPv4SocketAddressImpl::host() const
+{
+ return IPAddress(&_addr.sin_addr, sizeof(_addr.sin_addr));
+}
+
+
+inline UInt16 IPv4SocketAddressImpl::port() const
+{
+ return _addr.sin_port;
+}
+
+
+inline poco_socklen_t IPv4SocketAddressImpl::length() const
+{
+ return sizeof(_addr);
+}
+
+
+inline const struct sockaddr* IPv4SocketAddressImpl::addr() const
+{
+ return reinterpret_cast<const struct sockaddr*>(&_addr);
+}
+
+
+inline int IPv4SocketAddressImpl::af() const
+{
+ return _addr.sin_family;
+}
+
+
+inline SocketAddressImpl::Family IPv4SocketAddressImpl::family() const
+{
+ return AddressFamily::IPv4;
+}
+
+
+#if defined(POCO_HAVE_IPv6)
+
+
+class Net_API IPv6SocketAddressImpl: public SocketAddressImpl
+{
+public:
+ IPv6SocketAddressImpl(const struct sockaddr_in6* addr);
+ IPv6SocketAddressImpl(const void* addr, UInt16 port);
+ IPv6SocketAddressImpl(const void* addr, UInt16 port, UInt32 scope);
+ IPAddress host() const;
+ UInt16 port() const;
+ poco_socklen_t length() const;
+ const struct sockaddr* addr() const;
+ int af() const;
+ Family family() const;
+ std::string toString() const;
+
+private:
+ struct sockaddr_in6 _addr;
+};
+
+
+//
+// inlines
+//
+
+inline IPAddress IPv6SocketAddressImpl::host() const
+{
+ return IPAddress(&_addr.sin6_addr, sizeof(_addr.sin6_addr), _addr.sin6_scope_id);
+}
+
+
+inline UInt16 IPv6SocketAddressImpl::port() const
+{
+ return _addr.sin6_port;
+}
+
+
+inline poco_socklen_t IPv6SocketAddressImpl::length() const
+{
+ return sizeof(_addr);
+}
+
+
+inline const struct sockaddr* IPv6SocketAddressImpl::addr() const
+{
+ return reinterpret_cast<const struct sockaddr*>(&_addr);
+}
+
+
+inline int IPv6SocketAddressImpl::af() const
+{
+ return _addr.sin6_family;
+}
+
+
+inline SocketAddressImpl::Family IPv6SocketAddressImpl::family() const
+{
+ return AddressFamily::IPv6;
+}
+
+
+#endif // POCO_HAVE_IPv6
+
+
+#if defined(POCO_OS_FAMILY_UNIX)
+
+
+class Net_API LocalSocketAddressImpl: public SocketAddressImpl
+{
+public:
+ LocalSocketAddressImpl(const struct sockaddr_un* addr);
+ LocalSocketAddressImpl(const char* path);
+ LocalSocketAddressImpl(const char* path, std::size_t length);
+ ~LocalSocketAddressImpl();
+ IPAddress host() const;
+ UInt16 port() const;
+ poco_socklen_t length() const;
+ const struct sockaddr* addr() const;
+ int af() const;
+ Family family() const;
+ const char* path() const;
+ std::string toString() const;
+
+private:
+ struct sockaddr_un* _pAddr;
+ // Note: We allocate struct sockaddr_un on the heap, otherwise we would
+ // waste a lot of memory due to small object optimization in SocketAddress.
+};
+
+
+//
+// inlines
+//
+
+inline IPAddress LocalSocketAddressImpl::host() const
+{
+ throw Poco::InvalidAccessException("local socket address does not have host IP address");
+}
+
+
+inline UInt16 LocalSocketAddressImpl::port() const
+{
+ throw Poco::InvalidAccessException("local socket address does not have port number");
+}
+
+
+inline poco_socklen_t LocalSocketAddressImpl::length() const
+{
+ return sizeof(struct sockaddr_un);
+}
+
+
+inline const struct sockaddr* LocalSocketAddressImpl::addr() const
+{
+ return reinterpret_cast<const struct sockaddr*>(_pAddr);
+}
+
+
+inline int LocalSocketAddressImpl::af() const
+{
+ return _pAddr->sun_family;
+}
+
+
+inline SocketAddressImpl::Family LocalSocketAddressImpl::family() const
+{
+ return AddressFamily::UNIX_LOCAL;
+}
+
+
+inline const char* LocalSocketAddressImpl::path() const
+{
+ return _pAddr->sun_path;
+}
+
+
+#endif // POCO_OS_FAMILY_UNIX
+
+
+} } } // namespace Poco::Net::Impl
+
+
+#endif // Net_SocketAddressImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketConnector.h b/contrib/libs/poco/Net/include/Poco/Net/SocketConnector.h
index 075bdf6d77..d3196c9f62 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketConnector.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketConnector.h
@@ -1,212 +1,212 @@
-//
-// SocketConnector.h
-//
-// Library: Net
-// Package: Reactor
-// Module: SocketConnector
-//
-// Definition of the SocketConnector class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketConnector_INCLUDED
-#define Net_SocketConnector_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketNotification.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Observer.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-template <class ServiceHandler>
-class SocketConnector
- /// This class implements the Connector part of the
- /// Acceptor-Connector design pattern.
- ///
- /// The Acceptor-Connector pattern has been described in the book
- /// "Pattern Languages of Program Design 3", edited by Robert Martin,
- /// Frank Buschmann and Dirk Riehle (Addison Wesley, 1997).
- ///
- /// The Acceptor-Connector design pattern decouples connection
- /// establishment and service initialization in a distributed system
- /// from the processing performed once a service is initialized.
- /// This decoupling is achieved with three components: Acceptors,
- /// Connectors and Service Handlers.
- /// The Connector actively establishes a connection with a remote
- /// server socket (usually managed by an Acceptor) and initializes
- /// a Service Handler to manage the connection.
- ///
- /// The SocketConnector sets up a StreamSocket, initiates a non-blocking
- /// connect operation and registers itself for ReadableNotification, WritableNotification
- /// and ErrorNotification. ReadableNotification or WritableNotification denote the successful
- /// establishment of the connection.
- ///
- /// When the StreamSocket becomes readable or writeable, the SocketConnector
- /// creates a ServiceHandler to service the connection and unregisters
- /// itself.
- ///
- /// In case of an error (ErrorNotification), the SocketConnector unregisters itself
- /// and calls the onError() method, which can be overridden by subclasses
- /// to perform custom error handling.
- ///
- /// The ServiceHandler class must provide a constructor that
- /// takes a StreamSocket and a SocketReactor as arguments,
- /// e.g.:
- /// MyServiceHandler(const StreamSocket& socket, ServiceReactor& reactor)
- ///
- /// When the ServiceHandler is done, it must destroy itself.
- ///
- /// Subclasses can override the createServiceHandler() factory method
- /// if special steps are necessary to create a ServiceHandler object.
-{
-public:
- explicit SocketConnector(SocketAddress& address):
- _pReactor(0)
- /// Creates a SocketConnector, using the given Socket.
- {
- _socket.connectNB(address);
- }
-
- SocketConnector(SocketAddress& address, SocketReactor& reactor):
- _pReactor(0)
- /// Creates an acceptor, using the given ServerSocket.
- /// The SocketConnector registers itself with the given SocketReactor.
- {
- _socket.connectNB(address);
- registerConnector(reactor);
- }
-
- virtual ~SocketConnector()
- /// Destroys the SocketConnector.
- {
- try
- {
- unregisterConnector();
- }
- catch (...)
- {
- poco_unexpected();
- }
- }
-
- virtual void registerConnector(SocketReactor& reactor)
- /// Registers the SocketConnector with a SocketReactor.
- ///
- /// A subclass can override this and, for example, also register
- /// an event handler for a timeout event.
- ///
- /// The overriding method must call the baseclass implementation first.
- {
- _pReactor = &reactor;
- _pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, ReadableNotification>(*this, &SocketConnector::onReadable));
- _pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, WritableNotification>(*this, &SocketConnector::onWritable));
- _pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, ErrorNotification>(*this, &SocketConnector::onError));
- }
-
- virtual void unregisterConnector()
- /// Unregisters the SocketConnector.
- ///
- /// A subclass can override this and, for example, also unregister
- /// its event handler for a timeout event.
- ///
- /// The overriding method must call the baseclass implementation first.
- {
- if (_pReactor)
- {
- _pReactor->removeEventHandler(_socket, Poco::Observer<SocketConnector, ReadableNotification>(*this, &SocketConnector::onReadable));
- _pReactor->removeEventHandler(_socket, Poco::Observer<SocketConnector, WritableNotification>(*this, &SocketConnector::onWritable));
- _pReactor->removeEventHandler(_socket, Poco::Observer<SocketConnector, ErrorNotification>(*this, &SocketConnector::onError));
- }
- }
-
- void onReadable(ReadableNotification* pNotification)
- {
- pNotification->release();
- int err = _socket.impl()->socketError();
- if (err)
- {
- onError(err);
- unregisterConnector();
- }
- else
- {
- onConnect();
- }
- }
-
- void onWritable(WritableNotification* pNotification)
- {
- pNotification->release();
- onConnect();
- }
-
- void onConnect()
- {
- _socket.setBlocking(true);
- createServiceHandler();
- unregisterConnector();
- }
-
- void onError(ErrorNotification* pNotification)
- {
- pNotification->release();
- onError(_socket.impl()->socketError());
- unregisterConnector();
- }
-
-protected:
- virtual ServiceHandler* createServiceHandler()
- /// Create and initialize a new ServiceHandler instance.
- ///
- /// Subclasses can override this method.
- {
- return new ServiceHandler(_socket, *_pReactor);
- }
-
- virtual void onError(int errorCode)
- /// Called when the socket cannot be connected.
- ///
- /// Subclasses can override this method.
- {
- }
-
- SocketReactor* reactor()
- /// Returns a pointer to the SocketReactor where
- /// this SocketConnector is registered.
- ///
- /// The pointer may be null.
- {
- return _pReactor;
- }
-
- StreamSocket& socket()
- /// Returns a reference to the SocketConnector's socket.
- {
- return _socket;
- }
-
-private:
- SocketConnector();
- SocketConnector(const SocketConnector&);
- SocketConnector& operator = (const SocketConnector&);
-
- StreamSocket _socket;
- SocketReactor* _pReactor;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketConnector_INCLUDED
+//
+// SocketConnector.h
+//
+// Library: Net
+// Package: Reactor
+// Module: SocketConnector
+//
+// Definition of the SocketConnector class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketConnector_INCLUDED
+#define Net_SocketConnector_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketNotification.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Observer.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+template <class ServiceHandler>
+class SocketConnector
+ /// This class implements the Connector part of the
+ /// Acceptor-Connector design pattern.
+ ///
+ /// The Acceptor-Connector pattern has been described in the book
+ /// "Pattern Languages of Program Design 3", edited by Robert Martin,
+ /// Frank Buschmann and Dirk Riehle (Addison Wesley, 1997).
+ ///
+ /// The Acceptor-Connector design pattern decouples connection
+ /// establishment and service initialization in a distributed system
+ /// from the processing performed once a service is initialized.
+ /// This decoupling is achieved with three components: Acceptors,
+ /// Connectors and Service Handlers.
+ /// The Connector actively establishes a connection with a remote
+ /// server socket (usually managed by an Acceptor) and initializes
+ /// a Service Handler to manage the connection.
+ ///
+ /// The SocketConnector sets up a StreamSocket, initiates a non-blocking
+ /// connect operation and registers itself for ReadableNotification, WritableNotification
+ /// and ErrorNotification. ReadableNotification or WritableNotification denote the successful
+ /// establishment of the connection.
+ ///
+ /// When the StreamSocket becomes readable or writeable, the SocketConnector
+ /// creates a ServiceHandler to service the connection and unregisters
+ /// itself.
+ ///
+ /// In case of an error (ErrorNotification), the SocketConnector unregisters itself
+ /// and calls the onError() method, which can be overridden by subclasses
+ /// to perform custom error handling.
+ ///
+ /// The ServiceHandler class must provide a constructor that
+ /// takes a StreamSocket and a SocketReactor as arguments,
+ /// e.g.:
+ /// MyServiceHandler(const StreamSocket& socket, ServiceReactor& reactor)
+ ///
+ /// When the ServiceHandler is done, it must destroy itself.
+ ///
+ /// Subclasses can override the createServiceHandler() factory method
+ /// if special steps are necessary to create a ServiceHandler object.
+{
+public:
+ explicit SocketConnector(SocketAddress& address):
+ _pReactor(0)
+ /// Creates a SocketConnector, using the given Socket.
+ {
+ _socket.connectNB(address);
+ }
+
+ SocketConnector(SocketAddress& address, SocketReactor& reactor):
+ _pReactor(0)
+ /// Creates an acceptor, using the given ServerSocket.
+ /// The SocketConnector registers itself with the given SocketReactor.
+ {
+ _socket.connectNB(address);
+ registerConnector(reactor);
+ }
+
+ virtual ~SocketConnector()
+ /// Destroys the SocketConnector.
+ {
+ try
+ {
+ unregisterConnector();
+ }
+ catch (...)
+ {
+ poco_unexpected();
+ }
+ }
+
+ virtual void registerConnector(SocketReactor& reactor)
+ /// Registers the SocketConnector with a SocketReactor.
+ ///
+ /// A subclass can override this and, for example, also register
+ /// an event handler for a timeout event.
+ ///
+ /// The overriding method must call the baseclass implementation first.
+ {
+ _pReactor = &reactor;
+ _pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, ReadableNotification>(*this, &SocketConnector::onReadable));
+ _pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, WritableNotification>(*this, &SocketConnector::onWritable));
+ _pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, ErrorNotification>(*this, &SocketConnector::onError));
+ }
+
+ virtual void unregisterConnector()
+ /// Unregisters the SocketConnector.
+ ///
+ /// A subclass can override this and, for example, also unregister
+ /// its event handler for a timeout event.
+ ///
+ /// The overriding method must call the baseclass implementation first.
+ {
+ if (_pReactor)
+ {
+ _pReactor->removeEventHandler(_socket, Poco::Observer<SocketConnector, ReadableNotification>(*this, &SocketConnector::onReadable));
+ _pReactor->removeEventHandler(_socket, Poco::Observer<SocketConnector, WritableNotification>(*this, &SocketConnector::onWritable));
+ _pReactor->removeEventHandler(_socket, Poco::Observer<SocketConnector, ErrorNotification>(*this, &SocketConnector::onError));
+ }
+ }
+
+ void onReadable(ReadableNotification* pNotification)
+ {
+ pNotification->release();
+ int err = _socket.impl()->socketError();
+ if (err)
+ {
+ onError(err);
+ unregisterConnector();
+ }
+ else
+ {
+ onConnect();
+ }
+ }
+
+ void onWritable(WritableNotification* pNotification)
+ {
+ pNotification->release();
+ onConnect();
+ }
+
+ void onConnect()
+ {
+ _socket.setBlocking(true);
+ createServiceHandler();
+ unregisterConnector();
+ }
+
+ void onError(ErrorNotification* pNotification)
+ {
+ pNotification->release();
+ onError(_socket.impl()->socketError());
+ unregisterConnector();
+ }
+
+protected:
+ virtual ServiceHandler* createServiceHandler()
+ /// Create and initialize a new ServiceHandler instance.
+ ///
+ /// Subclasses can override this method.
+ {
+ return new ServiceHandler(_socket, *_pReactor);
+ }
+
+ virtual void onError(int errorCode)
+ /// Called when the socket cannot be connected.
+ ///
+ /// Subclasses can override this method.
+ {
+ }
+
+ SocketReactor* reactor()
+ /// Returns a pointer to the SocketReactor where
+ /// this SocketConnector is registered.
+ ///
+ /// The pointer may be null.
+ {
+ return _pReactor;
+ }
+
+ StreamSocket& socket()
+ /// Returns a reference to the SocketConnector's socket.
+ {
+ return _socket;
+ }
+
+private:
+ SocketConnector();
+ SocketConnector(const SocketConnector&);
+ SocketConnector& operator = (const SocketConnector&);
+
+ StreamSocket _socket;
+ SocketReactor* _pReactor;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketConnector_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketDefs.h b/contrib/libs/poco/Net/include/Poco/Net/SocketDefs.h
index 194e9f0a9a..ef62155389 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketDefs.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketDefs.h
@@ -1,385 +1,385 @@
-//
-// SocketDefs.h
-//
-// Library: Net
-// Package: NetCore
-// Module: SocketDefs
-//
-// Include platform-specific header files for sockets.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketDefs_INCLUDED
-#define Net_SocketDefs_INCLUDED
-
-
-#define POCO_ENOERR 0
-
-
-#if defined(POCO_OS_FAMILY_WINDOWS)
- #include "Poco/UnWindows.h"
- #include <winsock2.h>
- #include <ws2tcpip.h>
- #define POCO_INVALID_SOCKET INVALID_SOCKET
- #define poco_socket_t SOCKET
- #define poco_socklen_t int
- #define poco_ioctl_request_t int
- #define poco_closesocket(s) closesocket(s)
- #define POCO_EINTR WSAEINTR
- #define POCO_EACCES WSAEACCES
- #define POCO_EFAULT WSAEFAULT
- #define POCO_EINVAL WSAEINVAL
- #define POCO_EMFILE WSAEMFILE
- #define POCO_EAGAIN WSAEWOULDBLOCK
- #define POCO_EWOULDBLOCK WSAEWOULDBLOCK
- #define POCO_EINPROGRESS WSAEINPROGRESS
- #define POCO_EALREADY WSAEALREADY
- #define POCO_ENOTSOCK WSAENOTSOCK
- #define POCO_EDESTADDRREQ WSAEDESTADDRREQ
- #define POCO_EMSGSIZE WSAEMSGSIZE
- #define POCO_EPROTOTYPE WSAEPROTOTYPE
- #define POCO_ENOPROTOOPT WSAENOPROTOOPT
- #define POCO_EPROTONOSUPPORT WSAEPROTONOSUPPORT
- #define POCO_ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
- #define POCO_ENOTSUP WSAEOPNOTSUPP
- #define POCO_EPFNOSUPPORT WSAEPFNOSUPPORT
- #define POCO_EAFNOSUPPORT WSAEAFNOSUPPORT
- #define POCO_EADDRINUSE WSAEADDRINUSE
- #define POCO_EADDRNOTAVAIL WSAEADDRNOTAVAIL
- #define POCO_ENETDOWN WSAENETDOWN
- #define POCO_ENETUNREACH WSAENETUNREACH
- #define POCO_ENETRESET WSAENETRESET
- #define POCO_ECONNABORTED WSAECONNABORTED
- #define POCO_ECONNRESET WSAECONNRESET
- #define POCO_ENOBUFS WSAENOBUFS
- #define POCO_EISCONN WSAEISCONN
- #define POCO_ENOTCONN WSAENOTCONN
- #define POCO_ESHUTDOWN WSAESHUTDOWN
- #define POCO_ETIMEDOUT WSAETIMEDOUT
- #define POCO_ECONNREFUSED WSAECONNREFUSED
- #define POCO_EHOSTDOWN WSAEHOSTDOWN
- #define POCO_EHOSTUNREACH WSAEHOSTUNREACH
- #define POCO_ESYSNOTREADY WSASYSNOTREADY
- #define POCO_ENOTINIT WSANOTINITIALISED
- #define POCO_HOST_NOT_FOUND WSAHOST_NOT_FOUND
- #define POCO_TRY_AGAIN WSATRY_AGAIN
- #define POCO_NO_RECOVERY WSANO_RECOVERY
- #define POCO_NO_DATA WSANO_DATA
- #ifndef ADDRESS_FAMILY
- #define ADDRESS_FAMILY USHORT
- #endif
-#elif defined(POCO_VXWORKS)
- #include <hostLib.h>
- #error #include <ifLib.h>
- #error #include <inetLib.h>
- #include <ioLib.h>
- #include <resolvLib.h>
- #include <types.h>
- #include <socket.h>
- #include <netinet/tcp.h>
- #define POCO_INVALID_SOCKET -1
- #define poco_socket_t int
- #define poco_socklen_t int
- #define poco_ioctl_request_t int
- #define poco_closesocket(s) ::close(s)
- #define POCO_EINTR EINTR
- #define POCO_EACCES EACCES
- #define POCO_EFAULT EFAULT
- #define POCO_EINVAL EINVAL
- #define POCO_EMFILE EMFILE
- #define POCO_EAGAIN EAGAIN
- #define POCO_EWOULDBLOCK EWOULDBLOCK
- #define POCO_EINPROGRESS EINPROGRESS
- #define POCO_EALREADY EALREADY
- #define POCO_ENOTSOCK ENOTSOCK
- #define POCO_EDESTADDRREQ EDESTADDRREQ
- #define POCO_EMSGSIZE EMSGSIZE
- #define POCO_EPROTOTYPE EPROTOTYPE
- #define POCO_ENOPROTOOPT ENOPROTOOPT
- #define POCO_EPROTONOSUPPORT EPROTONOSUPPORT
- #define POCO_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
- #define POCO_ENOTSUP ENOTSUP
- #define POCO_EPFNOSUPPORT EPFNOSUPPORT
- #define POCO_EAFNOSUPPORT EAFNOSUPPORT
- #define POCO_EADDRINUSE EADDRINUSE
- #define POCO_EADDRNOTAVAIL EADDRNOTAVAIL
- #define POCO_ENETDOWN ENETDOWN
- #define POCO_ENETUNREACH ENETUNREACH
- #define POCO_ENETRESET ENETRESET
- #define POCO_ECONNABORTED ECONNABORTED
- #define POCO_ECONNRESET ECONNRESET
- #define POCO_ENOBUFS ENOBUFS
- #define POCO_EISCONN EISCONN
- #define POCO_ENOTCONN ENOTCONN
- #define POCO_ESHUTDOWN ESHUTDOWN
- #define POCO_ETIMEDOUT ETIMEDOUT
- #define POCO_ECONNREFUSED ECONNREFUSED
- #define POCO_EHOSTDOWN EHOSTDOWN
- #define POCO_EHOSTUNREACH EHOSTUNREACH
- #define POCO_ESYSNOTREADY -4
- #define POCO_ENOTINIT -5
- #define POCO_HOST_NOT_FOUND HOST_NOT_FOUND
- #define POCO_TRY_AGAIN TRY_AGAIN
- #define POCO_NO_RECOVERY NO_RECOVERY
- #define POCO_NO_DATA NO_DATA
-#elif defined(POCO_OS_FAMILY_UNIX)
- #include <unistd.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <fcntl.h>
- #if POCO_OS != POCO_OS_HPUX
- #include <sys/select.h>
- #endif
- #include <sys/ioctl.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <netinet/tcp.h>
- #include <netdb.h>
- #if defined(POCO_OS_FAMILY_UNIX)
- #if (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID)
- // Net/src/NetworkInterface.cpp changed #include <linux/if.h> to #include <net/if.h>
- // no more conflict, can use #include <net/if.h> here
- #include <net/if.h>
- #elif (POCO_OS == POCO_OS_HPUX)
- extern "C"
- {
- #include <net/if.h>
- }
- #else
- #include <net/if.h>
- #endif
- #endif
- #if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_MAC_OS_X)
- #include <sys/sockio.h>
- #include <sys/filio.h>
- #endif
- #define POCO_INVALID_SOCKET -1
- #define poco_socket_t int
- #define poco_socklen_t socklen_t
- #define poco_fcntl_request_t int
- #if defined(POCO_OS_FAMILY_BSD)
- #define poco_ioctl_request_t unsigned long
- #else
- #define poco_ioctl_request_t int
- #endif
- #define poco_closesocket(s) ::close(s)
- #define POCO_EINTR EINTR
- #define POCO_EACCES EACCES
- #define POCO_EFAULT EFAULT
- #define POCO_EINVAL EINVAL
- #define POCO_EMFILE EMFILE
- #define POCO_EAGAIN EAGAIN
- #define POCO_EWOULDBLOCK EWOULDBLOCK
- #define POCO_EINPROGRESS EINPROGRESS
- #define POCO_EALREADY EALREADY
- #define POCO_ENOTSOCK ENOTSOCK
- #define POCO_EDESTADDRREQ EDESTADDRREQ
- #define POCO_EMSGSIZE EMSGSIZE
- #define POCO_EPROTOTYPE EPROTOTYPE
- #define POCO_ENOPROTOOPT ENOPROTOOPT
- #define POCO_EPROTONOSUPPORT EPROTONOSUPPORT
- #if defined(ESOCKTNOSUPPORT)
- #define POCO_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
- #else
- #define POCO_ESOCKTNOSUPPORT -1
- #endif
- #define POCO_ENOTSUP ENOTSUP
- #define POCO_EPFNOSUPPORT EPFNOSUPPORT
- #define POCO_EAFNOSUPPORT EAFNOSUPPORT
- #define POCO_EADDRINUSE EADDRINUSE
- #define POCO_EADDRNOTAVAIL EADDRNOTAVAIL
- #define POCO_ENETDOWN ENETDOWN
- #define POCO_ENETUNREACH ENETUNREACH
- #define POCO_ENETRESET ENETRESET
- #define POCO_ECONNABORTED ECONNABORTED
- #define POCO_ECONNRESET ECONNRESET
- #define POCO_ENOBUFS ENOBUFS
- #define POCO_EISCONN EISCONN
- #define POCO_ENOTCONN ENOTCONN
- #if defined(ESHUTDOWN)
- #define POCO_ESHUTDOWN ESHUTDOWN
- #else
- #define POCO_ESHUTDOWN -2
- #endif
- #define POCO_ETIMEDOUT ETIMEDOUT
- #define POCO_ECONNREFUSED ECONNREFUSED
- #if defined(EHOSTDOWN)
- #define POCO_EHOSTDOWN EHOSTDOWN
- #else
- #define POCO_EHOSTDOWN -3
- #endif
- #define POCO_EHOSTUNREACH EHOSTUNREACH
- #define POCO_ESYSNOTREADY -4
- #define POCO_ENOTINIT -5
- #define POCO_HOST_NOT_FOUND HOST_NOT_FOUND
- #define POCO_TRY_AGAIN TRY_AGAIN
- #define POCO_NO_RECOVERY NO_RECOVERY
- #define POCO_NO_DATA NO_DATA
-#endif
-
-
-#if defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_TRU64) || (POCO_OS == POCO_OS_AIX) || (POCO_OS == POCO_OS_IRIX) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_VXWORKS)
- #define POCO_HAVE_SALEN 1
-#endif
-
-
-#if POCO_OS != POCO_OS_VXWORKS && !defined(POCO_NET_NO_ADDRINFO)
- #define POCO_HAVE_ADDRINFO 1
-#endif
-
-
-#if POCO_OS == POCO_OS_LINUX
- #define POCO_HAVE_ADDRINFO_A 1
-#endif
-
-
-/// Without this option, Poco library will restart recv after EINTR,
-/// but it doesn't update socket receive timeout that leads to infinite wait
-/// when query profiler is activated. The issue persisted in delayed_replica_failover
-/// integration test after we enabled query profiler by default.
-#define POCO_BROKEN_TIMEOUTS 1
-
-
-#if defined(POCO_HAVE_ADDRINFO)
- #ifndef AI_PASSIVE
- #define AI_PASSIVE 0
- #endif
- #ifndef AI_CANONNAME
- #define AI_CANONNAME 0
- #endif
- #ifndef AI_NUMERICHOST
- #define AI_NUMERICHOST 0
- #endif
- #ifndef AI_NUMERICSERV
- #define AI_NUMERICSERV 0
- #endif
- #ifndef AI_ALL
- #define AI_ALL 0
- #endif
- #ifndef AI_ADDRCONFIG
- #define AI_ADDRCONFIG 0
- #endif
- #ifndef AI_V4MAPPED
- #define AI_V4MAPPED 0
- #endif
-#endif
-
-
-#if defined(POCO_HAVE_SALEN)
- #define poco_set_sa_len(pSA, len) (pSA)->sa_len = (len)
- #define poco_set_sin_len(pSA) (pSA)->sin_len = sizeof(struct sockaddr_in)
- #if defined(POCO_HAVE_IPv6)
- #define poco_set_sin6_len(pSA) (pSA)->sin6_len = sizeof(struct sockaddr_in6)
- #endif
- #if defined(POCO_OS_FAMILY_UNIX)
- #define poco_set_sun_len(pSA, len) (pSA)->sun_len = (len)
- #endif
-#else
- #define poco_set_sa_len(pSA, len) (void) 0
- #define poco_set_sin_len(pSA) (void) 0
- #define poco_set_sin6_len(pSA) (void) 0
- #define poco_set_sun_len(pSA, len) (void) 0
-#endif
-
-
-#ifndef INADDR_NONE
- #define INADDR_NONE 0xffffffff
-#endif
-
-#ifndef INADDR_ANY
- #define INADDR_ANY 0x00000000
-#endif
-
-#ifndef INADDR_BROADCAST
- #define INADDR_BROADCAST 0xffffffff
-#endif
-
-#ifndef INADDR_LOOPBACK
- #define INADDR_LOOPBACK 0x7f000001
-#endif
-
-#ifndef INADDR_UNSPEC_GROUP
- #define INADDR_UNSPEC_GROUP 0xe0000000
-#endif
-
-#ifndef INADDR_ALLHOSTS_GROUP
- #define INADDR_ALLHOSTS_GROUP 0xe0000001
-#endif
-
-#ifndef INADDR_ALLRTRS_GROUP
- #define INADDR_ALLRTRS_GROUP 0xe0000002
-#endif
-
-#ifndef INADDR_MAX_LOCAL_GROUP
- #define INADDR_MAX_LOCAL_GROUP 0xe00000ff
-#endif
-
-#if defined(POCO_ARCH_BIG_ENDIAN)
- #define poco_ntoh_16(x) (x)
- #define poco_ntoh_32(x) (x)
-#else
- #define poco_ntoh_16(x) \
- ((((x) >> 8) & 0x00ff) | (((x) << 8) & 0xff00))
- #define poco_ntoh_32(x) \
- ((((x) >> 24) & 0x000000ff) | (((x) >> 8) & 0x0000ff00) | (((x) << 8) & 0x00ff0000) | (((x) << 24) & 0xff000000))
-#endif
-#define poco_hton_16(x) poco_ntoh_16(x)
-#define poco_hton_32(x) poco_ntoh_32(x)
-
-
-#if !defined(s6_addr16)
- #if defined(POCO_OS_FAMILY_WINDOWS)
- #define s6_addr16 u.Word
- #else
- #define s6_addr16 __u6_addr.__u6_addr16
- #endif
-#endif
-
-
-#if !defined(s6_addr32)
- #if defined(POCO_OS_FAMILY_UNIX)
- #if (POCO_OS == POCO_OS_SOLARIS)
- #define s6_addr32 _S6_un._S6_u32
- #else
- #define s6_addr32 __u6_addr.__u6_addr32
- #endif
- #endif
-#endif
-
-
-namespace Poco {
-namespace Net {
-
-
-struct AddressFamily
- /// AddressFamily::Family replaces the previously used IPAddress::Family
- /// enumeration and is now used for IPAddress::Family and SocketAddress::Family.
-{
- enum Family
- /// Possible address families for socket addresses.
- {
- IPv4,
- /// IPv4 address family.
- #if defined(POCO_HAVE_IPv6)
- IPv6,
- /// IPv6 address family.
- #endif
- #if defined(POCO_OS_FAMILY_UNIX)
- UNIX_LOCAL
- /// UNIX domain socket address family. Available on UNIX/POSIX platforms only.
- #endif
- };
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketDefs_INCLUDED
+//
+// SocketDefs.h
+//
+// Library: Net
+// Package: NetCore
+// Module: SocketDefs
+//
+// Include platform-specific header files for sockets.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketDefs_INCLUDED
+#define Net_SocketDefs_INCLUDED
+
+
+#define POCO_ENOERR 0
+
+
+#if defined(POCO_OS_FAMILY_WINDOWS)
+ #include "Poco/UnWindows.h"
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
+ #define POCO_INVALID_SOCKET INVALID_SOCKET
+ #define poco_socket_t SOCKET
+ #define poco_socklen_t int
+ #define poco_ioctl_request_t int
+ #define poco_closesocket(s) closesocket(s)
+ #define POCO_EINTR WSAEINTR
+ #define POCO_EACCES WSAEACCES
+ #define POCO_EFAULT WSAEFAULT
+ #define POCO_EINVAL WSAEINVAL
+ #define POCO_EMFILE WSAEMFILE
+ #define POCO_EAGAIN WSAEWOULDBLOCK
+ #define POCO_EWOULDBLOCK WSAEWOULDBLOCK
+ #define POCO_EINPROGRESS WSAEINPROGRESS
+ #define POCO_EALREADY WSAEALREADY
+ #define POCO_ENOTSOCK WSAENOTSOCK
+ #define POCO_EDESTADDRREQ WSAEDESTADDRREQ
+ #define POCO_EMSGSIZE WSAEMSGSIZE
+ #define POCO_EPROTOTYPE WSAEPROTOTYPE
+ #define POCO_ENOPROTOOPT WSAENOPROTOOPT
+ #define POCO_EPROTONOSUPPORT WSAEPROTONOSUPPORT
+ #define POCO_ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
+ #define POCO_ENOTSUP WSAEOPNOTSUPP
+ #define POCO_EPFNOSUPPORT WSAEPFNOSUPPORT
+ #define POCO_EAFNOSUPPORT WSAEAFNOSUPPORT
+ #define POCO_EADDRINUSE WSAEADDRINUSE
+ #define POCO_EADDRNOTAVAIL WSAEADDRNOTAVAIL
+ #define POCO_ENETDOWN WSAENETDOWN
+ #define POCO_ENETUNREACH WSAENETUNREACH
+ #define POCO_ENETRESET WSAENETRESET
+ #define POCO_ECONNABORTED WSAECONNABORTED
+ #define POCO_ECONNRESET WSAECONNRESET
+ #define POCO_ENOBUFS WSAENOBUFS
+ #define POCO_EISCONN WSAEISCONN
+ #define POCO_ENOTCONN WSAENOTCONN
+ #define POCO_ESHUTDOWN WSAESHUTDOWN
+ #define POCO_ETIMEDOUT WSAETIMEDOUT
+ #define POCO_ECONNREFUSED WSAECONNREFUSED
+ #define POCO_EHOSTDOWN WSAEHOSTDOWN
+ #define POCO_EHOSTUNREACH WSAEHOSTUNREACH
+ #define POCO_ESYSNOTREADY WSASYSNOTREADY
+ #define POCO_ENOTINIT WSANOTINITIALISED
+ #define POCO_HOST_NOT_FOUND WSAHOST_NOT_FOUND
+ #define POCO_TRY_AGAIN WSATRY_AGAIN
+ #define POCO_NO_RECOVERY WSANO_RECOVERY
+ #define POCO_NO_DATA WSANO_DATA
+ #ifndef ADDRESS_FAMILY
+ #define ADDRESS_FAMILY USHORT
+ #endif
+#elif defined(POCO_VXWORKS)
+ #include <hostLib.h>
+ #error #include <ifLib.h>
+ #error #include <inetLib.h>
+ #include <ioLib.h>
+ #include <resolvLib.h>
+ #include <types.h>
+ #include <socket.h>
+ #include <netinet/tcp.h>
+ #define POCO_INVALID_SOCKET -1
+ #define poco_socket_t int
+ #define poco_socklen_t int
+ #define poco_ioctl_request_t int
+ #define poco_closesocket(s) ::close(s)
+ #define POCO_EINTR EINTR
+ #define POCO_EACCES EACCES
+ #define POCO_EFAULT EFAULT
+ #define POCO_EINVAL EINVAL
+ #define POCO_EMFILE EMFILE
+ #define POCO_EAGAIN EAGAIN
+ #define POCO_EWOULDBLOCK EWOULDBLOCK
+ #define POCO_EINPROGRESS EINPROGRESS
+ #define POCO_EALREADY EALREADY
+ #define POCO_ENOTSOCK ENOTSOCK
+ #define POCO_EDESTADDRREQ EDESTADDRREQ
+ #define POCO_EMSGSIZE EMSGSIZE
+ #define POCO_EPROTOTYPE EPROTOTYPE
+ #define POCO_ENOPROTOOPT ENOPROTOOPT
+ #define POCO_EPROTONOSUPPORT EPROTONOSUPPORT
+ #define POCO_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
+ #define POCO_ENOTSUP ENOTSUP
+ #define POCO_EPFNOSUPPORT EPFNOSUPPORT
+ #define POCO_EAFNOSUPPORT EAFNOSUPPORT
+ #define POCO_EADDRINUSE EADDRINUSE
+ #define POCO_EADDRNOTAVAIL EADDRNOTAVAIL
+ #define POCO_ENETDOWN ENETDOWN
+ #define POCO_ENETUNREACH ENETUNREACH
+ #define POCO_ENETRESET ENETRESET
+ #define POCO_ECONNABORTED ECONNABORTED
+ #define POCO_ECONNRESET ECONNRESET
+ #define POCO_ENOBUFS ENOBUFS
+ #define POCO_EISCONN EISCONN
+ #define POCO_ENOTCONN ENOTCONN
+ #define POCO_ESHUTDOWN ESHUTDOWN
+ #define POCO_ETIMEDOUT ETIMEDOUT
+ #define POCO_ECONNREFUSED ECONNREFUSED
+ #define POCO_EHOSTDOWN EHOSTDOWN
+ #define POCO_EHOSTUNREACH EHOSTUNREACH
+ #define POCO_ESYSNOTREADY -4
+ #define POCO_ENOTINIT -5
+ #define POCO_HOST_NOT_FOUND HOST_NOT_FOUND
+ #define POCO_TRY_AGAIN TRY_AGAIN
+ #define POCO_NO_RECOVERY NO_RECOVERY
+ #define POCO_NO_DATA NO_DATA
+#elif defined(POCO_OS_FAMILY_UNIX)
+ #include <unistd.h>
+ #include <errno.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <fcntl.h>
+ #if POCO_OS != POCO_OS_HPUX
+ #include <sys/select.h>
+ #endif
+ #include <sys/ioctl.h>
+ #include <arpa/inet.h>
+ #include <netinet/in.h>
+ #include <netinet/tcp.h>
+ #include <netdb.h>
+ #if defined(POCO_OS_FAMILY_UNIX)
+ #if (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID)
+ // Net/src/NetworkInterface.cpp changed #include <linux/if.h> to #include <net/if.h>
+ // no more conflict, can use #include <net/if.h> here
+ #include <net/if.h>
+ #elif (POCO_OS == POCO_OS_HPUX)
+ extern "C"
+ {
+ #include <net/if.h>
+ }
+ #else
+ #include <net/if.h>
+ #endif
+ #endif
+ #if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_MAC_OS_X)
+ #include <sys/sockio.h>
+ #include <sys/filio.h>
+ #endif
+ #define POCO_INVALID_SOCKET -1
+ #define poco_socket_t int
+ #define poco_socklen_t socklen_t
+ #define poco_fcntl_request_t int
+ #if defined(POCO_OS_FAMILY_BSD)
+ #define poco_ioctl_request_t unsigned long
+ #else
+ #define poco_ioctl_request_t int
+ #endif
+ #define poco_closesocket(s) ::close(s)
+ #define POCO_EINTR EINTR
+ #define POCO_EACCES EACCES
+ #define POCO_EFAULT EFAULT
+ #define POCO_EINVAL EINVAL
+ #define POCO_EMFILE EMFILE
+ #define POCO_EAGAIN EAGAIN
+ #define POCO_EWOULDBLOCK EWOULDBLOCK
+ #define POCO_EINPROGRESS EINPROGRESS
+ #define POCO_EALREADY EALREADY
+ #define POCO_ENOTSOCK ENOTSOCK
+ #define POCO_EDESTADDRREQ EDESTADDRREQ
+ #define POCO_EMSGSIZE EMSGSIZE
+ #define POCO_EPROTOTYPE EPROTOTYPE
+ #define POCO_ENOPROTOOPT ENOPROTOOPT
+ #define POCO_EPROTONOSUPPORT EPROTONOSUPPORT
+ #if defined(ESOCKTNOSUPPORT)
+ #define POCO_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
+ #else
+ #define POCO_ESOCKTNOSUPPORT -1
+ #endif
+ #define POCO_ENOTSUP ENOTSUP
+ #define POCO_EPFNOSUPPORT EPFNOSUPPORT
+ #define POCO_EAFNOSUPPORT EAFNOSUPPORT
+ #define POCO_EADDRINUSE EADDRINUSE
+ #define POCO_EADDRNOTAVAIL EADDRNOTAVAIL
+ #define POCO_ENETDOWN ENETDOWN
+ #define POCO_ENETUNREACH ENETUNREACH
+ #define POCO_ENETRESET ENETRESET
+ #define POCO_ECONNABORTED ECONNABORTED
+ #define POCO_ECONNRESET ECONNRESET
+ #define POCO_ENOBUFS ENOBUFS
+ #define POCO_EISCONN EISCONN
+ #define POCO_ENOTCONN ENOTCONN
+ #if defined(ESHUTDOWN)
+ #define POCO_ESHUTDOWN ESHUTDOWN
+ #else
+ #define POCO_ESHUTDOWN -2
+ #endif
+ #define POCO_ETIMEDOUT ETIMEDOUT
+ #define POCO_ECONNREFUSED ECONNREFUSED
+ #if defined(EHOSTDOWN)
+ #define POCO_EHOSTDOWN EHOSTDOWN
+ #else
+ #define POCO_EHOSTDOWN -3
+ #endif
+ #define POCO_EHOSTUNREACH EHOSTUNREACH
+ #define POCO_ESYSNOTREADY -4
+ #define POCO_ENOTINIT -5
+ #define POCO_HOST_NOT_FOUND HOST_NOT_FOUND
+ #define POCO_TRY_AGAIN TRY_AGAIN
+ #define POCO_NO_RECOVERY NO_RECOVERY
+ #define POCO_NO_DATA NO_DATA
+#endif
+
+
+#if defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_TRU64) || (POCO_OS == POCO_OS_AIX) || (POCO_OS == POCO_OS_IRIX) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_VXWORKS)
+ #define POCO_HAVE_SALEN 1
+#endif
+
+
+#if POCO_OS != POCO_OS_VXWORKS && !defined(POCO_NET_NO_ADDRINFO)
+ #define POCO_HAVE_ADDRINFO 1
+#endif
+
+
+#if POCO_OS == POCO_OS_LINUX
+ #define POCO_HAVE_ADDRINFO_A 1
+#endif
+
+
+/// Without this option, Poco library will restart recv after EINTR,
+/// but it doesn't update socket receive timeout that leads to infinite wait
+/// when query profiler is activated. The issue persisted in delayed_replica_failover
+/// integration test after we enabled query profiler by default.
+#define POCO_BROKEN_TIMEOUTS 1
+
+
+#if defined(POCO_HAVE_ADDRINFO)
+ #ifndef AI_PASSIVE
+ #define AI_PASSIVE 0
+ #endif
+ #ifndef AI_CANONNAME
+ #define AI_CANONNAME 0
+ #endif
+ #ifndef AI_NUMERICHOST
+ #define AI_NUMERICHOST 0
+ #endif
+ #ifndef AI_NUMERICSERV
+ #define AI_NUMERICSERV 0
+ #endif
+ #ifndef AI_ALL
+ #define AI_ALL 0
+ #endif
+ #ifndef AI_ADDRCONFIG
+ #define AI_ADDRCONFIG 0
+ #endif
+ #ifndef AI_V4MAPPED
+ #define AI_V4MAPPED 0
+ #endif
+#endif
+
+
+#if defined(POCO_HAVE_SALEN)
+ #define poco_set_sa_len(pSA, len) (pSA)->sa_len = (len)
+ #define poco_set_sin_len(pSA) (pSA)->sin_len = sizeof(struct sockaddr_in)
+ #if defined(POCO_HAVE_IPv6)
+ #define poco_set_sin6_len(pSA) (pSA)->sin6_len = sizeof(struct sockaddr_in6)
+ #endif
+ #if defined(POCO_OS_FAMILY_UNIX)
+ #define poco_set_sun_len(pSA, len) (pSA)->sun_len = (len)
+ #endif
+#else
+ #define poco_set_sa_len(pSA, len) (void) 0
+ #define poco_set_sin_len(pSA) (void) 0
+ #define poco_set_sin6_len(pSA) (void) 0
+ #define poco_set_sun_len(pSA, len) (void) 0
+#endif
+
+
+#ifndef INADDR_NONE
+ #define INADDR_NONE 0xffffffff
+#endif
+
+#ifndef INADDR_ANY
+ #define INADDR_ANY 0x00000000
+#endif
+
+#ifndef INADDR_BROADCAST
+ #define INADDR_BROADCAST 0xffffffff
+#endif
+
+#ifndef INADDR_LOOPBACK
+ #define INADDR_LOOPBACK 0x7f000001
+#endif
+
+#ifndef INADDR_UNSPEC_GROUP
+ #define INADDR_UNSPEC_GROUP 0xe0000000
+#endif
+
+#ifndef INADDR_ALLHOSTS_GROUP
+ #define INADDR_ALLHOSTS_GROUP 0xe0000001
+#endif
+
+#ifndef INADDR_ALLRTRS_GROUP
+ #define INADDR_ALLRTRS_GROUP 0xe0000002
+#endif
+
+#ifndef INADDR_MAX_LOCAL_GROUP
+ #define INADDR_MAX_LOCAL_GROUP 0xe00000ff
+#endif
+
+#if defined(POCO_ARCH_BIG_ENDIAN)
+ #define poco_ntoh_16(x) (x)
+ #define poco_ntoh_32(x) (x)
+#else
+ #define poco_ntoh_16(x) \
+ ((((x) >> 8) & 0x00ff) | (((x) << 8) & 0xff00))
+ #define poco_ntoh_32(x) \
+ ((((x) >> 24) & 0x000000ff) | (((x) >> 8) & 0x0000ff00) | (((x) << 8) & 0x00ff0000) | (((x) << 24) & 0xff000000))
+#endif
+#define poco_hton_16(x) poco_ntoh_16(x)
+#define poco_hton_32(x) poco_ntoh_32(x)
+
+
+#if !defined(s6_addr16)
+ #if defined(POCO_OS_FAMILY_WINDOWS)
+ #define s6_addr16 u.Word
+ #else
+ #define s6_addr16 __u6_addr.__u6_addr16
+ #endif
+#endif
+
+
+#if !defined(s6_addr32)
+ #if defined(POCO_OS_FAMILY_UNIX)
+ #if (POCO_OS == POCO_OS_SOLARIS)
+ #define s6_addr32 _S6_un._S6_u32
+ #else
+ #define s6_addr32 __u6_addr.__u6_addr32
+ #endif
+ #endif
+#endif
+
+
+namespace Poco {
+namespace Net {
+
+
+struct AddressFamily
+ /// AddressFamily::Family replaces the previously used IPAddress::Family
+ /// enumeration and is now used for IPAddress::Family and SocketAddress::Family.
+{
+ enum Family
+ /// Possible address families for socket addresses.
+ {
+ IPv4,
+ /// IPv4 address family.
+ #if defined(POCO_HAVE_IPv6)
+ IPv6,
+ /// IPv6 address family.
+ #endif
+ #if defined(POCO_OS_FAMILY_UNIX)
+ UNIX_LOCAL
+ /// UNIX domain socket address family. Available on UNIX/POSIX platforms only.
+ #endif
+ };
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketDefs_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/SocketImpl.h
index 4c51121bed..d1fec1de7d 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketImpl.h
@@ -1,503 +1,503 @@
-//
-// SocketImpl.h
-//
-// Library: Net
-// Package: Sockets
-// Module: SocketImpl
-//
-// Definition of the SocketImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketImpl_INCLUDED
-#define Net_SocketImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketDefs.h"
-#include "Poco/Net/SocketAddress.h"
-#include "Poco/RefCountedObject.h"
-#include "Poco/Timespan.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API SocketImpl: public Poco::RefCountedObject
- /// This class encapsulates the Berkeley sockets API.
- ///
- /// Subclasses implement specific socket types like
- /// stream or datagram sockets.
- ///
- /// You should not create any instances of this class.
-{
-public:
- enum SelectMode
- {
- SELECT_READ = 1,
- SELECT_WRITE = 2,
- SELECT_ERROR = 4
- };
-
- virtual SocketImpl* acceptConnection(SocketAddress& clientAddr);
- /// Get the next completed connection from the
- /// socket's completed connection queue.
- ///
- /// If the queue is empty, waits until a connection
- /// request completes.
- ///
- /// Returns a new TCP socket for the connection
- /// with the client.
- ///
- /// The client socket's address is returned in clientAddr.
-
- virtual void connect(const SocketAddress& address);
- /// Initializes the socket and establishes a connection to
- /// the TCP server at the given address.
- ///
- /// Can also be used for UDP sockets. In this case, no
- /// connection is established. Instead, incoming and outgoing
- /// packets are restricted to the specified address.
-
- virtual void connect(const SocketAddress& address, const Poco::Timespan& timeout);
- /// Initializes the socket, sets the socket timeout and
- /// establishes a connection to the TCP server at the given address.
-
- virtual void connectNB(const SocketAddress& address);
- /// Initializes the socket and establishes a connection to
- /// the TCP server at the given address. Prior to opening the
- /// connection the socket is set to nonblocking mode.
-
- virtual void bind(const SocketAddress& address, bool reuseAddress = false);
- /// Bind a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
-
- virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort );
- /// Bind a local address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
-
- virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false);
- /// Bind a local IPv6 address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// The given address must be an IPv6 address. The
- /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
- /// according to the ipV6Only parameter.
- ///
- /// If the library has not been built with IPv6 support,
- /// a Poco::NotImplementedException will be thrown.
-
- virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only);
- /// Bind a local IPv6 address to the socket.
- ///
- /// This is usually only done when establishing a server
- /// socket. TCP clients should not bind a socket to a
- /// specific address.
- ///
- /// If reuseAddress is true, sets the SO_REUSEADDR
- /// socket option.
- ///
- /// If reusePort is true, sets the SO_REUSEPORT
- /// socket option.
- ///
- /// The given address must be an IPv6 address. The
- /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
- /// according to the ipV6Only parameter.
- ///
- /// If the library has not been built with IPv6 support,
- /// a Poco::NotImplementedException will be thrown.
-
- virtual void listen(int backlog = 64);
- /// Puts the socket into listening state.
- ///
- /// The socket becomes a passive socket that
- /// can accept incoming connection requests.
- ///
- /// The backlog argument specifies the maximum
- /// number of connections that can be queued
- /// for this socket.
-
- virtual void close();
- /// Close the socket.
-
- virtual void shutdownReceive();
- /// Shuts down the receiving part of the socket connection.
-
- virtual void shutdownSend();
- /// Shuts down the sending part of the socket connection.
-
- virtual void shutdown();
- /// Shuts down both the receiving and the sending part
- /// of the socket connection.
-
- virtual int sendBytes(const void* buffer, int length, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
- ///
- /// Certain socket implementations may also return a negative
- /// value denoting a certain condition.
-
- virtual int receiveBytes(void* buffer, int length, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- ///
- /// Returns the number of bytes received.
- ///
- /// Certain socket implementations may also return a negative
- /// value denoting a certain condition.
-
- virtual int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket to the given address.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
-
- virtual int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- /// Stores the address of the sender in address.
- ///
- /// Returns the number of bytes received.
-
- virtual void sendUrgent(unsigned char data);
- /// Sends one byte of urgent data through
- /// the socket.
- ///
- /// The data is sent with the MSG_OOB flag.
- ///
- /// The preferred way for a socket to receive urgent data
- /// is by enabling the SO_OOBINLINE option.
-
- virtual int available();
- /// Returns the number of bytes available that can be read
- /// without causing the socket to block.
-
- virtual bool poll(const Poco::Timespan& timeout, int mode);
- /// Determines the status of the socket, using a
- /// call to select().
- ///
- /// The mode argument is constructed by combining the values
- /// of the SelectMode enumeration.
- ///
- /// Returns true if the next operation corresponding to
- /// mode will not block, false otherwise.
-
+//
+// SocketImpl.h
+//
+// Library: Net
+// Package: Sockets
+// Module: SocketImpl
+//
+// Definition of the SocketImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketImpl_INCLUDED
+#define Net_SocketImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketDefs.h"
+#include "Poco/Net/SocketAddress.h"
+#include "Poco/RefCountedObject.h"
+#include "Poco/Timespan.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API SocketImpl: public Poco::RefCountedObject
+ /// This class encapsulates the Berkeley sockets API.
+ ///
+ /// Subclasses implement specific socket types like
+ /// stream or datagram sockets.
+ ///
+ /// You should not create any instances of this class.
+{
+public:
+ enum SelectMode
+ {
+ SELECT_READ = 1,
+ SELECT_WRITE = 2,
+ SELECT_ERROR = 4
+ };
+
+ virtual SocketImpl* acceptConnection(SocketAddress& clientAddr);
+ /// Get the next completed connection from the
+ /// socket's completed connection queue.
+ ///
+ /// If the queue is empty, waits until a connection
+ /// request completes.
+ ///
+ /// Returns a new TCP socket for the connection
+ /// with the client.
+ ///
+ /// The client socket's address is returned in clientAddr.
+
+ virtual void connect(const SocketAddress& address);
+ /// Initializes the socket and establishes a connection to
+ /// the TCP server at the given address.
+ ///
+ /// Can also be used for UDP sockets. In this case, no
+ /// connection is established. Instead, incoming and outgoing
+ /// packets are restricted to the specified address.
+
+ virtual void connect(const SocketAddress& address, const Poco::Timespan& timeout);
+ /// Initializes the socket, sets the socket timeout and
+ /// establishes a connection to the TCP server at the given address.
+
+ virtual void connectNB(const SocketAddress& address);
+ /// Initializes the socket and establishes a connection to
+ /// the TCP server at the given address. Prior to opening the
+ /// connection the socket is set to nonblocking mode.
+
+ virtual void bind(const SocketAddress& address, bool reuseAddress = false);
+ /// Bind a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+
+ virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort );
+ /// Bind a local address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+
+ virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false);
+ /// Bind a local IPv6 address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// The given address must be an IPv6 address. The
+ /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
+ /// according to the ipV6Only parameter.
+ ///
+ /// If the library has not been built with IPv6 support,
+ /// a Poco::NotImplementedException will be thrown.
+
+ virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only);
+ /// Bind a local IPv6 address to the socket.
+ ///
+ /// This is usually only done when establishing a server
+ /// socket. TCP clients should not bind a socket to a
+ /// specific address.
+ ///
+ /// If reuseAddress is true, sets the SO_REUSEADDR
+ /// socket option.
+ ///
+ /// If reusePort is true, sets the SO_REUSEPORT
+ /// socket option.
+ ///
+ /// The given address must be an IPv6 address. The
+ /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket
+ /// according to the ipV6Only parameter.
+ ///
+ /// If the library has not been built with IPv6 support,
+ /// a Poco::NotImplementedException will be thrown.
+
+ virtual void listen(int backlog = 64);
+ /// Puts the socket into listening state.
+ ///
+ /// The socket becomes a passive socket that
+ /// can accept incoming connection requests.
+ ///
+ /// The backlog argument specifies the maximum
+ /// number of connections that can be queued
+ /// for this socket.
+
+ virtual void close();
+ /// Close the socket.
+
+ virtual void shutdownReceive();
+ /// Shuts down the receiving part of the socket connection.
+
+ virtual void shutdownSend();
+ /// Shuts down the sending part of the socket connection.
+
+ virtual void shutdown();
+ /// Shuts down both the receiving and the sending part
+ /// of the socket connection.
+
+ virtual int sendBytes(const void* buffer, int length, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+ ///
+ /// Certain socket implementations may also return a negative
+ /// value denoting a certain condition.
+
+ virtual int receiveBytes(void* buffer, int length, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ ///
+ /// Returns the number of bytes received.
+ ///
+ /// Certain socket implementations may also return a negative
+ /// value denoting a certain condition.
+
+ virtual int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket to the given address.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+
+ virtual int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ /// Stores the address of the sender in address.
+ ///
+ /// Returns the number of bytes received.
+
+ virtual void sendUrgent(unsigned char data);
+ /// Sends one byte of urgent data through
+ /// the socket.
+ ///
+ /// The data is sent with the MSG_OOB flag.
+ ///
+ /// The preferred way for a socket to receive urgent data
+ /// is by enabling the SO_OOBINLINE option.
+
+ virtual int available();
+ /// Returns the number of bytes available that can be read
+ /// without causing the socket to block.
+
+ virtual bool poll(const Poco::Timespan& timeout, int mode);
+ /// Determines the status of the socket, using a
+ /// call to select().
+ ///
+ /// The mode argument is constructed by combining the values
+ /// of the SelectMode enumeration.
+ ///
+ /// Returns true if the next operation corresponding to
+ /// mode will not block, false otherwise.
+
bool pollImpl(Poco::Timespan& timeout, int mode);
/// Modifies `timeout`
- virtual void setSendBufferSize(int size);
- /// Sets the size of the send buffer.
-
- virtual int getSendBufferSize();
- /// Returns the size of the send buffer.
- ///
- /// The returned value may be different than the
- /// value previously set with setSendBufferSize(),
- /// as the system is free to adjust the value.
-
- virtual void setReceiveBufferSize(int size);
- /// Sets the size of the receive buffer.
-
- virtual int getReceiveBufferSize();
- /// Returns the size of the receive buffer.
- ///
- /// The returned value may be different than the
- /// value previously set with setReceiveBufferSize(),
- /// as the system is free to adjust the value.
-
- virtual void setSendTimeout(const Poco::Timespan& timeout);
- /// Sets the send timeout for the socket.
-
- virtual Poco::Timespan getSendTimeout();
- /// Returns the send timeout for the socket.
- ///
- /// The returned timeout may be different than the
- /// timeout previously set with setSendTimeout(),
- /// as the system is free to adjust the value.
-
- virtual void setReceiveTimeout(const Poco::Timespan& timeout);
- /// Sets the send timeout for the socket.
- ///
- /// On systems that do not support SO_RCVTIMEO, a
- /// workaround using poll() is provided.
-
- virtual Poco::Timespan getReceiveTimeout();
- /// Returns the receive timeout for the socket.
- ///
- /// The returned timeout may be different than the
- /// timeout previously set with setReceiveTimeout(),
- /// as the system is free to adjust the value.
-
- virtual SocketAddress address();
- /// Returns the IP address and port number of the socket.
-
- virtual SocketAddress peerAddress();
- /// Returns the IP address and port number of the peer socket.
-
- void setOption(int level, int option, int value);
- /// Sets the socket option specified by level and option
- /// to the given integer value.
-
- void setOption(int level, int option, unsigned value);
- /// Sets the socket option specified by level and option
- /// to the given integer value.
-
- void setOption(int level, int option, unsigned char value);
- /// Sets the socket option specified by level and option
- /// to the given integer value.
-
- void setOption(int level, int option, const Poco::Timespan& value);
- /// Sets the socket option specified by level and option
- /// to the given time value.
-
- void setOption(int level, int option, const IPAddress& value);
- /// Sets the socket option specified by level and option
- /// to the given time value.
-
- virtual void setRawOption(int level, int option, const void* value, poco_socklen_t length);
- /// Sets the socket option specified by level and option
- /// to the given time value.
-
- void getOption(int level, int option, int& value);
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, unsigned& value);
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, unsigned char& value);
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, Poco::Timespan& value);
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void getOption(int level, int option, IPAddress& value);
- /// Returns the value of the socket option
- /// specified by level and option.
-
- virtual void getRawOption(int level, int option, void* value, poco_socklen_t& length);
- /// Returns the value of the socket option
- /// specified by level and option.
-
- void setLinger(bool on, int seconds);
- /// Sets the value of the SO_LINGER socket option.
-
- void getLinger(bool& on, int& seconds);
- /// Returns the value of the SO_LINGER socket option.
-
- void setNoDelay(bool flag);
- /// Sets the value of the TCP_NODELAY socket option.
-
- bool getNoDelay();
- /// Returns the value of the TCP_NODELAY socket option.
-
- void setKeepAlive(bool flag);
- /// Sets the value of the SO_KEEPALIVE socket option.
-
- bool getKeepAlive();
- /// Returns the value of the SO_KEEPALIVE socket option.
-
- void setReuseAddress(bool flag);
- /// Sets the value of the SO_REUSEADDR socket option.
-
- bool getReuseAddress();
- /// Returns the value of the SO_REUSEADDR socket option.
-
- void setReusePort(bool flag);
- /// Sets the value of the SO_REUSEPORT socket option.
- /// Does nothing if the socket implementation does not
- /// support SO_REUSEPORT.
-
- bool getReusePort();
- /// Returns the value of the SO_REUSEPORT socket option.
- ///
- /// Returns false if the socket implementation does not
- /// support SO_REUSEPORT.
-
- void setOOBInline(bool flag);
- /// Sets the value of the SO_OOBINLINE socket option.
-
- bool getOOBInline();
- /// Returns the value of the SO_OOBINLINE socket option.
-
- void setBroadcast(bool flag);
- /// Sets the value of the SO_BROADCAST socket option.
-
- bool getBroadcast();
- /// Returns the value of the SO_BROADCAST socket option.
-
- virtual void setBlocking(bool flag);
- /// Sets the socket in blocking mode if flag is true,
- /// disables blocking mode if flag is false.
-
- virtual bool getBlocking() const;
- /// Returns the blocking mode of the socket.
- /// This method will only work if the blocking modes of
- /// the socket are changed via the setBlocking method!
-
- virtual bool secure() const;
- /// Returns true iff the socket's connection is secure
- /// (using SSL or TLS).
-
- int socketError();
- /// Returns the value of the SO_ERROR socket option.
-
- poco_socket_t sockfd() const;
- /// Returns the socket descriptor for the
- /// underlying native socket.
-
- void ioctl(poco_ioctl_request_t request, int& arg);
- /// A wrapper for the ioctl system call.
-
- void ioctl(poco_ioctl_request_t request, void* arg);
- /// A wrapper for the ioctl system call.
-
-#if defined(POCO_OS_FAMILY_UNIX)
- int fcntl(poco_fcntl_request_t request);
- /// A wrapper for the fcntl system call.
-
- int fcntl(poco_fcntl_request_t request, long arg);
- /// A wrapper for the fcntl system call.
-#endif
-
- bool initialized() const;
- /// Returns true iff the underlying socket is initialized.
-
-protected:
- SocketImpl();
- /// Creates a SocketImpl.
-
- SocketImpl(poco_socket_t sockfd);
- /// Creates a SocketImpl using the given native socket.
-
- virtual ~SocketImpl();
- /// Destroys the SocketImpl.
- /// Closes the socket if it is still open.
-
- virtual void init(int af);
- /// Creates the underlying native socket.
- ///
- /// Subclasses must implement this method so
- /// that it calls initSocket() with the
- /// appropriate arguments.
- ///
- /// The default implementation creates a
- /// stream socket.
-
- void initSocket(int af, int type, int proto = 0);
- /// Creates the underlying native socket.
- ///
- /// The first argument, af, specifies the address family
- /// used by the socket, which should be either AF_INET or
- /// AF_INET6.
- ///
- /// The second argument, type, specifies the type of the
- /// socket, which can be one of SOCK_STREAM, SOCK_DGRAM
- /// or SOCK_RAW.
- ///
- /// The third argument, proto, is normally set to 0,
- /// except for raw sockets.
-
- void reset(poco_socket_t fd = POCO_INVALID_SOCKET);
- /// Allows subclasses to set the socket manually, iff no valid socket is set yet.
-
- static int lastError();
- /// Returns the last error code.
-
- static void error();
- /// Throws an appropriate exception for the last error.
-
- static void error(const std::string& arg);
- /// Throws an appropriate exception for the last error.
-
- static void error(int code);
- /// Throws an appropriate exception for the given error code.
-
- static void error(int code, const std::string& arg);
- /// Throws an appropriate exception for the given error code.
-
+ virtual void setSendBufferSize(int size);
+ /// Sets the size of the send buffer.
+
+ virtual int getSendBufferSize();
+ /// Returns the size of the send buffer.
+ ///
+ /// The returned value may be different than the
+ /// value previously set with setSendBufferSize(),
+ /// as the system is free to adjust the value.
+
+ virtual void setReceiveBufferSize(int size);
+ /// Sets the size of the receive buffer.
+
+ virtual int getReceiveBufferSize();
+ /// Returns the size of the receive buffer.
+ ///
+ /// The returned value may be different than the
+ /// value previously set with setReceiveBufferSize(),
+ /// as the system is free to adjust the value.
+
+ virtual void setSendTimeout(const Poco::Timespan& timeout);
+ /// Sets the send timeout for the socket.
+
+ virtual Poco::Timespan getSendTimeout();
+ /// Returns the send timeout for the socket.
+ ///
+ /// The returned timeout may be different than the
+ /// timeout previously set with setSendTimeout(),
+ /// as the system is free to adjust the value.
+
+ virtual void setReceiveTimeout(const Poco::Timespan& timeout);
+ /// Sets the send timeout for the socket.
+ ///
+ /// On systems that do not support SO_RCVTIMEO, a
+ /// workaround using poll() is provided.
+
+ virtual Poco::Timespan getReceiveTimeout();
+ /// Returns the receive timeout for the socket.
+ ///
+ /// The returned timeout may be different than the
+ /// timeout previously set with setReceiveTimeout(),
+ /// as the system is free to adjust the value.
+
+ virtual SocketAddress address();
+ /// Returns the IP address and port number of the socket.
+
+ virtual SocketAddress peerAddress();
+ /// Returns the IP address and port number of the peer socket.
+
+ void setOption(int level, int option, int value);
+ /// Sets the socket option specified by level and option
+ /// to the given integer value.
+
+ void setOption(int level, int option, unsigned value);
+ /// Sets the socket option specified by level and option
+ /// to the given integer value.
+
+ void setOption(int level, int option, unsigned char value);
+ /// Sets the socket option specified by level and option
+ /// to the given integer value.
+
+ void setOption(int level, int option, const Poco::Timespan& value);
+ /// Sets the socket option specified by level and option
+ /// to the given time value.
+
+ void setOption(int level, int option, const IPAddress& value);
+ /// Sets the socket option specified by level and option
+ /// to the given time value.
+
+ virtual void setRawOption(int level, int option, const void* value, poco_socklen_t length);
+ /// Sets the socket option specified by level and option
+ /// to the given time value.
+
+ void getOption(int level, int option, int& value);
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, unsigned& value);
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, unsigned char& value);
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, Poco::Timespan& value);
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void getOption(int level, int option, IPAddress& value);
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ virtual void getRawOption(int level, int option, void* value, poco_socklen_t& length);
+ /// Returns the value of the socket option
+ /// specified by level and option.
+
+ void setLinger(bool on, int seconds);
+ /// Sets the value of the SO_LINGER socket option.
+
+ void getLinger(bool& on, int& seconds);
+ /// Returns the value of the SO_LINGER socket option.
+
+ void setNoDelay(bool flag);
+ /// Sets the value of the TCP_NODELAY socket option.
+
+ bool getNoDelay();
+ /// Returns the value of the TCP_NODELAY socket option.
+
+ void setKeepAlive(bool flag);
+ /// Sets the value of the SO_KEEPALIVE socket option.
+
+ bool getKeepAlive();
+ /// Returns the value of the SO_KEEPALIVE socket option.
+
+ void setReuseAddress(bool flag);
+ /// Sets the value of the SO_REUSEADDR socket option.
+
+ bool getReuseAddress();
+ /// Returns the value of the SO_REUSEADDR socket option.
+
+ void setReusePort(bool flag);
+ /// Sets the value of the SO_REUSEPORT socket option.
+ /// Does nothing if the socket implementation does not
+ /// support SO_REUSEPORT.
+
+ bool getReusePort();
+ /// Returns the value of the SO_REUSEPORT socket option.
+ ///
+ /// Returns false if the socket implementation does not
+ /// support SO_REUSEPORT.
+
+ void setOOBInline(bool flag);
+ /// Sets the value of the SO_OOBINLINE socket option.
+
+ bool getOOBInline();
+ /// Returns the value of the SO_OOBINLINE socket option.
+
+ void setBroadcast(bool flag);
+ /// Sets the value of the SO_BROADCAST socket option.
+
+ bool getBroadcast();
+ /// Returns the value of the SO_BROADCAST socket option.
+
+ virtual void setBlocking(bool flag);
+ /// Sets the socket in blocking mode if flag is true,
+ /// disables blocking mode if flag is false.
+
+ virtual bool getBlocking() const;
+ /// Returns the blocking mode of the socket.
+ /// This method will only work if the blocking modes of
+ /// the socket are changed via the setBlocking method!
+
+ virtual bool secure() const;
+ /// Returns true iff the socket's connection is secure
+ /// (using SSL or TLS).
+
+ int socketError();
+ /// Returns the value of the SO_ERROR socket option.
+
+ poco_socket_t sockfd() const;
+ /// Returns the socket descriptor for the
+ /// underlying native socket.
+
+ void ioctl(poco_ioctl_request_t request, int& arg);
+ /// A wrapper for the ioctl system call.
+
+ void ioctl(poco_ioctl_request_t request, void* arg);
+ /// A wrapper for the ioctl system call.
+
+#if defined(POCO_OS_FAMILY_UNIX)
+ int fcntl(poco_fcntl_request_t request);
+ /// A wrapper for the fcntl system call.
+
+ int fcntl(poco_fcntl_request_t request, long arg);
+ /// A wrapper for the fcntl system call.
+#endif
+
+ bool initialized() const;
+ /// Returns true iff the underlying socket is initialized.
+
+protected:
+ SocketImpl();
+ /// Creates a SocketImpl.
+
+ SocketImpl(poco_socket_t sockfd);
+ /// Creates a SocketImpl using the given native socket.
+
+ virtual ~SocketImpl();
+ /// Destroys the SocketImpl.
+ /// Closes the socket if it is still open.
+
+ virtual void init(int af);
+ /// Creates the underlying native socket.
+ ///
+ /// Subclasses must implement this method so
+ /// that it calls initSocket() with the
+ /// appropriate arguments.
+ ///
+ /// The default implementation creates a
+ /// stream socket.
+
+ void initSocket(int af, int type, int proto = 0);
+ /// Creates the underlying native socket.
+ ///
+ /// The first argument, af, specifies the address family
+ /// used by the socket, which should be either AF_INET or
+ /// AF_INET6.
+ ///
+ /// The second argument, type, specifies the type of the
+ /// socket, which can be one of SOCK_STREAM, SOCK_DGRAM
+ /// or SOCK_RAW.
+ ///
+ /// The third argument, proto, is normally set to 0,
+ /// except for raw sockets.
+
+ void reset(poco_socket_t fd = POCO_INVALID_SOCKET);
+ /// Allows subclasses to set the socket manually, iff no valid socket is set yet.
+
+ static int lastError();
+ /// Returns the last error code.
+
+ static void error();
+ /// Throws an appropriate exception for the last error.
+
+ static void error(const std::string& arg);
+ /// Throws an appropriate exception for the last error.
+
+ static void error(int code);
+ /// Throws an appropriate exception for the given error code.
+
+ static void error(int code, const std::string& arg);
+ /// Throws an appropriate exception for the given error code.
+
protected:
- SocketImpl(const SocketImpl&);
- SocketImpl& operator = (const SocketImpl&);
-
- poco_socket_t _sockfd;
- Poco::Timespan _recvTimeout;
- Poco::Timespan _sndTimeout;
- bool _blocking;
- bool _isBrokenTimeout;
-
- friend class Socket;
- friend class SecureSocketImpl;
- friend class PollSetImpl;
-};
-
-
-//
-// inlines
-//
-inline poco_socket_t SocketImpl::sockfd() const
-{
- return _sockfd;
-}
-
-
-inline bool SocketImpl::initialized() const
-{
- return _sockfd != POCO_INVALID_SOCKET;
-}
-
-
-inline int SocketImpl::lastError()
-{
-#if defined(_WIN32)
- return WSAGetLastError();
-#else
- return errno;
-#endif
-}
-
-
-inline bool SocketImpl::getBlocking() const
-{
- return _blocking;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketImpl_INCLUDED
+ SocketImpl(const SocketImpl&);
+ SocketImpl& operator = (const SocketImpl&);
+
+ poco_socket_t _sockfd;
+ Poco::Timespan _recvTimeout;
+ Poco::Timespan _sndTimeout;
+ bool _blocking;
+ bool _isBrokenTimeout;
+
+ friend class Socket;
+ friend class SecureSocketImpl;
+ friend class PollSetImpl;
+};
+
+
+//
+// inlines
+//
+inline poco_socket_t SocketImpl::sockfd() const
+{
+ return _sockfd;
+}
+
+
+inline bool SocketImpl::initialized() const
+{
+ return _sockfd != POCO_INVALID_SOCKET;
+}
+
+
+inline int SocketImpl::lastError()
+{
+#if defined(_WIN32)
+ return WSAGetLastError();
+#else
+ return errno;
+#endif
+}
+
+
+inline bool SocketImpl::getBlocking() const
+{
+ return _blocking;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketNotification.h b/contrib/libs/poco/Net/include/Poco/Net/SocketNotification.h
index 7934dffaab..7b857ecfe8 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketNotification.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketNotification.h
@@ -1,153 +1,153 @@
-//
-// SocketNotification.h
-//
-// Library: Net
-// Package: Reactor
-// Module: SocketNotification
-//
-// Definition of the SocketNotification class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketNotification_INCLUDED
-#define Net_SocketNotification_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/Notification.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class SocketReactor;
-
-
-class Net_API SocketNotification: public Poco::Notification
- /// The base class for all notifications generated by
- /// the SocketReactor.
-{
-public:
- explicit SocketNotification(SocketReactor* pReactor);
- /// Creates the SocketNotification for the given SocketReactor.
-
- virtual ~SocketNotification();
- /// Destroys the SocketNotification.
-
- SocketReactor& source() const;
- /// Returns the SocketReactor that generated the notification.
-
- Socket socket() const;
- /// Returns the socket that caused the notification.
-
-private:
- void setSocket(const Socket& socket);
-
- SocketReactor* _pReactor;
- Socket _socket;
-
- friend class SocketNotifier;
-};
-
-
-class Net_API ReadableNotification: public SocketNotification
- /// This notification is sent if a socket has become readable.
-{
-public:
- ReadableNotification(SocketReactor* pReactor);
- /// Creates the ReadableNotification for the given SocketReactor.
-
- ~ReadableNotification();
- /// Destroys the ReadableNotification.
-};
-
-
-class Net_API WritableNotification: public SocketNotification
- /// This notification is sent if a socket has become writable.
-{
-public:
- WritableNotification(SocketReactor* pReactor);
- /// Creates the WritableNotification for the given SocketReactor.
-
- ~WritableNotification();
- /// Destroys the WritableNotification.
-};
-
-
-class Net_API ErrorNotification: public SocketNotification
- /// This notification is sent if a socket has signalled an error.
-{
-public:
- ErrorNotification(SocketReactor* pReactor);
- /// Creates the ErrorNotification for the given SocketReactor.
-
- ~ErrorNotification();
- /// Destroys the ErrorNotification.
-};
-
-
-class Net_API TimeoutNotification: public SocketNotification
- /// This notification is sent if no other event has occurred
- /// for a specified time.
-{
-public:
- TimeoutNotification(SocketReactor* pReactor);
- /// Creates the TimeoutNotification for the given SocketReactor.
-
- ~TimeoutNotification();
- /// Destroys the TimeoutNotification.
-};
-
-
-class Net_API IdleNotification: public SocketNotification
- /// This notification is sent when the SocketReactor does
- /// not have any sockets to react to.
-{
-public:
- IdleNotification(SocketReactor* pReactor);
- /// Creates the IdleNotification for the given SocketReactor.
-
- ~IdleNotification();
- /// Destroys the IdleNotification.
-};
-
-
-class Net_API ShutdownNotification: public SocketNotification
- /// This notification is sent when the SocketReactor is
- /// about to shut down.
-{
-public:
- ShutdownNotification(SocketReactor* pReactor);
- /// Creates the ShutdownNotification for the given SocketReactor.
-
- ~ShutdownNotification();
- /// Destroys the ShutdownNotification.
-};
-
-
-//
-// inlines
-//
-inline SocketReactor& SocketNotification::source() const
-{
- return *_pReactor;
-}
-
-
-inline Socket SocketNotification::socket() const
-{
- return _socket;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketNotification_INCLUDED
+//
+// SocketNotification.h
+//
+// Library: Net
+// Package: Reactor
+// Module: SocketNotification
+//
+// Definition of the SocketNotification class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketNotification_INCLUDED
+#define Net_SocketNotification_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/Notification.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class SocketReactor;
+
+
+class Net_API SocketNotification: public Poco::Notification
+ /// The base class for all notifications generated by
+ /// the SocketReactor.
+{
+public:
+ explicit SocketNotification(SocketReactor* pReactor);
+ /// Creates the SocketNotification for the given SocketReactor.
+
+ virtual ~SocketNotification();
+ /// Destroys the SocketNotification.
+
+ SocketReactor& source() const;
+ /// Returns the SocketReactor that generated the notification.
+
+ Socket socket() const;
+ /// Returns the socket that caused the notification.
+
+private:
+ void setSocket(const Socket& socket);
+
+ SocketReactor* _pReactor;
+ Socket _socket;
+
+ friend class SocketNotifier;
+};
+
+
+class Net_API ReadableNotification: public SocketNotification
+ /// This notification is sent if a socket has become readable.
+{
+public:
+ ReadableNotification(SocketReactor* pReactor);
+ /// Creates the ReadableNotification for the given SocketReactor.
+
+ ~ReadableNotification();
+ /// Destroys the ReadableNotification.
+};
+
+
+class Net_API WritableNotification: public SocketNotification
+ /// This notification is sent if a socket has become writable.
+{
+public:
+ WritableNotification(SocketReactor* pReactor);
+ /// Creates the WritableNotification for the given SocketReactor.
+
+ ~WritableNotification();
+ /// Destroys the WritableNotification.
+};
+
+
+class Net_API ErrorNotification: public SocketNotification
+ /// This notification is sent if a socket has signalled an error.
+{
+public:
+ ErrorNotification(SocketReactor* pReactor);
+ /// Creates the ErrorNotification for the given SocketReactor.
+
+ ~ErrorNotification();
+ /// Destroys the ErrorNotification.
+};
+
+
+class Net_API TimeoutNotification: public SocketNotification
+ /// This notification is sent if no other event has occurred
+ /// for a specified time.
+{
+public:
+ TimeoutNotification(SocketReactor* pReactor);
+ /// Creates the TimeoutNotification for the given SocketReactor.
+
+ ~TimeoutNotification();
+ /// Destroys the TimeoutNotification.
+};
+
+
+class Net_API IdleNotification: public SocketNotification
+ /// This notification is sent when the SocketReactor does
+ /// not have any sockets to react to.
+{
+public:
+ IdleNotification(SocketReactor* pReactor);
+ /// Creates the IdleNotification for the given SocketReactor.
+
+ ~IdleNotification();
+ /// Destroys the IdleNotification.
+};
+
+
+class Net_API ShutdownNotification: public SocketNotification
+ /// This notification is sent when the SocketReactor is
+ /// about to shut down.
+{
+public:
+ ShutdownNotification(SocketReactor* pReactor);
+ /// Creates the ShutdownNotification for the given SocketReactor.
+
+ ~ShutdownNotification();
+ /// Destroys the ShutdownNotification.
+};
+
+
+//
+// inlines
+//
+inline SocketReactor& SocketNotification::source() const
+{
+ return *_pReactor;
+}
+
+
+inline Socket SocketNotification::socket() const
+{
+ return _socket;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketNotification_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketNotifier.h b/contrib/libs/poco/Net/include/Poco/Net/SocketNotifier.h
index 7a14fa1add..a98e407a3d 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketNotifier.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketNotifier.h
@@ -1,110 +1,110 @@
-//
-// SocketNotifier.h
-//
-// Library: Net
-// Package: Reactor
-// Module: SocketNotifier
-//
-// Definition of the SocketNotifier class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketNotifier_INCLUDED
-#define Net_SocketNotifier_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/RefCountedObject.h"
-#include "Poco/NotificationCenter.h"
-#include "Poco/Observer.h"
-#include <set>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Socket;
-class SocketReactor;
-class SocketNotification;
-
-
-class Net_API SocketNotifier: public Poco::RefCountedObject
- /// This class is used internally by SocketReactor
- /// to notify registered event handlers of socket events.
-{
-public:
- explicit SocketNotifier(const Socket& socket);
- /// Creates the SocketNotifier for the given socket.
-
- void addObserver(SocketReactor* pReactor, const Poco::AbstractObserver& observer);
- /// Adds the given observer.
-
- void removeObserver(SocketReactor* pReactor, const Poco::AbstractObserver& observer);
- /// Removes the given observer.
-
- bool hasObserver(const Poco::AbstractObserver& observer) const;
- /// Returns true if the given observer is registered.
-
- bool accepts(SocketNotification* pNotification);
- /// Returns true if there is at least one observer for the given notification.
-
- void dispatch(SocketNotification* pNotification);
- /// Dispatches the notification to all observers.
-
- bool hasObservers() const;
- /// Returns true if there are subscribers.
-
- std::size_t countObservers() const;
- /// Returns the number of subscribers;
-
-protected:
- ~SocketNotifier();
- /// Destroys the SocketNotifier.
-
-private:
- typedef std::multiset<SocketNotification*> EventSet;
-
- EventSet _events;
- Poco::NotificationCenter _nc;
- Socket _socket;
-};
-
-
-//
-// inlines
-//
-inline bool SocketNotifier::accepts(SocketNotification* pNotification)
-{
- return _events.find(pNotification) != _events.end();
-}
-
-
-inline bool SocketNotifier::hasObserver(const Poco::AbstractObserver& observer) const
-{
- return _nc.hasObserver(observer);
-}
-
-
-inline bool SocketNotifier::hasObservers() const
-{
- return _nc.hasObservers();
-}
-
-
-inline std::size_t SocketNotifier::countObservers() const
-{
- return _nc.countObservers();
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketNotifier_INCLUDED
+//
+// SocketNotifier.h
+//
+// Library: Net
+// Package: Reactor
+// Module: SocketNotifier
+//
+// Definition of the SocketNotifier class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketNotifier_INCLUDED
+#define Net_SocketNotifier_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/RefCountedObject.h"
+#include "Poco/NotificationCenter.h"
+#include "Poco/Observer.h"
+#include <set>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Socket;
+class SocketReactor;
+class SocketNotification;
+
+
+class Net_API SocketNotifier: public Poco::RefCountedObject
+ /// This class is used internally by SocketReactor
+ /// to notify registered event handlers of socket events.
+{
+public:
+ explicit SocketNotifier(const Socket& socket);
+ /// Creates the SocketNotifier for the given socket.
+
+ void addObserver(SocketReactor* pReactor, const Poco::AbstractObserver& observer);
+ /// Adds the given observer.
+
+ void removeObserver(SocketReactor* pReactor, const Poco::AbstractObserver& observer);
+ /// Removes the given observer.
+
+ bool hasObserver(const Poco::AbstractObserver& observer) const;
+ /// Returns true if the given observer is registered.
+
+ bool accepts(SocketNotification* pNotification);
+ /// Returns true if there is at least one observer for the given notification.
+
+ void dispatch(SocketNotification* pNotification);
+ /// Dispatches the notification to all observers.
+
+ bool hasObservers() const;
+ /// Returns true if there are subscribers.
+
+ std::size_t countObservers() const;
+ /// Returns the number of subscribers;
+
+protected:
+ ~SocketNotifier();
+ /// Destroys the SocketNotifier.
+
+private:
+ typedef std::multiset<SocketNotification*> EventSet;
+
+ EventSet _events;
+ Poco::NotificationCenter _nc;
+ Socket _socket;
+};
+
+
+//
+// inlines
+//
+inline bool SocketNotifier::accepts(SocketNotification* pNotification)
+{
+ return _events.find(pNotification) != _events.end();
+}
+
+
+inline bool SocketNotifier::hasObserver(const Poco::AbstractObserver& observer) const
+{
+ return _nc.hasObserver(observer);
+}
+
+
+inline bool SocketNotifier::hasObservers() const
+{
+ return _nc.hasObservers();
+}
+
+
+inline std::size_t SocketNotifier::countObservers() const
+{
+ return _nc.countObservers();
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketNotifier_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketReactor.h b/contrib/libs/poco/Net/include/Poco/Net/SocketReactor.h
index 0de3af64c0..06c40bbd6a 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketReactor.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketReactor.h
@@ -1,235 +1,235 @@
-//
-// SocketReactor.h
-//
-// Library: Net
-// Package: Reactor
-// Module: SocketReactor
-//
-// Definition of the SocketReactor class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketReactor_INCLUDED
-#define Net_SocketReactor_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/Runnable.h"
-#include "Poco/Timespan.h"
-#include "Poco/Observer.h"
-#include "Poco/AutoPtr.h"
-#include <map>
-
-
-namespace Poco {
-
-
-class Thread;
-
-
-namespace Net {
-
-
-class Socket;
-class SocketNotification;
-class SocketNotifier;
-
-
-class Net_API SocketReactor: public Poco::Runnable
- /// This class, which is part of the Reactor pattern,
- /// implements the "Initiation Dispatcher".
+//
+// SocketReactor.h
+//
+// Library: Net
+// Package: Reactor
+// Module: SocketReactor
+//
+// Definition of the SocketReactor class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketReactor_INCLUDED
+#define Net_SocketReactor_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/Runnable.h"
+#include "Poco/Timespan.h"
+#include "Poco/Observer.h"
+#include "Poco/AutoPtr.h"
+#include <map>
+
+
+namespace Poco {
+
+
+class Thread;
+
+
+namespace Net {
+
+
+class Socket;
+class SocketNotification;
+class SocketNotifier;
+
+
+class Net_API SocketReactor: public Poco::Runnable
+ /// This class, which is part of the Reactor pattern,
+ /// implements the "Initiation Dispatcher".
+ ///
+ /// The Reactor pattern has been described in the book
+ /// "Pattern Languages of Program Design" by Jim Coplien
+ /// and Douglas C. Schmidt (Addison Wesley, 1995).
+ ///
+ /// The Reactor design pattern handles service requests that
+ /// are delivered concurrently to an application by one or more
+ /// clients. Each service in an application may consist of several
+ /// methods and is represented by a separate event handler. The event
+ /// handler is responsible for servicing service-specific requests.
+ /// The SocketReactor dispatches the event handlers.
+ ///
+ /// Event handlers (any class can be an event handler - there
+ /// is no base class for event handlers) can be registered
+ /// with the addEventHandler() method and deregistered with
+ /// the removeEventHandler() method.
///
- /// The Reactor pattern has been described in the book
- /// "Pattern Languages of Program Design" by Jim Coplien
- /// and Douglas C. Schmidt (Addison Wesley, 1995).
+ /// An event handler is always registered for a certain socket,
+ /// which is given in the call to addEventHandler(). Any method
+ /// of the event handler class can be registered to handle the
+ /// event - the only requirement is that the method takes
+ /// a pointer to an instance of SocketNotification (or a subclass of it)
+ /// as argument.
+ ///
+ /// Once started, the SocketReactor waits for events
+ /// on the registered sockets, using Socket::select().
+ /// If an event is detected, the corresponding event handler
+ /// is invoked. There are five event types (and corresponding
+ /// notification classes) defined: ReadableNotification, WritableNotification,
+ /// ErrorNotification, TimeoutNotification, IdleNotification and
+ /// ShutdownNotification.
///
- /// The Reactor design pattern handles service requests that
- /// are delivered concurrently to an application by one or more
- /// clients. Each service in an application may consist of several
- /// methods and is represented by a separate event handler. The event
- /// handler is responsible for servicing service-specific requests.
- /// The SocketReactor dispatches the event handlers.
- ///
- /// Event handlers (any class can be an event handler - there
- /// is no base class for event handlers) can be registered
- /// with the addEventHandler() method and deregistered with
- /// the removeEventHandler() method.
- ///
- /// An event handler is always registered for a certain socket,
- /// which is given in the call to addEventHandler(). Any method
- /// of the event handler class can be registered to handle the
- /// event - the only requirement is that the method takes
- /// a pointer to an instance of SocketNotification (or a subclass of it)
- /// as argument.
- ///
- /// Once started, the SocketReactor waits for events
- /// on the registered sockets, using Socket::select().
- /// If an event is detected, the corresponding event handler
- /// is invoked. There are five event types (and corresponding
- /// notification classes) defined: ReadableNotification, WritableNotification,
- /// ErrorNotification, TimeoutNotification, IdleNotification and
- /// ShutdownNotification.
- ///
- /// The ReadableNotification will be dispatched if a socket becomes
- /// readable. The WritableNotification will be dispatched if a socket
- /// becomes writable. The ErrorNotification will be dispatched if
- /// there is an error condition on a socket.
- ///
- /// If the timeout expires and no event has occurred, a
- /// TimeoutNotification will be dispatched to all event handlers
- /// registered for it. This is done in the onTimeout() method
- /// which can be overridden by subclasses to perform custom
- /// timeout processing.
- ///
- /// If there are no sockets for the SocketReactor to pass to
- /// Socket::select(), an IdleNotification will be dispatched to
- /// all event handlers registered for it. This is done in the
- /// onIdle() method which can be overridden by subclasses
- /// to perform custom idle processing. Since onIdle() will be
- /// called repeatedly in a loop, it is recommended to do a
- /// short sleep or yield in the event handler.
- ///
- /// Finally, when the SocketReactor is about to shut down (as a result
- /// of stop() being called), it dispatches a ShutdownNotification
- /// to all event handlers. This is done in the onShutdown() method
- /// which can be overridded by subclasses to perform custom
- /// shutdown processing.
- ///
- /// The SocketReactor is implemented so that it can
- /// run in its own thread. It is also possible to run
- /// multiple SocketReactors in parallel, as long as
- /// they work on different sockets.
- ///
- /// It is safe to call addEventHandler() and removeEventHandler()
- /// from another thread while the SocketReactor is running. Also,
- /// it is safe to call addEventHandler() and removeEventHandler()
- /// from event handlers.
-{
-public:
- SocketReactor();
- /// Creates the SocketReactor.
-
- explicit SocketReactor(const Poco::Timespan& timeout);
- /// Creates the SocketReactor, using the given timeout.
-
- virtual ~SocketReactor();
- /// Destroys the SocketReactor.
-
- void run();
- /// Runs the SocketReactor. The reactor will run
- /// until stop() is called (in a separate thread).
-
- void stop();
- /// Stops the SocketReactor.
- ///
- /// The reactor will be stopped when the next event
- /// (including a timeout event) occurs.
-
- void wakeUp();
- /// Wakes up idle reactor.
-
- void setTimeout(const Poco::Timespan& timeout);
- /// Sets the timeout.
- ///
- /// If no other event occurs for the given timeout
- /// interval, a timeout event is sent to all event listeners.
- ///
- /// The default timeout is 250 milliseconds;
- ///
- /// The timeout is passed to the Socket::select()
- /// method.
-
- const Poco::Timespan& getTimeout() const;
- /// Returns the timeout.
-
- void addEventHandler(const Socket& socket, const Poco::AbstractObserver& observer);
- /// Registers an event handler with the SocketReactor.
- ///
- /// Usage:
- /// Poco::Observer<MyEventHandler, SocketNotification> obs(*this, &MyEventHandler::handleMyEvent);
- /// reactor.addEventHandler(obs);
-
- bool hasEventHandler(const Socket& socket, const Poco::AbstractObserver& observer);
- /// Returns true if the observer is registered with SocketReactor for the given socket.
-
- void removeEventHandler(const Socket& socket, const Poco::AbstractObserver& observer);
- /// Unregisters an event handler with the SocketReactor.
- ///
- /// Usage:
- /// Poco::Observer<MyEventHandler, SocketNotification> obs(*this, &MyEventHandler::handleMyEvent);
- /// reactor.removeEventHandler(obs);
-
-protected:
- virtual void onTimeout();
- /// Called if the timeout expires and no other events are available.
- ///
- /// Can be overridden by subclasses. The default implementation
- /// dispatches the TimeoutNotification and thus should be called by overriding
- /// implementations.
-
- virtual void onIdle();
- /// Called if no sockets are available to call select() on.
- ///
- /// Can be overridden by subclasses. The default implementation
- /// dispatches the IdleNotification and thus should be called by overriding
- /// implementations.
-
- virtual void onShutdown();
- /// Called when the SocketReactor is about to terminate.
- ///
- /// Can be overridden by subclasses. The default implementation
- /// dispatches the ShutdownNotification and thus should be called by overriding
- /// implementations.
-
- virtual void onBusy();
- /// Called when the SocketReactor is busy and at least one notification
- /// has been dispatched.
- ///
- /// Can be overridden by subclasses to perform additional
- /// periodic tasks. The default implementation does nothing.
-
- void dispatch(const Socket& socket, SocketNotification* pNotification);
- /// Dispatches the given notification to all observers
- /// registered for the given socket.
-
- void dispatch(SocketNotification* pNotification);
- /// Dispatches the given notification to all observers.
-
-private:
- typedef Poco::AutoPtr<SocketNotifier> NotifierPtr;
- typedef Poco::AutoPtr<SocketNotification> NotificationPtr;
- typedef std::map<Socket, NotifierPtr> EventHandlerMap;
-
- void dispatch(NotifierPtr& pNotifier, SocketNotification* pNotification);
-
- enum
- {
- DEFAULT_TIMEOUT = 250000
- };
-
- bool _stop;
- Poco::Timespan _timeout;
- EventHandlerMap _handlers;
- NotificationPtr _pReadableNotification;
- NotificationPtr _pWritableNotification;
- NotificationPtr _pErrorNotification;
- NotificationPtr _pTimeoutNotification;
- NotificationPtr _pIdleNotification;
- NotificationPtr _pShutdownNotification;
- Poco::FastMutex _mutex;
- Poco::Thread* _pThread;
-
- friend class SocketNotifier;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketReactor_INCLUDED
+ /// The ReadableNotification will be dispatched if a socket becomes
+ /// readable. The WritableNotification will be dispatched if a socket
+ /// becomes writable. The ErrorNotification will be dispatched if
+ /// there is an error condition on a socket.
+ ///
+ /// If the timeout expires and no event has occurred, a
+ /// TimeoutNotification will be dispatched to all event handlers
+ /// registered for it. This is done in the onTimeout() method
+ /// which can be overridden by subclasses to perform custom
+ /// timeout processing.
+ ///
+ /// If there are no sockets for the SocketReactor to pass to
+ /// Socket::select(), an IdleNotification will be dispatched to
+ /// all event handlers registered for it. This is done in the
+ /// onIdle() method which can be overridden by subclasses
+ /// to perform custom idle processing. Since onIdle() will be
+ /// called repeatedly in a loop, it is recommended to do a
+ /// short sleep or yield in the event handler.
+ ///
+ /// Finally, when the SocketReactor is about to shut down (as a result
+ /// of stop() being called), it dispatches a ShutdownNotification
+ /// to all event handlers. This is done in the onShutdown() method
+ /// which can be overridded by subclasses to perform custom
+ /// shutdown processing.
+ ///
+ /// The SocketReactor is implemented so that it can
+ /// run in its own thread. It is also possible to run
+ /// multiple SocketReactors in parallel, as long as
+ /// they work on different sockets.
+ ///
+ /// It is safe to call addEventHandler() and removeEventHandler()
+ /// from another thread while the SocketReactor is running. Also,
+ /// it is safe to call addEventHandler() and removeEventHandler()
+ /// from event handlers.
+{
+public:
+ SocketReactor();
+ /// Creates the SocketReactor.
+
+ explicit SocketReactor(const Poco::Timespan& timeout);
+ /// Creates the SocketReactor, using the given timeout.
+
+ virtual ~SocketReactor();
+ /// Destroys the SocketReactor.
+
+ void run();
+ /// Runs the SocketReactor. The reactor will run
+ /// until stop() is called (in a separate thread).
+
+ void stop();
+ /// Stops the SocketReactor.
+ ///
+ /// The reactor will be stopped when the next event
+ /// (including a timeout event) occurs.
+
+ void wakeUp();
+ /// Wakes up idle reactor.
+
+ void setTimeout(const Poco::Timespan& timeout);
+ /// Sets the timeout.
+ ///
+ /// If no other event occurs for the given timeout
+ /// interval, a timeout event is sent to all event listeners.
+ ///
+ /// The default timeout is 250 milliseconds;
+ ///
+ /// The timeout is passed to the Socket::select()
+ /// method.
+
+ const Poco::Timespan& getTimeout() const;
+ /// Returns the timeout.
+
+ void addEventHandler(const Socket& socket, const Poco::AbstractObserver& observer);
+ /// Registers an event handler with the SocketReactor.
+ ///
+ /// Usage:
+ /// Poco::Observer<MyEventHandler, SocketNotification> obs(*this, &MyEventHandler::handleMyEvent);
+ /// reactor.addEventHandler(obs);
+
+ bool hasEventHandler(const Socket& socket, const Poco::AbstractObserver& observer);
+ /// Returns true if the observer is registered with SocketReactor for the given socket.
+
+ void removeEventHandler(const Socket& socket, const Poco::AbstractObserver& observer);
+ /// Unregisters an event handler with the SocketReactor.
+ ///
+ /// Usage:
+ /// Poco::Observer<MyEventHandler, SocketNotification> obs(*this, &MyEventHandler::handleMyEvent);
+ /// reactor.removeEventHandler(obs);
+
+protected:
+ virtual void onTimeout();
+ /// Called if the timeout expires and no other events are available.
+ ///
+ /// Can be overridden by subclasses. The default implementation
+ /// dispatches the TimeoutNotification and thus should be called by overriding
+ /// implementations.
+
+ virtual void onIdle();
+ /// Called if no sockets are available to call select() on.
+ ///
+ /// Can be overridden by subclasses. The default implementation
+ /// dispatches the IdleNotification and thus should be called by overriding
+ /// implementations.
+
+ virtual void onShutdown();
+ /// Called when the SocketReactor is about to terminate.
+ ///
+ /// Can be overridden by subclasses. The default implementation
+ /// dispatches the ShutdownNotification and thus should be called by overriding
+ /// implementations.
+
+ virtual void onBusy();
+ /// Called when the SocketReactor is busy and at least one notification
+ /// has been dispatched.
+ ///
+ /// Can be overridden by subclasses to perform additional
+ /// periodic tasks. The default implementation does nothing.
+
+ void dispatch(const Socket& socket, SocketNotification* pNotification);
+ /// Dispatches the given notification to all observers
+ /// registered for the given socket.
+
+ void dispatch(SocketNotification* pNotification);
+ /// Dispatches the given notification to all observers.
+
+private:
+ typedef Poco::AutoPtr<SocketNotifier> NotifierPtr;
+ typedef Poco::AutoPtr<SocketNotification> NotificationPtr;
+ typedef std::map<Socket, NotifierPtr> EventHandlerMap;
+
+ void dispatch(NotifierPtr& pNotifier, SocketNotification* pNotification);
+
+ enum
+ {
+ DEFAULT_TIMEOUT = 250000
+ };
+
+ bool _stop;
+ Poco::Timespan _timeout;
+ EventHandlerMap _handlers;
+ NotificationPtr _pReadableNotification;
+ NotificationPtr _pWritableNotification;
+ NotificationPtr _pErrorNotification;
+ NotificationPtr _pTimeoutNotification;
+ NotificationPtr _pIdleNotification;
+ NotificationPtr _pShutdownNotification;
+ Poco::FastMutex _mutex;
+ Poco::Thread* _pThread;
+
+ friend class SocketNotifier;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketReactor_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/SocketStream.h b/contrib/libs/poco/Net/include/Poco/Net/SocketStream.h
index ba626cdbc3..5a9a62c0ef 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/SocketStream.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/SocketStream.h
@@ -1,177 +1,177 @@
-//
-// SocketStream.h
-//
-// Library: Net
-// Package: Sockets
-// Module: SocketStream
-//
-// Definition of the SocketStream class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_SocketStream_INCLUDED
-#define Net_SocketStream_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/BufferedBidirectionalStreamBuf.h"
-#include <istream>
-#include <ostream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class StreamSocketImpl;
-
-
-class Net_API SocketStreamBuf: public Poco::BufferedBidirectionalStreamBuf
- /// This is the streambuf class used for reading from and writing to a socket.
-{
-public:
- SocketStreamBuf(const Socket& socket);
- /// Creates a SocketStreamBuf with the given socket.
- ///
- /// The socket's SocketImpl must be a StreamSocketImpl,
- /// otherwise an InvalidArgumentException is thrown.
-
- ~SocketStreamBuf();
- /// Destroys the SocketStreamBuf.
-
- StreamSocketImpl* socketImpl() const;
- /// Returns the internal SocketImpl.
-
-protected:
- int readFromDevice(char* buffer, std::streamsize length);
- int writeToDevice(const char* buffer, std::streamsize length);
-
-private:
- enum
- {
- STREAM_BUFFER_SIZE = 1024
- };
-
- StreamSocketImpl* _pImpl;
-};
-
-
-class Net_API SocketIOS: public virtual std::ios
- /// The base class for SocketStream, SocketInputStream and
- /// SocketOutputStream.
- ///
- /// This class is needed to ensure the correct initialization
- /// order of the stream buffer and base classes.
-{
-public:
- SocketIOS(const Socket& socket);
- /// Creates the SocketIOS with the given socket.
- ///
- /// The socket's SocketImpl must be a StreamSocketImpl,
- /// otherwise an InvalidArgumentException is thrown.
-
- ~SocketIOS();
- /// Destroys the SocketIOS.
- ///
- /// Flushes the buffer, but does not close the socket.
-
- SocketStreamBuf* rdbuf();
- /// Returns a pointer to the internal SocketStreamBuf.
-
- void close();
- /// Flushes the stream and closes the socket.
-
- StreamSocket socket() const;
- /// Returns the underlying socket.
-
-protected:
- SocketStreamBuf _buf;
-};
-
-
-class Net_API SocketOutputStream: public SocketIOS, public std::ostream
- /// An output stream for writing to a socket.
-{
-public:
- explicit SocketOutputStream(const Socket& socket);
- /// Creates the SocketOutputStream with the given socket.
- ///
- /// The socket's SocketImpl must be a StreamSocketImpl,
- /// otherwise an InvalidArgumentException is thrown.
-
- ~SocketOutputStream();
- /// Destroys the SocketOutputStream.
- ///
- /// Flushes the buffer, but does not close the socket.
-};
-
-
-class Net_API SocketInputStream: public SocketIOS, public std::istream
- /// An input stream for reading from a socket.
- ///
- /// When using formatted input from a SocketInputStream,
- /// always ensure that a receive timeout is set for the
- /// socket. Otherwise your program might unexpectedly
- /// hang.
- ///
- /// However, using formatted input from a SocketInputStream
- /// is not recommended, due to the read-ahead behavior of
- /// istream with formatted reads.
-{
-public:
- explicit SocketInputStream(const Socket& socket);
- /// Creates the SocketInputStream with the given socket.
- ///
- /// The socket's SocketImpl must be a StreamSocketImpl,
- /// otherwise an InvalidArgumentException is thrown.
-
- ~SocketInputStream();
- /// Destroys the SocketInputStream.
-};
-
-
-class Net_API SocketStream: public SocketIOS, public std::iostream
- /// An bidirectional stream for reading from and writing to a socket.
- ///
- /// When using formatted input from a SocketStream,
- /// always ensure that a receive timeout is set for the
- /// socket. Otherwise your program might unexpectedly
- /// hang.
- ///
- /// However, using formatted input from a SocketStream
- /// is not recommended, due to the read-ahead behavior of
- /// istream with formatted reads.
-{
-public:
- explicit SocketStream(const Socket& socket);
- /// Creates the SocketStream with the given socket.
- ///
- /// The socket's SocketImpl must be a StreamSocketImpl,
- /// otherwise an InvalidArgumentException is thrown.
-
- ~SocketStream();
- /// Destroys the SocketStream.
- ///
- /// Flushes the buffer, but does not close the socket.
-};
-
-
-//
-// inlines
-//
-inline StreamSocketImpl* SocketStreamBuf::socketImpl() const
-{
- return _pImpl;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_SocketStream_INCLUDED
+//
+// SocketStream.h
+//
+// Library: Net
+// Package: Sockets
+// Module: SocketStream
+//
+// Definition of the SocketStream class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_SocketStream_INCLUDED
+#define Net_SocketStream_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/BufferedBidirectionalStreamBuf.h"
+#include <istream>
+#include <ostream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class StreamSocketImpl;
+
+
+class Net_API SocketStreamBuf: public Poco::BufferedBidirectionalStreamBuf
+ /// This is the streambuf class used for reading from and writing to a socket.
+{
+public:
+ SocketStreamBuf(const Socket& socket);
+ /// Creates a SocketStreamBuf with the given socket.
+ ///
+ /// The socket's SocketImpl must be a StreamSocketImpl,
+ /// otherwise an InvalidArgumentException is thrown.
+
+ ~SocketStreamBuf();
+ /// Destroys the SocketStreamBuf.
+
+ StreamSocketImpl* socketImpl() const;
+ /// Returns the internal SocketImpl.
+
+protected:
+ int readFromDevice(char* buffer, std::streamsize length);
+ int writeToDevice(const char* buffer, std::streamsize length);
+
+private:
+ enum
+ {
+ STREAM_BUFFER_SIZE = 1024
+ };
+
+ StreamSocketImpl* _pImpl;
+};
+
+
+class Net_API SocketIOS: public virtual std::ios
+ /// The base class for SocketStream, SocketInputStream and
+ /// SocketOutputStream.
+ ///
+ /// This class is needed to ensure the correct initialization
+ /// order of the stream buffer and base classes.
+{
+public:
+ SocketIOS(const Socket& socket);
+ /// Creates the SocketIOS with the given socket.
+ ///
+ /// The socket's SocketImpl must be a StreamSocketImpl,
+ /// otherwise an InvalidArgumentException is thrown.
+
+ ~SocketIOS();
+ /// Destroys the SocketIOS.
+ ///
+ /// Flushes the buffer, but does not close the socket.
+
+ SocketStreamBuf* rdbuf();
+ /// Returns a pointer to the internal SocketStreamBuf.
+
+ void close();
+ /// Flushes the stream and closes the socket.
+
+ StreamSocket socket() const;
+ /// Returns the underlying socket.
+
+protected:
+ SocketStreamBuf _buf;
+};
+
+
+class Net_API SocketOutputStream: public SocketIOS, public std::ostream
+ /// An output stream for writing to a socket.
+{
+public:
+ explicit SocketOutputStream(const Socket& socket);
+ /// Creates the SocketOutputStream with the given socket.
+ ///
+ /// The socket's SocketImpl must be a StreamSocketImpl,
+ /// otherwise an InvalidArgumentException is thrown.
+
+ ~SocketOutputStream();
+ /// Destroys the SocketOutputStream.
+ ///
+ /// Flushes the buffer, but does not close the socket.
+};
+
+
+class Net_API SocketInputStream: public SocketIOS, public std::istream
+ /// An input stream for reading from a socket.
+ ///
+ /// When using formatted input from a SocketInputStream,
+ /// always ensure that a receive timeout is set for the
+ /// socket. Otherwise your program might unexpectedly
+ /// hang.
+ ///
+ /// However, using formatted input from a SocketInputStream
+ /// is not recommended, due to the read-ahead behavior of
+ /// istream with formatted reads.
+{
+public:
+ explicit SocketInputStream(const Socket& socket);
+ /// Creates the SocketInputStream with the given socket.
+ ///
+ /// The socket's SocketImpl must be a StreamSocketImpl,
+ /// otherwise an InvalidArgumentException is thrown.
+
+ ~SocketInputStream();
+ /// Destroys the SocketInputStream.
+};
+
+
+class Net_API SocketStream: public SocketIOS, public std::iostream
+ /// An bidirectional stream for reading from and writing to a socket.
+ ///
+ /// When using formatted input from a SocketStream,
+ /// always ensure that a receive timeout is set for the
+ /// socket. Otherwise your program might unexpectedly
+ /// hang.
+ ///
+ /// However, using formatted input from a SocketStream
+ /// is not recommended, due to the read-ahead behavior of
+ /// istream with formatted reads.
+{
+public:
+ explicit SocketStream(const Socket& socket);
+ /// Creates the SocketStream with the given socket.
+ ///
+ /// The socket's SocketImpl must be a StreamSocketImpl,
+ /// otherwise an InvalidArgumentException is thrown.
+
+ ~SocketStream();
+ /// Destroys the SocketStream.
+ ///
+ /// Flushes the buffer, but does not close the socket.
+};
+
+
+//
+// inlines
+//
+inline StreamSocketImpl* SocketStreamBuf::socketImpl() const
+{
+ return _pImpl;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_SocketStream_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/StreamSocket.h b/contrib/libs/poco/Net/include/Poco/Net/StreamSocket.h
index 8d36cd79a5..46374d85dc 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/StreamSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/StreamSocket.h
@@ -1,180 +1,180 @@
-//
-// StreamSocket.h
-//
-// Library: Net
-// Package: Sockets
-// Module: StreamSocket
-//
-// Definition of the StreamSocket class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_StreamSocket_INCLUDED
-#define Net_StreamSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/Socket.h"
-#include "Poco/FIFOBuffer.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class StreamSocketImpl;
-
-
-class Net_API StreamSocket: public Socket
- /// This class provides an interface to a
- /// TCP stream socket.
-{
-public:
- StreamSocket();
- /// Creates an unconnected stream socket.
- ///
- /// Before sending or receiving data, the socket
- /// must be connected with a call to connect().
-
- explicit StreamSocket(const SocketAddress& address);
- /// Creates a stream socket and connects it to
- /// the socket specified by address.
-
- explicit StreamSocket(SocketAddress::Family family);
- /// Creates an unconnected stream socket
- /// for the given address family.
- ///
- /// This is useful if certain socket options
- /// (like send and receive buffer) sizes, that must
- /// be set before connecting the socket, will be
- /// set later on.
-
- StreamSocket(const Socket& socket);
- /// Creates the StreamSocket with the SocketImpl
- /// from another socket. The SocketImpl must be
- /// a StreamSocketImpl, otherwise an InvalidArgumentException
- /// will be thrown.
-
- virtual ~StreamSocket();
- /// Destroys the StreamSocket.
-
- StreamSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// Releases the socket's SocketImpl and
- /// attaches the SocketImpl from the other socket and
- /// increments the reference count of the SocketImpl.
-
- void connect(const SocketAddress& address);
- /// Initializes the socket and establishes a connection to
- /// the TCP server at the given address.
- ///
- /// Can also be used for UDP sockets. In this case, no
- /// connection is established. Instead, incoming and outgoing
- /// packets are restricted to the specified address.
-
- void connect(const SocketAddress& address, const Poco::Timespan& timeout);
- /// Initializes the socket, sets the socket timeout and
- /// establishes a connection to the TCP server at the given address.
-
- void connectNB(const SocketAddress& address);
- /// Initializes the socket and establishes a connection to
- /// the TCP server at the given address. Prior to opening the
- /// connection the socket is set to nonblocking mode.
-
- void shutdownReceive();
- /// Shuts down the receiving part of the socket connection.
-
- void shutdownSend();
- /// Shuts down the sending part of the socket connection.
-
- void shutdown();
- /// Shuts down both the receiving and the sending part
- /// of the socket connection.
-
- int sendBytes(const void* buffer, int length, int flags = 0);
- /// Sends the contents of the given buffer through
- /// the socket.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
- ///
- /// Certain socket implementations may also return a negative
- /// value denoting a certain condition.
-
- int sendBytes(Poco::FIFOBuffer& buffer);
- /// Sends the contents of the given buffer through
- /// the socket. FIFOBuffer has writable/readable transition
- /// notifications which may be enabled to notify the caller when
- /// the buffer transitions between empty, partially full and
- /// full states.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
- ///
- /// Certain socket implementations may also return a negative
- /// value denoting a certain condition.
-
- int receiveBytes(void* buffer, int length, int flags = 0);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received.
- ///
- /// Returns the number of bytes received.
- /// A return value of 0 means a graceful shutdown
- /// of the connection from the peer.
- ///
- /// Throws a TimeoutException if a receive timeout has
- /// been set and nothing is received within that interval.
- /// Throws a NetException (or a subclass) in case of other errors.
-
- int receiveBytes(Poco::FIFOBuffer& buffer);
- /// Receives data from the socket and stores it
- /// in buffer. Up to length bytes are received. FIFOBuffer has
- /// writable/readable transition notifications which may be enabled
- /// to notify the caller when the buffer transitions between empty,
- /// partially full and full states.
- ///
- /// Returns the number of bytes received.
- /// A return value of 0 means a graceful shutdown
- /// of the connection from the peer.
- ///
- /// Throws a TimeoutException if a receive timeout has
- /// been set and nothing is received within that interval.
- /// Throws a NetException (or a subclass) in case of other errors.
-
- void sendUrgent(unsigned char data);
- /// Sends one byte of urgent data through
- /// the socket.
- ///
- /// The data is sent with the MSG_OOB flag.
- ///
- /// The preferred way for a socket to receive urgent data
- /// is by enabling the SO_OOBINLINE option.
-
- StreamSocket(SocketImpl* pImpl);
- /// Creates the Socket and attaches the given SocketImpl.
- /// The socket takes ownership of the SocketImpl.
- ///
- /// The SocketImpl must be a StreamSocketImpl, otherwise
- /// an InvalidArgumentException will be thrown.
-
-private:
- enum
- {
- BUFFER_SIZE = 1024
- };
-
- friend class ServerSocket;
- friend class SocketIOS;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_StreamSocket_INCLUDED
+//
+// StreamSocket.h
+//
+// Library: Net
+// Package: Sockets
+// Module: StreamSocket
+//
+// Definition of the StreamSocket class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_StreamSocket_INCLUDED
+#define Net_StreamSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/Socket.h"
+#include "Poco/FIFOBuffer.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class StreamSocketImpl;
+
+
+class Net_API StreamSocket: public Socket
+ /// This class provides an interface to a
+ /// TCP stream socket.
+{
+public:
+ StreamSocket();
+ /// Creates an unconnected stream socket.
+ ///
+ /// Before sending or receiving data, the socket
+ /// must be connected with a call to connect().
+
+ explicit StreamSocket(const SocketAddress& address);
+ /// Creates a stream socket and connects it to
+ /// the socket specified by address.
+
+ explicit StreamSocket(SocketAddress::Family family);
+ /// Creates an unconnected stream socket
+ /// for the given address family.
+ ///
+ /// This is useful if certain socket options
+ /// (like send and receive buffer) sizes, that must
+ /// be set before connecting the socket, will be
+ /// set later on.
+
+ StreamSocket(const Socket& socket);
+ /// Creates the StreamSocket with the SocketImpl
+ /// from another socket. The SocketImpl must be
+ /// a StreamSocketImpl, otherwise an InvalidArgumentException
+ /// will be thrown.
+
+ virtual ~StreamSocket();
+ /// Destroys the StreamSocket.
+
+ StreamSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// Releases the socket's SocketImpl and
+ /// attaches the SocketImpl from the other socket and
+ /// increments the reference count of the SocketImpl.
+
+ void connect(const SocketAddress& address);
+ /// Initializes the socket and establishes a connection to
+ /// the TCP server at the given address.
+ ///
+ /// Can also be used for UDP sockets. In this case, no
+ /// connection is established. Instead, incoming and outgoing
+ /// packets are restricted to the specified address.
+
+ void connect(const SocketAddress& address, const Poco::Timespan& timeout);
+ /// Initializes the socket, sets the socket timeout and
+ /// establishes a connection to the TCP server at the given address.
+
+ void connectNB(const SocketAddress& address);
+ /// Initializes the socket and establishes a connection to
+ /// the TCP server at the given address. Prior to opening the
+ /// connection the socket is set to nonblocking mode.
+
+ void shutdownReceive();
+ /// Shuts down the receiving part of the socket connection.
+
+ void shutdownSend();
+ /// Shuts down the sending part of the socket connection.
+
+ void shutdown();
+ /// Shuts down both the receiving and the sending part
+ /// of the socket connection.
+
+ int sendBytes(const void* buffer, int length, int flags = 0);
+ /// Sends the contents of the given buffer through
+ /// the socket.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+ ///
+ /// Certain socket implementations may also return a negative
+ /// value denoting a certain condition.
+
+ int sendBytes(Poco::FIFOBuffer& buffer);
+ /// Sends the contents of the given buffer through
+ /// the socket. FIFOBuffer has writable/readable transition
+ /// notifications which may be enabled to notify the caller when
+ /// the buffer transitions between empty, partially full and
+ /// full states.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+ ///
+ /// Certain socket implementations may also return a negative
+ /// value denoting a certain condition.
+
+ int receiveBytes(void* buffer, int length, int flags = 0);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received.
+ ///
+ /// Returns the number of bytes received.
+ /// A return value of 0 means a graceful shutdown
+ /// of the connection from the peer.
+ ///
+ /// Throws a TimeoutException if a receive timeout has
+ /// been set and nothing is received within that interval.
+ /// Throws a NetException (or a subclass) in case of other errors.
+
+ int receiveBytes(Poco::FIFOBuffer& buffer);
+ /// Receives data from the socket and stores it
+ /// in buffer. Up to length bytes are received. FIFOBuffer has
+ /// writable/readable transition notifications which may be enabled
+ /// to notify the caller when the buffer transitions between empty,
+ /// partially full and full states.
+ ///
+ /// Returns the number of bytes received.
+ /// A return value of 0 means a graceful shutdown
+ /// of the connection from the peer.
+ ///
+ /// Throws a TimeoutException if a receive timeout has
+ /// been set and nothing is received within that interval.
+ /// Throws a NetException (or a subclass) in case of other errors.
+
+ void sendUrgent(unsigned char data);
+ /// Sends one byte of urgent data through
+ /// the socket.
+ ///
+ /// The data is sent with the MSG_OOB flag.
+ ///
+ /// The preferred way for a socket to receive urgent data
+ /// is by enabling the SO_OOBINLINE option.
+
+ StreamSocket(SocketImpl* pImpl);
+ /// Creates the Socket and attaches the given SocketImpl.
+ /// The socket takes ownership of the SocketImpl.
+ ///
+ /// The SocketImpl must be a StreamSocketImpl, otherwise
+ /// an InvalidArgumentException will be thrown.
+
+private:
+ enum
+ {
+ BUFFER_SIZE = 1024
+ };
+
+ friend class ServerSocket;
+ friend class SocketIOS;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_StreamSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/StreamSocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/StreamSocketImpl.h
index 879c0f5b93..eb4196983c 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/StreamSocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/StreamSocketImpl.h
@@ -1,59 +1,59 @@
-//
-// StreamSocketImpl.h
-//
-// Library: Net
-// Package: Sockets
-// Module: StreamSocketImpl
-//
-// Definition of the StreamSocketImpl class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_StreamSocketImpl_INCLUDED
-#define Net_StreamSocketImpl_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/SocketImpl.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API StreamSocketImpl: public SocketImpl
- /// This class implements a TCP socket.
-{
-public:
- StreamSocketImpl();
- /// Creates a StreamSocketImpl.
-
- explicit StreamSocketImpl(SocketAddress::Family addressFamily);
- /// Creates a SocketImpl, with the underlying
- /// socket initialized for the given address family.
-
- StreamSocketImpl(poco_socket_t sockfd);
- /// Creates a StreamSocketImpl using the given native socket.
-
- virtual int sendBytes(const void* buffer, int length, int flags = 0);
- /// Ensures that all data in buffer is sent if the socket
- /// is blocking. In case of a non-blocking socket, sends as
- /// many bytes as possible.
- ///
- /// Returns the number of bytes sent. The return value may also be
- /// negative to denote some special condition.
-
-protected:
- virtual ~StreamSocketImpl();
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_StreamSocketImpl_INCLUDED
+//
+// StreamSocketImpl.h
+//
+// Library: Net
+// Package: Sockets
+// Module: StreamSocketImpl
+//
+// Definition of the StreamSocketImpl class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_StreamSocketImpl_INCLUDED
+#define Net_StreamSocketImpl_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/SocketImpl.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API StreamSocketImpl: public SocketImpl
+ /// This class implements a TCP socket.
+{
+public:
+ StreamSocketImpl();
+ /// Creates a StreamSocketImpl.
+
+ explicit StreamSocketImpl(SocketAddress::Family addressFamily);
+ /// Creates a SocketImpl, with the underlying
+ /// socket initialized for the given address family.
+
+ StreamSocketImpl(poco_socket_t sockfd);
+ /// Creates a StreamSocketImpl using the given native socket.
+
+ virtual int sendBytes(const void* buffer, int length, int flags = 0);
+ /// Ensures that all data in buffer is sent if the socket
+ /// is blocking. In case of a non-blocking socket, sends as
+ /// many bytes as possible.
+ ///
+ /// Returns the number of bytes sent. The return value may also be
+ /// negative to denote some special condition.
+
+protected:
+ virtual ~StreamSocketImpl();
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_StreamSocketImpl_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/StringPartSource.h b/contrib/libs/poco/Net/include/Poco/Net/StringPartSource.h
index b559d5c291..8f2b478dc2 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/StringPartSource.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/StringPartSource.h
@@ -1,71 +1,71 @@
-//
-// StringPartSource.h
-//
-// Library: Net
-// Package: Messages
-// Module: StringPartSource
-//
-// Definition of the StringPartSource class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_StringPartSource_INCLUDED
-#define Net_StringPartSource_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/PartSource.h"
-#include <sstream>
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API StringPartSource: public PartSource
- /// An implementation of PartSource for strings.
-{
-public:
- StringPartSource(const std::string& str);
- /// Creates the StringPartSource for the given string.
- ///
- /// The MIME type is set to text/plain.
-
- StringPartSource(const std::string& str, const std::string& mediaType);
- /// Creates the StringPartSource for the given
- /// string and MIME type.
-
- StringPartSource(const std::string& str, const std::string& mediaType, const std::string& filename);
- /// Creates the StringPartSource for the given
- /// string, MIME type and filename.
-
- ~StringPartSource();
- /// Destroys the StringPartSource.
-
- std::istream& stream();
- /// Returns a string input stream for the string.
-
- const std::string& filename() const;
- /// Returns the filename portion of the path.
-
- std::streamsize getContentLength() const;
- /// Returns the string size.
-
-private:
- std::istringstream _istr;
- std::string _filename;
-
- StringPartSource(const StringPartSource&);
- StringPartSource& operator = (const StringPartSource&);
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_StringPartSource_INCLUDED
+//
+// StringPartSource.h
+//
+// Library: Net
+// Package: Messages
+// Module: StringPartSource
+//
+// Definition of the StringPartSource class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_StringPartSource_INCLUDED
+#define Net_StringPartSource_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/PartSource.h"
+#include <sstream>
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API StringPartSource: public PartSource
+ /// An implementation of PartSource for strings.
+{
+public:
+ StringPartSource(const std::string& str);
+ /// Creates the StringPartSource for the given string.
+ ///
+ /// The MIME type is set to text/plain.
+
+ StringPartSource(const std::string& str, const std::string& mediaType);
+ /// Creates the StringPartSource for the given
+ /// string and MIME type.
+
+ StringPartSource(const std::string& str, const std::string& mediaType, const std::string& filename);
+ /// Creates the StringPartSource for the given
+ /// string, MIME type and filename.
+
+ ~StringPartSource();
+ /// Destroys the StringPartSource.
+
+ std::istream& stream();
+ /// Returns a string input stream for the string.
+
+ const std::string& filename() const;
+ /// Returns the filename portion of the path.
+
+ std::streamsize getContentLength() const;
+ /// Returns the string size.
+
+private:
+ std::istringstream _istr;
+ std::string _filename;
+
+ StringPartSource(const StringPartSource&);
+ StringPartSource& operator = (const StringPartSource&);
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_StringPartSource_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/TCPServer.h b/contrib/libs/poco/Net/include/Poco/Net/TCPServer.h
index 69da1c2af7..1277475a11 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/TCPServer.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/TCPServer.h
@@ -1,260 +1,260 @@
-//
-// TCPServer.h
-//
-// Library: Net
-// Package: TCPServer
-// Module: TCPServer
-//
-// Definition of the TCPServer class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_TCPServer_INCLUDED
-#define Net_TCPServer_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/ServerSocket.h"
-#include "Poco/Net/TCPServerConnectionFactory.h"
-#include "Poco/Net/TCPServerParams.h"
-#include "Poco/RefCountedObject.h"
-#include "Poco/AutoPtr.h"
-#include "Poco/Runnable.h"
-#include "Poco/Thread.h"
-#include "Poco/ThreadPool.h"
-
-#include <atomic>
-
-
-namespace Poco {
-namespace Net {
-
-
-class TCPServerDispatcher;
-class StreamSocket;
-
-
-class Net_API TCPServerConnectionFilter: public Poco::RefCountedObject
- /// A TCPServerConnectionFilter can be used to reject incoming connections
- /// before passing them on to the TCPServerDispatcher and
- /// starting a thread to handle them.
- ///
- /// An example use case is white-list or black-list IP address filtering.
- ///
- /// Subclasses must override the accept() method.
-{
-public:
- typedef Poco::AutoPtr<TCPServerConnectionFilter> Ptr;
-
- virtual bool accept(const StreamSocket& socket) = 0;
- /// Returns true if the given StreamSocket connection should
- /// be handled, and passed on to the TCPServerDispatcher.
- ///
- /// Returns false if the socket should be closed immediately.
- ///
- /// The socket can be prevented from being closed immediately
- /// if false is returned by creating a copy of the socket.
- /// This can be used to handle certain socket connections in
- /// a special way, outside the TCPServer framework.
-
-protected:
- virtual ~TCPServerConnectionFilter();
-};
-
-
-class Net_API TCPServer: public Poco::Runnable
- /// This class implements a multithreaded TCP server.
- ///
- /// The server uses a ServerSocket to listen for incoming
- /// connections. The ServerSocket must have been bound to
- /// an address before it is passed to the TCPServer constructor.
- /// Additionally, the ServerSocket must be put into listening
- /// state before the TCPServer is started by calling the start()
- /// method.
- ///
- /// The server uses a thread pool to assign threads to incoming
- /// connections. Before incoming connections are assigned to
- /// a connection thread, they are put into a queue.
- /// Connection threads fetch new connections from the queue as soon
- /// as they become free. Thus, a connection thread may serve more
- /// than one connection.
- ///
- /// As soon as a connection thread fetches the next connection from
- /// the queue, it creates a TCPServerConnection object for it
- /// (using the TCPServerConnectionFactory passed to the constructor)
- /// and calls the TCPServerConnection's start() method. When the
- /// start() method returns, the connection object is deleted.
- ///
- /// The number of connection threads is adjusted dynamically, depending
- /// on the number of connections waiting to be served.
- ///
- /// It is possible to specify a maximum number of queued connections.
- /// This prevents the connection queue from overflowing in the
- /// case of an extreme server load. In such a case, connections that
- /// cannot be queued are silently and immediately closed.
- ///
- /// TCPServer uses a separate thread to accept incoming connections.
- /// Thus, the call to start() returns immediately, and the server
- /// continues to run in the background.
- ///
- /// To stop the server from accepting new connections, call stop().
- ///
- /// After calling stop(), no new connections will be accepted and
- /// all queued connections will be discarded.
- /// Already served connections, however, will continue being served.
-{
-public:
- TCPServer(TCPServerConnectionFactory::Ptr pFactory, Poco::UInt16 portNumber = 0, TCPServerParams::Ptr pParams = 0);
- /// Creates the TCPServer, with ServerSocket listening on the given port.
- /// Default port is zero, allowing any available port. The port number
- /// can be queried through TCPServer::port() member.
- ///
- /// The server takes ownership of the TCPServerConnectionFactory
- /// and deletes it when it's no longer needed.
- ///
- /// The server also takes ownership of the TCPServerParams object.
- /// If no TCPServerParams object is given, the server's TCPServerDispatcher
- /// creates its own one.
- ///
- /// New threads are taken from the default thread pool.
-
- TCPServer(TCPServerConnectionFactory::Ptr pFactory, const ServerSocket& socket, TCPServerParams::Ptr pParams = 0);
- /// Creates the TCPServer, using the given ServerSocket.
- ///
- /// The server takes ownership of the TCPServerConnectionFactory
- /// and deletes it when it's no longer needed.
- ///
- /// The server also takes ownership of the TCPServerParams object.
- /// If no TCPServerParams object is given, the server's TCPServerDispatcher
- /// creates its own one.
- ///
- /// New threads are taken from the default thread pool.
-
- TCPServer(TCPServerConnectionFactory::Ptr pFactory, Poco::ThreadPool& threadPool, const ServerSocket& socket, TCPServerParams::Ptr pParams = 0);
- /// Creates the TCPServer, using the given ServerSocket.
- ///
- /// The server takes ownership of the TCPServerConnectionFactory
- /// and deletes it when it's no longer needed.
- ///
- /// The server also takes ownership of the TCPServerParams object.
- /// If no TCPServerParams object is given, the server's TCPServerDispatcher
- /// creates its own one.
- ///
- /// New threads are taken from the given thread pool.
-
- virtual ~TCPServer();
- /// Destroys the TCPServer and its TCPServerConnectionFactory.
-
- const TCPServerParams& params() const;
- /// Returns a const reference to the TCPServerParam object
- /// used by the server's TCPServerDispatcher.
-
- void start();
- /// Starts the server. A new thread will be
- /// created that waits for and accepts incoming
- /// connections.
- ///
- /// Before start() is called, the ServerSocket passed to
- /// TCPServer must have been bound and put into listening state.
-
- void stop();
- /// Stops the server.
- ///
- /// No new connections will be accepted.
- /// Already handled connections will continue to be served.
- ///
- /// Once the server has been stopped, it cannot be restarted.
-
- int currentThreads() const;
- /// Returns the number of currently used connection threads.
-
- int maxThreads() const;
- /// Returns the maximum number of threads available.
-
- int totalConnections() const;
- /// Returns the total number of handled connections.
-
- int currentConnections() const;
- /// Returns the number of currently handled connections.
-
- int maxConcurrentConnections() const;
- /// Returns the maximum number of concurrently handled connections.
-
- int queuedConnections() const;
- /// Returns the number of queued connections.
-
- int refusedConnections() const;
- /// Returns the number of refused connections.
-
- const ServerSocket& socket() const;
- /// Returns the underlying server socket.
-
- Poco::UInt16 port() const;
- /// Returns the port the server socket listens on.
-
- void setConnectionFilter(const TCPServerConnectionFilter::Ptr& pFilter);
- /// Sets a TCPServerConnectionFilter. Can also be used to remove
- /// a filter by passing a null pointer.
- ///
- /// To avoid a potential race condition, the filter must
- /// be set before the TCPServer is started. Trying to set
- /// the filter after start() has been called will trigger
- /// an assertion.
-
- TCPServerConnectionFilter::Ptr getConnectionFilter() const;
- /// Returns the TCPServerConnectionFilter set with setConnectionFilter(),
- /// or null pointer if no filter has been set.
-
-protected:
- void run();
- /// Runs the server. The server will run until
- /// the stop() method is called, or the server
- /// object is destroyed, which implicitly calls
- /// the stop() method.
-
- static std::string threadName(const ServerSocket& socket);
- /// Returns a thread name for the server thread.
-
-private:
- TCPServer();
- TCPServer(const TCPServer&);
- TCPServer& operator = (const TCPServer&);
-
- ServerSocket _socket;
- TCPServerDispatcher* _pDispatcher;
- TCPServerConnectionFilter::Ptr _pConnectionFilter;
- Poco::Thread _thread;
- std::atomic<bool> _stopped;
-};
-
-
-//
-// inlines
-//
-inline const ServerSocket& TCPServer::socket() const
-{
- return _socket;
-}
-
-
-inline Poco::UInt16 TCPServer::port() const
-{
- return _socket.address().port();
-}
-
-
-inline TCPServerConnectionFilter::Ptr TCPServer::getConnectionFilter() const
-{
- return _pConnectionFilter;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_TCPServer_INCLUDED
+//
+// TCPServer.h
+//
+// Library: Net
+// Package: TCPServer
+// Module: TCPServer
+//
+// Definition of the TCPServer class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_TCPServer_INCLUDED
+#define Net_TCPServer_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/ServerSocket.h"
+#include "Poco/Net/TCPServerConnectionFactory.h"
+#include "Poco/Net/TCPServerParams.h"
+#include "Poco/RefCountedObject.h"
+#include "Poco/AutoPtr.h"
+#include "Poco/Runnable.h"
+#include "Poco/Thread.h"
+#include "Poco/ThreadPool.h"
+
+#include <atomic>
+
+
+namespace Poco {
+namespace Net {
+
+
+class TCPServerDispatcher;
+class StreamSocket;
+
+
+class Net_API TCPServerConnectionFilter: public Poco::RefCountedObject
+ /// A TCPServerConnectionFilter can be used to reject incoming connections
+ /// before passing them on to the TCPServerDispatcher and
+ /// starting a thread to handle them.
+ ///
+ /// An example use case is white-list or black-list IP address filtering.
+ ///
+ /// Subclasses must override the accept() method.
+{
+public:
+ typedef Poco::AutoPtr<TCPServerConnectionFilter> Ptr;
+
+ virtual bool accept(const StreamSocket& socket) = 0;
+ /// Returns true if the given StreamSocket connection should
+ /// be handled, and passed on to the TCPServerDispatcher.
+ ///
+ /// Returns false if the socket should be closed immediately.
+ ///
+ /// The socket can be prevented from being closed immediately
+ /// if false is returned by creating a copy of the socket.
+ /// This can be used to handle certain socket connections in
+ /// a special way, outside the TCPServer framework.
+
+protected:
+ virtual ~TCPServerConnectionFilter();
+};
+
+
+class Net_API TCPServer: public Poco::Runnable
+ /// This class implements a multithreaded TCP server.
+ ///
+ /// The server uses a ServerSocket to listen for incoming
+ /// connections. The ServerSocket must have been bound to
+ /// an address before it is passed to the TCPServer constructor.
+ /// Additionally, the ServerSocket must be put into listening
+ /// state before the TCPServer is started by calling the start()
+ /// method.
+ ///
+ /// The server uses a thread pool to assign threads to incoming
+ /// connections. Before incoming connections are assigned to
+ /// a connection thread, they are put into a queue.
+ /// Connection threads fetch new connections from the queue as soon
+ /// as they become free. Thus, a connection thread may serve more
+ /// than one connection.
+ ///
+ /// As soon as a connection thread fetches the next connection from
+ /// the queue, it creates a TCPServerConnection object for it
+ /// (using the TCPServerConnectionFactory passed to the constructor)
+ /// and calls the TCPServerConnection's start() method. When the
+ /// start() method returns, the connection object is deleted.
+ ///
+ /// The number of connection threads is adjusted dynamically, depending
+ /// on the number of connections waiting to be served.
+ ///
+ /// It is possible to specify a maximum number of queued connections.
+ /// This prevents the connection queue from overflowing in the
+ /// case of an extreme server load. In such a case, connections that
+ /// cannot be queued are silently and immediately closed.
+ ///
+ /// TCPServer uses a separate thread to accept incoming connections.
+ /// Thus, the call to start() returns immediately, and the server
+ /// continues to run in the background.
+ ///
+ /// To stop the server from accepting new connections, call stop().
+ ///
+ /// After calling stop(), no new connections will be accepted and
+ /// all queued connections will be discarded.
+ /// Already served connections, however, will continue being served.
+{
+public:
+ TCPServer(TCPServerConnectionFactory::Ptr pFactory, Poco::UInt16 portNumber = 0, TCPServerParams::Ptr pParams = 0);
+ /// Creates the TCPServer, with ServerSocket listening on the given port.
+ /// Default port is zero, allowing any available port. The port number
+ /// can be queried through TCPServer::port() member.
+ ///
+ /// The server takes ownership of the TCPServerConnectionFactory
+ /// and deletes it when it's no longer needed.
+ ///
+ /// The server also takes ownership of the TCPServerParams object.
+ /// If no TCPServerParams object is given, the server's TCPServerDispatcher
+ /// creates its own one.
+ ///
+ /// New threads are taken from the default thread pool.
+
+ TCPServer(TCPServerConnectionFactory::Ptr pFactory, const ServerSocket& socket, TCPServerParams::Ptr pParams = 0);
+ /// Creates the TCPServer, using the given ServerSocket.
+ ///
+ /// The server takes ownership of the TCPServerConnectionFactory
+ /// and deletes it when it's no longer needed.
+ ///
+ /// The server also takes ownership of the TCPServerParams object.
+ /// If no TCPServerParams object is given, the server's TCPServerDispatcher
+ /// creates its own one.
+ ///
+ /// New threads are taken from the default thread pool.
+
+ TCPServer(TCPServerConnectionFactory::Ptr pFactory, Poco::ThreadPool& threadPool, const ServerSocket& socket, TCPServerParams::Ptr pParams = 0);
+ /// Creates the TCPServer, using the given ServerSocket.
+ ///
+ /// The server takes ownership of the TCPServerConnectionFactory
+ /// and deletes it when it's no longer needed.
+ ///
+ /// The server also takes ownership of the TCPServerParams object.
+ /// If no TCPServerParams object is given, the server's TCPServerDispatcher
+ /// creates its own one.
+ ///
+ /// New threads are taken from the given thread pool.
+
+ virtual ~TCPServer();
+ /// Destroys the TCPServer and its TCPServerConnectionFactory.
+
+ const TCPServerParams& params() const;
+ /// Returns a const reference to the TCPServerParam object
+ /// used by the server's TCPServerDispatcher.
+
+ void start();
+ /// Starts the server. A new thread will be
+ /// created that waits for and accepts incoming
+ /// connections.
+ ///
+ /// Before start() is called, the ServerSocket passed to
+ /// TCPServer must have been bound and put into listening state.
+
+ void stop();
+ /// Stops the server.
+ ///
+ /// No new connections will be accepted.
+ /// Already handled connections will continue to be served.
+ ///
+ /// Once the server has been stopped, it cannot be restarted.
+
+ int currentThreads() const;
+ /// Returns the number of currently used connection threads.
+
+ int maxThreads() const;
+ /// Returns the maximum number of threads available.
+
+ int totalConnections() const;
+ /// Returns the total number of handled connections.
+
+ int currentConnections() const;
+ /// Returns the number of currently handled connections.
+
+ int maxConcurrentConnections() const;
+ /// Returns the maximum number of concurrently handled connections.
+
+ int queuedConnections() const;
+ /// Returns the number of queued connections.
+
+ int refusedConnections() const;
+ /// Returns the number of refused connections.
+
+ const ServerSocket& socket() const;
+ /// Returns the underlying server socket.
+
+ Poco::UInt16 port() const;
+ /// Returns the port the server socket listens on.
+
+ void setConnectionFilter(const TCPServerConnectionFilter::Ptr& pFilter);
+ /// Sets a TCPServerConnectionFilter. Can also be used to remove
+ /// a filter by passing a null pointer.
+ ///
+ /// To avoid a potential race condition, the filter must
+ /// be set before the TCPServer is started. Trying to set
+ /// the filter after start() has been called will trigger
+ /// an assertion.
+
+ TCPServerConnectionFilter::Ptr getConnectionFilter() const;
+ /// Returns the TCPServerConnectionFilter set with setConnectionFilter(),
+ /// or null pointer if no filter has been set.
+
+protected:
+ void run();
+ /// Runs the server. The server will run until
+ /// the stop() method is called, or the server
+ /// object is destroyed, which implicitly calls
+ /// the stop() method.
+
+ static std::string threadName(const ServerSocket& socket);
+ /// Returns a thread name for the server thread.
+
+private:
+ TCPServer();
+ TCPServer(const TCPServer&);
+ TCPServer& operator = (const TCPServer&);
+
+ ServerSocket _socket;
+ TCPServerDispatcher* _pDispatcher;
+ TCPServerConnectionFilter::Ptr _pConnectionFilter;
+ Poco::Thread _thread;
+ std::atomic<bool> _stopped;
+};
+
+
+//
+// inlines
+//
+inline const ServerSocket& TCPServer::socket() const
+{
+ return _socket;
+}
+
+
+inline Poco::UInt16 TCPServer::port() const
+{
+ return _socket.address().port();
+}
+
+
+inline TCPServerConnectionFilter::Ptr TCPServer::getConnectionFilter() const
+{
+ return _pConnectionFilter;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_TCPServer_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnection.h b/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnection.h
index d89dffbdbf..380edcc169 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnection.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnection.h
@@ -1,86 +1,86 @@
-//
-// TCPServerConnection.h
-//
-// Library: Net
-// Package: TCPServer
-// Module: TCPServerConnection
-//
-// Definition of the TCPServerConnection class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_TCPServerConnection_INCLUDED
-#define Net_TCPServerConnection_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Runnable.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API TCPServerConnection: public Poco::Runnable
- /// The abstract base class for TCP server connections
- /// created by TCPServer.
- ///
- /// Derived classes must override the run() method
- /// (inherited from Runnable). Furthermore, a
- /// TCPServerConnectionFactory must be provided for the subclass.
- ///
- /// The run() method must perform the complete handling
- /// of the client connection. As soon as the run() method
- /// returns, the server connection object is destroyed and
- /// the connection is automatically closed.
- ///
- /// A new TCPServerConnection object will be created for
- /// each new client connection that is accepted by
- /// TCPServer.
-{
-public:
- TCPServerConnection(const StreamSocket& socket);
- /// Creates the TCPServerConnection using the given
- /// stream socket.
-
- virtual ~TCPServerConnection();
- /// Destroys the TCPServerConnection.
-
-protected:
- StreamSocket& socket();
- /// Returns a reference to the underlying socket.
-
- void start();
- /// Calls run() and catches any exceptions that
- /// might be thrown by run().
-
-private:
- TCPServerConnection();
- TCPServerConnection(const TCPServerConnection&);
- TCPServerConnection& operator = (const TCPServerConnection&);
-
- StreamSocket _socket;
-
- friend class TCPServerDispatcher;
-};
-
-
-//
-// inlines
-//
-inline StreamSocket& TCPServerConnection::socket()
-{
- return _socket;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_TCPServerConnection_INCLUDED
+//
+// TCPServerConnection.h
+//
+// Library: Net
+// Package: TCPServer
+// Module: TCPServerConnection
+//
+// Definition of the TCPServerConnection class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_TCPServerConnection_INCLUDED
+#define Net_TCPServerConnection_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Runnable.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API TCPServerConnection: public Poco::Runnable
+ /// The abstract base class for TCP server connections
+ /// created by TCPServer.
+ ///
+ /// Derived classes must override the run() method
+ /// (inherited from Runnable). Furthermore, a
+ /// TCPServerConnectionFactory must be provided for the subclass.
+ ///
+ /// The run() method must perform the complete handling
+ /// of the client connection. As soon as the run() method
+ /// returns, the server connection object is destroyed and
+ /// the connection is automatically closed.
+ ///
+ /// A new TCPServerConnection object will be created for
+ /// each new client connection that is accepted by
+ /// TCPServer.
+{
+public:
+ TCPServerConnection(const StreamSocket& socket);
+ /// Creates the TCPServerConnection using the given
+ /// stream socket.
+
+ virtual ~TCPServerConnection();
+ /// Destroys the TCPServerConnection.
+
+protected:
+ StreamSocket& socket();
+ /// Returns a reference to the underlying socket.
+
+ void start();
+ /// Calls run() and catches any exceptions that
+ /// might be thrown by run().
+
+private:
+ TCPServerConnection();
+ TCPServerConnection(const TCPServerConnection&);
+ TCPServerConnection& operator = (const TCPServerConnection&);
+
+ StreamSocket _socket;
+
+ friend class TCPServerDispatcher;
+};
+
+
+//
+// inlines
+//
+inline StreamSocket& TCPServerConnection::socket()
+{
+ return _socket;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_TCPServerConnection_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnectionFactory.h b/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnectionFactory.h
index 36c52b3d57..8fc4d6b4d0 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnectionFactory.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/TCPServerConnectionFactory.h
@@ -1,89 +1,89 @@
-//
-// TCPServerConnectionFactory.h
-//
-// Library: Net
-// Package: TCPServer
-// Module: TCPServerConnectionFactory
-//
-// Definition of the TCPServerConnectionFactory class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_TCPServerConnectionFactory_INCLUDED
-#define Net_TCPServerConnectionFactory_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/TCPServerConnection.h"
-#include "Poco/SharedPtr.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API TCPServerConnectionFactory
- /// A factory for TCPServerConnection objects.
- ///
- /// The TCPServer class uses a TCPServerConnectionFactory
- /// to create a connection object for each new connection
- /// it accepts.
- ///
- /// Subclasses must override the createConnection()
- /// method.
- ///
- /// The TCPServerConnectionFactoryImpl template class
- /// can be used to automatically instantiate a
- /// TCPServerConnectionFactory for a given subclass
- /// of TCPServerConnection.
-{
-public:
- typedef Poco::SharedPtr<TCPServerConnectionFactory> Ptr;
-
- virtual ~TCPServerConnectionFactory();
- /// Destroys the TCPServerConnectionFactory.
-
- virtual TCPServerConnection* createConnection(const StreamSocket& socket) = 0;
- /// Creates an instance of a subclass of TCPServerConnection,
- /// using the given StreamSocket.
-
-protected:
- TCPServerConnectionFactory();
- /// Creates the TCPServerConnectionFactory.
-
-private:
- TCPServerConnectionFactory(const TCPServerConnectionFactory&);
- TCPServerConnectionFactory& operator = (const TCPServerConnectionFactory&);
-};
-
-
-template <class S>
-class TCPServerConnectionFactoryImpl: public TCPServerConnectionFactory
- /// This template provides a basic implementation of
- /// TCPServerConnectionFactory.
-{
-public:
- TCPServerConnectionFactoryImpl()
- {
- }
-
- ~TCPServerConnectionFactoryImpl()
- {
- }
-
- TCPServerConnection* createConnection(const StreamSocket& socket)
- {
- return new S(socket);
- }
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_TCPServerConnectionFactory_INCLUDED
+//
+// TCPServerConnectionFactory.h
+//
+// Library: Net
+// Package: TCPServer
+// Module: TCPServerConnectionFactory
+//
+// Definition of the TCPServerConnectionFactory class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_TCPServerConnectionFactory_INCLUDED
+#define Net_TCPServerConnectionFactory_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/TCPServerConnection.h"
+#include "Poco/SharedPtr.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API TCPServerConnectionFactory
+ /// A factory for TCPServerConnection objects.
+ ///
+ /// The TCPServer class uses a TCPServerConnectionFactory
+ /// to create a connection object for each new connection
+ /// it accepts.
+ ///
+ /// Subclasses must override the createConnection()
+ /// method.
+ ///
+ /// The TCPServerConnectionFactoryImpl template class
+ /// can be used to automatically instantiate a
+ /// TCPServerConnectionFactory for a given subclass
+ /// of TCPServerConnection.
+{
+public:
+ typedef Poco::SharedPtr<TCPServerConnectionFactory> Ptr;
+
+ virtual ~TCPServerConnectionFactory();
+ /// Destroys the TCPServerConnectionFactory.
+
+ virtual TCPServerConnection* createConnection(const StreamSocket& socket) = 0;
+ /// Creates an instance of a subclass of TCPServerConnection,
+ /// using the given StreamSocket.
+
+protected:
+ TCPServerConnectionFactory();
+ /// Creates the TCPServerConnectionFactory.
+
+private:
+ TCPServerConnectionFactory(const TCPServerConnectionFactory&);
+ TCPServerConnectionFactory& operator = (const TCPServerConnectionFactory&);
+};
+
+
+template <class S>
+class TCPServerConnectionFactoryImpl: public TCPServerConnectionFactory
+ /// This template provides a basic implementation of
+ /// TCPServerConnectionFactory.
+{
+public:
+ TCPServerConnectionFactoryImpl()
+ {
+ }
+
+ ~TCPServerConnectionFactoryImpl()
+ {
+ }
+
+ TCPServerConnection* createConnection(const StreamSocket& socket)
+ {
+ return new S(socket);
+ }
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_TCPServerConnectionFactory_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/TCPServerDispatcher.h b/contrib/libs/poco/Net/include/Poco/Net/TCPServerDispatcher.h
index 5a1a6a79a0..3c46d0f268 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/TCPServerDispatcher.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/TCPServerDispatcher.h
@@ -1,130 +1,130 @@
-//
-// TCPServerDispatcher.h
-//
-// Library: Net
-// Package: TCPServer
-// Module: TCPServerDispatcher
-//
-// Definition of the TCPServerDispatcher class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_TCPServerDispatcher_INCLUDED
-#define Net_TCPServerDispatcher_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Net/TCPServerConnectionFactory.h"
-#include "Poco/Net/TCPServerParams.h"
-#include "Poco/Runnable.h"
-#include "Poco/NotificationQueue.h"
-#include "Poco/ThreadPool.h"
-#include "Poco/Mutex.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API TCPServerDispatcher: public Poco::Runnable
- /// A helper class for TCPServer that dispatches
- /// connections to server connection threads.
-{
-public:
- TCPServerDispatcher(TCPServerConnectionFactory::Ptr pFactory, Poco::ThreadPool& threadPool, TCPServerParams::Ptr pParams);
- /// Creates the TCPServerDispatcher.
- ///
- /// The dispatcher takes ownership of the TCPServerParams object.
- /// If no TCPServerParams object is supplied, the TCPServerDispatcher
- /// creates one.
-
- void duplicate();
- /// Increments the object's reference count.
-
- void release();
- /// Decrements the object's reference count
- /// and deletes the object if the count
- /// reaches zero.
-
- void run();
- /// Runs the dispatcher.
-
- void enqueue(const StreamSocket& socket);
- /// Queues the given socket connection.
-
- void stop();
- /// Stops the dispatcher.
-
- int currentThreads() const;
- /// Returns the number of currently used threads.
-
- int maxThreads() const;
- /// Returns the maximum number of threads available.
-
- int totalConnections() const;
- /// Returns the total number of handled connections.
-
- int currentConnections() const;
- /// Returns the number of currently handled connections.
-
- int maxConcurrentConnections() const;
- /// Returns the maximum number of concurrently handled connections.
-
- int queuedConnections() const;
- /// Returns the number of queued connections.
-
- int refusedConnections() const;
- /// Returns the number of refused connections.
-
- const TCPServerParams& params() const;
- /// Returns a const reference to the TCPServerParam object.
-
-protected:
- ~TCPServerDispatcher();
- /// Destroys the TCPServerDispatcher.
-
- void beginConnection();
- /// Updates the performance counters.
-
- void endConnection();
- /// Updates the performance counters.
-
-private:
- TCPServerDispatcher();
- TCPServerDispatcher(const TCPServerDispatcher&);
- TCPServerDispatcher& operator = (const TCPServerDispatcher&);
-
- int _rc;
- TCPServerParams::Ptr _pParams;
- int _currentThreads;
- int _totalConnections;
- int _currentConnections;
- int _maxConcurrentConnections;
- int _refusedConnections;
- bool _stopped;
- Poco::NotificationQueue _queue;
- TCPServerConnectionFactory::Ptr _pConnectionFactory;
- Poco::ThreadPool& _threadPool;
- mutable Poco::FastMutex _mutex;
-};
-
-
-//
-// inlines
-//
-inline const TCPServerParams& TCPServerDispatcher::params() const
-{
- return *_pParams;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_TCPServerDispatcher_INCLUDED
+//
+// TCPServerDispatcher.h
+//
+// Library: Net
+// Package: TCPServer
+// Module: TCPServerDispatcher
+//
+// Definition of the TCPServerDispatcher class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_TCPServerDispatcher_INCLUDED
+#define Net_TCPServerDispatcher_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Net/TCPServerConnectionFactory.h"
+#include "Poco/Net/TCPServerParams.h"
+#include "Poco/Runnable.h"
+#include "Poco/NotificationQueue.h"
+#include "Poco/ThreadPool.h"
+#include "Poco/Mutex.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API TCPServerDispatcher: public Poco::Runnable
+ /// A helper class for TCPServer that dispatches
+ /// connections to server connection threads.
+{
+public:
+ TCPServerDispatcher(TCPServerConnectionFactory::Ptr pFactory, Poco::ThreadPool& threadPool, TCPServerParams::Ptr pParams);
+ /// Creates the TCPServerDispatcher.
+ ///
+ /// The dispatcher takes ownership of the TCPServerParams object.
+ /// If no TCPServerParams object is supplied, the TCPServerDispatcher
+ /// creates one.
+
+ void duplicate();
+ /// Increments the object's reference count.
+
+ void release();
+ /// Decrements the object's reference count
+ /// and deletes the object if the count
+ /// reaches zero.
+
+ void run();
+ /// Runs the dispatcher.
+
+ void enqueue(const StreamSocket& socket);
+ /// Queues the given socket connection.
+
+ void stop();
+ /// Stops the dispatcher.
+
+ int currentThreads() const;
+ /// Returns the number of currently used threads.
+
+ int maxThreads() const;
+ /// Returns the maximum number of threads available.
+
+ int totalConnections() const;
+ /// Returns the total number of handled connections.
+
+ int currentConnections() const;
+ /// Returns the number of currently handled connections.
+
+ int maxConcurrentConnections() const;
+ /// Returns the maximum number of concurrently handled connections.
+
+ int queuedConnections() const;
+ /// Returns the number of queued connections.
+
+ int refusedConnections() const;
+ /// Returns the number of refused connections.
+
+ const TCPServerParams& params() const;
+ /// Returns a const reference to the TCPServerParam object.
+
+protected:
+ ~TCPServerDispatcher();
+ /// Destroys the TCPServerDispatcher.
+
+ void beginConnection();
+ /// Updates the performance counters.
+
+ void endConnection();
+ /// Updates the performance counters.
+
+private:
+ TCPServerDispatcher();
+ TCPServerDispatcher(const TCPServerDispatcher&);
+ TCPServerDispatcher& operator = (const TCPServerDispatcher&);
+
+ int _rc;
+ TCPServerParams::Ptr _pParams;
+ int _currentThreads;
+ int _totalConnections;
+ int _currentConnections;
+ int _maxConcurrentConnections;
+ int _refusedConnections;
+ bool _stopped;
+ Poco::NotificationQueue _queue;
+ TCPServerConnectionFactory::Ptr _pConnectionFactory;
+ Poco::ThreadPool& _threadPool;
+ mutable Poco::FastMutex _mutex;
+};
+
+
+//
+// inlines
+//
+inline const TCPServerParams& TCPServerDispatcher::params() const
+{
+ return *_pParams;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_TCPServerDispatcher_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/TCPServerParams.h b/contrib/libs/poco/Net/include/Poco/Net/TCPServerParams.h
index 1752b732b6..1c2057e5ec 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/TCPServerParams.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/TCPServerParams.h
@@ -1,137 +1,137 @@
-//
-// TCPServerParams.h
-//
-// Library: Net
-// Package: TCPServer
-// Module: TCPServerParams
-//
-// Definition of the TCPServerParams class.
-//
-// Copyright (c) 2005-2007, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_TCPServerParams_INCLUDED
-#define Net_TCPServerParams_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/RefCountedObject.h"
-#include "Poco/Timespan.h"
-#include "Poco/Thread.h"
-#include "Poco/AutoPtr.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class Net_API TCPServerParams: public Poco::RefCountedObject
- /// This class is used to specify parameters to both the
- /// TCPServer, as well as to TCPServerDispatcher objects.
- ///
- /// Subclasses may add new parameters to the class.
-{
-public:
- typedef Poco::AutoPtr<TCPServerParams> Ptr;
-
- TCPServerParams();
- /// Creates the TCPServerParams.
- ///
- /// Sets the following default values:
- /// - threadIdleTime: 10 seconds
- /// - maxThreads: 0
- /// - maxQueued: 64
-
- void setThreadIdleTime(const Poco::Timespan& idleTime);
- /// Sets the maximum idle time for a thread before
- /// it is terminated.
- ///
- /// The default idle time is 10 seconds;
-
- const Poco::Timespan& getThreadIdleTime() const;
- /// Returns the maximum thread idle time.
-
- void setMaxQueued(int count);
- /// Sets the maximum number of queued connections.
- /// Must be greater than 0.
- ///
- /// If there are already the maximum number of connections
- /// in the queue, new connections will be silently discarded.
- ///
- /// The default number is 64.
-
- int getMaxQueued() const;
- /// Returns the maximum number of queued connections.
-
- void setMaxThreads(int count);
- /// Sets the maximum number of simultaneous threads
- /// available for this TCPServerDispatcher.
- ///
- /// Must be greater than or equal to 0.
- /// If 0 is specified, the TCPServerDispatcher will
- /// set this parameter to the number of available threads
- /// in its thread pool.
- ///
- /// The thread pool used by the TCPServerDispatcher
- /// must at least have the capacity for the given
- /// number of threads.
-
- int getMaxThreads() const;
- /// Returns the maximum number of simultaneous threads
- /// available for this TCPServerDispatcher.
-
- void setThreadPriority(Poco::Thread::Priority prio);
- /// Sets the priority of TCP server threads
+//
+// TCPServerParams.h
+//
+// Library: Net
+// Package: TCPServer
+// Module: TCPServerParams
+//
+// Definition of the TCPServerParams class.
+//
+// Copyright (c) 2005-2007, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_TCPServerParams_INCLUDED
+#define Net_TCPServerParams_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/RefCountedObject.h"
+#include "Poco/Timespan.h"
+#include "Poco/Thread.h"
+#include "Poco/AutoPtr.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class Net_API TCPServerParams: public Poco::RefCountedObject
+ /// This class is used to specify parameters to both the
+ /// TCPServer, as well as to TCPServerDispatcher objects.
+ ///
+ /// Subclasses may add new parameters to the class.
+{
+public:
+ typedef Poco::AutoPtr<TCPServerParams> Ptr;
+
+ TCPServerParams();
+ /// Creates the TCPServerParams.
+ ///
+ /// Sets the following default values:
+ /// - threadIdleTime: 10 seconds
+ /// - maxThreads: 0
+ /// - maxQueued: 64
+
+ void setThreadIdleTime(const Poco::Timespan& idleTime);
+ /// Sets the maximum idle time for a thread before
+ /// it is terminated.
+ ///
+ /// The default idle time is 10 seconds;
+
+ const Poco::Timespan& getThreadIdleTime() const;
+ /// Returns the maximum thread idle time.
+
+ void setMaxQueued(int count);
+ /// Sets the maximum number of queued connections.
+ /// Must be greater than 0.
+ ///
+ /// If there are already the maximum number of connections
+ /// in the queue, new connections will be silently discarded.
+ ///
+ /// The default number is 64.
+
+ int getMaxQueued() const;
+ /// Returns the maximum number of queued connections.
+
+ void setMaxThreads(int count);
+ /// Sets the maximum number of simultaneous threads
+ /// available for this TCPServerDispatcher.
+ ///
+ /// Must be greater than or equal to 0.
+ /// If 0 is specified, the TCPServerDispatcher will
+ /// set this parameter to the number of available threads
+ /// in its thread pool.
+ ///
+ /// The thread pool used by the TCPServerDispatcher
+ /// must at least have the capacity for the given
+ /// number of threads.
+
+ int getMaxThreads() const;
+ /// Returns the maximum number of simultaneous threads
+ /// available for this TCPServerDispatcher.
+
+ void setThreadPriority(Poco::Thread::Priority prio);
+ /// Sets the priority of TCP server threads
+ /// created by TCPServer.
+
+ Poco::Thread::Priority getThreadPriority() const;
+ /// Returns the priority of TCP server threads
/// created by TCPServer.
-
- Poco::Thread::Priority getThreadPriority() const;
- /// Returns the priority of TCP server threads
- /// created by TCPServer.
-
-protected:
- virtual ~TCPServerParams();
- /// Destroys the TCPServerParams.
-
-private:
- Poco::Timespan _threadIdleTime;
- int _maxThreads;
- int _maxQueued;
- Poco::Thread::Priority _threadPriority;
-};
-
-
-//
-// inlines
-//
-inline const Poco::Timespan& TCPServerParams::getThreadIdleTime() const
-{
- return _threadIdleTime;
-}
-
-
-inline int TCPServerParams::getMaxThreads() const
-{
- return _maxThreads;
-}
-
-
-inline int TCPServerParams::getMaxQueued() const
-{
- return _maxQueued;
-}
-
-
-inline Poco::Thread::Priority TCPServerParams::getThreadPriority() const
-{
- return _threadPriority;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_TCPServerParams_INCLUDED
+
+protected:
+ virtual ~TCPServerParams();
+ /// Destroys the TCPServerParams.
+
+private:
+ Poco::Timespan _threadIdleTime;
+ int _maxThreads;
+ int _maxQueued;
+ Poco::Thread::Priority _threadPriority;
+};
+
+
+//
+// inlines
+//
+inline const Poco::Timespan& TCPServerParams::getThreadIdleTime() const
+{
+ return _threadIdleTime;
+}
+
+
+inline int TCPServerParams::getMaxThreads() const
+{
+ return _maxThreads;
+}
+
+
+inline int TCPServerParams::getMaxQueued() const
+{
+ return _maxQueued;
+}
+
+
+inline Poco::Thread::Priority TCPServerParams::getThreadPriority() const
+{
+ return _threadPriority;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_TCPServerParams_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/WebSocket.h b/contrib/libs/poco/Net/include/Poco/Net/WebSocket.h
index bb6b29a5e7..5d3f05d12d 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/WebSocket.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/WebSocket.h
@@ -1,297 +1,297 @@
-//
-// WebSocket.h
-//
-// Library: Net
-// Package: WebSocket
-// Module: WebSocket
-//
-// Definition of the WebSocket class.
-//
-// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_WebSocket_INCLUDED
-#define Net_WebSocket_INCLUDED
-
-
-#include "Poco/Net/Net.h"
-#include "Poco/Net/StreamSocket.h"
-#include "Poco/Net/HTTPCredentials.h"
-#include "Poco/Buffer.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class WebSocketImpl;
-class HTTPServerRequest;
-class HTTPServerResponse;
-class HTTPClientSession;
-
-
-class Net_API WebSocket: public StreamSocket
- /// This class implements a WebSocket according
- /// to the WebSocket protocol specification in RFC 6455.
- ///
- /// Both client-side and server-side WebSockets
- /// are supported.
- ///
- /// Server-side WebSockets are usually created from within
- /// a HTTPRequestHandler.
- ///
- /// Client-side WebSockets are created using a HTTPClientSession.
- ///
- /// Note that special frames like PING must be handled at
- /// application level. In the case of a PING, a PONG message
- /// must be returned.
-{
-public:
- enum Mode
- {
- WS_SERVER, /// Server-side WebSocket.
- WS_CLIENT /// Client-side WebSocket.
- };
-
- enum FrameFlags
- /// Frame header flags.
- {
- FRAME_FLAG_FIN = 0x80, /// FIN bit: final fragment of a multi-fragment message.
- FRAME_FLAG_RSV1 = 0x40, /// Reserved for future use. Must be zero.
- FRAME_FLAG_RSV2 = 0x20, /// Reserved for future use. Must be zero.
- FRAME_FLAG_RSV3 = 0x10 /// Reserved for future use. Must be zero.
- };
-
- enum FrameOpcodes
- /// Frame header opcodes.
- {
- FRAME_OP_CONT = 0x00, /// Continuation frame.
- FRAME_OP_TEXT = 0x01, /// Text frame.
- FRAME_OP_BINARY = 0x02, /// Binary frame.
- FRAME_OP_CLOSE = 0x08, /// Close connection.
- FRAME_OP_PING = 0x09, /// Ping frame.
- FRAME_OP_PONG = 0x0a, /// Pong frame.
- FRAME_OP_BITMASK = 0x0f, /// Bit mask for opcodes.
- FRAME_OP_SETRAW = 0x100 /// Set raw flags (for use with sendBytes() and FRAME_OP_CONT).
- };
-
- enum SendFlags
- /// Combined header flags and opcodes for use with sendFrame().
- {
- FRAME_TEXT = FRAME_FLAG_FIN | FRAME_OP_TEXT,
- /// Use this for sending a single text (UTF-8) payload frame.
- FRAME_BINARY = FRAME_FLAG_FIN | FRAME_OP_BINARY
- /// Use this for sending a single binary payload frame.
- };
-
- enum StatusCodes
- /// StatusCodes for CLOSE frames sent with shutdown().
- {
- WS_NORMAL_CLOSE = 1000,
- WS_ENDPOINT_GOING_AWAY = 1001,
- WS_PROTOCOL_ERROR = 1002,
- WS_PAYLOAD_NOT_ACCEPTABLE = 1003,
- WS_RESERVED = 1004,
- WS_RESERVED_NO_STATUS_CODE = 1005,
- WS_RESERVED_ABNORMAL_CLOSE = 1006,
- WS_MALFORMED_PAYLOAD = 1007,
- WS_POLICY_VIOLATION = 1008,
- WS_PAYLOAD_TOO_BIG = 1009,
- WS_EXTENSION_REQUIRED = 1010,
- WS_UNEXPECTED_CONDITION = 1011,
- WS_RESERVED_TLS_FAILURE = 1015
- };
-
- enum ErrorCodes
- /// These error codes can be obtained from a WebSocketException
- /// to determine the exact cause of the error.
- {
- WS_ERR_NO_HANDSHAKE = 1,
- /// No Connection: Upgrade or Upgrade: websocket header in handshake request.
- WS_ERR_HANDSHAKE_NO_VERSION = 2,
- /// No Sec-WebSocket-Version header in handshake request.
- WS_ERR_HANDSHAKE_UNSUPPORTED_VERSION = 3,
- /// Unsupported WebSocket version requested by client.
- WS_ERR_HANDSHAKE_NO_KEY = 4,
- /// No Sec-WebSocket-Key header in handshake request.
- WS_ERR_HANDSHAKE_ACCEPT = 5,
- /// No Sec-WebSocket-Accept header or wrong value.
- WS_ERR_UNAUTHORIZED = 6,
- /// The server rejected the username or password for authentication.
- WS_ERR_PAYLOAD_TOO_BIG = 10,
- /// Payload too big for supplied buffer.
- WS_ERR_INCOMPLETE_FRAME = 11
- /// Incomplete frame received.
- };
-
- WebSocket(HTTPServerRequest& request, HTTPServerResponse& response);
- /// Creates a server-side WebSocket from within a
- /// HTTPRequestHandler.
- ///
- /// First verifies that the request is a valid WebSocket upgrade
- /// request. If so, completes the handshake by sending
- /// a proper 101 response.
- ///
- /// Throws an exception if the request is not a proper WebSocket
- /// upgrade request.
-
- WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response);
- /// Creates a client-side WebSocket, using the given
- /// HTTPClientSession and HTTPRequest for the initial handshake
- /// (HTTP Upgrade request).
- ///
- /// Additional HTTP headers for the initial handshake request
- /// (such as Origin or Sec-WebSocket-Protocol) can be given
- /// in the request object.
- ///
- /// The result of the handshake can be obtained from the response
- /// object.
-
- WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials);
- /// Creates a client-side WebSocket, using the given
- /// HTTPClientSession and HTTPRequest for the initial handshake
- /// (HTTP Upgrade request).
- ///
- /// The given credentials are used for authentication
- /// if requested by the server.
- ///
- /// Additional HTTP headers for the initial handshake request
- /// (such as Origin or Sec-WebSocket-Protocol) can be given
- /// in the request object.
- ///
- /// The result of the handshake can be obtained from the response
- /// object.
-
- WebSocket(const Socket& socket);
- /// Creates a WebSocket from another Socket, which must be a WebSocket,
- /// otherwise a Poco::InvalidArgumentException will be thrown.
-
- virtual ~WebSocket();
- /// Destroys the StreamSocket.
-
- WebSocket& operator = (const Socket& socket);
- /// Assignment operator.
- ///
- /// The other socket must be a WebSocket, otherwise a Poco::InvalidArgumentException
- /// will be thrown.
-
- void shutdown();
- /// Sends a Close control frame to the server end of
- /// the connection to initiate an orderly shutdown
- /// of the connection.
-
- void shutdown(Poco::UInt16 statusCode, const std::string& statusMessage = "");
- /// Sends a Close control frame to the server end of
- /// the connection to initiate an orderly shutdown
- /// of the connection.
-
- int sendFrame(const void* buffer, int length, int flags = FRAME_TEXT);
- /// Sends the contents of the given buffer through
- /// the socket as a single frame.
- ///
- /// Values from the FrameFlags, FrameOpcodes and SendFlags enumerations
- /// can be specified in flags.
- ///
- /// Returns the number of bytes sent, which may be
- /// less than the number of bytes specified.
- ///
- /// Certain socket implementations may also return a negative
- /// value denoting a certain condition.
-
- int receiveFrame(void* buffer, int length, int& flags);
- /// Receives a frame from the socket and stores it
- /// in buffer. Up to length bytes are received. If
- /// the frame's payload is larger, a WebSocketException
- /// is thrown and the WebSocket connection must be
- /// terminated.
- ///
- /// The frame's payload size must not exceed the
- /// maximum payload size set with setMaxPayloadSize().
- /// If it does, a WebSocketException (WS_ERR_PAYLOAD_TOO_BIG)
- /// is thrown and the WebSocket connection must be
- /// terminated.
- ///
- /// A WebSocketException will also be thrown if a malformed
- /// or incomplete frame is received.
- ///
- /// Returns the number of bytes received.
- /// A return value of 0 means that the peer has
- /// shut down or closed the connection.
- ///
- /// Throws a TimeoutException if a receive timeout has
- /// been set and nothing is received within that interval.
- /// Throws a NetException (or a subclass) in case of other errors.
- ///
- /// The frame flags and opcode (FrameFlags and FrameOpcodes)
- /// is stored in flags.
-
- int receiveFrame(Poco::Buffer<char>& buffer, int& flags);
- /// Receives a frame from the socket and stores it
- /// after any previous content in buffer.
- /// The buffer will be grown as necessary.
- ///
- /// The frame's payload size must not exceed the
- /// maximum payload size set with setMaxPayloadSize().
- /// If it does, a WebSocketException (WS_ERR_PAYLOAD_TOO_BIG)
- /// is thrown and the WebSocket connection must be
- /// terminated.
- ///
- /// A WebSocketException will also be thrown if a malformed
- /// or incomplete frame is received.
- ///
- /// If this method is used, a reasonable maximum payload size should
- /// be set with setMaxPayloadSize() to prevent a potential
- /// DoS attack (memory exhaustion) by sending a WebSocket frame
- /// header with a huge payload size.
- ///
- /// Returns the number of bytes received.
- /// A return value of 0 means that the peer has
- /// shut down or closed the connection.
- ///
- /// Throws a TimeoutException if a receive timeout has
- /// been set and nothing is received within that interval.
- /// Throws a NetException (or a subclass) in case of other errors.
- ///
- /// The frame flags and opcode (FrameFlags and FrameOpcodes)
- /// is stored in flags.
-
- Mode mode() const;
- /// Returns WS_SERVER if the WebSocket is a server-side
- /// WebSocket, or WS_CLIENT otherwise.
-
- void setMaxPayloadSize(int maxPayloadSize);
- /// Sets the maximum payload size for receiveFrame().
- ///
- /// The default is std::numeric_limits<int>::max().
-
- int getMaxPayloadSize() const;
- /// Returns the maximum payload size for receiveFrame().
- ///
- /// The default is std::numeric_limits<int>::max().
-
- static const std::string WEBSOCKET_VERSION;
- /// The WebSocket protocol version supported (13).
-
-protected:
- static WebSocketImpl* accept(HTTPServerRequest& request, HTTPServerResponse& response);
- static WebSocketImpl* connect(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials);
- static WebSocketImpl* completeHandshake(HTTPClientSession& cs, HTTPResponse& response, const std::string& key);
- static std::string computeAccept(const std::string& key);
- static std::string createKey();
-
-private:
- WebSocket();
-
- static const std::string WEBSOCKET_GUID;
- static HTTPCredentials _defaultCreds;
-};
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_WebSocket_INCLUDED
+//
+// WebSocket.h
+//
+// Library: Net
+// Package: WebSocket
+// Module: WebSocket
+//
+// Definition of the WebSocket class.
+//
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_WebSocket_INCLUDED
+#define Net_WebSocket_INCLUDED
+
+
+#include "Poco/Net/Net.h"
+#include "Poco/Net/StreamSocket.h"
+#include "Poco/Net/HTTPCredentials.h"
+#include "Poco/Buffer.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class WebSocketImpl;
+class HTTPServerRequest;
+class HTTPServerResponse;
+class HTTPClientSession;
+
+
+class Net_API WebSocket: public StreamSocket
+ /// This class implements a WebSocket according
+ /// to the WebSocket protocol specification in RFC 6455.
+ ///
+ /// Both client-side and server-side WebSockets
+ /// are supported.
+ ///
+ /// Server-side WebSockets are usually created from within
+ /// a HTTPRequestHandler.
+ ///
+ /// Client-side WebSockets are created using a HTTPClientSession.
+ ///
+ /// Note that special frames like PING must be handled at
+ /// application level. In the case of a PING, a PONG message
+ /// must be returned.
+{
+public:
+ enum Mode
+ {
+ WS_SERVER, /// Server-side WebSocket.
+ WS_CLIENT /// Client-side WebSocket.
+ };
+
+ enum FrameFlags
+ /// Frame header flags.
+ {
+ FRAME_FLAG_FIN = 0x80, /// FIN bit: final fragment of a multi-fragment message.
+ FRAME_FLAG_RSV1 = 0x40, /// Reserved for future use. Must be zero.
+ FRAME_FLAG_RSV2 = 0x20, /// Reserved for future use. Must be zero.
+ FRAME_FLAG_RSV3 = 0x10 /// Reserved for future use. Must be zero.
+ };
+
+ enum FrameOpcodes
+ /// Frame header opcodes.
+ {
+ FRAME_OP_CONT = 0x00, /// Continuation frame.
+ FRAME_OP_TEXT = 0x01, /// Text frame.
+ FRAME_OP_BINARY = 0x02, /// Binary frame.
+ FRAME_OP_CLOSE = 0x08, /// Close connection.
+ FRAME_OP_PING = 0x09, /// Ping frame.
+ FRAME_OP_PONG = 0x0a, /// Pong frame.
+ FRAME_OP_BITMASK = 0x0f, /// Bit mask for opcodes.
+ FRAME_OP_SETRAW = 0x100 /// Set raw flags (for use with sendBytes() and FRAME_OP_CONT).
+ };
+
+ enum SendFlags
+ /// Combined header flags and opcodes for use with sendFrame().
+ {
+ FRAME_TEXT = FRAME_FLAG_FIN | FRAME_OP_TEXT,
+ /// Use this for sending a single text (UTF-8) payload frame.
+ FRAME_BINARY = FRAME_FLAG_FIN | FRAME_OP_BINARY
+ /// Use this for sending a single binary payload frame.
+ };
+
+ enum StatusCodes
+ /// StatusCodes for CLOSE frames sent with shutdown().
+ {
+ WS_NORMAL_CLOSE = 1000,
+ WS_ENDPOINT_GOING_AWAY = 1001,
+ WS_PROTOCOL_ERROR = 1002,
+ WS_PAYLOAD_NOT_ACCEPTABLE = 1003,
+ WS_RESERVED = 1004,
+ WS_RESERVED_NO_STATUS_CODE = 1005,
+ WS_RESERVED_ABNORMAL_CLOSE = 1006,
+ WS_MALFORMED_PAYLOAD = 1007,
+ WS_POLICY_VIOLATION = 1008,
+ WS_PAYLOAD_TOO_BIG = 1009,
+ WS_EXTENSION_REQUIRED = 1010,
+ WS_UNEXPECTED_CONDITION = 1011,
+ WS_RESERVED_TLS_FAILURE = 1015
+ };
+
+ enum ErrorCodes
+ /// These error codes can be obtained from a WebSocketException
+ /// to determine the exact cause of the error.
+ {
+ WS_ERR_NO_HANDSHAKE = 1,
+ /// No Connection: Upgrade or Upgrade: websocket header in handshake request.
+ WS_ERR_HANDSHAKE_NO_VERSION = 2,
+ /// No Sec-WebSocket-Version header in handshake request.
+ WS_ERR_HANDSHAKE_UNSUPPORTED_VERSION = 3,
+ /// Unsupported WebSocket version requested by client.
+ WS_ERR_HANDSHAKE_NO_KEY = 4,
+ /// No Sec-WebSocket-Key header in handshake request.
+ WS_ERR_HANDSHAKE_ACCEPT = 5,
+ /// No Sec-WebSocket-Accept header or wrong value.
+ WS_ERR_UNAUTHORIZED = 6,
+ /// The server rejected the username or password for authentication.
+ WS_ERR_PAYLOAD_TOO_BIG = 10,
+ /// Payload too big for supplied buffer.
+ WS_ERR_INCOMPLETE_FRAME = 11
+ /// Incomplete frame received.
+ };
+
+ WebSocket(HTTPServerRequest& request, HTTPServerResponse& response);
+ /// Creates a server-side WebSocket from within a
+ /// HTTPRequestHandler.
+ ///
+ /// First verifies that the request is a valid WebSocket upgrade
+ /// request. If so, completes the handshake by sending
+ /// a proper 101 response.
+ ///
+ /// Throws an exception if the request is not a proper WebSocket
+ /// upgrade request.
+
+ WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response);
+ /// Creates a client-side WebSocket, using the given
+ /// HTTPClientSession and HTTPRequest for the initial handshake
+ /// (HTTP Upgrade request).
+ ///
+ /// Additional HTTP headers for the initial handshake request
+ /// (such as Origin or Sec-WebSocket-Protocol) can be given
+ /// in the request object.
+ ///
+ /// The result of the handshake can be obtained from the response
+ /// object.
+
+ WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials);
+ /// Creates a client-side WebSocket, using the given
+ /// HTTPClientSession and HTTPRequest for the initial handshake
+ /// (HTTP Upgrade request).
+ ///
+ /// The given credentials are used for authentication
+ /// if requested by the server.
+ ///
+ /// Additional HTTP headers for the initial handshake request
+ /// (such as Origin or Sec-WebSocket-Protocol) can be given
+ /// in the request object.
+ ///
+ /// The result of the handshake can be obtained from the response
+ /// object.
+
+ WebSocket(const Socket& socket);
+ /// Creates a WebSocket from another Socket, which must be a WebSocket,
+ /// otherwise a Poco::InvalidArgumentException will be thrown.
+
+ virtual ~WebSocket();
+ /// Destroys the StreamSocket.
+
+ WebSocket& operator = (const Socket& socket);
+ /// Assignment operator.
+ ///
+ /// The other socket must be a WebSocket, otherwise a Poco::InvalidArgumentException
+ /// will be thrown.
+
+ void shutdown();
+ /// Sends a Close control frame to the server end of
+ /// the connection to initiate an orderly shutdown
+ /// of the connection.
+
+ void shutdown(Poco::UInt16 statusCode, const std::string& statusMessage = "");
+ /// Sends a Close control frame to the server end of
+ /// the connection to initiate an orderly shutdown
+ /// of the connection.
+
+ int sendFrame(const void* buffer, int length, int flags = FRAME_TEXT);
+ /// Sends the contents of the given buffer through
+ /// the socket as a single frame.
+ ///
+ /// Values from the FrameFlags, FrameOpcodes and SendFlags enumerations
+ /// can be specified in flags.
+ ///
+ /// Returns the number of bytes sent, which may be
+ /// less than the number of bytes specified.
+ ///
+ /// Certain socket implementations may also return a negative
+ /// value denoting a certain condition.
+
+ int receiveFrame(void* buffer, int length, int& flags);
+ /// Receives a frame from the socket and stores it
+ /// in buffer. Up to length bytes are received. If
+ /// the frame's payload is larger, a WebSocketException
+ /// is thrown and the WebSocket connection must be
+ /// terminated.
+ ///
+ /// The frame's payload size must not exceed the
+ /// maximum payload size set with setMaxPayloadSize().
+ /// If it does, a WebSocketException (WS_ERR_PAYLOAD_TOO_BIG)
+ /// is thrown and the WebSocket connection must be
+ /// terminated.
+ ///
+ /// A WebSocketException will also be thrown if a malformed
+ /// or incomplete frame is received.
+ ///
+ /// Returns the number of bytes received.
+ /// A return value of 0 means that the peer has
+ /// shut down or closed the connection.
+ ///
+ /// Throws a TimeoutException if a receive timeout has
+ /// been set and nothing is received within that interval.
+ /// Throws a NetException (or a subclass) in case of other errors.
+ ///
+ /// The frame flags and opcode (FrameFlags and FrameOpcodes)
+ /// is stored in flags.
+
+ int receiveFrame(Poco::Buffer<char>& buffer, int& flags);
+ /// Receives a frame from the socket and stores it
+ /// after any previous content in buffer.
+ /// The buffer will be grown as necessary.
+ ///
+ /// The frame's payload size must not exceed the
+ /// maximum payload size set with setMaxPayloadSize().
+ /// If it does, a WebSocketException (WS_ERR_PAYLOAD_TOO_BIG)
+ /// is thrown and the WebSocket connection must be
+ /// terminated.
+ ///
+ /// A WebSocketException will also be thrown if a malformed
+ /// or incomplete frame is received.
+ ///
+ /// If this method is used, a reasonable maximum payload size should
+ /// be set with setMaxPayloadSize() to prevent a potential
+ /// DoS attack (memory exhaustion) by sending a WebSocket frame
+ /// header with a huge payload size.
+ ///
+ /// Returns the number of bytes received.
+ /// A return value of 0 means that the peer has
+ /// shut down or closed the connection.
+ ///
+ /// Throws a TimeoutException if a receive timeout has
+ /// been set and nothing is received within that interval.
+ /// Throws a NetException (or a subclass) in case of other errors.
+ ///
+ /// The frame flags and opcode (FrameFlags and FrameOpcodes)
+ /// is stored in flags.
+
+ Mode mode() const;
+ /// Returns WS_SERVER if the WebSocket is a server-side
+ /// WebSocket, or WS_CLIENT otherwise.
+
+ void setMaxPayloadSize(int maxPayloadSize);
+ /// Sets the maximum payload size for receiveFrame().
+ ///
+ /// The default is std::numeric_limits<int>::max().
+
+ int getMaxPayloadSize() const;
+ /// Returns the maximum payload size for receiveFrame().
+ ///
+ /// The default is std::numeric_limits<int>::max().
+
+ static const std::string WEBSOCKET_VERSION;
+ /// The WebSocket protocol version supported (13).
+
+protected:
+ static WebSocketImpl* accept(HTTPServerRequest& request, HTTPServerResponse& response);
+ static WebSocketImpl* connect(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials);
+ static WebSocketImpl* completeHandshake(HTTPClientSession& cs, HTTPResponse& response, const std::string& key);
+ static std::string computeAccept(const std::string& key);
+ static std::string createKey();
+
+private:
+ WebSocket();
+
+ static const std::string WEBSOCKET_GUID;
+ static HTTPCredentials _defaultCreds;
+};
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_WebSocket_INCLUDED
diff --git a/contrib/libs/poco/Net/include/Poco/Net/WebSocketImpl.h b/contrib/libs/poco/Net/include/Poco/Net/WebSocketImpl.h
index fb9751dbce..a2471c3694 100644
--- a/contrib/libs/poco/Net/include/Poco/Net/WebSocketImpl.h
+++ b/contrib/libs/poco/Net/include/Poco/Net/WebSocketImpl.h
@@ -1,142 +1,142 @@
-//
-// WebSocketImpl.h
-//
-// Library: Net
-// Package: WebSocket
-// Module: WebSocketImpl
-//
-// Definition of the StreamSocketImpl class.
-//
-// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Net_WebSocketImpl_INCLUDED
-#define Net_WebSocketImpl_INCLUDED
-
-
-#include "Poco/Net/StreamSocketImpl.h"
-#include "Poco/Buffer.h"
-#include "Poco/Random.h"
-#include "Poco/Buffer.h"
-
-
-namespace Poco {
-namespace Net {
-
-
-class HTTPSession;
-
-
-class Net_API WebSocketImpl: public StreamSocketImpl
- /// This class implements a WebSocket, according
- /// to the WebSocket protocol described in RFC 6455.
-{
-public:
- WebSocketImpl(StreamSocketImpl* pStreamSocketImpl, HTTPSession& session, bool mustMaskPayload);
- /// Creates a WebSocketImpl.
-
- // StreamSocketImpl
- virtual int sendBytes(const void* buffer, int length, int flags);
- /// Sends a WebSocket protocol frame.
-
- virtual int receiveBytes(void* buffer, int length, int flags);
- /// Receives a WebSocket protocol frame.
-
- virtual int receiveBytes(Poco::Buffer<char>& buffer, int flags);
- /// Receives a WebSocket protocol frame.
-
- virtual SocketImpl* acceptConnection(SocketAddress& clientAddr);
- virtual void connect(const SocketAddress& address);
- virtual void connect(const SocketAddress& address, const Poco::Timespan& timeout);
- virtual void connectNB(const SocketAddress& address);
- virtual void bind(const SocketAddress& address, bool reuseAddress = false);
- virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
- virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false);
- virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only);
- virtual void listen(int backlog = 64);
- virtual void close();
- virtual void shutdownReceive();
- virtual void shutdownSend();
- virtual void shutdown();
- virtual int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
- virtual int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
- virtual void sendUrgent(unsigned char data);
- virtual int available();
- virtual bool secure() const;
- virtual void setSendTimeout(const Poco::Timespan& timeout);
- virtual Poco::Timespan getSendTimeout();
- virtual void setReceiveTimeout(const Poco::Timespan& timeout);
- virtual Poco::Timespan getReceiveTimeout();
-
- // Internal
- int frameFlags() const;
- /// Returns the frame flags of the most recently received frame.
-
- bool mustMaskPayload() const;
- /// Returns true if the payload must be masked.
-
- void setMaxPayloadSize(int maxPayloadSize);
- /// Sets the maximum payload size for receiveFrame().
- ///
- /// The default is std::numeric_limits<int>::max().
-
- int getMaxPayloadSize() const;
- /// Returns the maximum payload size for receiveFrame().
- ///
- /// The default is std::numeric_limits<int>::max().
-
-protected:
- enum
- {
- FRAME_FLAG_MASK = 0x80,
- MAX_HEADER_LENGTH = 14
- };
-
- int receiveHeader(char mask[4], bool& useMask);
- int receivePayload(char *buffer, int payloadLength, char mask[4], bool useMask);
- int receiveNBytes(void* buffer, int bytes);
- int receiveSomeBytes(char* buffer, int bytes);
- virtual ~WebSocketImpl();
-
-private:
- WebSocketImpl();
-
- StreamSocketImpl* _pStreamSocketImpl;
- int _maxPayloadSize;
- Poco::Buffer<char> _buffer;
- int _bufferOffset;
- int _frameFlags;
- bool _mustMaskPayload;
- Poco::Random _rnd;
-};
-
-
-//
-// inlines
-//
-inline int WebSocketImpl::frameFlags() const
-{
- return _frameFlags;
-}
-
-
-inline bool WebSocketImpl::mustMaskPayload() const
-{
- return _mustMaskPayload;
-}
-
-
-inline int WebSocketImpl::getMaxPayloadSize() const
-{
- return _maxPayloadSize;
-}
-
-
-} } // namespace Poco::Net
-
-
-#endif // Net_WebSocketImpl_INCLUDED
+//
+// WebSocketImpl.h
+//
+// Library: Net
+// Package: WebSocket
+// Module: WebSocketImpl
+//
+// Definition of the StreamSocketImpl class.
+//
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Net_WebSocketImpl_INCLUDED
+#define Net_WebSocketImpl_INCLUDED
+
+
+#include "Poco/Net/StreamSocketImpl.h"
+#include "Poco/Buffer.h"
+#include "Poco/Random.h"
+#include "Poco/Buffer.h"
+
+
+namespace Poco {
+namespace Net {
+
+
+class HTTPSession;
+
+
+class Net_API WebSocketImpl: public StreamSocketImpl
+ /// This class implements a WebSocket, according
+ /// to the WebSocket protocol described in RFC 6455.
+{
+public:
+ WebSocketImpl(StreamSocketImpl* pStreamSocketImpl, HTTPSession& session, bool mustMaskPayload);
+ /// Creates a WebSocketImpl.
+
+ // StreamSocketImpl
+ virtual int sendBytes(const void* buffer, int length, int flags);
+ /// Sends a WebSocket protocol frame.
+
+ virtual int receiveBytes(void* buffer, int length, int flags);
+ /// Receives a WebSocket protocol frame.
+
+ virtual int receiveBytes(Poco::Buffer<char>& buffer, int flags);
+ /// Receives a WebSocket protocol frame.
+
+ virtual SocketImpl* acceptConnection(SocketAddress& clientAddr);
+ virtual void connect(const SocketAddress& address);
+ virtual void connect(const SocketAddress& address, const Poco::Timespan& timeout);
+ virtual void connectNB(const SocketAddress& address);
+ virtual void bind(const SocketAddress& address, bool reuseAddress = false);
+ virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
+ virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false);
+ virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only);
+ virtual void listen(int backlog = 64);
+ virtual void close();
+ virtual void shutdownReceive();
+ virtual void shutdownSend();
+ virtual void shutdown();
+ virtual int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0);
+ virtual int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);
+ virtual void sendUrgent(unsigned char data);
+ virtual int available();
+ virtual bool secure() const;
+ virtual void setSendTimeout(const Poco::Timespan& timeout);
+ virtual Poco::Timespan getSendTimeout();
+ virtual void setReceiveTimeout(const Poco::Timespan& timeout);
+ virtual Poco::Timespan getReceiveTimeout();
+
+ // Internal
+ int frameFlags() const;
+ /// Returns the frame flags of the most recently received frame.
+
+ bool mustMaskPayload() const;
+ /// Returns true if the payload must be masked.
+
+ void setMaxPayloadSize(int maxPayloadSize);
+ /// Sets the maximum payload size for receiveFrame().
+ ///
+ /// The default is std::numeric_limits<int>::max().
+
+ int getMaxPayloadSize() const;
+ /// Returns the maximum payload size for receiveFrame().
+ ///
+ /// The default is std::numeric_limits<int>::max().
+
+protected:
+ enum
+ {
+ FRAME_FLAG_MASK = 0x80,
+ MAX_HEADER_LENGTH = 14
+ };
+
+ int receiveHeader(char mask[4], bool& useMask);
+ int receivePayload(char *buffer, int payloadLength, char mask[4], bool useMask);
+ int receiveNBytes(void* buffer, int bytes);
+ int receiveSomeBytes(char* buffer, int bytes);
+ virtual ~WebSocketImpl();
+
+private:
+ WebSocketImpl();
+
+ StreamSocketImpl* _pStreamSocketImpl;
+ int _maxPayloadSize;
+ Poco::Buffer<char> _buffer;
+ int _bufferOffset;
+ int _frameFlags;
+ bool _mustMaskPayload;
+ Poco::Random _rnd;
+};
+
+
+//
+// inlines
+//
+inline int WebSocketImpl::frameFlags() const
+{
+ return _frameFlags;
+}
+
+
+inline bool WebSocketImpl::mustMaskPayload() const
+{
+ return _mustMaskPayload;
+}
+
+
+inline int WebSocketImpl::getMaxPayloadSize() const
+{
+ return _maxPayloadSize;
+}
+
+
+} } // namespace Poco::Net
+
+
+#endif // Net_WebSocketImpl_INCLUDED