http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/context_service.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/context_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/context_service.hpp deleted file mode 100644 index 34928aa..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/context_service.hpp +++ /dev/null @@ -1,174 +0,0 @@ -// -// ssl/old/context_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_OLD_CONTEXT_SERVICE_HPP -#define ASIO_SSL_OLD_CONTEXT_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include <string> -#include <boost/noncopyable.hpp> -#include "asio/error.hpp" -#include "asio/io_service.hpp" -#include "asio/ssl/context_base.hpp" -#include "asio/ssl/old/detail/openssl_context_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { -namespace old { - -/// Default service implementation for a context. -class context_service -#if defined(GENERATING_DOCUMENTATION) - : public asio::io_service::service -#else - : public asio::detail::service_base<context_service> -#endif -{ -private: - // The type of the platform-specific implementation. - typedef old::detail::openssl_context_service service_impl_type; - -public: -#if defined(GENERATING_DOCUMENTATION) - /// The unique service identifier. - static asio::io_service::id id; -#endif - - /// The type of the context. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined impl_type; -#else - typedef service_impl_type::impl_type impl_type; -#endif - - /// Constructor. - explicit context_service(asio::io_service& io_service) - : asio::detail::service_base<context_service>(io_service), - service_impl_(asio::use_service<service_impl_type>(io_service)) - { - } - - /// Return a null context implementation. - impl_type null() const - { - return service_impl_.null(); - } - - /// Create a new context implementation. - void create(impl_type& impl, context_base::method m) - { - service_impl_.create(impl, m); - } - - /// Destroy a context implementation. - void destroy(impl_type& impl) - { - service_impl_.destroy(impl); - } - - /// Set options on the context. - asio::error_code set_options(impl_type& impl, - context_base::options o, asio::error_code& ec) - { - return service_impl_.set_options(impl, o, ec); - } - - /// Set peer verification mode. - asio::error_code set_verify_mode(impl_type& impl, - context_base::verify_mode v, asio::error_code& ec) - { - return service_impl_.set_verify_mode(impl, v, ec); - } - - /// Load a certification authority file for performing verification. - asio::error_code load_verify_file(impl_type& impl, - const std::string& filename, asio::error_code& ec) - { - return service_impl_.load_verify_file(impl, filename, ec); - } - - /// Add a directory containing certification authority files to be used for - /// performing verification. - asio::error_code add_verify_path(impl_type& impl, - const std::string& path, asio::error_code& ec) - { - return service_impl_.add_verify_path(impl, path, ec); - } - - /// Use a certificate from a file. - asio::error_code use_certificate_file(impl_type& impl, - const std::string& filename, context_base::file_format format, - asio::error_code& ec) - { - return service_impl_.use_certificate_file(impl, filename, format, ec); - } - - /// Use a certificate chain from a file. - asio::error_code use_certificate_chain_file(impl_type& impl, - const std::string& filename, asio::error_code& ec) - { - return service_impl_.use_certificate_chain_file(impl, filename, ec); - } - - /// Use a private key from a file. - asio::error_code use_private_key_file(impl_type& impl, - const std::string& filename, context_base::file_format format, - asio::error_code& ec) - { - return service_impl_.use_private_key_file(impl, filename, format, ec); - } - - /// Use an RSA private key from a file. - asio::error_code use_rsa_private_key_file(impl_type& impl, - const std::string& filename, context_base::file_format format, - asio::error_code& ec) - { - return service_impl_.use_rsa_private_key_file(impl, filename, format, ec); - } - - /// Use the specified file to obtain the temporary Diffie-Hellman parameters. - asio::error_code use_tmp_dh_file(impl_type& impl, - const std::string& filename, asio::error_code& ec) - { - return service_impl_.use_tmp_dh_file(impl, filename, ec); - } - - /// Set the password callback. - template <typename PasswordCallback> - asio::error_code set_password_callback(impl_type& impl, - PasswordCallback callback, asio::error_code& ec) - { - return service_impl_.set_password_callback(impl, callback, ec); - } - -private: - // Destroy all user-defined handler objects owned by the service. - void shutdown_service() - { - } - - // The service that provides the platform-specific implementation. - service_impl_type& service_impl_; -}; - -} // namespace old -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_SSL_OLD_CONTEXT_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_context_service.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_context_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_context_service.hpp deleted file mode 100644 index 941ad26..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_context_service.hpp +++ /dev/null @@ -1,386 +0,0 @@ -// -// ssl/old/detail/openssl_context_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_OLD_DETAIL_OPENSSL_CONTEXT_SERVICE_HPP -#define ASIO_SSL_OLD_DETAIL_OPENSSL_CONTEXT_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include <cstring> -#include <string> -#include <boost/function.hpp> -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" -#include "asio/io_service.hpp" -#include "asio/ssl/context_base.hpp" -#include "asio/ssl/detail/openssl_init.hpp" -#include "asio/ssl/detail/openssl_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { -namespace old { -namespace detail { - -class openssl_context_service - : public asio::detail::service_base<openssl_context_service> -{ -public: - // The native type of the context. - typedef ::SSL_CTX* impl_type; - - // The type for the password callback function object. - typedef boost::function<std::string(std::size_t, - context_base::password_purpose)> password_callback_type; - - // Constructor. - openssl_context_service(asio::io_service& io_service) - : asio::detail::service_base<openssl_context_service>(io_service) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown_service() - { - } - - // Return a null context implementation. - static impl_type null() - { - return 0; - } - - // Create a new context implementation. - void create(impl_type& impl, context_base::method m) - { - switch (m) - { -#if defined(OPENSSL_NO_SSL2) - case context_base::sslv2: - case context_base::sslv2_client: - case context_base::sslv2_server: - asio::detail::throw_error(asio::error::invalid_argument); - break; -#else // defined(OPENSSL_NO_SSL2) - case context_base::sslv2: - impl = ::SSL_CTX_new(::SSLv2_method()); - break; - case context_base::sslv2_client: - impl = ::SSL_CTX_new(::SSLv2_client_method()); - break; - case context_base::sslv2_server: - impl = ::SSL_CTX_new(::SSLv2_server_method()); - break; -#endif // defined(OPENSSL_NO_SSL2) - case context_base::sslv3: - impl = ::SSL_CTX_new(::SSLv3_method()); - break; - case context_base::sslv3_client: - impl = ::SSL_CTX_new(::SSLv3_client_method()); - break; - case context_base::sslv3_server: - impl = ::SSL_CTX_new(::SSLv3_server_method()); - break; - case context_base::tlsv1: - impl = ::SSL_CTX_new(::TLSv1_method()); - break; - case context_base::tlsv1_client: - impl = ::SSL_CTX_new(::TLSv1_client_method()); - break; - case context_base::tlsv1_server: - impl = ::SSL_CTX_new(::TLSv1_server_method()); - break; - case context_base::sslv23: - impl = ::SSL_CTX_new(::SSLv23_method()); - break; - case context_base::sslv23_client: - impl = ::SSL_CTX_new(::SSLv23_client_method()); - break; - case context_base::sslv23_server: - impl = ::SSL_CTX_new(::SSLv23_server_method()); - break; - default: - impl = ::SSL_CTX_new(0); - break; - } - } - - // Destroy a context implementation. - void destroy(impl_type& impl) - { - if (impl != null()) - { - if (impl->default_passwd_callback_userdata) - { - password_callback_type* callback = - static_cast<password_callback_type*>( - impl->default_passwd_callback_userdata); - delete callback; - impl->default_passwd_callback_userdata = 0; - } - - ::SSL_CTX_free(impl); - impl = null(); - } - } - - // Set options on the context. - asio::error_code set_options(impl_type& impl, - context_base::options o, asio::error_code& ec) - { - ::SSL_CTX_set_options(impl, o); - - ec = asio::error_code(); - return ec; - } - - // Set peer verification mode. - asio::error_code set_verify_mode(impl_type& impl, - context_base::verify_mode v, asio::error_code& ec) - { - ::SSL_CTX_set_verify(impl, v, 0); - - ec = asio::error_code(); - return ec; - } - - // Load a certification authority file for performing verification. - asio::error_code load_verify_file(impl_type& impl, - const std::string& filename, asio::error_code& ec) - { - if (::SSL_CTX_load_verify_locations(impl, filename.c_str(), 0) != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Add a directory containing certification authority files to be used for - // performing verification. - asio::error_code add_verify_path(impl_type& impl, - const std::string& path, asio::error_code& ec) - { - if (::SSL_CTX_load_verify_locations(impl, 0, path.c_str()) != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Use a certificate from a file. - asio::error_code use_certificate_file(impl_type& impl, - const std::string& filename, context_base::file_format format, - asio::error_code& ec) - { - int file_type; - switch (format) - { - case context_base::asn1: - file_type = SSL_FILETYPE_ASN1; - break; - case context_base::pem: - file_type = SSL_FILETYPE_PEM; - break; - default: - { - ec = asio::error::invalid_argument; - return ec; - } - } - - if (::SSL_CTX_use_certificate_file(impl, filename.c_str(), file_type) != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Use a certificate chain from a file. - asio::error_code use_certificate_chain_file(impl_type& impl, - const std::string& filename, asio::error_code& ec) - { - if (::SSL_CTX_use_certificate_chain_file(impl, filename.c_str()) != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Use a private key from a file. - asio::error_code use_private_key_file(impl_type& impl, - const std::string& filename, context_base::file_format format, - asio::error_code& ec) - { - int file_type; - switch (format) - { - case context_base::asn1: - file_type = SSL_FILETYPE_ASN1; - break; - case context_base::pem: - file_type = SSL_FILETYPE_PEM; - break; - default: - { - ec = asio::error::invalid_argument; - return ec; - } - } - - if (::SSL_CTX_use_PrivateKey_file(impl, filename.c_str(), file_type) != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Use an RSA private key from a file. - asio::error_code use_rsa_private_key_file(impl_type& impl, - const std::string& filename, context_base::file_format format, - asio::error_code& ec) - { - int file_type; - switch (format) - { - case context_base::asn1: - file_type = SSL_FILETYPE_ASN1; - break; - case context_base::pem: - file_type = SSL_FILETYPE_PEM; - break; - default: - { - ec = asio::error::invalid_argument; - return ec; - } - } - - if (::SSL_CTX_use_RSAPrivateKey_file( - impl, filename.c_str(), file_type) != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Use the specified file to obtain the temporary Diffie-Hellman parameters. - asio::error_code use_tmp_dh_file(impl_type& impl, - const std::string& filename, asio::error_code& ec) - { - ::BIO* bio = ::BIO_new_file(filename.c_str(), "r"); - if (!bio) - { - ec = asio::error::invalid_argument; - return ec; - } - - ::DH* dh = ::PEM_read_bio_DHparams(bio, 0, 0, 0); - if (!dh) - { - ::BIO_free(bio); - ec = asio::error::invalid_argument; - return ec; - } - - ::BIO_free(bio); - int result = ::SSL_CTX_set_tmp_dh(impl, dh); - ::DH_free(dh); - if (result != 1) - { - ec = asio::error::invalid_argument; - return ec; - } - - ec = asio::error_code(); - return ec; - } - - static int password_callback(char* buf, int size, int purpose, void* data) - { - using namespace std; // For strncat and strlen. - - if (data) - { - password_callback_type* callback = - static_cast<password_callback_type*>(data); - std::string passwd = (*callback)(static_cast<std::size_t>(size), - purpose ? context_base::for_writing : context_base::for_reading); - *buf = '\0'; - strncat(buf, passwd.c_str(), size); - return strlen(buf); - } - - return 0; - } - - // Set the password callback. - template <typename Password_Callback> - asio::error_code set_password_callback(impl_type& impl, - Password_Callback callback, asio::error_code& ec) - { - // Allocate callback function object if not already present. - if (impl->default_passwd_callback_userdata) - { - password_callback_type* callback_function = - static_cast<password_callback_type*>( - impl->default_passwd_callback_userdata); - *callback_function = callback; - } - else - { - password_callback_type* callback_function = - new password_callback_type(callback); - impl->default_passwd_callback_userdata = callback_function; - } - - // Set the password callback. - SSL_CTX_set_default_passwd_cb(impl, - &openssl_context_service::password_callback); - - ec = asio::error_code(); - return ec; - } - -private: - // Ensure openssl is initialised. - asio::ssl::detail::openssl_init<> init_; -}; - -} // namespace detail -} // namespace old -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_SSL_OLD_DETAIL_OPENSSL_CONTEXT_SERVICE_HPP http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_operation.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_operation.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_operation.hpp deleted file mode 100644 index 9ea9c94..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_operation.hpp +++ /dev/null @@ -1,524 +0,0 @@ -// -// ssl/old/detail/openssl_operation.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_OLD_DETAIL_OPENSSL_OPERATION_HPP -#define ASIO_SSL_OLD_DETAIL_OPENSSL_OPERATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include <boost/function.hpp> -#include <boost/bind.hpp> -#include "asio/buffer.hpp" -#include "asio/detail/assert.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/placeholders.hpp" -#include "asio/ssl/detail/openssl_types.hpp" -#include "asio/ssl/error.hpp" -#include "asio/strand.hpp" -#include "asio/system_error.hpp" -#include "asio/write.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { -namespace old { -namespace detail { - -typedef boost::function<int (::SSL*)> ssl_primitive_func; -typedef boost::function<void (const asio::error_code&, int)> - user_handler_func; - -// Network send_/recv buffer implementation -// -// -class net_buffer -{ - static const int NET_BUF_SIZE = 16*1024 + 256; // SSL record size + spare - - unsigned char buf_[NET_BUF_SIZE]; - unsigned char* data_start_; - unsigned char* data_end_; - -public: - net_buffer() - { - data_start_ = data_end_ = buf_; - } - unsigned char* get_unused_start() { return data_end_; } - unsigned char* get_data_start() { return data_start_; } - size_t get_unused_len() { return (NET_BUF_SIZE - (data_end_ - buf_)); } - size_t get_data_len() { return (data_end_ - data_start_); } - void data_added(size_t count) - { - data_end_ += count; - data_end_ = data_end_ > (buf_ + NET_BUF_SIZE)? - (buf_ + NET_BUF_SIZE): - data_end_; - } - void data_removed(size_t count) - { - data_start_ += count; - if (data_start_ >= data_end_) reset(); - } - void reset() { data_start_ = buf_; data_end_ = buf_; } - bool has_data() { return (data_start_ < data_end_); } -}; // class net_buffer - -// -// Operation class -// -// -template <typename Stream> -class openssl_operation -{ -public: - - // Constructor for asynchronous operations - openssl_operation(ssl_primitive_func primitive, - Stream& socket, - net_buffer& recv_buf, - SSL* session, - BIO* ssl_bio, - user_handler_func handler, - asio::io_service::strand& strand - ) - : primitive_(primitive) - , user_handler_(handler) - , strand_(&strand) - , recv_buf_(recv_buf) - , socket_(socket) - , ssl_bio_(ssl_bio) - , session_(session) - { - write_ = boost::bind( - &openssl_operation::do_async_write, - this, boost::arg<1>(), boost::arg<2>() - ); - read_ = boost::bind( - &openssl_operation::do_async_read, - this - ); - handler_= boost::bind( - &openssl_operation::async_user_handler, - this, boost::arg<1>(), boost::arg<2>() - ); - } - - // Constructor for synchronous operations - openssl_operation(ssl_primitive_func primitive, - Stream& socket, - net_buffer& recv_buf, - SSL* session, - BIO* ssl_bio) - : primitive_(primitive) - , strand_(0) - , recv_buf_(recv_buf) - , socket_(socket) - , ssl_bio_(ssl_bio) - , session_(session) - { - write_ = boost::bind( - &openssl_operation::do_sync_write, - this, boost::arg<1>(), boost::arg<2>() - ); - read_ = boost::bind( - &openssl_operation::do_sync_read, - this - ); - handler_ = boost::bind( - &openssl_operation::sync_user_handler, - this, boost::arg<1>(), boost::arg<2>() - ); - } - - // Start operation - // In case of asynchronous it returns 0, in sync mode returns success code - // or throws an error... - int start() - { - int rc = primitive_( session_ ); - - bool is_operation_done = (rc > 0); - // For connect/accept/shutdown, the operation - // is done, when return code is 1 - // for write, it is done, when is retcode > 0 - // for read, it is done when retcode > 0 - - int error_code = !is_operation_done ? - ::SSL_get_error( session_, rc ) : - 0; - int sys_error_code = ERR_get_error(); - - if (error_code == SSL_ERROR_SSL) - return handler_(asio::error_code( - sys_error_code, asio::error::get_ssl_category()), rc); - - bool is_read_needed = (error_code == SSL_ERROR_WANT_READ); - bool is_write_needed = (error_code == SSL_ERROR_WANT_WRITE || - ::BIO_ctrl_pending( ssl_bio_ )); - bool is_shut_down_received = - ((::SSL_get_shutdown( session_ ) & SSL_RECEIVED_SHUTDOWN) == - SSL_RECEIVED_SHUTDOWN); - bool is_shut_down_sent = - ((::SSL_get_shutdown( session_ ) & SSL_SENT_SHUTDOWN) == - SSL_SENT_SHUTDOWN); - - if (is_shut_down_sent && is_shut_down_received - && is_operation_done && !is_write_needed) - // SSL connection is shut down cleanly - return handler_(asio::error_code(), 1); - - if (is_shut_down_received && !is_operation_done) - // Shutdown has been requested, while we were reading or writing... - // abort our action... - return handler_(asio::error::shut_down, 0); - - if (!is_operation_done && !is_read_needed && !is_write_needed - && !is_shut_down_sent) - { - // The operation has failed... It is not completed and does - // not want network communication nor does want to send shutdown out... - if (error_code == SSL_ERROR_SYSCALL) - { - return handler_(asio::error_code( - sys_error_code, asio::error::system_category), rc); - } - else - { - return handler_(asio::error_code( - sys_error_code, asio::error::get_ssl_category()), rc); - } - } - - if (!is_operation_done && !is_write_needed) - { - // We may have left over data that we can pass to SSL immediately - if (recv_buf_.get_data_len() > 0) - { - // Pass the buffered data to SSL - int written = ::BIO_write - ( - ssl_bio_, - recv_buf_.get_data_start(), - recv_buf_.get_data_len() - ); - - if (written > 0) - { - recv_buf_.data_removed(written); - } - else if (written < 0) - { - if (!BIO_should_retry(ssl_bio_)) - { - // Some serios error with BIO.... - return handler_(asio::error::no_recovery, 0); - } - } - - return start(); - } - else if (is_read_needed || (is_shut_down_sent && !is_shut_down_received)) - { - return read_(); - } - } - - // Continue with operation, flush any SSL data out to network... - return write_(is_operation_done, rc); - } - -// Private implementation -private: - typedef boost::function<int (const asio::error_code&, int)> - int_handler_func; - typedef boost::function<int (bool, int)> write_func; - typedef boost::function<int ()> read_func; - - ssl_primitive_func primitive_; - user_handler_func user_handler_; - asio::io_service::strand* strand_; - write_func write_; - read_func read_; - int_handler_func handler_; - - net_buffer send_buf_; // buffers for network IO - - // The recv buffer is owned by the stream, not the operation, since there can - // be left over bytes after passing the data up to the application, and these - // bytes need to be kept around for the next read operation issued by the - // application. - net_buffer& recv_buf_; - - Stream& socket_; - BIO* ssl_bio_; - SSL* session_; - - // - int sync_user_handler(const asio::error_code& error, int rc) - { - if (!error) - return rc; - - throw asio::system_error(error); - } - - int async_user_handler(asio::error_code error, int rc) - { - if (rc < 0) - { - if (!error) - error = asio::error::no_recovery; - rc = 0; - } - - user_handler_(error, rc); - return 0; - } - - // Writes bytes asynchronously from SSL to NET - int do_async_write(bool is_operation_done, int rc) - { - int len = ::BIO_ctrl_pending( ssl_bio_ ); - if ( len ) - { - // There is something to write into net, do it... - len = (int)send_buf_.get_unused_len() > len? - len: - send_buf_.get_unused_len(); - - if (len == 0) - { - // In case our send buffer is full, we have just to wait until - // previous send to complete... - return 0; - } - - // Read outgoing data from bio - len = ::BIO_read( ssl_bio_, send_buf_.get_unused_start(), len); - - if (len > 0) - { - unsigned char *data_start = send_buf_.get_unused_start(); - send_buf_.data_added(len); - - ASIO_ASSERT(strand_); - asio::async_write - ( - socket_, - asio::buffer(data_start, len), - strand_->wrap - ( - boost::bind - ( - &openssl_operation::async_write_handler, - this, - is_operation_done, - rc, - asio::placeholders::error, - asio::placeholders::bytes_transferred - ) - ) - ); - - return 0; - } - else if (!BIO_should_retry(ssl_bio_)) - { - // Seems like fatal error - // reading from SSL BIO has failed... - handler_(asio::error::no_recovery, 0); - return 0; - } - } - - if (is_operation_done) - { - // Finish the operation, with success - handler_(asio::error_code(), rc); - return 0; - } - - // OPeration is not done and writing to net has been made... - // start operation again - start(); - - return 0; - } - - void async_write_handler(bool is_operation_done, int rc, - const asio::error_code& error, size_t bytes_sent) - { - if (!error) - { - // Remove data from send buffer - send_buf_.data_removed(bytes_sent); - - if (is_operation_done) - handler_(asio::error_code(), rc); - else - // Since the operation was not completed, try it again... - start(); - } - else - handler_(error, rc); - } - - int do_async_read() - { - // Wait for new data - ASIO_ASSERT(strand_); - socket_.async_read_some - ( - asio::buffer(recv_buf_.get_unused_start(), - recv_buf_.get_unused_len()), - strand_->wrap - ( - boost::bind - ( - &openssl_operation::async_read_handler, - this, - asio::placeholders::error, - asio::placeholders::bytes_transferred - ) - ) - ); - return 0; - } - - void async_read_handler(const asio::error_code& error, - size_t bytes_recvd) - { - if (!error) - { - recv_buf_.data_added(bytes_recvd); - - // Pass the received data to SSL - int written = ::BIO_write - ( - ssl_bio_, - recv_buf_.get_data_start(), - recv_buf_.get_data_len() - ); - - if (written > 0) - { - recv_buf_.data_removed(written); - } - else if (written < 0) - { - if (!BIO_should_retry(ssl_bio_)) - { - // Some serios error with BIO.... - handler_(asio::error::no_recovery, 0); - return; - } - } - - // and try the SSL primitive again - start(); - } - else - { - // Error in network level... - // SSL can't continue either... - handler_(error, 0); - } - } - - // Syncronous functions... - int do_sync_write(bool is_operation_done, int rc) - { - int len = ::BIO_ctrl_pending( ssl_bio_ ); - if ( len ) - { - // There is something to write into net, do it... - len = (int)send_buf_.get_unused_len() > len? - len: - send_buf_.get_unused_len(); - - // Read outgoing data from bio - len = ::BIO_read( ssl_bio_, send_buf_.get_unused_start(), len); - - if (len > 0) - { - size_t sent_len = asio::write( - socket_, - asio::buffer(send_buf_.get_unused_start(), len) - ); - - send_buf_.data_added(len); - send_buf_.data_removed(sent_len); - } - else if (!BIO_should_retry(ssl_bio_)) - { - // Seems like fatal error - // reading from SSL BIO has failed... - throw asio::system_error(asio::error::no_recovery); - } - } - - if (is_operation_done) - // Finish the operation, with success - return rc; - - // Operation is not finished, start again. - return start(); - } - - int do_sync_read() - { - size_t len = socket_.read_some - ( - asio::buffer(recv_buf_.get_unused_start(), - recv_buf_.get_unused_len()) - ); - - // Write data to ssl - recv_buf_.data_added(len); - - // Pass the received data to SSL - int written = ::BIO_write - ( - ssl_bio_, - recv_buf_.get_data_start(), - recv_buf_.get_data_len() - ); - - if (written > 0) - { - recv_buf_.data_removed(written); - } - else if (written < 0) - { - if (!BIO_should_retry(ssl_bio_)) - { - // Some serios error with BIO.... - throw asio::system_error(asio::error::no_recovery); - } - } - - // Try the operation again - return start(); - } -}; // class openssl_operation - -} // namespace detail -} // namespace old -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_SSL_OLD_DETAIL_OPENSSL_OPERATION_HPP http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_stream_service.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_stream_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_stream_service.hpp deleted file mode 100644 index 11154e9..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/detail/openssl_stream_service.hpp +++ /dev/null @@ -1,571 +0,0 @@ -// -// ssl/old/detail/stream_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_OLD_DETAIL_OPENSSL_STREAM_SERVICE_HPP -#define ASIO_SSL_OLD_DETAIL_OPENSSL_STREAM_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include <cstddef> -#include <climits> -#include <memory> -#include <boost/config.hpp> -#include <boost/noncopyable.hpp> -#include <boost/function.hpp> -#include <boost/bind.hpp> -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/error.hpp" -#include "asio/io_service.hpp" -#include "asio/ssl/basic_context.hpp" -#include "asio/ssl/stream_base.hpp" -#include "asio/ssl/old/detail/openssl_operation.hpp" -#include "asio/ssl/detail/openssl_types.hpp" -#include "asio/strand.hpp" -#include "asio/system_error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { -namespace old { -namespace detail { - -class openssl_stream_service - : public asio::detail::service_base<openssl_stream_service> -{ -private: - enum { max_buffer_size = INT_MAX }; - - //Base handler for asyncrhonous operations - template <typename Stream> - class base_handler - { - public: - typedef boost::function< - void (const asio::error_code&, size_t)> func_t; - - base_handler(asio::io_service& io_service) - : op_(NULL) - , io_service_(io_service) - , work_(io_service) - {} - - void do_func(const asio::error_code& error, size_t size) - { - func_(error, size); - } - - void set_operation(openssl_operation<Stream>* op) { op_ = op; } - void set_func(func_t func) { func_ = func; } - - ~base_handler() - { - delete op_; - } - - private: - func_t func_; - openssl_operation<Stream>* op_; - asio::io_service& io_service_; - asio::io_service::work work_; - }; // class base_handler - - // Handler for asynchronous IO (write/read) operations - template<typename Stream, typename Handler> - class io_handler - : public base_handler<Stream> - { - public: - io_handler(Handler handler, asio::io_service& io_service) - : base_handler<Stream>(io_service) - , handler_(handler) - { - this->set_func(boost::bind( - &io_handler<Stream, Handler>::handler_impl, - this, boost::arg<1>(), boost::arg<2>() )); - } - - private: - Handler handler_; - void handler_impl(const asio::error_code& error, size_t size) - { - std::auto_ptr<io_handler<Stream, Handler> > this_ptr(this); - handler_(error, size); - } - }; // class io_handler - - // Handler for asyncrhonous handshake (connect, accept) functions - template <typename Stream, typename Handler> - class handshake_handler - : public base_handler<Stream> - { - public: - handshake_handler(Handler handler, asio::io_service& io_service) - : base_handler<Stream>(io_service) - , handler_(handler) - { - this->set_func(boost::bind( - &handshake_handler<Stream, Handler>::handler_impl, - this, boost::arg<1>(), boost::arg<2>() )); - } - - private: - Handler handler_; - void handler_impl(const asio::error_code& error, size_t) - { - std::auto_ptr<handshake_handler<Stream, Handler> > this_ptr(this); - handler_(error); - } - - }; // class handshake_handler - - // Handler for asyncrhonous shutdown - template <typename Stream, typename Handler> - class shutdown_handler - : public base_handler<Stream> - { - public: - shutdown_handler(Handler handler, asio::io_service& io_service) - : base_handler<Stream>(io_service), - handler_(handler) - { - this->set_func(boost::bind( - &shutdown_handler<Stream, Handler>::handler_impl, - this, boost::arg<1>(), boost::arg<2>() )); - } - - private: - Handler handler_; - void handler_impl(const asio::error_code& error, size_t) - { - std::auto_ptr<shutdown_handler<Stream, Handler> > this_ptr(this); - handler_(error); - } - }; // class shutdown_handler - -public: - // The implementation type. - typedef struct impl_struct - { - ::SSL* ssl; - ::BIO* ext_bio; - net_buffer recv_buf; - } * impl_type; - - // Construct a new stream socket service for the specified io_service. - explicit openssl_stream_service(asio::io_service& io_service) - : asio::detail::service_base<openssl_stream_service>(io_service), - strand_(io_service) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown_service() - { - } - - // Return a null stream implementation. - impl_type null() const - { - return 0; - } - - // Create a new stream implementation. - template <typename Stream, typename Context_Service> - void create(impl_type& impl, Stream& /*next_layer*/, - basic_context<Context_Service>& context) - { - impl = new impl_struct; - impl->ssl = ::SSL_new(context.impl()); - ::SSL_set_mode(impl->ssl, SSL_MODE_ENABLE_PARTIAL_WRITE); - ::SSL_set_mode(impl->ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); - ::BIO* int_bio = 0; - impl->ext_bio = 0; - ::BIO_new_bio_pair(&int_bio, 8192, &impl->ext_bio, 8192); - ::SSL_set_bio(impl->ssl, int_bio, int_bio); - } - - // Destroy a stream implementation. - template <typename Stream> - void destroy(impl_type& impl, Stream& /*next_layer*/) - { - if (impl != 0) - { - ::BIO_free(impl->ext_bio); - ::SSL_free(impl->ssl); - delete impl; - impl = 0; - } - } - - // Perform SSL handshaking. - template <typename Stream> - asio::error_code handshake(impl_type& impl, Stream& next_layer, - stream_base::handshake_type type, asio::error_code& ec) - { - try - { - openssl_operation<Stream> op( - type == stream_base::client ? - &ssl_wrap<mutex_type>::SSL_connect: - &ssl_wrap<mutex_type>::SSL_accept, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio); - op.start(); - } - catch (asio::system_error& e) - { - ec = e.code(); - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Start an asynchronous SSL handshake. - template <typename Stream, typename Handler> - void async_handshake(impl_type& impl, Stream& next_layer, - stream_base::handshake_type type, Handler handler) - { - typedef handshake_handler<Stream, Handler> connect_handler; - - connect_handler* local_handler = - new connect_handler(handler, get_io_service()); - - openssl_operation<Stream>* op = new openssl_operation<Stream> - ( - type == stream_base::client ? - &ssl_wrap<mutex_type>::SSL_connect: - &ssl_wrap<mutex_type>::SSL_accept, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio, - boost::bind - ( - &base_handler<Stream>::do_func, - local_handler, - boost::arg<1>(), - boost::arg<2>() - ), - strand_ - ); - local_handler->set_operation(op); - - strand_.post(boost::bind(&openssl_operation<Stream>::start, op)); - } - - // Shut down SSL on the stream. - template <typename Stream> - asio::error_code shutdown(impl_type& impl, Stream& next_layer, - asio::error_code& ec) - { - try - { - openssl_operation<Stream> op( - &ssl_wrap<mutex_type>::SSL_shutdown, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio); - op.start(); - } - catch (asio::system_error& e) - { - ec = e.code(); - return ec; - } - - ec = asio::error_code(); - return ec; - } - - // Asynchronously shut down SSL on the stream. - template <typename Stream, typename Handler> - void async_shutdown(impl_type& impl, Stream& next_layer, Handler handler) - { - typedef shutdown_handler<Stream, Handler> disconnect_handler; - - disconnect_handler* local_handler = - new disconnect_handler(handler, get_io_service()); - - openssl_operation<Stream>* op = new openssl_operation<Stream> - ( - &ssl_wrap<mutex_type>::SSL_shutdown, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio, - boost::bind - ( - &base_handler<Stream>::do_func, - local_handler, - boost::arg<1>(), - boost::arg<2>() - ), - strand_ - ); - local_handler->set_operation(op); - - strand_.post(boost::bind(&openssl_operation<Stream>::start, op)); - } - - // Write some data to the stream. - template <typename Stream, typename Const_Buffers> - std::size_t write_some(impl_type& impl, Stream& next_layer, - const Const_Buffers& buffers, asio::error_code& ec) - { - size_t bytes_transferred = 0; - try - { - asio::const_buffer buffer = - asio::detail::buffer_sequence_adapter< - asio::const_buffer, Const_Buffers>::first(buffers); - - std::size_t buffer_size = asio::buffer_size(buffer); - if (buffer_size > max_buffer_size) - buffer_size = max_buffer_size; - else if (buffer_size == 0) - { - ec = asio::error_code(); - return 0; - } - - boost::function<int (SSL*)> send_func = - boost::bind(boost::type<int>(), &::SSL_write, boost::arg<1>(), - asio::buffer_cast<const void*>(buffer), - static_cast<int>(buffer_size)); - openssl_operation<Stream> op( - send_func, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio - ); - bytes_transferred = static_cast<size_t>(op.start()); - } - catch (asio::system_error& e) - { - ec = e.code(); - return 0; - } - - ec = asio::error_code(); - return bytes_transferred; - } - - // Start an asynchronous write. - template <typename Stream, typename Const_Buffers, typename Handler> - void async_write_some(impl_type& impl, Stream& next_layer, - const Const_Buffers& buffers, Handler handler) - { - typedef io_handler<Stream, Handler> send_handler; - - asio::const_buffer buffer = - asio::detail::buffer_sequence_adapter< - asio::const_buffer, Const_Buffers>::first(buffers); - - std::size_t buffer_size = asio::buffer_size(buffer); - if (buffer_size > max_buffer_size) - buffer_size = max_buffer_size; - else if (buffer_size == 0) - { - get_io_service().post(asio::detail::bind_handler( - handler, asio::error_code(), 0)); - return; - } - - send_handler* local_handler = new send_handler(handler, get_io_service()); - - boost::function<int (SSL*)> send_func = - boost::bind(boost::type<int>(), &::SSL_write, boost::arg<1>(), - asio::buffer_cast<const void*>(buffer), - static_cast<int>(buffer_size)); - - openssl_operation<Stream>* op = new openssl_operation<Stream> - ( - send_func, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio, - boost::bind - ( - &base_handler<Stream>::do_func, - local_handler, - boost::arg<1>(), - boost::arg<2>() - ), - strand_ - ); - local_handler->set_operation(op); - - strand_.post(boost::bind(&openssl_operation<Stream>::start, op)); - } - - // Read some data from the stream. - template <typename Stream, typename Mutable_Buffers> - std::size_t read_some(impl_type& impl, Stream& next_layer, - const Mutable_Buffers& buffers, asio::error_code& ec) - { - size_t bytes_transferred = 0; - try - { - asio::mutable_buffer buffer = - asio::detail::buffer_sequence_adapter< - asio::mutable_buffer, Mutable_Buffers>::first(buffers); - - std::size_t buffer_size = asio::buffer_size(buffer); - if (buffer_size > max_buffer_size) - buffer_size = max_buffer_size; - else if (buffer_size == 0) - { - ec = asio::error_code(); - return 0; - } - - boost::function<int (SSL*)> recv_func = - boost::bind(boost::type<int>(), &::SSL_read, boost::arg<1>(), - asio::buffer_cast<void*>(buffer), - static_cast<int>(buffer_size)); - openssl_operation<Stream> op(recv_func, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio - ); - - bytes_transferred = static_cast<size_t>(op.start()); - } - catch (asio::system_error& e) - { - ec = e.code(); - return 0; - } - - ec = asio::error_code(); - return bytes_transferred; - } - - // Start an asynchronous read. - template <typename Stream, typename Mutable_Buffers, typename Handler> - void async_read_some(impl_type& impl, Stream& next_layer, - const Mutable_Buffers& buffers, Handler handler) - { - typedef io_handler<Stream, Handler> recv_handler; - - asio::mutable_buffer buffer = - asio::detail::buffer_sequence_adapter< - asio::mutable_buffer, Mutable_Buffers>::first(buffers); - - std::size_t buffer_size = asio::buffer_size(buffer); - if (buffer_size > max_buffer_size) - buffer_size = max_buffer_size; - else if (buffer_size == 0) - { - get_io_service().post(asio::detail::bind_handler( - handler, asio::error_code(), 0)); - return; - } - - recv_handler* local_handler = new recv_handler(handler, get_io_service()); - - boost::function<int (SSL*)> recv_func = - boost::bind(boost::type<int>(), &::SSL_read, boost::arg<1>(), - asio::buffer_cast<void*>(buffer), - static_cast<int>(buffer_size)); - - openssl_operation<Stream>* op = new openssl_operation<Stream> - ( - recv_func, - next_layer, - impl->recv_buf, - impl->ssl, - impl->ext_bio, - boost::bind - ( - &base_handler<Stream>::do_func, - local_handler, - boost::arg<1>(), - boost::arg<2>() - ), - strand_ - ); - local_handler->set_operation(op); - - strand_.post(boost::bind(&openssl_operation<Stream>::start, op)); - } - - // Peek at the incoming data on the stream. - template <typename Stream, typename Mutable_Buffers> - std::size_t peek(impl_type& /*impl*/, Stream& /*next_layer*/, - const Mutable_Buffers& /*buffers*/, asio::error_code& ec) - { - ec = asio::error_code(); - return 0; - } - - // Determine the amount of data that may be read without blocking. - template <typename Stream> - std::size_t in_avail(impl_type& /*impl*/, Stream& /*next_layer*/, - asio::error_code& ec) - { - ec = asio::error_code(); - return 0; - } - -private: - asio::io_service::strand strand_; - - typedef asio::detail::mutex mutex_type; - - template<typename Mutex> - struct ssl_wrap - { - static Mutex ssl_mutex_; - - static int SSL_accept(SSL *ssl) - { - typename Mutex::scoped_lock lock(ssl_mutex_); - return ::SSL_accept(ssl); - } - - static int SSL_connect(SSL *ssl) - { - typename Mutex::scoped_lock lock(ssl_mutex_); - return ::SSL_connect(ssl); - } - - static int SSL_shutdown(SSL *ssl) - { - typename Mutex::scoped_lock lock(ssl_mutex_); - return ::SSL_shutdown(ssl); - } - }; -}; - -template<typename Mutex> -Mutex openssl_stream_service::ssl_wrap<Mutex>::ssl_mutex_; - -} // namespace detail -} // namespace old -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_SSL_OLD_DETAIL_OPENSSL_STREAM_SERVICE_HPP http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream.hpp deleted file mode 100644 index 42ab3c2..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream.hpp +++ /dev/null @@ -1,501 +0,0 @@ -// -// ssl/old/stream.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_OLD_STREAM_HPP -#define ASIO_SSL_OLD_STREAM_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include <cstddef> -#include <boost/noncopyable.hpp> -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" -#include "asio/ssl/basic_context.hpp" -#include "asio/ssl/stream_base.hpp" -#include "asio/ssl/stream_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { -namespace old { - -/// Provides stream-oriented functionality using SSL. -/** - * The stream class template provides asynchronous and blocking stream-oriented - * functionality using SSL. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Example - * To use the SSL stream template with an ip::tcp::socket, you would write: - * @code - * asio::io_service io_service; - * asio::ssl::context context(io_service, asio::ssl::context::sslv23); - * asio::ssl::stream<asio::ip::tcp::socket> sock(io_service, context); - * @endcode - * - * @par Concepts: - * AsyncReadStream, AsyncWriteStream, Stream, SyncRead_Stream, SyncWriteStream. - */ -template <typename Stream, typename Service = old::stream_service> -class stream - : public stream_base, - private boost::noncopyable -{ -public: - /// The type of the next layer. - typedef typename remove_reference<Stream>::type next_layer_type; - - /// The type of the lowest layer. - typedef typename next_layer_type::lowest_layer_type lowest_layer_type; - - /// The type of the service that will be used to provide stream operations. - typedef Service service_type; - - /// The native implementation type of the stream. - typedef typename service_type::impl_type impl_type; - - /// Construct a stream. - /** - * This constructor creates a stream and initialises the underlying stream - * object. - * - * @param arg The argument to be passed to initialise the underlying stream. - * - * @param context The SSL context to be used for the stream. - */ - template <typename Arg, typename Context_Service> - explicit stream(Arg& arg, basic_context<Context_Service>& context) - : next_layer_(arg), - service_(asio::use_service<Service>(next_layer_.get_io_service())), - impl_(service_.null()) - { - service_.create(impl_, next_layer_, context); - } - - /// Destructor. - ~stream() - { - service_.destroy(impl_, next_layer_); - } - - /// Get the io_service associated with the object. - /** - * This function may be used to obtain the io_service object that the stream - * uses to dispatch handlers for asynchronous operations. - * - * @return A reference to the io_service object that stream will use to - * dispatch handlers. Ownership is not transferred to the caller. - */ - asio::io_service& get_io_service() - { - return next_layer_.get_io_service(); - } - - /// Get a reference to the next layer. - /** - * This function returns a reference to the next layer in a stack of stream - * layers. - * - * @return A reference to the next layer in the stack of stream layers. - * Ownership is not transferred to the caller. - */ - next_layer_type& next_layer() - { - return next_layer_; - } - - /// Get a reference to the lowest layer. - /** - * This function returns a reference to the lowest layer in a stack of - * stream layers. - * - * @return A reference to the lowest layer in the stack of stream layers. - * Ownership is not transferred to the caller. - */ - lowest_layer_type& lowest_layer() - { - return next_layer_.lowest_layer(); - } - - /// Get a const reference to the lowest layer. - /** - * This function returns a const reference to the lowest layer in a stack of - * stream layers. - * - * @return A const reference to the lowest layer in the stack of stream - * layers. Ownership is not transferred to the caller. - */ - const lowest_layer_type& lowest_layer() const - { - return next_layer_.lowest_layer(); - } - - /// Get the underlying implementation in the native type. - /** - * This function may be used to obtain the underlying implementation of the - * context. This is intended to allow access to stream functionality that is - * not otherwise provided. - */ - impl_type impl() - { - return impl_; - } - - /// Perform SSL handshaking. - /** - * This function is used to perform SSL handshaking on the stream. The - * function call will block until handshaking is complete or an error occurs. - * - * @param type The type of handshaking to be performed, i.e. as a client or as - * a server. - * - * @throws asio::system_error Thrown on failure. - */ - void handshake(handshake_type type) - { - asio::error_code ec; - service_.handshake(impl_, next_layer_, type, ec); - asio::detail::throw_error(ec); - } - - /// Perform SSL handshaking. - /** - * This function is used to perform SSL handshaking on the stream. The - * function call will block until handshaking is complete or an error occurs. - * - * @param type The type of handshaking to be performed, i.e. as a client or as - * a server. - * - * @param ec Set to indicate what error occurred, if any. - */ - asio::error_code handshake(handshake_type type, - asio::error_code& ec) - { - return service_.handshake(impl_, next_layer_, type, ec); - } - - /// Start an asynchronous SSL handshake. - /** - * This function is used to asynchronously perform an SSL handshake on the - * stream. This function call always returns immediately. - * - * @param type The type of handshaking to be performed, i.e. as a client or as - * a server. - * - * @param handler The handler to be called when the handshake operation - * completes. Copies will be made of the handler as required. The equivalent - * function signature of the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation. - * ); @endcode - */ - template <typename HandshakeHandler> - void async_handshake(handshake_type type, HandshakeHandler handler) - { - service_.async_handshake(impl_, next_layer_, type, handler); - } - - /// Shut down SSL on the stream. - /** - * This function is used to shut down SSL on the stream. The function call - * will block until SSL has been shut down or an error occurs. - * - * @throws asio::system_error Thrown on failure. - */ - void shutdown() - { - asio::error_code ec; - service_.shutdown(impl_, next_layer_, ec); - asio::detail::throw_error(ec); - } - - /// Shut down SSL on the stream. - /** - * This function is used to shut down SSL on the stream. The function call - * will block until SSL has been shut down or an error occurs. - * - * @param ec Set to indicate what error occurred, if any. - */ - asio::error_code shutdown(asio::error_code& ec) - { - return service_.shutdown(impl_, next_layer_, ec); - } - - /// Asynchronously shut down SSL on the stream. - /** - * This function is used to asynchronously shut down SSL on the stream. This - * function call always returns immediately. - * - * @param handler The handler to be called when the handshake operation - * completes. Copies will be made of the handler as required. The equivalent - * function signature of the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation. - * ); @endcode - */ - template <typename ShutdownHandler> - void async_shutdown(ShutdownHandler handler) - { - service_.async_shutdown(impl_, next_layer_, handler); - } - - /// Write some data to the stream. - /** - * This function is used to write data on the stream. The function call will - * block until one or more bytes of data has been written successfully, or - * until an error occurs. - * - * @param buffers The data to be written. - * - * @returns The number of bytes written. - * - * @throws asio::system_error Thrown on failure. - * - * @note The write_some operation may not transmit all of the data to the - * peer. Consider using the @ref write function if you need to ensure that all - * data is written before the blocking operation completes. - */ - template <typename ConstBufferSequence> - std::size_t write_some(const ConstBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = service_.write_some(impl_, next_layer_, buffers, ec); - asio::detail::throw_error(ec); - return s; - } - - /// Write some data to the stream. - /** - * This function is used to write data on the stream. The function call will - * block until one or more bytes of data has been written successfully, or - * until an error occurs. - * - * @param buffers The data to be written to the stream. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes written. Returns 0 if an error occurred. - * - * @note The write_some operation may not transmit all of the data to the - * peer. Consider using the @ref write function if you need to ensure that all - * data is written before the blocking operation completes. - */ - template <typename ConstBufferSequence> - std::size_t write_some(const ConstBufferSequence& buffers, - asio::error_code& ec) - { - return service_.write_some(impl_, next_layer_, buffers, ec); - } - - /// Start an asynchronous write. - /** - * This function is used to asynchronously write one or more bytes of data to - * the stream. The function call always returns immediately. - * - * @param buffers The data to be written to the stream. Although the buffers - * object may be copied as necessary, ownership of the underlying buffers is - * retained by the caller, which must guarantee that they remain valid until - * the handler is called. - * - * @param handler The handler to be called when the write operation completes. - * Copies will be made of the handler as required. The equivalent function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes written. - * ); @endcode - * - * @note The async_write_some operation may not transmit all of the data to - * the peer. Consider using the @ref async_write function if you need to - * ensure that all data is written before the blocking operation completes. - */ - template <typename ConstBufferSequence, typename WriteHandler> - void async_write_some(const ConstBufferSequence& buffers, - WriteHandler handler) - { - service_.async_write_some(impl_, next_layer_, buffers, handler); - } - - /// Read some data from the stream. - /** - * This function is used to read data from the stream. The function call will - * block until one or more bytes of data has been read successfully, or until - * an error occurs. - * - * @param buffers The buffers into which the data will be read. - * - * @returns The number of bytes read. - * - * @throws asio::system_error Thrown on failure. - * - * @note The read_some operation may not read all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - */ - template <typename MutableBufferSequence> - std::size_t read_some(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = service_.read_some(impl_, next_layer_, buffers, ec); - asio::detail::throw_error(ec); - return s; - } - - /// Read some data from the stream. - /** - * This function is used to read data from the stream. The function call will - * block until one or more bytes of data has been read successfully, or until - * an error occurs. - * - * @param buffers The buffers into which the data will be read. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes read. Returns 0 if an error occurred. - * - * @note The read_some operation may not read all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - */ - template <typename MutableBufferSequence> - std::size_t read_some(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return service_.read_some(impl_, next_layer_, buffers, ec); - } - - /// Start an asynchronous read. - /** - * This function is used to asynchronously read one or more bytes of data from - * the stream. The function call always returns immediately. - * - * @param buffers The buffers into which the data will be read. Although the - * buffers object may be copied as necessary, ownership of the underlying - * buffers is retained by the caller, which must guarantee that they remain - * valid until the handler is called. - * - * @param handler The handler to be called when the read operation completes. - * Copies will be made of the handler as required. The equivalent function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes read. - * ); @endcode - * - * @note The async_read_some operation may not read all of the requested - * number of bytes. Consider using the @ref async_read function if you need to - * ensure that the requested amount of data is read before the asynchronous - * operation completes. - */ - template <typename MutableBufferSequence, typename ReadHandler> - void async_read_some(const MutableBufferSequence& buffers, - ReadHandler handler) - { - service_.async_read_some(impl_, next_layer_, buffers, handler); - } - - /// Peek at the incoming data on the stream. - /** - * This function is used to peek at the incoming data on the stream, without - * removing it from the input queue. The function call will block until data - * has been read successfully or an error occurs. - * - * @param buffers The buffers into which the data will be read. - * - * @returns The number of bytes read. - * - * @throws asio::system_error Thrown on failure. - */ - template <typename MutableBufferSequence> - std::size_t peek(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = service_.peek(impl_, next_layer_, buffers, ec); - asio::detail::throw_error(ec); - return s; - } - - /// Peek at the incoming data on the stream. - /** - * This function is used to peek at the incoming data on the stream, withoutxi - * removing it from the input queue. The function call will block until data - * has been read successfully or an error occurs. - * - * @param buffers The buffers into which the data will be read. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes read. Returns 0 if an error occurred. - */ - template <typename MutableBufferSequence> - std::size_t peek(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return service_.peek(impl_, next_layer_, buffers, ec); - } - - /// Determine the amount of data that may be read without blocking. - /** - * This function is used to determine the amount of data, in bytes, that may - * be read from the stream without blocking. - * - * @returns The number of bytes of data that can be read without blocking. - * - * @throws asio::system_error Thrown on failure. - */ - std::size_t in_avail() - { - asio::error_code ec; - std::size_t s = service_.in_avail(impl_, next_layer_, ec); - asio::detail::throw_error(ec); - return s; - } - - /// Determine the amount of data that may be read without blocking. - /** - * This function is used to determine the amount of data, in bytes, that may - * be read from the stream without blocking. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes of data that can be read without blocking. - */ - std::size_t in_avail(asio::error_code& ec) - { - return service_.in_avail(impl_, next_layer_, ec); - } - -private: - /// The next layer. - Stream next_layer_; - - /// The backend service implementation. - service_type& service_; - - /// The underlying native implementation. - impl_type impl_; -}; - -} // namespace old -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_SSL_OLD_STREAM_HPP http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream_service.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream_service.hpp deleted file mode 100644 index 2c3c442..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream_service.hpp +++ /dev/null @@ -1,184 +0,0 @@ -// -// ssl/old/stream_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_OLD_STREAM_SERVICE_HPP -#define ASIO_SSL_OLD_STREAM_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include <cstddef> -#include <boost/noncopyable.hpp> -#include "asio/io_service.hpp" -#include "asio/ssl/basic_context.hpp" -#include "asio/ssl/old/detail/openssl_stream_service.hpp" -#include "asio/ssl/stream_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { -namespace old { - -/// Default service implementation for an SSL stream. -class stream_service -#if defined(GENERATING_DOCUMENTATION) - : public asio::io_service::service -#else - : public asio::detail::service_base<stream_service> -#endif -{ -private: - // The type of the platform-specific implementation. - typedef old::detail::openssl_stream_service service_impl_type; - -public: -#if defined(GENERATING_DOCUMENTATION) - /// The unique service identifier. - static asio::io_service::id id; -#endif - - /// The type of a stream implementation. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined impl_type; -#else - typedef service_impl_type::impl_type impl_type; -#endif - - /// Construct a new stream service for the specified io_service. - explicit stream_service(asio::io_service& io_service) - : asio::detail::service_base<stream_service>(io_service), - service_impl_(asio::use_service<service_impl_type>(io_service)) - { - } - - /// Return a null stream implementation. - impl_type null() const - { - return service_impl_.null(); - } - - /// Create a new stream implementation. - template <typename Stream, typename Context_Service> - void create(impl_type& impl, Stream& next_layer, - basic_context<Context_Service>& context) - { - service_impl_.create(impl, next_layer, context); - } - - /// Destroy a stream implementation. - template <typename Stream> - void destroy(impl_type& impl, Stream& next_layer) - { - service_impl_.destroy(impl, next_layer); - } - - /// Perform SSL handshaking. - template <typename Stream> - asio::error_code handshake(impl_type& impl, Stream& next_layer, - stream_base::handshake_type type, asio::error_code& ec) - { - return service_impl_.handshake(impl, next_layer, type, ec); - } - - /// Start an asynchronous SSL handshake. - template <typename Stream, typename HandshakeHandler> - void async_handshake(impl_type& impl, Stream& next_layer, - stream_base::handshake_type type, HandshakeHandler handler) - { - service_impl_.async_handshake(impl, next_layer, type, handler); - } - - /// Shut down SSL on the stream. - template <typename Stream> - asio::error_code shutdown(impl_type& impl, Stream& next_layer, - asio::error_code& ec) - { - return service_impl_.shutdown(impl, next_layer, ec); - } - - /// Asynchronously shut down SSL on the stream. - template <typename Stream, typename ShutdownHandler> - void async_shutdown(impl_type& impl, Stream& next_layer, - ShutdownHandler handler) - { - service_impl_.async_shutdown(impl, next_layer, handler); - } - - /// Write some data to the stream. - template <typename Stream, typename ConstBufferSequence> - std::size_t write_some(impl_type& impl, Stream& next_layer, - const ConstBufferSequence& buffers, asio::error_code& ec) - { - return service_impl_.write_some(impl, next_layer, buffers, ec); - } - - /// Start an asynchronous write. - template <typename Stream, typename ConstBufferSequence, - typename WriteHandler> - void async_write_some(impl_type& impl, Stream& next_layer, - const ConstBufferSequence& buffers, WriteHandler handler) - { - service_impl_.async_write_some(impl, next_layer, buffers, handler); - } - - /// Read some data from the stream. - template <typename Stream, typename MutableBufferSequence> - std::size_t read_some(impl_type& impl, Stream& next_layer, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - return service_impl_.read_some(impl, next_layer, buffers, ec); - } - - /// Start an asynchronous read. - template <typename Stream, typename MutableBufferSequence, - typename ReadHandler> - void async_read_some(impl_type& impl, Stream& next_layer, - const MutableBufferSequence& buffers, ReadHandler handler) - { - service_impl_.async_read_some(impl, next_layer, buffers, handler); - } - - /// Peek at the incoming data on the stream. - template <typename Stream, typename MutableBufferSequence> - std::size_t peek(impl_type& impl, Stream& next_layer, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - return service_impl_.peek(impl, next_layer, buffers, ec); - } - - /// Determine the amount of data that may be read without blocking. - template <typename Stream> - std::size_t in_avail(impl_type& impl, Stream& next_layer, - asio::error_code& ec) - { - return service_impl_.in_avail(impl, next_layer, ec); - } - -private: - // Destroy all user-defined handler objects owned by the service. - void shutdown_service() - { - } - - // The service that provides the platform-specific implementation. - service_impl_type& service_impl_; -}; - -} // namespace old -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_SSL_OLD_STREAM_SERVICE_HPP http://git-wip-us.apache.org/repos/asf/hadoop/blob/76a1e894/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/rfc2818_verification.hpp ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/rfc2818_verification.hpp b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/rfc2818_verification.hpp deleted file mode 100644 index acadfaa..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/rfc2818_verification.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -// ssl/rfc2818_verification.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_SSL_RFC2818_VERIFICATION_HPP -#define ASIO_SSL_RFC2818_VERIFICATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_ENABLE_OLD_SSL) -# include <string> -# include "asio/ssl/detail/openssl_types.hpp" -# include "asio/ssl/verify_context.hpp" -#endif // !defined(ASIO_ENABLE_OLD_SSL) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace ssl { - -#if !defined(ASIO_ENABLE_OLD_SSL) - -/// Verifies a certificate against a hostname according to the rules described -/// in RFC 2818. -/** - * @par Example - * The following example shows how to synchronously open a secure connection to - * a given host name: - * @code - * using asio::ip::tcp; - * namespace ssl = asio::ssl; - * typedef ssl::stream<tcp::socket> ssl_socket; - * - * // Create a context that uses the default paths for finding CA certificates. - * ssl::context ctx(ssl::context::sslv23); - * ctx.set_default_verify_paths(); - * - * // Open a socket and connect it to the remote host. - * asio::io_service io_service; - * ssl_socket sock(io_service, ctx); - * tcp::resolver resolver(io_service); - * tcp::resolver::query query("host.name", "https"); - * asio::connect(sock.lowest_layer(), resolver.resolve(query)); - * sock.lowest_layer().set_option(tcp::no_delay(true)); - * - * // Perform SSL handshake and verify the remote host's certificate. - * sock.set_verify_mode(ssl::verify_peer); - * sock.set_verify_callback(ssl::rfc2818_verification("host.name")); - * sock.handshake(ssl_socket::client); - * - * // ... read and write as normal ... - * @endcode - */ -class rfc2818_verification -{ -public: - /// The type of the function object's result. - typedef bool result_type; - - /// Constructor. - explicit rfc2818_verification(const std::string& host) - : host_(host) - { - } - - /// Perform certificate verification. - ASIO_DECL bool operator()(bool preverified, verify_context& ctx) const; - -private: - // Helper function to check a host name against a pattern. - ASIO_DECL static bool match_pattern(const char* pattern, - std::size_t pattern_length, const char* host); - - // Helper function to check a host name against an IPv4 address - // The host name to be checked. - std::string host_; -}; - -#endif // defined(ASIO_ENABLE_OLD_SSL) - -} // namespace ssl -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/ssl/impl/rfc2818_verification.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_SSL_RFC2818_VERIFICATION_HPP
