diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/Net/src/Net.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/Net/src/Net.cpp')
-rw-r--r-- | contrib/libs/poco/Net/src/Net.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/contrib/libs/poco/Net/src/Net.cpp b/contrib/libs/poco/Net/src/Net.cpp new file mode 100644 index 0000000000..e81b4b5459 --- /dev/null +++ b/contrib/libs/poco/Net/src/Net.cpp @@ -0,0 +1,76 @@ +// +// Net.cpp +// +// Library: Net +// Package: NetCore +// Module: NetCore +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/Net.h" + + +#include "Poco/Net/SocketDefs.h" +#include "Poco/Net/NetException.h" + + +namespace Poco { +namespace Net { + + +void Net_API initializeNetwork() +{ +#if defined(POCO_OS_FAMILY_WINDOWS) + WORD version = MAKEWORD(2, 2); + WSADATA data; + if (WSAStartup(version, &data) != 0) + throw NetException("Failed to initialize network subsystem"); +#endif +} + + +void Net_API uninitializeNetwork() +{ +#if defined(POCO_OS_FAMILY_WINDOWS) + WSACleanup(); +#endif +} + + +} } // namespace Poco::Net + + +#if defined(POCO_OS_FAMILY_WINDOWS) && !defined(POCO_NO_AUTOMATIC_LIB_INIT) + + struct NetworkInitializer + /// Network initializer for windows statically + /// linked library. + { + NetworkInitializer() + /// Calls Poco::Net::initializeNetwork(); + { + Poco::Net::initializeNetwork(); + } + + ~NetworkInitializer() + /// Calls Poco::Net::uninitializeNetwork(); + { + try + { + Poco::Net::uninitializeNetwork(); + } + catch (...) + { + poco_unexpected(); + } + } + }; + + const NetworkInitializer pocoNetworkInitializer; + +#endif |