You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ae...@apache.org on 2018/03/23 00:56:21 UTC
[01/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Repository: hadoop
Updated Branches:
refs/heads/HDFS-7240 7733a40c2 -> 7a542fb32
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/write.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/write.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/write.hpp
deleted file mode 100644
index 6799179..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/write.hpp
+++ /dev/null
@@ -1,618 +0,0 @@
-//
-// write.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_WRITE_HPP
-#define ASIO_WRITE_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 "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup write asio::write
- *
- * @brief Write a certain amount of data to a stream before returning.
- */
-/*@{*/
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write(s, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- * s, buffers,
- * asio::transfer_all()); @endcode
- */
-template <typename SyncWriteStream, typename ConstBufferSequence>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers);
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write(s, asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- * s, buffers,
- * asio::transfer_all(), ec); @endcode
- */
-template <typename SyncWriteStream, typename ConstBufferSequence>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
- asio::error_code& ec);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest write_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write(s, asio::buffer(data, size),
- * asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest write_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes written. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- * s, b,
- * asio::transfer_all()); @endcode
- */
-template <typename SyncWriteStream, typename Allocator>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b);
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- * s, b,
- * asio::transfer_all(), ec); @endcode
- */
-template <typename SyncWriteStream, typename Allocator>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
- asio::error_code& ec);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest write_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncWriteStream, typename Allocator,
- typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest write_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes written. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncWriteStream, typename Allocator,
- typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_write asio::async_write
- *
- * @brief Start an asynchronous operation to write a certain amount of data to a
- * stream.
- */
-/*@{*/
-
-/// Start an asynchronous operation to write all of the supplied data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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 from the
- * // buffers. If an error occurred,
- * // this will be less than the sum
- * // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_write(s, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler);
-
-/// Start an asynchronous operation to write a certain amount of data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest async_write_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's async_write_some function.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The 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 from the
- * // buffers. If an error occurred,
- * // this will be less than the sum
- * // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::async_write(s,
- * asio::buffer(data, size),
- * asio::transfer_at_least(32),
- * handler); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(WriteHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to write all of the supplied data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param b A basic_streambuf object from which data will be written. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains 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 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 from the
- * // buffers. If an error occurred,
- * // this will be less than the sum
- * // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncWriteStream, typename Allocator, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
- ASIO_MOVE_ARG(WriteHandler) handler);
-
-/// Start an asynchronous operation to write a certain amount of data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param b A basic_streambuf object from which data will be written. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest async_write_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's async_write_some function.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The 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 from the
- * // buffers. If an error occurred,
- * // this will be less than the sum
- * // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncWriteStream, typename Allocator,
- typename CompletionCondition, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(WriteHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/write.hpp"
-
-#endif // ASIO_WRITE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[25/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_ops.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_ops.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_ops.ipp
deleted file mode 100644
index c601210..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_ops.ipp
+++ /dev/null
@@ -1,3394 +0,0 @@
-//
-// detail/impl/socket_ops.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_SOCKET_OPS_IPP
-#define ASIO_DETAIL_SOCKET_OPS_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cctype>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cerrno>
-#include <new>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include <codecvt>
-# include <locale>
-# include <string>
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) \
- || defined(__MACH__) && defined(__APPLE__)
-# if defined(ASIO_HAS_PTHREADS)
-# include <pthread.h>
-# endif // defined(ASIO_HAS_PTHREADS)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // || defined(__MACH__) && defined(__APPLE__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace socket_ops {
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-struct msghdr { int msg_namelen; };
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#if defined(__hpux)
-// HP-UX doesn't declare these functions extern "C", so they are declared again
-// here to avoid linker errors about undefined symbols.
-extern "C" char* if_indextoname(unsigned int, char*);
-extern "C" unsigned int if_nametoindex(const char*);
-#endif // defined(__hpux)
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-inline void clear_last_error()
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- WSASetLastError(0);
-#else
- errno = 0;
-#endif
-}
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-template <typename ReturnType>
-inline ReturnType error_wrapper(ReturnType return_value,
- asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error_code(WSAGetLastError(),
- asio::error::get_system_category());
-#else
- ec = asio::error_code(errno,
- asio::error::get_system_category());
-#endif
- return return_value;
-}
-
-template <typename SockLenType>
-inline socket_type call_accept(SockLenType msghdr::*,
- socket_type s, socket_addr_type* addr, std::size_t* addrlen)
-{
- SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0;
- socket_type result = ::accept(s, addr, addrlen ? &tmp_addrlen : 0);
- if (addrlen)
- *addrlen = (std::size_t)tmp_addrlen;
- return result;
-}
-
-socket_type accept(socket_type s, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return invalid_socket;
- }
-
- clear_last_error();
-
- socket_type new_s = error_wrapper(call_accept(
- &msghdr::msg_namelen, s, addr, addrlen), ec);
- if (new_s == invalid_socket)
- return new_s;
-
-#if defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
- int optval = 1;
- int result = error_wrapper(::setsockopt(new_s,
- SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
- if (result != 0)
- {
- ::close(new_s);
- return invalid_socket;
- }
-#endif
-
- ec = asio::error_code();
- return new_s;
-}
-
-socket_type sync_accept(socket_type s, state_type state,
- socket_addr_type* addr, std::size_t* addrlen, asio::error_code& ec)
-{
- // Accept a socket.
- for (;;)
- {
- // Try to complete the operation without blocking.
- socket_type new_socket = socket_ops::accept(s, addr, addrlen, ec);
-
- // Check if operation succeeded.
- if (new_socket != invalid_socket)
- return new_socket;
-
- // Operation failed.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- {
- if (state & user_set_non_blocking)
- return invalid_socket;
- // Fall through to retry operation.
- }
- else if (ec == asio::error::connection_aborted)
- {
- if (state & enable_connection_aborted)
- return invalid_socket;
- // Fall through to retry operation.
- }
-#if defined(EPROTO)
- else if (ec.value() == EPROTO)
- {
- if (state & enable_connection_aborted)
- return invalid_socket;
- // Fall through to retry operation.
- }
-#endif // defined(EPROTO)
- else
- return invalid_socket;
-
- // Wait for socket to become ready.
- if (socket_ops::poll_read(s, 0, ec) < 0)
- return invalid_socket;
- }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_accept(socket_type s,
- void* output_buffer, DWORD address_length,
- socket_addr_type* addr, std::size_t* addrlen,
- socket_type new_socket, asio::error_code& ec)
-{
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_NETNAME_DELETED)
- ec = asio::error::connection_aborted;
-
- if (!ec)
- {
- // Get the address of the peer.
- if (addr && addrlen)
- {
- LPSOCKADDR local_addr = 0;
- int local_addr_length = 0;
- LPSOCKADDR remote_addr = 0;
- int remote_addr_length = 0;
- GetAcceptExSockaddrs(output_buffer, 0, address_length,
- address_length, &local_addr, &local_addr_length,
- &remote_addr, &remote_addr_length);
- if (static_cast<std::size_t>(remote_addr_length) > *addrlen)
- {
- ec = asio::error::invalid_argument;
- }
- else
- {
- using namespace std; // For memcpy.
- memcpy(addr, remote_addr, remote_addr_length);
- *addrlen = static_cast<std::size_t>(remote_addr_length);
- }
- }
-
- // Need to set the SO_UPDATE_ACCEPT_CONTEXT option so that getsockname
- // and getpeername will work on the accepted socket.
- SOCKET update_ctx_param = s;
- socket_ops::state_type state = 0;
- socket_ops::setsockopt(new_socket, state,
- SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
- &update_ctx_param, sizeof(SOCKET), ec);
- }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_accept(socket_type s,
- state_type state, socket_addr_type* addr, std::size_t* addrlen,
- asio::error_code& ec, socket_type& new_socket)
-{
- for (;;)
- {
- // Accept the waiting connection.
- new_socket = socket_ops::accept(s, addr, addrlen, ec);
-
- // Check if operation succeeded.
- if (new_socket != invalid_socket)
- return true;
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Operation failed.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- {
- if (state & user_set_non_blocking)
- return true;
- // Fall through to retry operation.
- }
- else if (ec == asio::error::connection_aborted)
- {
- if (state & enable_connection_aborted)
- return true;
- // Fall through to retry operation.
- }
-#if defined(EPROTO)
- else if (ec.value() == EPROTO)
- {
- if (state & enable_connection_aborted)
- return true;
- // Fall through to retry operation.
- }
-#endif // defined(EPROTO)
- else
- return true;
-
- return false;
- }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-template <typename SockLenType>
-inline int call_bind(SockLenType msghdr::*,
- socket_type s, const socket_addr_type* addr, std::size_t addrlen)
-{
- return ::bind(s, addr, (SockLenType)addrlen);
-}
-
-int bind(socket_type s, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- clear_last_error();
- int result = error_wrapper(call_bind(
- &msghdr::msg_namelen, s, addr, addrlen), ec);
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-int close(socket_type s, state_type& state,
- bool destruction, asio::error_code& ec)
-{
- int result = 0;
- if (s != invalid_socket)
- {
- // We don't want the destructor to block, so set the socket to linger in
- // the background. If the user doesn't like this behaviour then they need
- // to explicitly close the socket.
- if (destruction && (state & user_set_linger))
- {
- ::linger opt;
- opt.l_onoff = 0;
- opt.l_linger = 0;
- asio::error_code ignored_ec;
- socket_ops::setsockopt(s, state, SOL_SOCKET,
- SO_LINGER, &opt, sizeof(opt), ignored_ec);
- }
-
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- result = error_wrapper(::closesocket(s), ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- result = error_wrapper(::close(s), ec);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
- if (result != 0
- && (ec == asio::error::would_block
- || ec == asio::error::try_again))
- {
- // According to UNIX Network Programming Vol. 1, it is possible for
- // close() to fail with EWOULDBLOCK under certain circumstances. What
- // isn't clear is the state of the descriptor after this error. The one
- // current OS where this behaviour is seen, Windows, says that the socket
- // remains open. Therefore we'll put the descriptor back into blocking
- // mode and have another attempt at closing it.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ioctl_arg_type arg = 0;
- ::ioctlsocket(s, FIONBIO, &arg);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(__SYMBIAN32__)
- int flags = ::fcntl(s, F_GETFL, 0);
- if (flags >= 0)
- ::fcntl(s, F_SETFL, flags & ~O_NONBLOCK);
-# else // defined(__SYMBIAN32__)
- ioctl_arg_type arg = 0;
- ::ioctl(s, FIONBIO, &arg);
-# endif // defined(__SYMBIAN32__)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- state &= ~non_blocking;
-
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- result = error_wrapper(::closesocket(s), ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- result = error_wrapper(::close(s), ec);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- }
- }
-
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-bool set_user_non_blocking(socket_type s,
- state_type& state, bool value, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return false;
- }
-
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ioctl_arg_type arg = (value ? 1 : 0);
- int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
-#elif defined(__SYMBIAN32__)
- int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
- if (result >= 0)
- {
- clear_last_error();
- int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
- result = error_wrapper(::fcntl(s, F_SETFL, flag), ec);
- }
-#else
- ioctl_arg_type arg = (value ? 1 : 0);
- int result = error_wrapper(::ioctl(s, FIONBIO, &arg), ec);
-#endif
-
- if (result >= 0)
- {
- ec = asio::error_code();
- if (value)
- state |= user_set_non_blocking;
- else
- {
- // Clearing the user-set non-blocking mode always overrides any
- // internally-set non-blocking flag. Any subsequent asynchronous
- // operations will need to re-enable non-blocking I/O.
- state &= ~(user_set_non_blocking | internal_non_blocking);
- }
- return true;
- }
-
- return false;
-}
-
-bool set_internal_non_blocking(socket_type s,
- state_type& state, bool value, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return false;
- }
-
- if (!value && (state & user_set_non_blocking))
- {
- // It does not make sense to clear the internal non-blocking flag if the
- // user still wants non-blocking behaviour. Return an error and let the
- // caller figure out whether to update the user-set non-blocking flag.
- ec = asio::error::invalid_argument;
- return false;
- }
-
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ioctl_arg_type arg = (value ? 1 : 0);
- int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
-#elif defined(__SYMBIAN32__)
- int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
- if (result >= 0)
- {
- clear_last_error();
- int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
- result = error_wrapper(::fcntl(s, F_SETFL, flag), ec);
- }
-#else
- ioctl_arg_type arg = (value ? 1 : 0);
- int result = error_wrapper(::ioctl(s, FIONBIO, &arg), ec);
-#endif
-
- if (result >= 0)
- {
- ec = asio::error_code();
- if (value)
- state |= internal_non_blocking;
- else
- state &= ~internal_non_blocking;
- return true;
- }
-
- return false;
-}
-
-int shutdown(socket_type s, int what, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- clear_last_error();
- int result = error_wrapper(::shutdown(s, what), ec);
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-template <typename SockLenType>
-inline int call_connect(SockLenType msghdr::*,
- socket_type s, const socket_addr_type* addr, std::size_t addrlen)
-{
- return ::connect(s, addr, (SockLenType)addrlen);
-}
-
-int connect(socket_type s, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- clear_last_error();
- int result = error_wrapper(call_connect(
- &msghdr::msg_namelen, s, addr, addrlen), ec);
- if (result == 0)
- ec = asio::error_code();
-#if defined(__linux__)
- else if (ec == asio::error::try_again)
- ec = asio::error::no_buffer_space;
-#endif // defined(__linux__)
- return result;
-}
-
-void sync_connect(socket_type s, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec)
-{
- // Perform the connect operation.
- socket_ops::connect(s, addr, addrlen, ec);
- if (ec != asio::error::in_progress
- && ec != asio::error::would_block)
- {
- // The connect operation finished immediately.
- return;
- }
-
- // Wait for socket to become ready.
- if (socket_ops::poll_connect(s, ec) < 0)
- return;
-
- // Get the error code from the connect operation.
- int connect_error = 0;
- size_t connect_error_len = sizeof(connect_error);
- if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_ERROR,
- &connect_error, &connect_error_len, ec) == socket_error_retval)
- return;
-
- // Return the result of the connect operation.
- ec = asio::error_code(connect_error,
- asio::error::get_system_category());
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_connect(socket_type s, asio::error_code& ec)
-{
- if (!ec)
- {
- // Need to set the SO_UPDATE_CONNECT_CONTEXT option so that getsockname
- // and getpeername will work on the connected socket.
- socket_ops::state_type state = 0;
- socket_ops::setsockopt(s, state, SOL_SOCKET,
- SO_UPDATE_CONNECT_CONTEXT, 0, 0, ec);
- }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_connect(socket_type s, asio::error_code& ec)
-{
- // Check if the connect operation has finished. This is required since we may
- // get spurious readiness notifications from the reactor.
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
- fd_set write_fds;
- FD_ZERO(&write_fds);
- FD_SET(s, &write_fds);
- fd_set except_fds;
- FD_ZERO(&except_fds);
- FD_SET(s, &except_fds);
- timeval zero_timeout;
- zero_timeout.tv_sec = 0;
- zero_timeout.tv_usec = 0;
- int ready = ::select(s + 1, 0, &write_fds, &except_fds, &zero_timeout);
-#else // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- pollfd fds;
- fds.fd = s;
- fds.events = POLLOUT;
- fds.revents = 0;
- int ready = ::poll(&fds, 1, 0);
-#endif // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- if (ready == 0)
- {
- // The asynchronous connect operation is still in progress.
- return false;
- }
-
- // Get the error code from the connect operation.
- int connect_error = 0;
- size_t connect_error_len = sizeof(connect_error);
- if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_ERROR,
- &connect_error, &connect_error_len, ec) == 0)
- {
- if (connect_error)
- {
- ec = asio::error_code(connect_error,
- asio::error::get_system_category());
- }
- else
- ec = asio::error_code();
- }
-
- return true;
-}
-
-int socketpair(int af, int type, int protocol,
- socket_type sv[2], asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- (void)(af);
- (void)(type);
- (void)(protocol);
- (void)(sv);
- ec = asio::error::operation_not_supported;
- return socket_error_retval;
-#else
- clear_last_error();
- int result = error_wrapper(::socketpair(af, type, protocol, sv), ec);
- if (result == 0)
- ec = asio::error_code();
- return result;
-#endif
-}
-
-bool sockatmark(socket_type s, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return false;
- }
-
-#if defined(SIOCATMARK)
- ioctl_arg_type value = 0;
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- int result = error_wrapper(::ioctlsocket(s, SIOCATMARK, &value), ec);
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- int result = error_wrapper(::ioctl(s, SIOCATMARK, &value), ec);
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (result == 0)
- ec = asio::error_code();
-# if defined(ENOTTY)
- if (ec.value() == ENOTTY)
- ec = asio::error::not_socket;
-# endif // defined(ENOTTY)
-#else // defined(SIOCATMARK)
- int value = error_wrapper(::sockatmark(s), ec);
- if (value != -1)
- ec = asio::error_code();
-#endif // defined(SIOCATMARK)
-
- return ec ? false : value != 0;
-}
-
-size_t available(socket_type s, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- ioctl_arg_type value = 0;
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- int result = error_wrapper(::ioctlsocket(s, FIONREAD, &value), ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- int result = error_wrapper(::ioctl(s, FIONREAD, &value), ec);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (result == 0)
- ec = asio::error_code();
-#if defined(ENOTTY)
- if (ec.value() == ENOTTY)
- ec = asio::error::not_socket;
-#endif // defined(ENOTTY)
-
- return ec ? static_cast<size_t>(0) : static_cast<size_t>(value);
-}
-
-int listen(socket_type s, int backlog, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- clear_last_error();
- int result = error_wrapper(::listen(s, backlog), ec);
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-inline void init_buf_iov_base(void*& base, void* addr)
-{
- base = addr;
-}
-
-template <typename T>
-inline void init_buf_iov_base(T& base, void* addr)
-{
- base = static_cast<T>(addr);
-}
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef WSABUF buf;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef iovec buf;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-void init_buf(buf& b, void* data, size_t size)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- b.buf = static_cast<char*>(data);
- b.len = static_cast<u_long>(size);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- init_buf_iov_base(b.iov_base, data);
- b.iov_len = size;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-void init_buf(buf& b, const void* data, size_t size)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- b.buf = static_cast<char*>(const_cast<void*>(data));
- b.len = static_cast<u_long>(size);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- init_buf_iov_base(b.iov_base, const_cast<void*>(data));
- b.iov_len = size;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-inline void init_msghdr_msg_name(void*& name, socket_addr_type* addr)
-{
- name = addr;
-}
-
-inline void init_msghdr_msg_name(void*& name, const socket_addr_type* addr)
-{
- name = const_cast<socket_addr_type*>(addr);
-}
-
-template <typename T>
-inline void init_msghdr_msg_name(T& name, socket_addr_type* addr)
-{
- name = reinterpret_cast<T>(addr);
-}
-
-template <typename T>
-inline void init_msghdr_msg_name(T& name, const socket_addr_type* addr)
-{
- name = reinterpret_cast<T>(const_cast<socket_addr_type*>(addr));
-}
-
-signed_size_type recv(socket_type s, buf* bufs, size_t count,
- int flags, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // Receive some data.
- DWORD recv_buf_count = static_cast<DWORD>(count);
- DWORD bytes_transferred = 0;
- DWORD recv_flags = flags;
- int result = error_wrapper(::WSARecv(s, bufs,
- recv_buf_count, &bytes_transferred, &recv_flags, 0, 0), ec);
- if (ec.value() == ERROR_NETNAME_DELETED)
- ec = asio::error::connection_reset;
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- ec = asio::error::connection_refused;
- if (result != 0)
- return socket_error_retval;
- ec = asio::error_code();
- return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- msghdr msg = msghdr();
- msg.msg_iov = bufs;
- msg.msg_iovlen = static_cast<int>(count);
- signed_size_type result = error_wrapper(::recvmsg(s, &msg, flags), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_recv(socket_type s, state_type state, buf* bufs,
- size_t count, int flags, bool all_empty, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // A request to read 0 bytes on a stream is a no-op.
- if (all_empty && (state & stream_oriented))
- {
- ec = asio::error_code();
- return 0;
- }
-
- // Read some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec);
-
- // Check if operation succeeded.
- if (bytes > 0)
- return bytes;
-
- // Check for EOF.
- if ((state & stream_oriented) && bytes == 0)
- {
- ec = asio::error::eof;
- return 0;
- }
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for socket to become ready.
- if (socket_ops::poll_read(s, 0, ec) < 0)
- return 0;
- }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_recv(state_type state,
- const weak_cancel_token_type& cancel_token, bool all_empty,
- asio::error_code& ec, size_t bytes_transferred)
-{
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_NETNAME_DELETED)
- {
- if (cancel_token.expired())
- ec = asio::error::operation_aborted;
- else
- ec = asio::error::connection_reset;
- }
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- {
- ec = asio::error::connection_refused;
- }
-
- // Check for connection closed.
- else if (!ec && bytes_transferred == 0
- && (state & stream_oriented) != 0
- && !all_empty)
- {
- ec = asio::error::eof;
- }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_recv(socket_type s,
- buf* bufs, size_t count, int flags, bool is_stream,
- asio::error_code& ec, size_t& bytes_transferred)
-{
- for (;;)
- {
- // Read some data.
- signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec);
-
- // Check for end of stream.
- if (is_stream && bytes == 0)
- {
- ec = asio::error::eof;
- return true;
- }
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes >= 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
- int flags, socket_addr_type* addr, std::size_t* addrlen,
- asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // Receive some data.
- DWORD recv_buf_count = static_cast<DWORD>(count);
- DWORD bytes_transferred = 0;
- DWORD recv_flags = flags;
- int tmp_addrlen = (int)*addrlen;
- int result = error_wrapper(::WSARecvFrom(s, bufs, recv_buf_count,
- &bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0), ec);
- *addrlen = (std::size_t)tmp_addrlen;
- if (ec.value() == ERROR_NETNAME_DELETED)
- ec = asio::error::connection_reset;
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- ec = asio::error::connection_refused;
- if (result != 0)
- return socket_error_retval;
- ec = asio::error_code();
- return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- msghdr msg = msghdr();
- init_msghdr_msg_name(msg.msg_name, addr);
- msg.msg_namelen = static_cast<int>(*addrlen);
- msg.msg_iov = bufs;
- msg.msg_iovlen = static_cast<int>(count);
- signed_size_type result = error_wrapper(::recvmsg(s, &msg, flags), ec);
- *addrlen = msg.msg_namelen;
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_recvfrom(socket_type s, state_type state, buf* bufs,
- size_t count, int flags, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // Read some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- signed_size_type bytes = socket_ops::recvfrom(
- s, bufs, count, flags, addr, addrlen, ec);
-
- // Check if operation succeeded.
- if (bytes >= 0)
- return bytes;
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for socket to become ready.
- if (socket_ops::poll_read(s, 0, ec) < 0)
- return 0;
- }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_recvfrom(
- const weak_cancel_token_type& cancel_token,
- asio::error_code& ec)
-{
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_NETNAME_DELETED)
- {
- if (cancel_token.expired())
- ec = asio::error::operation_aborted;
- else
- ec = asio::error::connection_reset;
- }
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- {
- ec = asio::error::connection_refused;
- }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_recvfrom(socket_type s,
- buf* bufs, size_t count, int flags,
- socket_addr_type* addr, std::size_t* addrlen,
- asio::error_code& ec, size_t& bytes_transferred)
-{
- for (;;)
- {
- // Read some data.
- signed_size_type bytes = socket_ops::recvfrom(
- s, bufs, count, flags, addr, addrlen, ec);
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes >= 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type recvmsg(socket_type s, buf* bufs, size_t count,
- int in_flags, int& out_flags, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- out_flags = 0;
- return socket_ops::recv(s, bufs, count, in_flags, ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- msghdr msg = msghdr();
- msg.msg_iov = bufs;
- msg.msg_iovlen = static_cast<int>(count);
- signed_size_type result = error_wrapper(::recvmsg(s, &msg, in_flags), ec);
- if (result >= 0)
- {
- ec = asio::error_code();
- out_flags = msg.msg_flags;
- }
- else
- out_flags = 0;
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_recvmsg(socket_type s, state_type state,
- buf* bufs, size_t count, int in_flags, int& out_flags,
- asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // Read some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- signed_size_type bytes = socket_ops::recvmsg(
- s, bufs, count, in_flags, out_flags, ec);
-
- // Check if operation succeeded.
- if (bytes >= 0)
- return bytes;
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for socket to become ready.
- if (socket_ops::poll_read(s, 0, ec) < 0)
- return 0;
- }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_recvmsg(
- const weak_cancel_token_type& cancel_token,
- asio::error_code& ec)
-{
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_NETNAME_DELETED)
- {
- if (cancel_token.expired())
- ec = asio::error::operation_aborted;
- else
- ec = asio::error::connection_reset;
- }
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- {
- ec = asio::error::connection_refused;
- }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_recvmsg(socket_type s,
- buf* bufs, size_t count, int in_flags, int& out_flags,
- asio::error_code& ec, size_t& bytes_transferred)
-{
- for (;;)
- {
- // Read some data.
- signed_size_type bytes = socket_ops::recvmsg(
- s, bufs, count, in_flags, out_flags, ec);
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes >= 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type send(socket_type s, const buf* bufs, size_t count,
- int flags, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // Send the data.
- DWORD send_buf_count = static_cast<DWORD>(count);
- DWORD bytes_transferred = 0;
- DWORD send_flags = flags;
- int result = error_wrapper(::WSASend(s, const_cast<buf*>(bufs),
- send_buf_count, &bytes_transferred, send_flags, 0, 0), ec);
- if (ec.value() == ERROR_NETNAME_DELETED)
- ec = asio::error::connection_reset;
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- ec = asio::error::connection_refused;
- if (result != 0)
- return socket_error_retval;
- ec = asio::error_code();
- return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- msghdr msg = msghdr();
- msg.msg_iov = const_cast<buf*>(bufs);
- msg.msg_iovlen = static_cast<int>(count);
-#if defined(__linux__)
- flags |= MSG_NOSIGNAL;
-#endif // defined(__linux__)
- signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_send(socket_type s, state_type state, const buf* bufs,
- size_t count, int flags, bool all_empty, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // A request to write 0 bytes to a stream is a no-op.
- if (all_empty && (state & stream_oriented))
- {
- ec = asio::error_code();
- return 0;
- }
-
- // Read some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec);
-
- // Check if operation succeeded.
- if (bytes >= 0)
- return bytes;
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for socket to become ready.
- if (socket_ops::poll_write(s, 0, ec) < 0)
- return 0;
- }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_send(
- const weak_cancel_token_type& cancel_token,
- asio::error_code& ec)
-{
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_NETNAME_DELETED)
- {
- if (cancel_token.expired())
- ec = asio::error::operation_aborted;
- else
- ec = asio::error::connection_reset;
- }
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- {
- ec = asio::error::connection_refused;
- }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_send(socket_type s,
- const buf* bufs, size_t count, int flags,
- asio::error_code& ec, size_t& bytes_transferred)
-{
- for (;;)
- {
- // Write some data.
- signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec);
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes >= 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type sendto(socket_type s, const buf* bufs, size_t count,
- int flags, const socket_addr_type* addr, std::size_t addrlen,
- asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // Send the data.
- DWORD send_buf_count = static_cast<DWORD>(count);
- DWORD bytes_transferred = 0;
- int result = error_wrapper(::WSASendTo(s, const_cast<buf*>(bufs),
- send_buf_count, &bytes_transferred, flags, addr,
- static_cast<int>(addrlen), 0, 0), ec);
- if (ec.value() == ERROR_NETNAME_DELETED)
- ec = asio::error::connection_reset;
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- ec = asio::error::connection_refused;
- if (result != 0)
- return socket_error_retval;
- ec = asio::error_code();
- return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- msghdr msg = msghdr();
- init_msghdr_msg_name(msg.msg_name, addr);
- msg.msg_namelen = static_cast<int>(addrlen);
- msg.msg_iov = const_cast<buf*>(bufs);
- msg.msg_iovlen = static_cast<int>(count);
-#if defined(__linux__)
- flags |= MSG_NOSIGNAL;
-#endif // defined(__linux__)
- signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_sendto(socket_type s, state_type state, const buf* bufs,
- size_t count, int flags, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // Write some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- signed_size_type bytes = socket_ops::sendto(
- s, bufs, count, flags, addr, addrlen, ec);
-
- // Check if operation succeeded.
- if (bytes >= 0)
- return bytes;
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for socket to become ready.
- if (socket_ops::poll_write(s, 0, ec) < 0)
- return 0;
- }
-}
-
-#if !defined(ASIO_HAS_IOCP)
-
-bool non_blocking_sendto(socket_type s,
- const buf* bufs, size_t count, int flags,
- const socket_addr_type* addr, std::size_t addrlen,
- asio::error_code& ec, size_t& bytes_transferred)
-{
- for (;;)
- {
- // Write some data.
- signed_size_type bytes = socket_ops::sendto(
- s, bufs, count, flags, addr, addrlen, ec);
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes >= 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-socket_type socket(int af, int type, int protocol,
- asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- socket_type s = error_wrapper(::WSASocket(af, type, protocol, 0, 0,
- WSA_FLAG_OVERLAPPED), ec);
- if (s == invalid_socket)
- return s;
-
- if (af == ASIO_OS_DEF(AF_INET6))
- {
- // Try to enable the POSIX default behaviour of having IPV6_V6ONLY set to
- // false. This will only succeed on Windows Vista and later versions of
- // Windows, where a dual-stack IPv4/v6 implementation is available.
- DWORD optval = 0;
- ::setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
- reinterpret_cast<const char*>(&optval), sizeof(optval));
- }
-
- ec = asio::error_code();
-
- return s;
-#elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
- socket_type s = error_wrapper(::socket(af, type, protocol), ec);
- if (s == invalid_socket)
- return s;
-
- int optval = 1;
- int result = error_wrapper(::setsockopt(s,
- SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
- if (result != 0)
- {
- ::close(s);
- return invalid_socket;
- }
-
- return s;
-#else
- int s = error_wrapper(::socket(af, type, protocol), ec);
- if (s >= 0)
- ec = asio::error_code();
- return s;
-#endif
-}
-
-template <typename SockLenType>
-inline int call_setsockopt(SockLenType msghdr::*,
- socket_type s, int level, int optname,
- const void* optval, std::size_t optlen)
-{
- return ::setsockopt(s, level, optname,
- (const char*)optval, (SockLenType)optlen);
-}
-
-int setsockopt(socket_type s, state_type& state, int level, int optname,
- const void* optval, std::size_t optlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- if (level == custom_socket_option_level && optname == always_fail_option)
- {
- ec = asio::error::invalid_argument;
- return socket_error_retval;
- }
-
- if (level == custom_socket_option_level
- && optname == enable_connection_aborted_option)
- {
- if (optlen != sizeof(int))
- {
- ec = asio::error::invalid_argument;
- return socket_error_retval;
- }
-
- if (*static_cast<const int*>(optval))
- state |= enable_connection_aborted;
- else
- state &= ~enable_connection_aborted;
- ec = asio::error_code();
- return 0;
- }
-
- if (level == SOL_SOCKET && optname == SO_LINGER)
- state |= user_set_linger;
-
-#if defined(__BORLANDC__)
- // Mysteriously, using the getsockopt and setsockopt functions directly with
- // Borland C++ results in incorrect values being set and read. The bug can be
- // worked around by using function addresses resolved with GetProcAddress.
- if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
- {
- typedef int (WSAAPI *sso_t)(SOCKET, int, int, const char*, int);
- if (sso_t sso = (sso_t)::GetProcAddress(winsock_module, "setsockopt"))
- {
- clear_last_error();
- return error_wrapper(sso(s, level, optname,
- reinterpret_cast<const char*>(optval),
- static_cast<int>(optlen)), ec);
- }
- }
- ec = asio::error::fault;
- return socket_error_retval;
-#else // defined(__BORLANDC__)
- clear_last_error();
- int result = error_wrapper(call_setsockopt(&msghdr::msg_namelen,
- s, level, optname, optval, optlen), ec);
- if (result == 0)
- {
- ec = asio::error_code();
-
-#if defined(__MACH__) && defined(__APPLE__) \
- || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
- // To implement portable behaviour for SO_REUSEADDR with UDP sockets we
- // need to also set SO_REUSEPORT on BSD-based platforms.
- if ((state & datagram_oriented)
- && level == SOL_SOCKET && optname == SO_REUSEADDR)
- {
- call_setsockopt(&msghdr::msg_namelen, s,
- SOL_SOCKET, SO_REUSEPORT, optval, optlen);
- }
-#endif
- }
-
- return result;
-#endif // defined(__BORLANDC__)
-}
-
-template <typename SockLenType>
-inline int call_getsockopt(SockLenType msghdr::*,
- socket_type s, int level, int optname,
- void* optval, std::size_t* optlen)
-{
- SockLenType tmp_optlen = (SockLenType)*optlen;
- int result = ::getsockopt(s, level, optname, (char*)optval, &tmp_optlen);
- *optlen = (std::size_t)tmp_optlen;
- return result;
-}
-
-int getsockopt(socket_type s, state_type state, int level, int optname,
- void* optval, size_t* optlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- if (level == custom_socket_option_level && optname == always_fail_option)
- {
- ec = asio::error::invalid_argument;
- return socket_error_retval;
- }
-
- if (level == custom_socket_option_level
- && optname == enable_connection_aborted_option)
- {
- if (*optlen != sizeof(int))
- {
- ec = asio::error::invalid_argument;
- return socket_error_retval;
- }
-
- *static_cast<int*>(optval) = (state & enable_connection_aborted) ? 1 : 0;
- ec = asio::error_code();
- return 0;
- }
-
-#if defined(__BORLANDC__)
- // Mysteriously, using the getsockopt and setsockopt functions directly with
- // Borland C++ results in incorrect values being set and read. The bug can be
- // worked around by using function addresses resolved with GetProcAddress.
- if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
- {
- typedef int (WSAAPI *gso_t)(SOCKET, int, int, char*, int*);
- if (gso_t gso = (gso_t)::GetProcAddress(winsock_module, "getsockopt"))
- {
- clear_last_error();
- int tmp_optlen = static_cast<int>(*optlen);
- int result = error_wrapper(gso(s, level, optname,
- reinterpret_cast<char*>(optval), &tmp_optlen), ec);
- *optlen = static_cast<size_t>(tmp_optlen);
- if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
- && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
- {
- // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are
- // only supported on Windows Vista and later. To simplify program logic
- // we will fake success of getting this option and specify that the
- // value is non-zero (i.e. true). This corresponds to the behavior of
- // IPv6 sockets on Windows platforms pre-Vista.
- *static_cast<DWORD*>(optval) = 1;
- ec = asio::error_code();
- }
- return result;
- }
- }
- ec = asio::error::fault;
- return socket_error_retval;
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- clear_last_error();
- int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
- s, level, optname, optval, optlen), ec);
- if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
- && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
- {
- // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are only
- // supported on Windows Vista and later. To simplify program logic we will
- // fake success of getting this option and specify that the value is
- // non-zero (i.e. true). This corresponds to the behavior of IPv6 sockets
- // on Windows platforms pre-Vista.
- *static_cast<DWORD*>(optval) = 1;
- ec = asio::error_code();
- }
- if (result == 0)
- ec = asio::error_code();
- return result;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- clear_last_error();
- int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
- s, level, optname, optval, optlen), ec);
-#if defined(__linux__)
- if (result == 0 && level == SOL_SOCKET && *optlen == sizeof(int)
- && (optname == SO_SNDBUF || optname == SO_RCVBUF))
- {
- // On Linux, setting SO_SNDBUF or SO_RCVBUF to N actually causes the kernel
- // to set the buffer size to N*2. Linux puts additional stuff into the
- // buffers so that only about half is actually available to the application.
- // The retrieved value is divided by 2 here to make it appear as though the
- // correct value has been set.
- *static_cast<int*>(optval) /= 2;
- }
-#endif // defined(__linux__)
- if (result == 0)
- ec = asio::error_code();
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-template <typename SockLenType>
-inline int call_getpeername(SockLenType msghdr::*,
- socket_type s, socket_addr_type* addr, std::size_t* addrlen)
-{
- SockLenType tmp_addrlen = (SockLenType)*addrlen;
- int result = ::getpeername(s, addr, &tmp_addrlen);
- *addrlen = (std::size_t)tmp_addrlen;
- return result;
-}
-
-int getpeername(socket_type s, socket_addr_type* addr,
- std::size_t* addrlen, bool cached, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (cached)
- {
- // Check if socket is still connected.
- DWORD connect_time = 0;
- size_t connect_time_len = sizeof(connect_time);
- if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_CONNECT_TIME,
- &connect_time, &connect_time_len, ec) == socket_error_retval)
- {
- return socket_error_retval;
- }
- if (connect_time == 0xFFFFFFFF)
- {
- ec = asio::error::not_connected;
- return socket_error_retval;
- }
-
- // The cached value is still valid.
- ec = asio::error_code();
- return 0;
- }
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- (void)cached;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
- clear_last_error();
- int result = error_wrapper(call_getpeername(
- &msghdr::msg_namelen, s, addr, addrlen), ec);
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-template <typename SockLenType>
-inline int call_getsockname(SockLenType msghdr::*,
- socket_type s, socket_addr_type* addr, std::size_t* addrlen)
-{
- SockLenType tmp_addrlen = (SockLenType)*addrlen;
- int result = ::getsockname(s, addr, &tmp_addrlen);
- *addrlen = (std::size_t)tmp_addrlen;
- return result;
-}
-
-int getsockname(socket_type s, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- clear_last_error();
- int result = error_wrapper(call_getsockname(
- &msghdr::msg_namelen, s, addr, addrlen), ec);
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-int ioctl(socket_type s, state_type& state, int cmd,
- ioctl_arg_type* arg, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- int result = error_wrapper(::ioctlsocket(s, cmd, arg), ec);
-#elif defined(__MACH__) && defined(__APPLE__) \
- || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
- int result = error_wrapper(::ioctl(s,
- static_cast<unsigned int>(cmd), arg), ec);
-#else
- int result = error_wrapper(::ioctl(s, cmd, arg), ec);
-#endif
- if (result >= 0)
- {
- ec = asio::error_code();
-
- // When updating the non-blocking mode we always perform the ioctl syscall,
- // even if the flags would otherwise indicate that the socket is already in
- // the correct state. This ensures that the underlying socket is put into
- // the state that has been requested by the user. If the ioctl syscall was
- // successful then we need to update the flags to match.
- if (cmd == static_cast<int>(FIONBIO))
- {
- if (*arg)
- {
- state |= user_set_non_blocking;
- }
- else
- {
- // Clearing the non-blocking mode always overrides any internally-set
- // non-blocking flag. Any subsequent asynchronous operations will need
- // to re-enable non-blocking I/O.
- state &= ~(user_set_non_blocking | internal_non_blocking);
- }
- }
- }
-
- return result;
-}
-
-int select(int nfds, fd_set* readfds, fd_set* writefds,
- fd_set* exceptfds, timeval* timeout, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (!readfds && !writefds && !exceptfds && timeout)
- {
- DWORD milliseconds = timeout->tv_sec * 1000 + timeout->tv_usec / 1000;
- if (milliseconds == 0)
- milliseconds = 1; // Force context switch.
- ::Sleep(milliseconds);
- ec = asio::error_code();
- return 0;
- }
-
- // The select() call allows timeout values measured in microseconds, but the
- // system clock (as wrapped by boost::posix_time::microsec_clock) typically
- // has a resolution of 10 milliseconds. This can lead to a spinning select
- // reactor, meaning increased CPU usage, when waiting for the earliest
- // scheduled timeout if it's less than 10 milliseconds away. To avoid a tight
- // spin we'll use a minimum timeout of 1 millisecond.
- if (timeout && timeout->tv_sec == 0
- && timeout->tv_usec > 0 && timeout->tv_usec < 1000)
- timeout->tv_usec = 1000;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#if defined(__hpux) && defined(__SELECT)
- timespec ts;
- ts.tv_sec = timeout ? timeout->tv_sec : 0;
- ts.tv_nsec = timeout ? timeout->tv_usec * 1000 : 0;
- return error_wrapper(::pselect(nfds, readfds,
- writefds, exceptfds, timeout ? &ts : 0, 0), ec);
-#else
- int result = error_wrapper(::select(nfds, readfds,
- writefds, exceptfds, timeout), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#endif
-}
-
-int poll_read(socket_type s, state_type state, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(s, &fds);
- timeval zero_timeout;
- zero_timeout.tv_sec = 0;
- zero_timeout.tv_usec = 0;
- timeval* timeout = (state & user_set_non_blocking) ? &zero_timeout : 0;
- clear_last_error();
- int result = error_wrapper(::select(s + 1, &fds, 0, 0, timeout), ec);
-#else // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- pollfd fds;
- fds.fd = s;
- fds.events = POLLIN;
- fds.revents = 0;
- int timeout = (state & user_set_non_blocking) ? 0 : -1;
- clear_last_error();
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
-#endif // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- if (result == 0)
- ec = (state & user_set_non_blocking)
- ? asio::error::would_block : asio::error_code();
- else if (result > 0)
- ec = asio::error_code();
- return result;
-}
-
-int poll_write(socket_type s, state_type state, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(s, &fds);
- timeval zero_timeout;
- zero_timeout.tv_sec = 0;
- zero_timeout.tv_usec = 0;
- timeval* timeout = (state & user_set_non_blocking) ? &zero_timeout : 0;
- clear_last_error();
- int result = error_wrapper(::select(s + 1, 0, &fds, 0, timeout), ec);
-#else // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- pollfd fds;
- fds.fd = s;
- fds.events = POLLOUT;
- fds.revents = 0;
- int timeout = (state & user_set_non_blocking) ? 0 : -1;
- clear_last_error();
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
-#endif // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- if (result == 0)
- ec = (state & user_set_non_blocking)
- ? asio::error::would_block : asio::error_code();
- else if (result > 0)
- ec = asio::error_code();
- return result;
-}
-
-int poll_connect(socket_type s, asio::error_code& ec)
-{
- if (s == invalid_socket)
- {
- ec = asio::error::bad_descriptor;
- return socket_error_retval;
- }
-
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
- fd_set write_fds;
- FD_ZERO(&write_fds);
- FD_SET(s, &write_fds);
- fd_set except_fds;
- FD_ZERO(&except_fds);
- FD_SET(s, &except_fds);
- clear_last_error();
- int result = error_wrapper(::select(
- s + 1, 0, &write_fds, &except_fds, 0), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#else // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
- pollfd fds;
- fds.fd = s;
- fds.events = POLLOUT;
- fds.revents = 0;
- clear_last_error();
- int result = error_wrapper(::poll(&fds, 1, -1), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-#endif // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
-}
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-const char* inet_ntop(int af, const void* src, char* dest, size_t length,
- unsigned long scope_id, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS_RUNTIME)
- using namespace std; // For sprintf.
- const unsigned char* bytes = static_cast<const unsigned char*>(src);
- if (af == ASIO_OS_DEF(AF_INET))
- {
- sprintf_s(dest, length, "%u.%u.%u.%u",
- bytes[0], bytes[1], bytes[2], bytes[3]);
- return dest;
- }
- else if (af == ASIO_OS_DEF(AF_INET6))
- {
- size_t n = 0, b = 0, z = 0;
- while (n < length && b < 16)
- {
- if (bytes[b] == 0 && bytes[b + 1] == 0 && z == 0)
- {
- do b += 2; while (b < 16 && bytes[b] == 0 && bytes[b + 1] == 0);
- n += sprintf_s(dest + n, length - n, ":%s", b < 16 ? "" : ":"), ++z;
- }
- else
- {
- n += sprintf_s(dest + n, length - n, "%s%x", b ? ":" : "",
- (static_cast<u_long_type>(bytes[b]) << 8) | bytes[b + 1]);
- b += 2;
- }
- }
- if (scope_id)
- n += sprintf_s(dest + n, length - n, "%%%lu", scope_id);
- return dest;
- }
- else
- {
- ec = asio::error::address_family_not_supported;
- return 0;
- }
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- using namespace std; // For memcpy.
-
- if (af != ASIO_OS_DEF(AF_INET) && af != ASIO_OS_DEF(AF_INET6))
- {
- ec = asio::error::address_family_not_supported;
- return 0;
- }
-
- union
- {
- socket_addr_type base;
- sockaddr_storage_type storage;
- sockaddr_in4_type v4;
- sockaddr_in6_type v6;
- } address;
- DWORD address_length;
- if (af == ASIO_OS_DEF(AF_INET))
- {
- address_length = sizeof(sockaddr_in4_type);
- address.v4.sin_family = ASIO_OS_DEF(AF_INET);
- address.v4.sin_port = 0;
- memcpy(&address.v4.sin_addr, src, sizeof(in4_addr_type));
- }
- else // AF_INET6
- {
- address_length = sizeof(sockaddr_in6_type);
- address.v6.sin6_family = ASIO_OS_DEF(AF_INET6);
- address.v6.sin6_port = 0;
- address.v6.sin6_flowinfo = 0;
- address.v6.sin6_scope_id = scope_id;
- memcpy(&address.v6.sin6_addr, src, sizeof(in6_addr_type));
- }
-
- DWORD string_length = static_cast<DWORD>(length);
-#if defined(BOOST_NO_ANSI_APIS)
- LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR));
- int result = error_wrapper(::WSAAddressToStringW(&address.base,
- address_length, 0, string_buffer, &string_length), ec);
- ::WideCharToMultiByte(CP_ACP, 0, string_buffer, -1, dest, length, 0, 0);
-#else
- int result = error_wrapper(::WSAAddressToStringA(
- &address.base, address_length, 0, dest, &string_length), ec);
-#endif
-
- // Windows may set error code on success.
- if (result != socket_error_retval)
- ec = asio::error_code();
-
- // Windows may not set an error code on failure.
- else if (result == socket_error_retval && !ec)
- ec = asio::error::invalid_argument;
-
- return result == socket_error_retval ? 0 : dest;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- const char* result = error_wrapper(::inet_ntop(
- af, src, dest, static_cast<int>(length)), ec);
- if (result == 0 && !ec)
- ec = asio::error::invalid_argument;
- if (result != 0 && af == ASIO_OS_DEF(AF_INET6) && scope_id != 0)
- {
- using namespace std; // For strcat and sprintf.
- char if_name[IF_NAMESIZE + 1] = "%";
- const in6_addr_type* ipv6_address = static_cast<const in6_addr_type*>(src);
- bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe)
- && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80));
- bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff)
- && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02));
- if ((!is_link_local && !is_multicast_link_local)
- || if_indextoname(static_cast<unsigned>(scope_id), if_name + 1) == 0)
- sprintf(if_name + 1, "%lu", scope_id);
- strcat(dest, if_name);
- }
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-int inet_pton(int af, const char* src, void* dest,
- unsigned long* scope_id, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS_RUNTIME)
- using namespace std; // For sscanf.
- unsigned char* bytes = static_cast<unsigned char*>(dest);
- if (af == ASIO_OS_DEF(AF_INET))
- {
- unsigned int b0, b1, b2, b3;
- if (sscanf_s(src, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) != 4)
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
- if (b0 > 255 || b1 > 255 || b2 > 255 || b3 > 255)
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
- bytes[0] = static_cast<unsigned char>(b0);
- bytes[1] = static_cast<unsigned char>(b1);
- bytes[2] = static_cast<unsigned char>(b2);
- bytes[3] = static_cast<unsigned char>(b3);
- ec = asio::error_code();
- return 1;
- }
- else if (af == ASIO_OS_DEF(AF_INET6))
- {
- unsigned char* bytes = static_cast<unsigned char*>(dest);
- std::memset(bytes, 0, 16);
- unsigned char back_bytes[16] = { 0 };
- int num_front_bytes = 0, num_back_bytes = 0;
- const char* p = src;
-
- enum { fword, fcolon, bword, scope, done } state = fword;
- unsigned long current_word = 0;
- while (state != done)
- {
- if (current_word > 0xFFFF)
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
-
- switch (state)
- {
- case fword:
- if (*p >= '0' && *p <= '9')
- current_word = current_word * 16 + *p++ - '0';
- else if (*p >= 'a' && *p <= 'f')
- current_word = current_word * 16 + *p++ - 'a' + 10;
- else if (*p >= 'A' && *p <= 'F')
- current_word = current_word * 16 + *p++ - 'A' + 10;
- else
- {
- if (num_front_bytes == 16)
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
-
- bytes[num_front_bytes++] = (current_word >> 8) & 0xFF;
- bytes[num_front_bytes++] = current_word & 0xFF;
- current_word = 0;
-
- if (*p == ':')
- state = fcolon, ++p;
- else if (*p == '%')
- state = scope, ++p;
- else if (*p == 0)
- state = done;
- else
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
- }
- break;
-
- case fcolon:
- if (*p == ':')
- state = bword, ++p;
- else
- state = fword;
- break;
-
- case bword:
- if (*p >= '0' && *p <= '9')
- current_word = current_word * 16 + *p++ - '0';
- else if (*p >= 'a' && *p <= 'f')
- current_word = current_word * 16 + *p++ - 'a' + 10;
- else if (*p >= 'A' && *p <= 'F')
- current_word = current_word * 16 + *p++ - 'A' + 10;
- else
- {
- if (num_front_bytes + num_back_bytes == 16)
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
-
- back_bytes[num_back_bytes++] = (current_word >> 8) & 0xFF;
- back_bytes[num_back_bytes++] = current_word & 0xFF;
- current_word = 0;
-
- if (*p == ':')
- state = bword, ++p;
- else if (*p == '%')
- state = scope, ++p;
- else if (*p == 0)
- state = done;
- else
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
- }
- break;
-
- case scope:
- if (*p >= '0' && *p <= '9')
- current_word = current_word * 10 + *p++ - '0';
- else if (*p == 0)
- *scope_id = current_word, state = done;
- else
- {
- ec = asio::error::invalid_argument;
- return -1;
- }
- break;
-
- default:
- break;
- }
- }
-
- for (int i = 0; i < num_back_bytes; ++i)
- bytes[16 - num_back_bytes + i] = back_bytes[i];
-
- ec = asio::error_code();
- return 1;
- }
- else
- {
- ec = asio::error::address_family_not_supported;
- return -1;
- }
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- using namespace std; // For memcpy and strcmp.
-
- if (af != ASIO_OS_DEF(AF_INET) && af != ASIO_OS_DEF(AF_INET6))
- {
- ec = asio::error::address_family_not_supported;
- return -1;
- }
-
- union
- {
- socket_addr_type base;
- sockaddr_storage_type storage;
- sockaddr_in4_type v4;
- sockaddr_in6_type v6;
- } address;
- int address_length = sizeof(sockaddr_storage_type);
-#if defined(BOOST_NO_ANSI_APIS)
- int num_wide_chars = strlen(src) + 1;
- LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR));
- ::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars);
- int result = error_wrapper(::WSAStringToAddressW(
- wide_buffer, af, 0, &address.base, &address_length), ec);
-#else
- int result = error_wrapper(::WSAStringToAddressA(
- const_cast<char*>(src), af, 0, &address.base, &address_length), ec);
-#endif
-
- if (af == ASIO_OS_DEF(AF_INET))
- {
- if (result != socket_error_retval)
- {
- memcpy(dest, &address.v4.sin_addr, sizeof(in4_addr_type));
- ec = asio::error_code();
- }
- else if (strcmp(src, "255.255.255.255") == 0)
- {
- static_cast<in4_addr_type*>(dest)->s_addr = INADDR_NONE;
- ec = asio::error_code();
- }
- }
- else // AF_INET6
- {
- if (result != socket_error_retval)
- {
- memcpy(dest, &address.v6.sin6_addr, sizeof(in6_addr_type));
- if (scope_id)
- *scope_id = address.v6.sin6_scope_id;
- ec = asio::error_code();
- }
- }
-
- // Windows may not set an error code on failure.
- if (result == socket_error_retval && !ec)
- ec = asio::error::invalid_argument;
-
- if (result != socket_error_retval)
- ec = asio::error_code();
-
- return result == socket_error_retval ? -1 : 1;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- int result = error_wrapper(::inet_pton(af, src, dest), ec);
- if (result <= 0 && !ec)
- ec = asio::error::invalid_argument;
- if (result > 0 && af == ASIO_OS_DEF(AF_INET6) && scope_id)
- {
- using namespace std; // For strchr and atoi.
- *scope_id = 0;
- if (const char* if_name = strchr(src, '%'))
- {
- in6_addr_type* ipv6_address = static_cast<in6_addr_type*>(dest);
- bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe)
- && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80));
- bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff)
- && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02));
- if (is_link_local || is_multicast_link_local)
- *scope_id = if_nametoindex(if_name + 1);
- if (*scope_id == 0)
- *scope_id = atoi(if_name + 1);
- }
- }
- return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-int gethostname(char* name, int namelen, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS_RUNTIME)
- try
- {
- using namespace Windows::Foundation::Collections;
- using namespace Windows::Networking;
- using namespace Windows::Networking::Connectivity;
- IVectorView<HostName^>^ hostnames = NetworkInformation::GetHostNames();
- for (unsigned i = 0; i < hostnames->Size; ++i)
- {
- HostName^ hostname = hostnames->GetAt(i);
- if (hostname->Type == HostNameType::DomainName)
- {
- std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
- std::string raw_name = converter.to_bytes(hostname->RawName->Data());
- if (namelen > 0 && raw_name.size() < static_cast<std::size_t>(namelen))
- {
- strcpy_s(name, namelen, raw_name.c_str());
- return 0;
- }
- }
- }
- return -1;
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- return -1;
- }
-#else // defined(ASIO_WINDOWS_RUNTIME)
- int result = error_wrapper(::gethostname(name, namelen), ec);
-# if defined(ASIO_WINDOWS)
- if (result == 0)
- ec = asio::error_code();
-# endif // defined(ASIO_WINDOWS)
- return result;
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-}
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) \
- || defined(__MACH__) && defined(__APPLE__)
-
-// The following functions are only needed for emulation of getaddrinfo and
-// getnameinfo.
-
-inline asio::error_code translate_netdb_error(int error)
-{
- switch (error)
- {
- case 0:
- return asio::error_code();
- case HOST_NOT_FOUND:
- return asio::error::host_not_found;
- case TRY_AGAIN:
- return asio::error::host_not_found_try_again;
- case NO_RECOVERY:
- return asio::error::no_recovery;
- case NO_DATA:
- return asio::error::no_data;
- default:
- ASIO_ASSERT(false);
- return asio::error::invalid_argument;
- }
-}
-
-inline hostent* gethostbyaddr(const char* addr, int length, int af,
- hostent* result, char* buffer, int buflength, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- (void)(buffer);
- (void)(buflength);
- hostent* retval = error_wrapper(::gethostbyaddr(addr, length, af), ec);
- if (!retval)
- return 0;
- ec = asio::error_code();
- *result = *retval;
- return retval;
-#elif defined(__sun) || defined(__QNX__)
- int error = 0;
- hostent* retval = error_wrapper(::gethostbyaddr_r(addr, length, af, result,
- buffer, buflength, &error), ec);
- if (error)
- ec = translate_netdb_error(error);
- return retval;
-#elif defined(__MACH__) && defined(__APPLE__)
- (void)(buffer);
- (void)(buflength);
- int error = 0;
- hostent* retval = error_wrapper(::getipnodebyaddr(
- addr, length, af, &error), ec);
- if (error)
- ec = translate_netdb_error(error);
- if (!retval)
- return 0;
- *result = *retval;
- return retval;
-#else
- hostent* retval = 0;
- int error = 0;
- error_wrapper(::gethostbyaddr_r(addr, length, af, result, buffer,
- buflength, &retval, &error), ec);
- if (error)
- ec = translate_netdb_error(error);
- return retval;
-#endif
-}
-
-inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
- char* buffer, int buflength, int ai_flags, asio::error_code& ec)
-{
- clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- (void)(buffer);
- (void)(buflength);
- (void)(ai_flags);
- if (af != ASIO_OS_DEF(AF_INET))
- {
- ec = asio::error::address_family_not_supported;
- return 0;
- }
- hostent* retval = error_wrapper(::gethostbyname(name), ec);
- if (!retval)
- return 0;
- ec = asio::error_code();
- *result = *retval;
- return result;
-#elif defined(__sun) || defined(__QNX__)
- (void)(ai_flags);
- if (af != ASIO_OS_DEF(AF_INET))
- {
- ec = asio::error::address_family_not_supported;
- return 0;
- }
- int error = 0;
- hostent* retval = error_wrapper(::gethostbyname_r(name, result, buffer,
- buflength, &error), ec);
- if (error)
- ec = translate_netdb_error(error);
- return retval;
-#elif defined(__MACH__) && defined(__APPLE__)
- (void)(buffer);
- (void)(buflength);
- int error = 0;
- hostent* retval = error_wrapper(::getipnodebyname(
- name, af, ai_flags, &error), ec);
- if (error)
- ec = translate_netdb_error(error);
- if (!retval)
- return 0;
- *result = *retval;
- return retval;
-#else
- (void)(ai_flags);
- if (af != ASIO_OS_DEF(AF_INET))
- {
- ec = asio::error::address_family_not_supported;
- return 0;
- }
- hostent* retval = 0;
- int error = 0;
- error_wrapper(::gethostbyname_r(name, result,
- buffer, buflength, &retval, &error), ec);
- if (error)
- ec = translate_netdb_error(error);
- return retval;
-#endif
-}
-
-inline void freehostent(hostent* h)
-{
-#if defined(__MACH__) && defined(__APPLE__)
- if (h)
- ::freehostent(h);
-#else
- (void)(h);
-#endif
-}
-
-// Emulation of getaddrinfo based on implementation in:
-// Stevens, W. R., UNIX Network Programming Vol. 1, 2nd Ed., Prentice-Hall 1998.
-
-struct gai_search
-{
- const char* host;
- int family;
-};
-
-inline int gai_nsearch(const char* host,
- const addrinfo_type* hints, gai_search (&search)[2])
-{
- int search_count = 0;
- if (host == 0 || host[0] == '\0')
- {
- if (hints->ai_flags & AI_PASSIVE)
- {
- // No host and AI_PASSIVE implies wildcard bind.
- switch (hints->ai_family)
- {
- case ASIO_OS_DEF(AF_INET):
- search[search_count].host = "0.0.0.0";
- search[search_count].family = ASIO_OS_DEF(AF_INET);
- ++search_count;
- break;
- case ASIO_OS_DEF(AF_INET6):
- search[search_count].host = "0::0";
- search[search_count].family = ASIO_OS_DEF(AF_INET6);
- ++search_count;
- break;
- case ASIO_OS_DEF(AF_UNSPEC):
- search[search_count].host = "0::0";
- search[search_count].family = ASIO_OS_DEF(AF_INET6);
- ++search_count;
- search[search_count].host = "0.0.0.0";
- search[search_count].family = ASIO_OS_DEF(AF_INET);
- ++search_count;
- break;
- default:
- break;
- }
- }
- else
- {
- // No host and not AI_PASSIVE means connect to local host.
- switch (hints->ai_family)
- {
- case ASIO_OS_DEF(AF_INET):
- search[search_count].host = "localhost";
- search[search_count].family = ASIO_OS_DEF(AF_INET);
- ++search_count;
- break;
- case ASIO_OS_DEF(AF_INET6):
- search[search_count].host = "localhost";
- search[search_count].family = ASIO_OS_DEF(AF_INET6);
- ++search_count;
- break;
- case ASIO_OS_DEF(AF_UNSPEC):
- search[search_count].host = "localhost";
- search[search_count].family = ASIO_OS_DEF(AF_INET6);
- ++search_count;
- search[search_count].host = "localhost";
- search[search_count].family = ASIO_OS_DEF(AF_INET);
- ++search_count;
- break;
- default:
- break;
- }
- }
- }
- else
- {
- // Host is specified.
- switch (hints->ai_family)
- {
- case ASIO_OS_DEF(AF_INET):
- search[search_count].host = host;
- search[search_count].family = ASIO_OS_DEF(AF_INET);
- ++search_count;
- break;
- case ASIO_OS_DEF(AF_INET6):
- search[search_count].host = host;
- search[search_count].family = ASIO_OS_DEF(AF_INET6);
- ++search_count;
- break;
- case ASIO_OS_DEF(AF_UNSPEC):
- search[search_count].host = host;
- search[search_count].family = ASIO_OS_DEF(AF_INET6);
- ++search_count;
- search[search_count].host = host;
- search[search_count].family = ASIO_OS_DEF(AF_INET);
- ++search_count;
- break;
- default:
- break;
- }
- }
- return search_count;
-}
-
-template <typename T>
-inline T* gai_alloc(std::size_t size = sizeof(T))
-{
- using namespace std;
- T* p = static_cast<T*>(::operator new(size, std::nothrow));
- if (p)
- memset(p, 0, size);
- return p;
-}
-
-inline void gai_free(void* p)
-{
- ::operator delete(p);
-}
-
-inline void gai_strcpy(char* target, const char* source, std::size_t max_size)
-{
- using namespace std;
-#if defined(ASIO_HAS_SECURE_RTL)
- strcpy_s(target, max_size, source);
-#else // defined(ASIO_HAS_SECURE_RTL)
- *target = 0;
- strncat(target, source, max_size);
-#endif // defined(ASIO_HAS_SECURE_RTL)
-}
-
-enum { gai_clone_flag = 1 << 30 };
-
-inline int gai_aistruct(addrinfo_type*** next, const addrinfo_type* hints,
- const void* addr, int family)
-{
- using namespace std;
-
- addrinfo_type* ai = gai_alloc<addrinfo_type>();
- if (ai == 0)
- return EAI_MEMORY;
-
- ai->ai_next = 0;
- **next = ai;
- *next = &ai->ai_next;
-
- ai->ai_canonname = 0;
- ai->ai_socktype = hints->ai_socktype;
- if (ai->ai_socktype == 0)
- ai->ai_flags |= gai_clone_flag;
- ai->ai_protocol = hints->ai_protocol;
- ai->ai_family = family;
-
- switch (ai->ai_family)
- {
- case ASIO_OS_DEF(AF_INET):
- {
- sockaddr_in4_type* sinptr = gai_alloc<sockaddr_in4_type>();
- if (sinptr == 0)
- return EAI_MEMORY;
- sinptr->sin_family = ASIO_OS_DEF(AF_INET);
- memcpy(&sinptr->sin_addr, addr, sizeof(in4_addr_type));
- ai->ai_addr = reinterpret_cast<sockaddr*>(sinptr);
- ai->ai_addrlen = sizeof(sockaddr_in4_type);
- break;
- }
- case ASIO_OS_DEF(AF_INET6):
- {
- sockaddr_in6_type* sin6ptr = gai_alloc<sockaddr_in6_type>();
- if (sin6ptr == 0)
- return EAI_MEMORY;
- sin6ptr->sin6_family = ASIO_OS_DEF(AF_INET6);
- memcpy(&sin6ptr->sin6_addr, addr, sizeof(in6_addr_type));
- ai->ai_addr = reinterpret_cast<sockaddr*>(sin6ptr);
- ai->ai_addrlen = sizeof(sockaddr_in6_type);
- break;
- }
- default:
- break;
- }
-
- return 0;
-}
-
-inline addrinfo_type* gai_clone(addrinfo_type* ai)
-{
- using namespace std;
-
- addrinfo_type* new_ai = gai_alloc<addrinfo_type>();
- if (new_ai == 0)
- return new_ai;
-
- new_ai->ai_next = ai->ai_next;
- ai->ai_next = new_ai;
-
- new_ai->ai_flags = 0;
- new_ai->ai_family = ai->ai_family;
- new_ai->ai_socktype = ai->ai_socktype;
- new_ai->ai_protocol = ai->ai_protocol;
- new_ai->ai_canonname = 0;
- new_ai->ai_addrlen = ai->ai_addrlen;
- new_ai->ai_addr = gai_alloc<sockaddr>(ai->ai_addrlen);
- memcpy(new_ai->ai_addr, ai->ai_addr, ai->ai_addrlen);
-
- return new_ai;
-}
-
-inline int gai_port(addrinfo_type* aihead, int port, int socktype)
-{
- int num_found = 0;
-
- for (addrinfo_type* ai = aihead; ai; ai = ai->ai_next)
- {
- if (ai->ai_flags & gai_clone_flag)
- {
- if (ai->ai_socktype != 0)
- {
- ai = gai_clone(ai);
- if (ai == 0)
- return -1;
- // ai now points to newly cloned entry.
- }
- }
- else if (ai->ai_socktype != socktype)
- {
- // Ignore if mismatch on socket type.
- continue;
- }
-
- ai->ai_socktype = socktype;
-
- switch (ai->ai_family)
- {
- case ASIO_OS_DEF(AF_INET):
- {
- sockaddr_in4_type* sinptr =
- reinterpret_cast<sockaddr_in4_type*>(ai->ai_addr);
- sinptr->sin_port = port;
- ++num_found;
- break;
- }
- case ASIO_OS_DEF(AF_INET6):
- {
- sockaddr_in6_type* sin6ptr =
- reinterpret_cast<sockaddr_in6_type*>(ai->ai_addr);
- sin6ptr->sin6_port = port;
- ++num_found;
- break;
- }
- default:
- break;
- }
- }
-
- return num_found;
-}
-
-inline int gai_serv(addrinfo_type* aihead,
- const addrinfo_type* hints, const char* serv)
-{
- using namespace std;
-
- int num_found = 0;
-
- if (
-#if defined(AI_NUMERICSERV)
- (hints->ai_flags & AI_NUMERICSERV) ||
-#endif
- isdigit(static_cast<unsigned char>(serv[0])))
- {
- int port = htons(atoi(serv));
- if (hints->ai_socktype)
- {
- // Caller specifies socket type.
- int rc = gai_port(aihead, port, hints->ai_socktype);
- if (rc < 0)
- return EAI_MEMORY;
- num_found += rc;
- }
- else
- {
- // Caller does not specify socket type.
- int rc = gai_port(aihead, port, SOCK_STREAM);
- if (rc < 0)
- return EAI_MEMORY;
- num_found += rc;
- rc = gai_port(aihead, port, SOCK_DGRAM);
- if (rc < 0)
- return EAI_MEMORY;
- num_found += rc;
- }
- }
- else
- {
- // Try service name with TCP first, then UDP.
- if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_STREAM)
- {
- servent* sptr = getservbyname(serv, "tcp");
- if (sptr != 0)
- {
- int rc = gai_port(aihead, sptr->s_port, SOCK_STREAM);
- if (rc < 0)
- return EAI_MEMORY;
- num_found += rc;
- }
- }
- if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_DGRAM)
- {
- servent* sptr = getservbyname(serv, "udp");
- if (sptr != 0)
- {
- int rc = gai_port(aihead, sptr->s_port, SOCK_DGRAM);
- if (rc < 0)
- return EAI_MEMORY;
- num_found += rc;
- }
- }
- }
-
- if (num_found == 0)
- {
- if (hints->ai_socktype == 0)
- {
- // All calls to getservbyname() failed.
- return EAI_NONAME;
- }
- else
- {
- // Service not supported for socket type.
- return EAI_SERVICE;
- }
- }
-
- return 0;
-}
-
-inline int gai_echeck(const char* host, const char* service,
- int flags, int family, int socktype, int protocol)
-{
- (void)(flags);
- (void)(protocol);
-
- // Host or service must be specified.
- if (host == 0 || host[0] == '\0')
- if (service == 0 || service[0] == '\0')
- return EAI_NONAME;
-
- // Check combination of family and socket type.
- switch (family)
- {
- case ASIO_OS_DEF(AF_UNSPEC):
- break;
- case ASIO_OS_DEF(AF_INET):
- case ASIO_OS_DEF(AF_INET6):
- if (service != 0 && service[0] != '\0')
- if (socktype != 0 && socktype != SOCK_STREAM && socktype != SOCK_DGRAM)
- return EAI_SOCKTYPE;
- break;
- default:
- return EAI_FAMILY;
- }
-
- return 0;
-}
-
-inline void freeaddrinfo_emulation(addrinfo_type* aihead)
-{
- addrinfo_type* ai = aihead;
- while (ai)
- {
- gai_free(ai->ai_addr);
- gai_free(ai->ai_canonname);
- addrinfo_type* ainext = ai->ai_next;
- gai_free(ai);
- ai = ainext;
- }
-}
-
-inline int getaddrinfo_emulation(const char* host, const char* service,
- const addrinfo_type* hintsp, addrinfo_type** result)
-{
- // Set up linked list of addrinfo structures.
- addrinfo_type* aihead = 0;
- addrinfo_type** ainext = &aihead;
- char* canon = 0;
-
- // Supply default hints if not specified by caller.
- addrinfo_type hints = addrinfo_type();
- hints.ai_family = ASIO_OS_DEF(AF_UNSPEC);
- if (hintsp)
- hints = *hintsp;
-
- // If the resolution is not specifically for AF_INET6, remove the AI_V4MAPPED
- // and AI_ALL flags.
-#if defined(AI_V4MAPPED)
- if (hints.ai_family != ASIO_OS_DEF(AF_INET6))
- hints.ai_flags &= ~AI_V4MAPPED;
-#endif
-#if defined(AI_ALL)
- if (hints.ai_family != ASIO_OS_DEF(AF_INET6))
- hints.ai_flags &= ~AI_ALL;
-#endif
-
- // Basic error checking.
- int rc = gai_echeck(host, service, hints.ai_flags, hints.ai_family,
- hints.ai_socktype, hints.ai_protocol);
- if (rc != 0)
- {
- freeaddrinfo_emulation(aihead);
- return rc;
- }
-
- gai_search search[2];
- int search_count = gai_nsearch(host, &hints, search);
- for (gai_search* sptr = search; sptr < search + search_count; ++sptr)
- {
- // Check for IPv4 dotted decimal string.
- in4_addr_type inaddr;
- asio::error_code ec;
- if (socket_ops::inet_pton(ASIO_OS_DEF(AF_INET),
- sptr->host, &inaddr, 0, ec) == 1)
- {
- if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC)
- && hints.ai_family != ASIO_OS_DEF(AF_INET))
- {
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- return EAI_FAMILY;
- }
- if (sptr->family == ASIO_OS_DEF(AF_INET))
- {
- rc = gai_aistruct(&ainext, &hints, &inaddr, ASIO_OS_DEF(AF_INET));
- if (rc != 0)
- {
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- return rc;
- }
- }
- continue;
- }
-
- // Check for IPv6 hex string.
- in6_addr_type in6addr;
- if (socket_ops::inet_pton(ASIO_OS_DEF(AF_INET6),
- sptr->host, &in6addr, 0, ec) == 1)
- {
- if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC)
- && hints.ai_family != ASIO_OS_DEF(AF_INET6))
- {
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- return EAI_FAMILY;
- }
- if (sptr->family == ASIO_OS_DEF(AF_INET6))
- {
- rc = gai_aistruct(&ainext, &hints, &in6addr,
- ASIO_OS_DEF(AF_INET6));
- if (rc != 0)
- {
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- return rc;
- }
- }
- continue;
- }
-
- // Look up hostname.
- hostent hent;
- char hbuf[8192] = "";
- hostent* hptr = socket_ops::gethostbyname(sptr->host,
- sptr->family, &hent, hbuf, sizeof(hbuf), hints.ai_flags, ec);
- if (hptr == 0)
- {
- if (search_count == 2)
- {
- // Failure is OK if there are multiple searches.
- continue;
- }
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- if (ec == asio::error::host_not_found)
- return EAI_NONAME;
- if (ec == asio::error::host_not_found_try_again)
- return EAI_AGAIN;
- if (ec == asio::error::no_recovery)
- return EAI_FAIL;
- if (ec == asio::error::no_data)
- return EAI_NONAME;
- return EAI_NONAME;
- }
-
- // Check for address family mismatch if one was specified.
- if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC)
- && hints.ai_family != hptr->h_addrtype)
- {
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- socket_ops::freehostent(hptr);
- return EAI_FAMILY;
- }
-
- // Save canonical name first time.
- if (host != 0 && host[0] != '\0' && hptr->h_name && hptr->h_name[0]
- && (hints.ai_flags & AI_CANONNAME) && canon == 0)
- {
- std::size_t canon_len = strlen(hptr->h_name) + 1;
- canon = gai_alloc<char>(canon_len);
- if (canon == 0)
- {
- freeaddrinfo_emulation(aihead);
- socket_ops::freehostent(hptr);
- return EAI_MEMORY;
- }
- gai_strcpy(canon, hptr->h_name, canon_len);
- }
-
- // Create an addrinfo structure for each returned address.
- for (char** ap = hptr->h_addr_list; *ap; ++ap)
- {
- rc = gai_aistruct(&ainext, &hints, *ap, hptr->h_addrtype);
- if (rc != 0)
- {
- freeaddrinfo_emulation(aihead);
- gai_free(canon);
- socket_ops::freehostent(hptr);
- return EAI_FAMILY;
- }
- }
-
- socket_ops::freehostent(hptr);
- }
-
- // Check if we found anything.
- if (aihead == 0)
- {
- gai_free(canon);
- return EAI_NONAME;
- }
-
- // Return canonical name in first entry.
- if (host != 0 && host[0] != '\0' && (hints.ai_flags & AI_CANONNAME))
- {
- if (canon)
- {
- aihead->ai_canonname = canon;
- canon = 0;
- }
- else
- {
- std::size_t canonname_len = strlen(search[0].host) + 1;
- aihead->ai_canonname = gai_alloc<char>(canonname_len);
- if (aihead->ai_canonname == 0)
- {
- freeaddrinfo_emulation(aihead);
- return EAI_MEMORY;
- }
- gai_strcpy(aihead->ai_canonname, search[0].host, canonname_len);
- }
- }
- gai_free(canon);
-
- // Process the service name.
- if (service != 0 && service[0] != '\0')
- {
- rc = gai_serv(aihead, &hints, service);
- if (rc != 0)
- {
- freeaddrinfo_emulation(aihead);
- return rc;
- }
- }
-
- // Return result to caller.
- *result = aihead;
- return 0;
-}
-
-inline asio::error_code getnameinfo_emulation(
- const socket_addr_type* sa, std::size_t salen, char* host,
- std::size_t hostlen, char* serv, std::size_t servlen, int flags,
- asio::error_code& ec)
-{
- using namespace std;
-
- const char* addr;
- size_t addr_len;
- unsigned short port;
- switch (sa->sa_family)
- {
- case ASIO_OS_DEF(AF_INET):
- if (salen != sizeof(sockaddr_in4_type))
- {
- return ec = asio::error::invalid_argument;
- }
- addr = reinterpret_cast<const char*>(
- &reinterpret_cast<const sockaddr_in4_type*>(sa)->sin_addr);
- addr_len = sizeof(in4_addr_type);
- port = reinterpret_cast<const sockaddr_in4_type*>(sa)->sin_port;
- break;
- case ASIO_OS_DEF(AF_INET6):
- if (salen != sizeof(sockaddr_in6_type))
- {
- return ec = asio::error::invalid_argument;
- }
- addr = reinterpret_cast<const char*>(
- &reinterpret_cast<const sockaddr_in6_type*>(sa)->sin6_addr);
- addr_len = sizeof(in6_addr_type);
- port = reinterpret_cast<const sockaddr_in6_type*>(sa)->sin6_port;
- break;
- default:
- return ec = asio::error::address_family_not_supported;
- }
-
- if (host && hostlen > 0)
- {
- if (flags & NI_NUMERICHOST)
- {
- if (socket_ops::inet_ntop(sa->sa_family, addr, host, hostlen, 0, ec) == 0)
- {
- return ec;
- }
- }
- else
- {
- hostent hent;
- char hbuf[8192] = "";
- hostent* hptr = socket_ops::gethostbyaddr(addr,
- static_cast<int>(addr_len), sa->sa_family,
- &hent, hbuf, sizeof(hbuf), ec);
- if (hptr && hptr->h_name && hptr->h_name[0] != '\0')
- {
- if (flags & NI_NOFQDN)
- {
- char* dot = strchr(hptr->h_name, '.');
- if (dot)
- {
- *dot = 0;
- }
- }
- gai_strcpy(host, hptr->h_name, hostlen);
- socket_ops::freehostent(hptr);
- }
- else
- {
- socket_ops::freehostent(hptr);
- if (flags & NI_NAMEREQD)
- {
- return ec = asio::error::host_not_found;
- }
- if (socket_ops::inet_ntop(sa->sa_family,
- addr, host, hostlen, 0, ec) == 0)
- {
- return ec;
- }
- }
- }
- }
-
- if (serv && servlen > 0)
- {
- if (flags & NI_NUMERICSERV)
- {
- if (servlen < 6)
- {
- return ec = asio::error::no_buffer_space;
- }
-#if defined(ASIO_HAS_SECURE_RTL)
- sprintf_s(serv, servlen, "%u", ntohs(port));
-#else // defined(ASIO_HAS_SECURE_RTL)
- sprintf(serv, "%u", ntohs(port));
-#endif // defined(ASIO_HAS_SECURE_RTL)
- }
- else
- {
-#if defined(ASIO_HAS_PTHREADS)
- static ::pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- ::pthread_mutex_lock(&mutex);
-#endif // defined(ASIO_HAS_PTHREADS)
- servent* sptr = ::getservbyport(port, (flags & NI_DGRAM) ? "udp" : 0);
- if (sptr && sptr->s_name && sptr->s_name[0] != '\0'
<TRUNCATED>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[14/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_write_stream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_write_stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_write_stream.hpp
deleted file mode 100644
index 1e51c11..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_write_stream.hpp
+++ /dev/null
@@ -1,338 +0,0 @@
-//
-// impl/buffered_write_stream.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_IMPL_BUFFERED_WRITE_STREAM_HPP
-#define ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename Stream>
-std::size_t buffered_write_stream<Stream>::flush()
-{
- std::size_t bytes_written = write(next_layer_,
- buffer(storage_.data(), storage_.size()));
- storage_.consume(bytes_written);
- return bytes_written;
-}
-
-template <typename Stream>
-std::size_t buffered_write_stream<Stream>::flush(asio::error_code& ec)
-{
- std::size_t bytes_written = write(next_layer_,
- buffer(storage_.data(), storage_.size()),
- transfer_all(), ec);
- storage_.consume(bytes_written);
- return bytes_written;
-}
-
-namespace detail
-{
- template <typename WriteHandler>
- class buffered_flush_handler
- {
- public:
- buffered_flush_handler(detail::buffered_stream_storage& storage,
- WriteHandler& handler)
- : storage_(storage),
- handler_(handler)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- buffered_flush_handler(const buffered_flush_handler& other)
- : storage_(other.storage_),
- handler_(other.handler_)
- {
- }
-
- buffered_flush_handler(buffered_flush_handler&& other)
- : storage_(other.storage_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- const std::size_t bytes_written)
- {
- storage_.consume(bytes_written);
- handler_(ec, bytes_written);
- }
-
- //private:
- detail::buffered_stream_storage& storage_;
- WriteHandler handler_;
- };
-
- template <typename WriteHandler>
- inline void* asio_handler_allocate(std::size_t size,
- buffered_flush_handler<WriteHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename WriteHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- buffered_flush_handler<WriteHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename WriteHandler>
- inline bool asio_handler_is_continuation(
- buffered_flush_handler<WriteHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename WriteHandler>
- inline void asio_handler_invoke(Function& function,
- buffered_flush_handler<WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename WriteHandler>
- inline void asio_handler_invoke(const Function& function,
- buffered_flush_handler<WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-}
-
-template <typename Stream>
-template <typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-buffered_write_stream<Stream>::async_flush(
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- async_write(next_layer_, buffer(storage_.data(), storage_.size()),
- detail::buffered_flush_handler<ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- storage_, init.handler));
-
- return init.result.get();
-}
-
-template <typename Stream>
-template <typename ConstBufferSequence>
-std::size_t buffered_write_stream<Stream>::write_some(
- const ConstBufferSequence& buffers)
-{
- if (asio::buffer_size(buffers) == 0)
- return 0;
-
- if (storage_.size() == storage_.capacity())
- this->flush();
-
- return this->copy(buffers);
-}
-
-template <typename Stream>
-template <typename ConstBufferSequence>
-std::size_t buffered_write_stream<Stream>::write_some(
- const ConstBufferSequence& buffers, asio::error_code& ec)
-{
- ec = asio::error_code();
-
- if (asio::buffer_size(buffers) == 0)
- return 0;
-
- if (storage_.size() == storage_.capacity() && !flush(ec))
- return 0;
-
- return this->copy(buffers);
-}
-
-namespace detail
-{
- template <typename ConstBufferSequence, typename WriteHandler>
- class buffered_write_some_handler
- {
- public:
- buffered_write_some_handler(detail::buffered_stream_storage& storage,
- const ConstBufferSequence& buffers, WriteHandler& handler)
- : storage_(storage),
- buffers_(buffers),
- handler_(handler)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- buffered_write_some_handler(const buffered_write_some_handler& other)
- : storage_(other.storage_),
- buffers_(other.buffers_),
- handler_(other.handler_)
- {
- }
-
- buffered_write_some_handler(buffered_write_some_handler&& other)
- : storage_(other.storage_),
- buffers_(other.buffers_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec, std::size_t)
- {
- if (ec)
- {
- const std::size_t length = 0;
- handler_(ec, length);
- }
- else
- {
- std::size_t orig_size = storage_.size();
- std::size_t space_avail = storage_.capacity() - orig_size;
- std::size_t bytes_avail = asio::buffer_size(buffers_);
- std::size_t length = bytes_avail < space_avail
- ? bytes_avail : space_avail;
- storage_.resize(orig_size + length);
- const std::size_t bytes_copied = asio::buffer_copy(
- storage_.data() + orig_size, buffers_, length);
- handler_(ec, bytes_copied);
- }
- }
-
- //private:
- detail::buffered_stream_storage& storage_;
- ConstBufferSequence buffers_;
- WriteHandler handler_;
- };
-
- template <typename ConstBufferSequence, typename WriteHandler>
- inline void* asio_handler_allocate(std::size_t size,
- buffered_write_some_handler<
- ConstBufferSequence, WriteHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename ConstBufferSequence, typename WriteHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- buffered_write_some_handler<
- ConstBufferSequence, WriteHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename ConstBufferSequence, typename WriteHandler>
- inline bool asio_handler_is_continuation(
- buffered_write_some_handler<
- ConstBufferSequence, WriteHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename ConstBufferSequence,
- typename WriteHandler>
- inline void asio_handler_invoke(Function& function,
- buffered_write_some_handler<
- ConstBufferSequence, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename ConstBufferSequence,
- typename WriteHandler>
- inline void asio_handler_invoke(const Function& function,
- buffered_write_some_handler<
- ConstBufferSequence, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename Stream>
-template <typename ConstBufferSequence, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-buffered_write_stream<Stream>::async_write_some(
- const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- if (asio::buffer_size(buffers) == 0
- || storage_.size() < storage_.capacity())
- {
- next_layer_.async_write_some(asio::const_buffers_1(0, 0),
- detail::buffered_write_some_handler<
- ConstBufferSequence, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- storage_, buffers, init.handler));
- }
- else
- {
- this->async_flush(detail::buffered_write_some_handler<
- ConstBufferSequence, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- storage_, buffers, init.handler));
- }
-
- return init.result.get();
-}
-
-template <typename Stream>
-template <typename ConstBufferSequence>
-std::size_t buffered_write_stream<Stream>::copy(
- const ConstBufferSequence& buffers)
-{
- std::size_t orig_size = storage_.size();
- std::size_t space_avail = storage_.capacity() - orig_size;
- std::size_t bytes_avail = asio::buffer_size(buffers);
- std::size_t length = bytes_avail < space_avail ? bytes_avail : space_avail;
- storage_.resize(orig_size + length);
- return asio::buffer_copy(
- storage_.data() + orig_size, buffers, length);
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/connect.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/connect.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/connect.hpp
deleted file mode 100644
index 523e551..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/connect.hpp
+++ /dev/null
@@ -1,428 +0,0 @@
-//
-// impl/connect.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_IMPL_CONNECT_HPP
-#define ASIO_IMPL_CONNECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail
-{
- struct default_connect_condition
- {
- template <typename Iterator>
- Iterator operator()(const asio::error_code&, Iterator next)
- {
- return next;
- }
- };
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin)
-{
- asio::error_code ec;
- Iterator result = connect(s, begin, ec);
- asio::detail::throw_error(ec, "connect");
- return result;
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-inline Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, asio::error_code& ec)
-{
- return connect(s, begin, Iterator(), detail::default_connect_condition(), ec);
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end)
-{
- asio::error_code ec;
- Iterator result = connect(s, begin, end, ec);
- asio::detail::throw_error(ec, "connect");
- return result;
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-inline Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, asio::error_code& ec)
-{
- return connect(s, begin, end, detail::default_connect_condition(), ec);
-}
-
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, ConnectCondition connect_condition)
-{
- asio::error_code ec;
- Iterator result = connect(s, begin, connect_condition, ec);
- asio::detail::throw_error(ec, "connect");
- return result;
-}
-
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-inline Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, ConnectCondition connect_condition,
- asio::error_code& ec)
-{
- return connect(s, begin, Iterator(), connect_condition, ec);
-}
-
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, ConnectCondition connect_condition)
-{
- asio::error_code ec;
- Iterator result = connect(s, begin, end, connect_condition, ec);
- asio::detail::throw_error(ec, "connect");
- return result;
-}
-
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, ConnectCondition connect_condition,
- asio::error_code& ec)
-{
- ec = asio::error_code();
-
- for (Iterator iter = begin; iter != end; ++iter)
- {
- iter = connect_condition(ec, iter);
- if (iter != end)
- {
- s.close(ec);
- s.connect(*iter, ec);
- if (!ec)
- return iter;
- }
- }
-
- if (!ec)
- ec = asio::error::not_found;
-
- return end;
-}
-
-namespace detail
-{
- // Enable the empty base class optimisation for the connect condition.
- template <typename ConnectCondition>
- class base_from_connect_condition
- {
- protected:
- explicit base_from_connect_condition(
- const ConnectCondition& connect_condition)
- : connect_condition_(connect_condition)
- {
- }
-
- template <typename Iterator>
- void check_condition(const asio::error_code& ec,
- Iterator& iter, Iterator& end)
- {
- if (iter != end)
- iter = connect_condition_(ec, static_cast<const Iterator&>(iter));
- }
-
- private:
- ConnectCondition connect_condition_;
- };
-
- // The default_connect_condition implementation is essentially a no-op. This
- // template specialisation lets us eliminate all costs associated with it.
- template <>
- class base_from_connect_condition<default_connect_condition>
- {
- protected:
- explicit base_from_connect_condition(const default_connect_condition&)
- {
- }
-
- template <typename Iterator>
- void check_condition(const asio::error_code&, Iterator&, Iterator&)
- {
- }
- };
-
- template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
- class connect_op : base_from_connect_condition<ConnectCondition>
- {
- public:
- connect_op(basic_socket<Protocol, SocketService>& sock,
- const Iterator& begin, const Iterator& end,
- const ConnectCondition& connect_condition,
- ComposedConnectHandler& handler)
- : base_from_connect_condition<ConnectCondition>(connect_condition),
- socket_(sock),
- iter_(begin),
- end_(end),
- start_(0),
- handler_(ASIO_MOVE_CAST(ComposedConnectHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- connect_op(const connect_op& other)
- : base_from_connect_condition<ConnectCondition>(other),
- socket_(other.socket_),
- iter_(other.iter_),
- end_(other.end_),
- start_(other.start_),
- handler_(other.handler_)
- {
- }
-
- connect_op(connect_op&& other)
- : base_from_connect_condition<ConnectCondition>(other),
- socket_(other.socket_),
- iter_(other.iter_),
- end_(other.end_),
- start_(other.start_),
- handler_(ASIO_MOVE_CAST(ComposedConnectHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(asio::error_code ec, int start = 0)
- {
- switch (start_ = start)
- {
- case 1:
- for (;;)
- {
- this->check_condition(ec, iter_, end_);
-
- if (iter_ != end_)
- {
- socket_.close(ec);
- socket_.async_connect(*iter_,
- ASIO_MOVE_CAST(connect_op)(*this));
- return;
- }
-
- if (start)
- {
- ec = asio::error::not_found;
- socket_.get_io_service().post(detail::bind_handler(*this, ec));
- return;
- }
-
- default:
-
- if (iter_ == end_)
- break;
-
- if (!socket_.is_open())
- {
- ec = asio::error::operation_aborted;
- break;
- }
-
- if (!ec)
- break;
-
- ++iter_;
- }
-
- handler_(static_cast<const asio::error_code&>(ec),
- static_cast<const Iterator&>(iter_));
- }
- }
-
- //private:
- basic_socket<Protocol, SocketService>& socket_;
- Iterator iter_;
- Iterator end_;
- int start_;
- ComposedConnectHandler handler_;
- };
-
- template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
- inline void* asio_handler_allocate(std::size_t size,
- connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ComposedConnectHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ComposedConnectHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
- inline bool asio_handler_is_continuation(
- connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ComposedConnectHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename Protocol,
- typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
- inline void asio_handler_invoke(Function& function,
- connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ComposedConnectHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename Protocol,
- typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
- inline void asio_handler_invoke(const Function& function,
- connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ComposedConnectHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ComposedConnectHandler.
- ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
- ComposedConnectHandler, handler, Iterator) type_check;
-
- detail::async_result_init<ComposedConnectHandler,
- void (asio::error_code, Iterator)> init(
- ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
- detail::connect_op<Protocol, SocketService, Iterator,
- detail::default_connect_condition, ASIO_HANDLER_TYPE(
- ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
- begin, Iterator(), detail::default_connect_condition(), init.handler)(
- asio::error_code(), 1);
-
- return init.result.get();
-}
-
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end,
- ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ComposedConnectHandler.
- ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
- ComposedConnectHandler, handler, Iterator) type_check;
-
- detail::async_result_init<ComposedConnectHandler,
- void (asio::error_code, Iterator)> init(
- ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
- detail::connect_op<Protocol, SocketService, Iterator,
- detail::default_connect_condition, ASIO_HANDLER_TYPE(
- ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
- begin, end, detail::default_connect_condition(), init.handler)(
- asio::error_code(), 1);
-
- return init.result.get();
-}
-
-template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, ConnectCondition connect_condition,
- ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ComposedConnectHandler.
- ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
- ComposedConnectHandler, handler, Iterator) type_check;
-
- detail::async_result_init<ComposedConnectHandler,
- void (asio::error_code, Iterator)> init(
- ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
- detail::connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ASIO_HANDLER_TYPE(
- ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
- begin, Iterator(), connect_condition, init.handler)(
- asio::error_code(), 1);
-
- return init.result.get();
-}
-
-template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, ConnectCondition connect_condition,
- ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ComposedConnectHandler.
- ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
- ComposedConnectHandler, handler, Iterator) type_check;
-
- detail::async_result_init<ComposedConnectHandler,
- void (asio::error_code, Iterator)> init(
- ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
- detail::connect_op<Protocol, SocketService, Iterator,
- ConnectCondition, ASIO_HANDLER_TYPE(
- ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
- begin, end, connect_condition, init.handler)(
- asio::error_code(), 1);
-
- return init.result.get();
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_CONNECT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error.ipp
deleted file mode 100644
index 7c5a414..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error.ipp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// impl/error.ipp
-// ~~~~~~~~~~~~~~
-//
-// 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_IMPL_ERROR_IPP
-#define ASIO_IMPL_ERROR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-namespace detail {
-
-class netdb_category : public asio::error_category
-{
-public:
- const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
- {
- return "asio.netdb";
- }
-
- std::string message(int value) const
- {
- if (value == error::host_not_found)
- return "Host not found (authoritative)";
- if (value == error::host_not_found_try_again)
- return "Host not found (non-authoritative), try again later";
- if (value == error::no_data)
- return "The query is valid, but it does not have associated data";
- if (value == error::no_recovery)
- return "A non-recoverable error occurred during database lookup";
- return "asio.netdb error";
- }
-};
-
-} // namespace detail
-
-const asio::error_category& get_netdb_category()
-{
- static detail::netdb_category instance;
- return instance;
-}
-
-namespace detail {
-
-class addrinfo_category : public asio::error_category
-{
-public:
- const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
- {
- return "asio.addrinfo";
- }
-
- std::string message(int value) const
- {
- if (value == error::service_not_found)
- return "Service not found";
- if (value == error::socket_type_not_supported)
- return "Socket type not supported";
- return "asio.addrinfo error";
- }
-};
-
-} // namespace detail
-
-const asio::error_category& get_addrinfo_category()
-{
- static detail::addrinfo_category instance;
- return instance;
-}
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-namespace detail {
-
-class misc_category : public asio::error_category
-{
-public:
- const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
- {
- return "asio.misc";
- }
-
- std::string message(int value) const
- {
- if (value == error::already_open)
- return "Already open";
- if (value == error::eof)
- return "End of file";
- if (value == error::not_found)
- return "Element not found";
- if (value == error::fd_set_failure)
- return "The descriptor does not fit into the select call's fd_set";
- return "asio.misc error";
- }
-};
-
-} // namespace detail
-
-const asio::error_category& get_misc_category()
-{
- static detail::misc_category instance;
- return instance;
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_ERROR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error_code.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error_code.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error_code.ipp
deleted file mode 100644
index ec0536e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/error_code.ipp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// impl/error_code.ipp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// 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_IMPL_ERROR_CODE_IPP
-#define ASIO_IMPL_ERROR_CODE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# include <winerror.h>
-#elif defined(ASIO_WINDOWS_RUNTIME)
-# include <windows.h>
-#else
-# include <cerrno>
-# include <cstring>
-# include <string>
-#endif
-#include "asio/detail/local_free_on_block_exit.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class system_category : public error_category
-{
-public:
- const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
- {
- return "asio.system";
- }
-
- std::string message(int value) const
- {
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- char* msg = 0;
- DWORD length = ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER
- | FORMAT_MESSAGE_FROM_SYSTEM
- | FORMAT_MESSAGE_IGNORE_INSERTS, 0, value,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (char*)&msg, 0, 0);
- detail::local_free_on_block_exit local_free_obj(msg);
- if (length && msg[length - 1] == '\n')
- msg[--length] = '\0';
- if (length && msg[length - 1] == '\r')
- msg[--length] = '\0';
- if (length)
- return msg;
- else
- return "asio.system error";
-#elif defined(ASIO_WINDOWS_RUNTIME)
- std::wstring wmsg(128, wchar_t());
- for (;;)
- {
- DWORD wlength = ::FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM
- | FORMAT_MESSAGE_IGNORE_INSERTS, 0, value,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &wmsg[0], wmsg.size(), 0);
- if (wlength == 0 && ::GetLastError() == ERROR_INSUFFICIENT_BUFFER)
- {
- wmsg.resize(wmsg.size() + wmsg.size() / 2);
- continue;
- }
- if (wlength && wmsg[wlength - 1] == '\n')
- --wlength;
- if (wlength && wmsg[wlength - 1] == '\r')
- --wlength;
- if (wlength)
- {
- std::string msg(wlength * 2, char());
- int length = ::WideCharToMultiByte(CP_ACP, 0,
- wmsg.c_str(), static_cast<int>(wlength),
- &msg[0], static_cast<int>(wlength * 2), 0, 0);
- if (length <= 0)
- return "asio.system error";
- msg.resize(static_cast<std::size_t>(length));
- return msg;
- }
- else
- return "asio.system error";
- }
-#else // defined(ASIO_WINDOWS)
-#if !defined(__sun)
- if (value == ECANCELED)
- return "Operation aborted.";
-#endif // !defined(__sun)
-#if defined(__sun) || defined(__QNX__) || defined(__SYMBIAN32__)
- using namespace std;
- return strerror(value);
-#elif defined(__MACH__) && defined(__APPLE__) \
- || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \
- || defined(_AIX) || defined(__hpux) || defined(__osf__) \
- || defined(__ANDROID__)
- char buf[256] = "";
- using namespace std;
- strerror_r(value, buf, sizeof(buf));
- return buf;
-#else
- char buf[256] = "";
- return strerror_r(value, buf, sizeof(buf));
-#endif
-#endif // defined(ASIO_WINDOWS)
- }
-};
-
-} // namespace detail
-
-const error_category& system_category()
-{
- static detail::system_category instance;
- return instance;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_ERROR_CODE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/handler_alloc_hook.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/handler_alloc_hook.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/handler_alloc_hook.ipp
deleted file mode 100644
index 8691ef5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/handler_alloc_hook.ipp
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// impl/handler_alloc_hook.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IMPL_HANDLER_ALLOC_HOOK_IPP
-#define ASIO_IMPL_HANDLER_ALLOC_HOOK_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/handler_alloc_hook.hpp"
-
-#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-# if defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_thread_info.hpp"
-# else // defined(ASIO_HAS_IOCP)
-# include "asio/detail/task_io_service_thread_info.hpp"
-# endif // defined(ASIO_HAS_IOCP)
-#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_IOCP)
-namespace detail { class win_iocp_io_service; }
-#endif // defined(ASIO_HAS_IOCP)
-
-void* asio_handler_allocate(std::size_t size, ...)
-{
-#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-# if defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_io_service io_service_impl;
- typedef detail::win_iocp_thread_info thread_info;
-# else // defined(ASIO_HAS_IOCP)
- typedef detail::task_io_service io_service_impl;
- typedef detail::task_io_service_thread_info thread_info;
-# endif // defined(ASIO_HAS_IOCP)
- typedef detail::call_stack<io_service_impl, thread_info> call_stack;
- return thread_info::allocate(call_stack::top(), size);
-#else // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
- return ::operator new(size);
-#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-}
-
-void asio_handler_deallocate(void* pointer, std::size_t size, ...)
-{
-#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-# if defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_io_service io_service_impl;
- typedef detail::win_iocp_thread_info thread_info;
-# else // defined(ASIO_HAS_IOCP)
- typedef detail::task_io_service io_service_impl;
- typedef detail::task_io_service_thread_info thread_info;
-# endif // defined(ASIO_HAS_IOCP)
- typedef detail::call_stack<io_service_impl, thread_info> call_stack;
- thread_info::deallocate(call_stack::top(), pointer, size);
-#else // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
- (void)size;
- ::operator delete(pointer);
-#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_HANDLER_ALLOC_HOOK_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.hpp
deleted file mode 100644
index 6e590ac..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-//
-// impl/io_service.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_IMPL_IO_SERVICE_HPP
-#define ASIO_IMPL_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/service_registry.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename Service>
-inline Service& use_service(io_service& ios)
-{
- // Check that Service meets the necessary type requirements.
- (void)static_cast<io_service::service*>(static_cast<Service*>(0));
- (void)static_cast<const io_service::id*>(&Service::id);
-
- return ios.service_registry_->template use_service<Service>();
-}
-
-template <>
-inline detail::io_service_impl& use_service<detail::io_service_impl>(
- io_service& ios)
-{
- return ios.impl_;
-}
-
-template <typename Service>
-inline void add_service(io_service& ios, Service* svc)
-{
- // Check that Service meets the necessary type requirements.
- (void)static_cast<io_service::service*>(static_cast<Service*>(0));
- (void)static_cast<const io_service::id*>(&Service::id);
-
- ios.service_registry_->template add_service<Service>(svc);
-}
-
-template <typename Service>
-inline bool has_service(io_service& ios)
-{
- // Check that Service meets the necessary type requirements.
- (void)static_cast<io_service::service*>(static_cast<Service*>(0));
- (void)static_cast<const io_service::id*>(&Service::id);
-
- return ios.service_registry_->template has_service<Service>();
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_io_service.hpp"
-#else
-# include "asio/detail/task_io_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename CompletionHandler>
-inline ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-io_service::dispatch(ASIO_MOVE_ARG(CompletionHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a CompletionHandler.
- ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
- detail::async_result_init<
- CompletionHandler, void ()> init(
- ASIO_MOVE_CAST(CompletionHandler)(handler));
-
- impl_.dispatch(init.handler);
-
- return init.result.get();
-}
-
-template <typename CompletionHandler>
-inline ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-io_service::post(ASIO_MOVE_ARG(CompletionHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a CompletionHandler.
- ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
- detail::async_result_init<
- CompletionHandler, void ()> init(
- ASIO_MOVE_CAST(CompletionHandler)(handler));
-
- impl_.post(init.handler);
-
- return init.result.get();
-}
-
-template <typename Handler>
-#if defined(GENERATING_DOCUMENTATION)
-unspecified
-#else
-inline detail::wrapped_handler<io_service&, Handler>
-#endif
-io_service::wrap(Handler handler)
-{
- return detail::wrapped_handler<io_service&, Handler>(*this, handler);
-}
-
-inline io_service::work::work(asio::io_service& io_service)
- : io_service_impl_(io_service.impl_)
-{
- io_service_impl_.work_started();
-}
-
-inline io_service::work::work(const work& other)
- : io_service_impl_(other.io_service_impl_)
-{
- io_service_impl_.work_started();
-}
-
-inline io_service::work::~work()
-{
- io_service_impl_.work_finished();
-}
-
-inline asio::io_service& io_service::work::get_io_service()
-{
- return io_service_impl_.get_io_service();
-}
-
-inline asio::io_service& io_service::service::get_io_service()
-{
- return owner_;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_IO_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.ipp
deleted file mode 100644
index 4844ef3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/io_service.ipp
+++ /dev/null
@@ -1,155 +0,0 @@
-//
-// impl/io_service.ipp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// 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_IMPL_IO_SERVICE_IPP
-#define ASIO_IMPL_IO_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-#include "asio/detail/service_registry.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_io_service.hpp"
-#else
-# include "asio/detail/task_io_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-io_service::io_service()
- : service_registry_(new asio::detail::service_registry(
- *this, static_cast<impl_type*>(0),
- (std::numeric_limits<std::size_t>::max)())),
- impl_(service_registry_->first_service<impl_type>())
-{
-}
-
-io_service::io_service(std::size_t concurrency_hint)
- : service_registry_(new asio::detail::service_registry(
- *this, static_cast<impl_type*>(0), concurrency_hint)),
- impl_(service_registry_->first_service<impl_type>())
-{
-}
-
-io_service::~io_service()
-{
- delete service_registry_;
-}
-
-std::size_t io_service::run()
-{
- asio::error_code ec;
- std::size_t s = impl_.run(ec);
- asio::detail::throw_error(ec);
- return s;
-}
-
-std::size_t io_service::run(asio::error_code& ec)
-{
- return impl_.run(ec);
-}
-
-std::size_t io_service::run_one()
-{
- asio::error_code ec;
- std::size_t s = impl_.run_one(ec);
- asio::detail::throw_error(ec);
- return s;
-}
-
-std::size_t io_service::run_one(asio::error_code& ec)
-{
- return impl_.run_one(ec);
-}
-
-std::size_t io_service::poll()
-{
- asio::error_code ec;
- std::size_t s = impl_.poll(ec);
- asio::detail::throw_error(ec);
- return s;
-}
-
-std::size_t io_service::poll(asio::error_code& ec)
-{
- return impl_.poll(ec);
-}
-
-std::size_t io_service::poll_one()
-{
- asio::error_code ec;
- std::size_t s = impl_.poll_one(ec);
- asio::detail::throw_error(ec);
- return s;
-}
-
-std::size_t io_service::poll_one(asio::error_code& ec)
-{
- return impl_.poll_one(ec);
-}
-
-void io_service::stop()
-{
- impl_.stop();
-}
-
-bool io_service::stopped() const
-{
- return impl_.stopped();
-}
-
-void io_service::reset()
-{
- impl_.reset();
-}
-
-void io_service::notify_fork(asio::io_service::fork_event event)
-{
- service_registry_->notify_fork(event);
-}
-
-io_service::service::service(asio::io_service& owner)
- : owner_(owner),
- next_(0)
-{
-}
-
-io_service::service::~service()
-{
-}
-
-void io_service::service::fork_service(asio::io_service::fork_event)
-{
-}
-
-service_already_exists::service_already_exists()
- : std::logic_error("Service already exists.")
-{
-}
-
-invalid_service_owner::invalid_service_owner()
- : std::logic_error("Invalid service owner.")
-{
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_IO_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read.hpp
deleted file mode 100644
index 63fba77..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read.hpp
+++ /dev/null
@@ -1,753 +0,0 @@
-//
-// impl/read.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_IMPL_READ_HPP
-#define ASIO_IMPL_READ_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <algorithm>
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- ec = asio::error_code();
- asio::detail::consuming_buffers<
- mutable_buffer, MutableBufferSequence> tmp(buffers);
- std::size_t total_transferred = 0;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- while (tmp.begin() != tmp.end())
- {
- std::size_t bytes_transferred = s.read_some(tmp, ec);
- tmp.consume(bytes_transferred);
- total_transferred += bytes_transferred;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- }
- return total_transferred;
-}
-
-template <typename SyncReadStream, typename MutableBufferSequence>
-inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read(s, buffers, transfer_all(), ec);
- asio::detail::throw_error(ec, "read");
- return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename MutableBufferSequence>
-inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
- asio::error_code& ec)
-{
- return read(s, buffers, transfer_all(), ec);
-}
-
-template <typename SyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition>
-inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read(s, buffers, completion_condition, ec);
- asio::detail::throw_error(ec, "read");
- return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncReadStream, typename Allocator,
- typename CompletionCondition>
-std::size_t read(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- ec = asio::error_code();
- std::size_t total_transferred = 0;
- std::size_t max_size = detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred));
- std::size_t bytes_available = read_size_helper(b, max_size);
- while (bytes_available > 0)
- {
- std::size_t bytes_transferred = s.read_some(b.prepare(bytes_available), ec);
- b.commit(bytes_transferred);
- total_transferred += bytes_transferred;
- max_size = detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred));
- bytes_available = read_size_helper(b, max_size);
- }
- return total_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read(s, b, transfer_all(), ec);
- asio::detail::throw_error(ec, "read");
- return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- asio::error_code& ec)
-{
- return read(s, b, transfer_all(), ec);
-}
-
-template <typename SyncReadStream, typename Allocator,
- typename CompletionCondition>
-inline std::size_t read(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read(s, b, completion_condition, ec);
- asio::detail::throw_error(ec, "read");
- return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename AsyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
- class read_op
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_op(AsyncReadStream& stream, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_op(const read_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_op(read_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- switch (start_ = start)
- {
- case 1:
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- for (;;)
- {
- stream_.async_read_some(buffers_,
- ASIO_MOVE_CAST(read_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- buffers_.consume(bytes_transferred);
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- if ((!ec && bytes_transferred == 0)
- || buffers_.begin() == buffers_.end())
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::detail::consuming_buffers<
- mutable_buffer, MutableBufferSequence> buffers_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream,
- typename CompletionCondition, typename ReadHandler>
- class read_op<AsyncReadStream, asio::mutable_buffers_1,
- CompletionCondition, ReadHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_op(AsyncReadStream& stream,
- const asio::mutable_buffers_1& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffer_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_op(const read_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_op(read_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- stream_.async_read_some(
- asio::buffer(buffer_ + total_transferred_, n),
- ASIO_MOVE_CAST(read_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == asio::buffer_size(buffer_))
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::mutable_buffer buffer_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream, typename Elem,
- typename CompletionCondition, typename ReadHandler>
- class read_op<AsyncReadStream, boost::array<Elem, 2>,
- CompletionCondition, ReadHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_op(AsyncReadStream& stream, const boost::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_op(const read_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_op(read_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- boost::array<asio::mutable_buffer, 2> >::type bufs = {{
- asio::mutable_buffer(buffers_[0]),
- asio::mutable_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- stream_.async_read_some(bufs, ASIO_MOVE_CAST(read_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- boost::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncReadStream, typename Elem,
- typename CompletionCondition, typename ReadHandler>
- class read_op<AsyncReadStream, std::array<Elem, 2>,
- CompletionCondition, ReadHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_op(AsyncReadStream& stream, const std::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_op(const read_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_op(read_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- std::array<asio::mutable_buffer, 2> >::type bufs = {{
- asio::mutable_buffer(buffers_[0]),
- asio::mutable_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- stream_.async_read_some(bufs, ASIO_MOVE_CAST(read_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- std::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_op<AsyncReadStream, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_op<AsyncReadStream, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_op<AsyncReadStream, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_op<AsyncReadStream, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_op<AsyncReadStream, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_op<AsyncReadStream, MutableBufferSequence,
- CompletionCondition, ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- s, buffers, completion_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-template <typename AsyncReadStream, typename MutableBufferSequence,
- typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_op<AsyncReadStream, MutableBufferSequence,
- detail::transfer_all_t, ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- s, buffers, transfer_all(), init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename AsyncReadStream, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- class read_streambuf_op
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_streambuf_op(AsyncReadStream& stream,
- basic_streambuf<Allocator>& streambuf,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- streambuf_(streambuf),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_streambuf_op(const read_streambuf_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- streambuf_(other.streambuf_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_streambuf_op(read_streambuf_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- streambuf_(other.streambuf_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t max_size, bytes_available;
- switch (start_ = start)
- {
- case 1:
- max_size = this->check_for_completion(ec, total_transferred_);
- bytes_available = read_size_helper(streambuf_, max_size);
- for (;;)
- {
- stream_.async_read_some(streambuf_.prepare(bytes_available),
- ASIO_MOVE_CAST(read_streambuf_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- streambuf_.commit(bytes_transferred);
- max_size = this->check_for_completion(ec, total_transferred_);
- bytes_available = read_size_helper(streambuf_, max_size);
- if ((!ec && bytes_transferred == 0) || bytes_available == 0)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::basic_streambuf<Allocator>& streambuf_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_streambuf_op<AsyncReadStream, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_streambuf_op<AsyncReadStream, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_streambuf_op<AsyncReadStream, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream,
- typename Allocator, typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_streambuf_op<AsyncReadStream, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream,
- typename Allocator, typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_streambuf_op<AsyncReadStream, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_streambuf_op<AsyncReadStream, Allocator,
- CompletionCondition, ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- s, b, completion_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_streambuf_op<AsyncReadStream, Allocator,
- detail::transfer_all_t, ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- s, b, transfer_all(), init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_READ_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[19/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_holder.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_holder.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_holder.hpp
deleted file mode 100644
index 809cf1f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_holder.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// detail/socket_holder.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_DETAIL_SOCKET_HOLDER_HPP
-#define ASIO_DETAIL_SOCKET_HOLDER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Implement the resource acquisition is initialisation idiom for sockets.
-class socket_holder
- : private noncopyable
-{
-public:
- // Construct as an uninitialised socket.
- socket_holder()
- : socket_(invalid_socket)
- {
- }
-
- // Construct to take ownership of the specified socket.
- explicit socket_holder(socket_type s)
- : socket_(s)
- {
- }
-
- // Destructor.
- ~socket_holder()
- {
- if (socket_ != invalid_socket)
- {
- asio::error_code ec;
- socket_ops::state_type state = 0;
- socket_ops::close(socket_, state, true, ec);
- }
- }
-
- // Get the underlying socket.
- socket_type get() const
- {
- return socket_;
- }
-
- // Reset to an uninitialised socket.
- void reset()
- {
- if (socket_ != invalid_socket)
- {
- asio::error_code ec;
- socket_ops::state_type state = 0;
- socket_ops::close(socket_, state, true, ec);
- socket_ = invalid_socket;
- }
- }
-
- // Reset to take ownership of the specified socket.
- void reset(socket_type s)
- {
- reset();
- socket_ = s;
- }
-
- // Release ownership of the socket.
- socket_type release()
- {
- socket_type tmp = socket_;
- socket_ = invalid_socket;
- return tmp;
- }
-
-private:
- // The underlying socket.
- socket_type socket_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_HOLDER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_ops.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_ops.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_ops.hpp
deleted file mode 100644
index b976419..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_ops.hpp
+++ /dev/null
@@ -1,334 +0,0 @@
-//
-// detail/socket_ops.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_DETAIL_SOCKET_OPS_HPP
-#define ASIO_DETAIL_SOCKET_OPS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/error_code.hpp"
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/weak_ptr.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace socket_ops {
-
-// Socket state bits.
-enum
-{
- // The user wants a non-blocking socket.
- user_set_non_blocking = 1,
-
- // The socket has been set non-blocking.
- internal_non_blocking = 2,
-
- // Helper "state" used to determine whether the socket is non-blocking.
- non_blocking = user_set_non_blocking | internal_non_blocking,
-
- // User wants connection_aborted errors, which are disabled by default.
- enable_connection_aborted = 4,
-
- // The user set the linger option. Needs to be checked when closing.
- user_set_linger = 8,
-
- // The socket is stream-oriented.
- stream_oriented = 16,
-
- // The socket is datagram-oriented.
- datagram_oriented = 32,
-
- // The socket may have been dup()-ed.
- possible_dup = 64
-};
-
-typedef unsigned char state_type;
-
-struct noop_deleter { void operator()(void*) {} };
-typedef shared_ptr<void> shared_cancel_token_type;
-typedef weak_ptr<void> weak_cancel_token_type;
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL socket_type accept(socket_type s, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec);
-
-ASIO_DECL socket_type sync_accept(socket_type s,
- state_type state, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_accept(socket_type s,
- void* output_buffer, DWORD address_length,
- socket_addr_type* addr, std::size_t* addrlen,
- socket_type new_socket, asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_accept(socket_type s,
- state_type state, socket_addr_type* addr, std::size_t* addrlen,
- asio::error_code& ec, socket_type& new_socket);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL int bind(socket_type s, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec);
-
-ASIO_DECL int close(socket_type s, state_type& state,
- bool destruction, asio::error_code& ec);
-
-ASIO_DECL bool set_user_non_blocking(socket_type s,
- state_type& state, bool value, asio::error_code& ec);
-
-ASIO_DECL bool set_internal_non_blocking(socket_type s,
- state_type& state, bool value, asio::error_code& ec);
-
-ASIO_DECL int shutdown(socket_type s,
- int what, asio::error_code& ec);
-
-ASIO_DECL int connect(socket_type s, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec);
-
-ASIO_DECL void sync_connect(socket_type s, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_connect(socket_type s,
- asio::error_code& ec);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_connect(socket_type s,
- asio::error_code& ec);
-
-ASIO_DECL int socketpair(int af, int type, int protocol,
- socket_type sv[2], asio::error_code& ec);
-
-ASIO_DECL bool sockatmark(socket_type s, asio::error_code& ec);
-
-ASIO_DECL size_t available(socket_type s, asio::error_code& ec);
-
-ASIO_DECL int listen(socket_type s,
- int backlog, asio::error_code& ec);
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef WSABUF buf;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef iovec buf;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-ASIO_DECL void init_buf(buf& b, void* data, size_t size);
-
-ASIO_DECL void init_buf(buf& b, const void* data, size_t size);
-
-ASIO_DECL signed_size_type recv(socket_type s, buf* bufs,
- size_t count, int flags, asio::error_code& ec);
-
-ASIO_DECL size_t sync_recv(socket_type s, state_type state, buf* bufs,
- size_t count, int flags, bool all_empty, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_recv(state_type state,
- const weak_cancel_token_type& cancel_token, bool all_empty,
- asio::error_code& ec, size_t bytes_transferred);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_recv(socket_type s,
- buf* bufs, size_t count, int flags, bool is_stream,
- asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type recvfrom(socket_type s, buf* bufs,
- size_t count, int flags, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec);
-
-ASIO_DECL size_t sync_recvfrom(socket_type s, state_type state,
- buf* bufs, size_t count, int flags, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_recvfrom(
- const weak_cancel_token_type& cancel_token,
- asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_recvfrom(socket_type s,
- buf* bufs, size_t count, int flags,
- socket_addr_type* addr, std::size_t* addrlen,
- asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type recvmsg(socket_type s, buf* bufs,
- size_t count, int in_flags, int& out_flags,
- asio::error_code& ec);
-
-ASIO_DECL size_t sync_recvmsg(socket_type s, state_type state,
- buf* bufs, size_t count, int in_flags, int& out_flags,
- asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_recvmsg(
- const weak_cancel_token_type& cancel_token,
- asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_recvmsg(socket_type s,
- buf* bufs, size_t count, int in_flags, int& out_flags,
- asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type send(socket_type s, const buf* bufs,
- size_t count, int flags, asio::error_code& ec);
-
-ASIO_DECL size_t sync_send(socket_type s, state_type state,
- const buf* bufs, size_t count, int flags,
- bool all_empty, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_send(
- const weak_cancel_token_type& cancel_token,
- asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_send(socket_type s,
- const buf* bufs, size_t count, int flags,
- asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type sendto(socket_type s, const buf* bufs,
- size_t count, int flags, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec);
-
-ASIO_DECL size_t sync_sendto(socket_type s, state_type state,
- const buf* bufs, size_t count, int flags, const socket_addr_type* addr,
- std::size_t addrlen, asio::error_code& ec);
-
-#if !defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_sendto(socket_type s,
- const buf* bufs, size_t count, int flags,
- const socket_addr_type* addr, std::size_t addrlen,
- asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-ASIO_DECL socket_type socket(int af, int type, int protocol,
- asio::error_code& ec);
-
-ASIO_DECL int setsockopt(socket_type s, state_type& state,
- int level, int optname, const void* optval,
- std::size_t optlen, asio::error_code& ec);
-
-ASIO_DECL int getsockopt(socket_type s, state_type state,
- int level, int optname, void* optval,
- size_t* optlen, asio::error_code& ec);
-
-ASIO_DECL int getpeername(socket_type s, socket_addr_type* addr,
- std::size_t* addrlen, bool cached, asio::error_code& ec);
-
-ASIO_DECL int getsockname(socket_type s, socket_addr_type* addr,
- std::size_t* addrlen, asio::error_code& ec);
-
-ASIO_DECL int ioctl(socket_type s, state_type& state,
- int cmd, ioctl_arg_type* arg, asio::error_code& ec);
-
-ASIO_DECL int select(int nfds, fd_set* readfds, fd_set* writefds,
- fd_set* exceptfds, timeval* timeout, asio::error_code& ec);
-
-ASIO_DECL int poll_read(socket_type s,
- state_type state, asio::error_code& ec);
-
-ASIO_DECL int poll_write(socket_type s,
- state_type state, asio::error_code& ec);
-
-ASIO_DECL int poll_connect(socket_type s, asio::error_code& ec);
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL const char* inet_ntop(int af, const void* src, char* dest,
- size_t length, unsigned long scope_id, asio::error_code& ec);
-
-ASIO_DECL int inet_pton(int af, const char* src, void* dest,
- unsigned long* scope_id, asio::error_code& ec);
-
-ASIO_DECL int gethostname(char* name,
- int namelen, asio::error_code& ec);
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL asio::error_code getaddrinfo(const char* host,
- const char* service, const addrinfo_type& hints,
- addrinfo_type** result, asio::error_code& ec);
-
-ASIO_DECL asio::error_code background_getaddrinfo(
- const weak_cancel_token_type& cancel_token, const char* host,
- const char* service, const addrinfo_type& hints,
- addrinfo_type** result, asio::error_code& ec);
-
-ASIO_DECL void freeaddrinfo(addrinfo_type* ai);
-
-ASIO_DECL asio::error_code getnameinfo(
- const socket_addr_type* addr, std::size_t addrlen,
- char* host, std::size_t hostlen, char* serv,
- std::size_t servlen, int flags, asio::error_code& ec);
-
-ASIO_DECL asio::error_code sync_getnameinfo(
- const socket_addr_type* addr, std::size_t addrlen,
- char* host, std::size_t hostlen, char* serv,
- std::size_t servlen, int sock_type, asio::error_code& ec);
-
-ASIO_DECL asio::error_code background_getnameinfo(
- const weak_cancel_token_type& cancel_token,
- const socket_addr_type* addr, std::size_t addrlen,
- char* host, std::size_t hostlen, char* serv,
- std::size_t servlen, int sock_type, asio::error_code& ec);
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL u_long_type network_to_host_long(u_long_type value);
-
-ASIO_DECL u_long_type host_to_network_long(u_long_type value);
-
-ASIO_DECL u_short_type network_to_host_short(u_short_type value);
-
-ASIO_DECL u_short_type host_to_network_short(u_short_type value);
-
-} // namespace socket_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/socket_ops.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_SOCKET_OPS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_option.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_option.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_option.hpp
deleted file mode 100644
index e363fdd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_option.hpp
+++ /dev/null
@@ -1,316 +0,0 @@
-//
-// detail/socket_option.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_DETAIL_SOCKET_OPTION_HPP
-#define ASIO_DETAIL_SOCKET_OPTION_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 <stdexcept>
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace socket_option {
-
-// Helper template for implementing boolean-based options.
-template <int Level, int Name>
-class boolean
-{
-public:
- // Default constructor.
- boolean()
- : value_(0)
- {
- }
-
- // Construct with a specific option value.
- explicit boolean(bool v)
- : value_(v ? 1 : 0)
- {
- }
-
- // Set the current value of the boolean.
- boolean& operator=(bool v)
- {
- value_ = v ? 1 : 0;
- return *this;
- }
-
- // Get the current value of the boolean.
- bool value() const
- {
- return !!value_;
- }
-
- // Convert to bool.
- operator bool() const
- {
- return !!value_;
- }
-
- // Test for false.
- bool operator!() const
- {
- return !value_;
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol&) const
- {
- return Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol&) const
- {
- return Name;
- }
-
- // Get the address of the boolean data.
- template <typename Protocol>
- int* data(const Protocol&)
- {
- return &value_;
- }
-
- // Get the address of the boolean data.
- template <typename Protocol>
- const int* data(const Protocol&) const
- {
- return &value_;
- }
-
- // Get the size of the boolean data.
- template <typename Protocol>
- std::size_t size(const Protocol&) const
- {
- return sizeof(value_);
- }
-
- // Set the size of the boolean data.
- template <typename Protocol>
- void resize(const Protocol&, std::size_t s)
- {
- // On some platforms (e.g. Windows Vista), the getsockopt function will
- // return the size of a boolean socket option as one byte, even though a
- // four byte integer was passed in.
- switch (s)
- {
- case sizeof(char):
- value_ = *reinterpret_cast<char*>(&value_) ? 1 : 0;
- break;
- case sizeof(value_):
- break;
- default:
- {
- std::length_error ex("boolean socket option resize");
- asio::detail::throw_exception(ex);
- }
- }
- }
-
-private:
- int value_;
-};
-
-// Helper template for implementing integer options.
-template <int Level, int Name>
-class integer
-{
-public:
- // Default constructor.
- integer()
- : value_(0)
- {
- }
-
- // Construct with a specific option value.
- explicit integer(int v)
- : value_(v)
- {
- }
-
- // Set the value of the int option.
- integer& operator=(int v)
- {
- value_ = v;
- return *this;
- }
-
- // Get the current value of the int option.
- int value() const
- {
- return value_;
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol&) const
- {
- return Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol&) const
- {
- return Name;
- }
-
- // Get the address of the int data.
- template <typename Protocol>
- int* data(const Protocol&)
- {
- return &value_;
- }
-
- // Get the address of the int data.
- template <typename Protocol>
- const int* data(const Protocol&) const
- {
- return &value_;
- }
-
- // Get the size of the int data.
- template <typename Protocol>
- std::size_t size(const Protocol&) const
- {
- return sizeof(value_);
- }
-
- // Set the size of the int data.
- template <typename Protocol>
- void resize(const Protocol&, std::size_t s)
- {
- if (s != sizeof(value_))
- {
- std::length_error ex("integer socket option resize");
- asio::detail::throw_exception(ex);
- }
- }
-
-private:
- int value_;
-};
-
-// Helper template for implementing linger options.
-template <int Level, int Name>
-class linger
-{
-public:
- // Default constructor.
- linger()
- {
- value_.l_onoff = 0;
- value_.l_linger = 0;
- }
-
- // Construct with specific option values.
- linger(bool e, int t)
- {
- enabled(e);
- timeout ASIO_PREVENT_MACRO_SUBSTITUTION(t);
- }
-
- // Set the value for whether linger is enabled.
- void enabled(bool value)
- {
- value_.l_onoff = value ? 1 : 0;
- }
-
- // Get the value for whether linger is enabled.
- bool enabled() const
- {
- return value_.l_onoff != 0;
- }
-
- // Set the value for the linger timeout.
- void timeout ASIO_PREVENT_MACRO_SUBSTITUTION(int value)
- {
-#if defined(WIN32)
- value_.l_linger = static_cast<u_short>(value);
-#else
- value_.l_linger = value;
-#endif
- }
-
- // Get the value for the linger timeout.
- int timeout ASIO_PREVENT_MACRO_SUBSTITUTION() const
- {
- return static_cast<int>(value_.l_linger);
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol&) const
- {
- return Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol&) const
- {
- return Name;
- }
-
- // Get the address of the linger data.
- template <typename Protocol>
- detail::linger_type* data(const Protocol&)
- {
- return &value_;
- }
-
- // Get the address of the linger data.
- template <typename Protocol>
- const detail::linger_type* data(const Protocol&) const
- {
- return &value_;
- }
-
- // Get the size of the linger data.
- template <typename Protocol>
- std::size_t size(const Protocol&) const
- {
- return sizeof(value_);
- }
-
- // Set the size of the int data.
- template <typename Protocol>
- void resize(const Protocol&, std::size_t s)
- {
- if (s != sizeof(value_))
- {
- std::length_error ex("linger socket option resize");
- asio::detail::throw_exception(ex);
- }
- }
-
-private:
- detail::linger_type value_;
-};
-
-} // namespace socket_option
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_OPTION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_select_interrupter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_select_interrupter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_select_interrupter.hpp
deleted file mode 100644
index 4b52a28..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_select_interrupter.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// detail/socket_select_interrupter.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_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_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_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
-
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class socket_select_interrupter
-{
-public:
- // Constructor.
- ASIO_DECL socket_select_interrupter();
-
- // Destructor.
- ASIO_DECL ~socket_select_interrupter();
-
- // Recreate the interrupter's descriptors. Used after a fork.
- ASIO_DECL void recreate();
-
- // Interrupt the select call.
- ASIO_DECL void interrupt();
-
- // Reset the select interrupt. Returns true if the call was interrupted.
- ASIO_DECL bool reset();
-
- // Get the read descriptor to be passed to select.
- socket_type read_descriptor() const
- {
- return read_descriptor_;
- }
-
-private:
- // Open the descriptors. Throws on error.
- ASIO_DECL void open_descriptors();
-
- // Close the descriptors.
- ASIO_DECL void close_descriptors();
-
- // The read end of a connection used to interrupt the select call. This file
- // descriptor is passed to select such that when it is time to stop, a single
- // byte will be written on the other end of the connection and this
- // descriptor will become readable.
- socket_type read_descriptor_;
-
- // The write end of a connection used to interrupt the select call. A single
- // byte may be written to this to wake up the select which is waiting for the
- // other end to become readable.
- socket_type write_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/socket_select_interrupter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_types.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_types.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_types.hpp
deleted file mode 100644
index f7be957..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/socket_types.hpp
+++ /dev/null
@@ -1,404 +0,0 @@
-//
-// detail/socket_types.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_DETAIL_SOCKET_TYPES_HPP
-#define ASIO_DETAIL_SOCKET_TYPES_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_WINDOWS_RUNTIME)
-// Empty.
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
-# error WinSock.h has already been included
-# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
-# if defined(__BORLANDC__)
-# include <stdlib.h> // Needed for __errno
-# if !defined(_WSPIAPI_H_)
-# define _WSPIAPI_H_
-# define ASIO_WSPIAPI_H_DEFINED
-# endif // !defined(_WSPIAPI_H_)
-# endif // defined(__BORLANDC__)
-# if defined(WINAPI_FAMILY)
-# if ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0)
-# include <windows.h>
-# endif // ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0)
-# endif // defined(WINAPI_FAMILY)
-# include <winsock2.h>
-# include <ws2tcpip.h>
-# include <mswsock.h>
-# if defined(ASIO_WSPIAPI_H_DEFINED)
-# undef _WSPIAPI_H_
-# undef ASIO_WSPIAPI_H_DEFINED
-# endif // defined(ASIO_WSPIAPI_H_DEFINED)
-# if !defined(ASIO_NO_DEFAULT_LINKED_LIBS)
-# if defined(UNDER_CE)
-# pragma comment(lib, "ws2.lib")
-# elif defined(_MSC_VER) || defined(__BORLANDC__)
-# pragma comment(lib, "ws2_32.lib")
-# pragma comment(lib, "mswsock.lib")
-# endif // defined(_MSC_VER) || defined(__BORLANDC__)
-# endif // !defined(ASIO_NO_DEFAULT_LINKED_LIBS)
-# include "asio/detail/old_win_sdk_compat.hpp"
-#else
-# include <sys/ioctl.h>
-# if !defined(__SYMBIAN32__)
-# include <sys/poll.h>
-# endif
-# include <sys/types.h>
-# include <sys/stat.h>
-# include <fcntl.h>
-# if defined(__hpux)
-# include <sys/time.h>
-# endif
-# if !defined(__hpux) || defined(__SELECT)
-# include <sys/select.h>
-# endif
-# include <sys/socket.h>
-# include <sys/uio.h>
-# include <sys/un.h>
-# include <netinet/in.h>
-# if !defined(__SYMBIAN32__)
-# include <netinet/tcp.h>
-# endif
-# include <arpa/inet.h>
-# include <netdb.h>
-# include <net/if.h>
-# include <limits.h>
-# if defined(__sun)
-# include <sys/filio.h>
-# include <sys/sockio.h>
-# endif
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-const int max_addr_v4_str_len = 256;
-const int max_addr_v6_str_len = 256;
-typedef unsigned __int32 u_long_type;
-typedef unsigned __int16 u_short_type;
-struct in4_addr_type { u_long_type s_addr; };
-struct in4_mreq_type { in4_addr_type imr_multiaddr, imr_interface; };
-struct in6_addr_type { unsigned char s6_addr[16]; };
-struct in6_mreq_type { in6_addr_type ipv6mr_multiaddr;
- unsigned long ipv6mr_interface; };
-struct socket_addr_type { int sa_family; };
-struct sockaddr_in4_type { int sin_family;
- in4_addr_type sin_addr; u_short_type sin_port; };
-struct sockaddr_in6_type { int sin6_family;
- in6_addr_type sin6_addr; u_short_type sin6_port;
- u_long_type sin6_flowinfo; u_long_type sin6_scope_id; };
-struct sockaddr_storage_type { int ss_family;
- unsigned char ss_bytes[128 - sizeof(int)]; };
-struct addrinfo_type { int ai_flags;
- int ai_family, ai_socktype, ai_protocol;
- int ai_addrlen; const void* ai_addr;
- const char* ai_canonname; addrinfo_type* ai_next; };
-struct linger_type { u_short_type l_onoff, l_linger; };
-typedef u_long_type ioctl_arg_type;
-typedef int signed_size_type;
-# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c
-# define ASIO_OS_DEF_AF_UNSPEC 0
-# define ASIO_OS_DEF_AF_INET 2
-# define ASIO_OS_DEF_AF_INET6 23
-# define ASIO_OS_DEF_SOCK_STREAM 1
-# define ASIO_OS_DEF_SOCK_DGRAM 2
-# define ASIO_OS_DEF_SOCK_RAW 3
-# define ASIO_OS_DEF_SOCK_SEQPACKET 5
-# define ASIO_OS_DEF_IPPROTO_IP 0
-# define ASIO_OS_DEF_IPPROTO_IPV6 41
-# define ASIO_OS_DEF_IPPROTO_TCP 6
-# define ASIO_OS_DEF_IPPROTO_UDP 17
-# define ASIO_OS_DEF_IPPROTO_ICMP 1
-# define ASIO_OS_DEF_IPPROTO_ICMPV6 58
-# define ASIO_OS_DEF_FIONBIO 1
-# define ASIO_OS_DEF_FIONREAD 2
-# define ASIO_OS_DEF_INADDR_ANY 0
-# define ASIO_OS_DEF_MSG_OOB 0x1
-# define ASIO_OS_DEF_MSG_PEEK 0x2
-# define ASIO_OS_DEF_MSG_DONTROUTE 0x4
-# define ASIO_OS_DEF_MSG_EOR 0 // Not supported.
-# define ASIO_OS_DEF_SHUT_RD 0x0
-# define ASIO_OS_DEF_SHUT_WR 0x1
-# define ASIO_OS_DEF_SHUT_RDWR 0x2
-# define ASIO_OS_DEF_SOMAXCONN 0x7fffffff
-# define ASIO_OS_DEF_SOL_SOCKET 0xffff
-# define ASIO_OS_DEF_SO_BROADCAST 0x20
-# define ASIO_OS_DEF_SO_DEBUG 0x1
-# define ASIO_OS_DEF_SO_DONTROUTE 0x10
-# define ASIO_OS_DEF_SO_KEEPALIVE 0x8
-# define ASIO_OS_DEF_SO_LINGER 0x80
-# define ASIO_OS_DEF_SO_SNDBUF 0x1001
-# define ASIO_OS_DEF_SO_RCVBUF 0x1002
-# define ASIO_OS_DEF_SO_SNDLOWAT 0x1003
-# define ASIO_OS_DEF_SO_RCVLOWAT 0x1004
-# define ASIO_OS_DEF_SO_REUSEADDR 0x4
-# define ASIO_OS_DEF_TCP_NODELAY 0x1
-# define ASIO_OS_DEF_IP_MULTICAST_IF 2
-# define ASIO_OS_DEF_IP_MULTICAST_TTL 3
-# define ASIO_OS_DEF_IP_MULTICAST_LOOP 4
-# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP 5
-# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP 6
-# define ASIO_OS_DEF_IP_TTL 7
-# define ASIO_OS_DEF_IPV6_UNICAST_HOPS 4
-# define ASIO_OS_DEF_IPV6_MULTICAST_IF 9
-# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS 10
-# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP 11
-# define ASIO_OS_DEF_IPV6_JOIN_GROUP 12
-# define ASIO_OS_DEF_IPV6_LEAVE_GROUP 13
-# define ASIO_OS_DEF_AI_CANONNAME 0x2
-# define ASIO_OS_DEF_AI_PASSIVE 0x1
-# define ASIO_OS_DEF_AI_NUMERICHOST 0x4
-# define ASIO_OS_DEF_AI_NUMERICSERV 0x8
-# define ASIO_OS_DEF_AI_V4MAPPED 0x800
-# define ASIO_OS_DEF_AI_ALL 0x100
-# define ASIO_OS_DEF_AI_ADDRCONFIG 0x400
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef SOCKET socket_type;
-const SOCKET invalid_socket = INVALID_SOCKET;
-const int socket_error_retval = SOCKET_ERROR;
-const int max_addr_v4_str_len = 256;
-const int max_addr_v6_str_len = 256;
-typedef sockaddr socket_addr_type;
-typedef in_addr in4_addr_type;
-typedef ip_mreq in4_mreq_type;
-typedef sockaddr_in sockaddr_in4_type;
-# if defined(ASIO_HAS_OLD_WIN_SDK)
-typedef in6_addr_emulation in6_addr_type;
-typedef ipv6_mreq_emulation in6_mreq_type;
-typedef sockaddr_in6_emulation sockaddr_in6_type;
-typedef sockaddr_storage_emulation sockaddr_storage_type;
-typedef addrinfo_emulation addrinfo_type;
-# else
-typedef in6_addr in6_addr_type;
-typedef ipv6_mreq in6_mreq_type;
-typedef sockaddr_in6 sockaddr_in6_type;
-typedef sockaddr_storage sockaddr_storage_type;
-typedef addrinfo addrinfo_type;
-# endif
-typedef ::linger linger_type;
-typedef unsigned long ioctl_arg_type;
-typedef u_long u_long_type;
-typedef u_short u_short_type;
-typedef int signed_size_type;
-# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c
-# define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC
-# define ASIO_OS_DEF_AF_INET AF_INET
-# define ASIO_OS_DEF_AF_INET6 AF_INET6
-# define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM
-# define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM
-# define ASIO_OS_DEF_SOCK_RAW SOCK_RAW
-# define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET
-# define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP
-# define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6
-# define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP
-# define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP
-# define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP
-# define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6
-# define ASIO_OS_DEF_FIONBIO FIONBIO
-# define ASIO_OS_DEF_FIONREAD FIONREAD
-# define ASIO_OS_DEF_INADDR_ANY INADDR_ANY
-# define ASIO_OS_DEF_MSG_OOB MSG_OOB
-# define ASIO_OS_DEF_MSG_PEEK MSG_PEEK
-# define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE
-# define ASIO_OS_DEF_MSG_EOR 0 // Not supported on Windows.
-# define ASIO_OS_DEF_SHUT_RD SD_RECEIVE
-# define ASIO_OS_DEF_SHUT_WR SD_SEND
-# define ASIO_OS_DEF_SHUT_RDWR SD_BOTH
-# define ASIO_OS_DEF_SOMAXCONN SOMAXCONN
-# define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET
-# define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST
-# define ASIO_OS_DEF_SO_DEBUG SO_DEBUG
-# define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE
-# define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE
-# define ASIO_OS_DEF_SO_LINGER SO_LINGER
-# define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF
-# define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF
-# define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT
-# define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT
-# define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR
-# define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY
-# define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF
-# define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL
-# define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP
-# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP
-# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP
-# define ASIO_OS_DEF_IP_TTL IP_TTL
-# define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF
-# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP
-# define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP
-# define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP
-# define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME
-# define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE
-# define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST
-# if defined(AI_NUMERICSERV)
-# define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV
-# else
-# define ASIO_OS_DEF_AI_NUMERICSERV 0
-# endif
-# if defined(AI_V4MAPPED)
-# define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED
-# else
-# define ASIO_OS_DEF_AI_V4MAPPED 0
-# endif
-# if defined(AI_ALL)
-# define ASIO_OS_DEF_AI_ALL AI_ALL
-# else
-# define ASIO_OS_DEF_AI_ALL 0
-# endif
-# if defined(AI_ADDRCONFIG)
-# define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG
-# else
-# define ASIO_OS_DEF_AI_ADDRCONFIG 0
-# endif
-# if defined (_WIN32_WINNT)
-const int max_iov_len = 64;
-# else
-const int max_iov_len = 16;
-# endif
-#else
-typedef int socket_type;
-const int invalid_socket = -1;
-const int socket_error_retval = -1;
-const int max_addr_v4_str_len = INET_ADDRSTRLEN;
-#if defined(INET6_ADDRSTRLEN)
-const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE;
-#else // defined(INET6_ADDRSTRLEN)
-const int max_addr_v6_str_len = 256;
-#endif // defined(INET6_ADDRSTRLEN)
-typedef sockaddr socket_addr_type;
-typedef in_addr in4_addr_type;
-# if defined(__hpux)
-// HP-UX doesn't provide ip_mreq when _XOPEN_SOURCE_EXTENDED is defined.
-struct in4_mreq_type
-{
- struct in_addr imr_multiaddr;
- struct in_addr imr_interface;
-};
-# else
-typedef ip_mreq in4_mreq_type;
-# endif
-typedef sockaddr_in sockaddr_in4_type;
-typedef in6_addr in6_addr_type;
-typedef ipv6_mreq in6_mreq_type;
-typedef sockaddr_in6 sockaddr_in6_type;
-typedef sockaddr_storage sockaddr_storage_type;
-typedef sockaddr_un sockaddr_un_type;
-typedef addrinfo addrinfo_type;
-typedef ::linger linger_type;
-typedef int ioctl_arg_type;
-typedef uint32_t u_long_type;
-typedef uint16_t u_short_type;
-#if defined(ASIO_HAS_SSIZE_T)
-typedef ssize_t signed_size_type;
-#else // defined(ASIO_HAS_SSIZE_T)
-typedef int signed_size_type;
-#endif // defined(ASIO_HAS_SSIZE_T)
-# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c
-# define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC
-# define ASIO_OS_DEF_AF_INET AF_INET
-# define ASIO_OS_DEF_AF_INET6 AF_INET6
-# define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM
-# define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM
-# define ASIO_OS_DEF_SOCK_RAW SOCK_RAW
-# define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET
-# define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP
-# define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6
-# define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP
-# define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP
-# define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP
-# define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6
-# define ASIO_OS_DEF_FIONBIO FIONBIO
-# define ASIO_OS_DEF_FIONREAD FIONREAD
-# define ASIO_OS_DEF_INADDR_ANY INADDR_ANY
-# define ASIO_OS_DEF_MSG_OOB MSG_OOB
-# define ASIO_OS_DEF_MSG_PEEK MSG_PEEK
-# define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE
-# define ASIO_OS_DEF_MSG_EOR MSG_EOR
-# define ASIO_OS_DEF_SHUT_RD SHUT_RD
-# define ASIO_OS_DEF_SHUT_WR SHUT_WR
-# define ASIO_OS_DEF_SHUT_RDWR SHUT_RDWR
-# define ASIO_OS_DEF_SOMAXCONN SOMAXCONN
-# define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET
-# define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST
-# define ASIO_OS_DEF_SO_DEBUG SO_DEBUG
-# define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE
-# define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE
-# define ASIO_OS_DEF_SO_LINGER SO_LINGER
-# define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF
-# define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF
-# define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT
-# define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT
-# define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR
-# define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY
-# define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF
-# define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL
-# define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP
-# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP
-# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP
-# define ASIO_OS_DEF_IP_TTL IP_TTL
-# define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF
-# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP
-# define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP
-# define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP
-# define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME
-# define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE
-# define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST
-# if defined(AI_NUMERICSERV)
-# define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV
-# else
-# define ASIO_OS_DEF_AI_NUMERICSERV 0
-# endif
-// Note: QNX Neutrino 6.3 defines AI_V4MAPPED, AI_ALL and AI_ADDRCONFIG but
-// does not implement them. Therefore they are specifically excluded here.
-# if defined(AI_V4MAPPED) && !defined(__QNXNTO__)
-# define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED
-# else
-# define ASIO_OS_DEF_AI_V4MAPPED 0
-# endif
-# if defined(AI_ALL) && !defined(__QNXNTO__)
-# define ASIO_OS_DEF_AI_ALL AI_ALL
-# else
-# define ASIO_OS_DEF_AI_ALL 0
-# endif
-# if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__)
-# define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG
-# else
-# define ASIO_OS_DEF_AI_ADDRCONFIG 0
-# endif
-# if defined(IOV_MAX)
-const int max_iov_len = IOV_MAX;
-# else
-// POSIX platforms are not required to define IOV_MAX.
-const int max_iov_len = 16;
-# endif
-#endif
-const int custom_socket_option_level = 0xA5100000;
-const int enable_connection_aborted_option = 1;
-const int always_fail_option = 2;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_TYPES_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/solaris_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/solaris_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/solaris_fenced_block.hpp
deleted file mode 100644
index 46932b2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/solaris_fenced_block.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/solaris_fenced_block.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_DETAIL_SOLARIS_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__sun)
-
-#include <atomic.h>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class solaris_fenced_block
- : private noncopyable
-{
-public:
- enum half_t { half };
- enum full_t { full };
-
- // Constructor for a half fenced block.
- explicit solaris_fenced_block(half_t)
- {
- }
-
- // Constructor for a full fenced block.
- explicit solaris_fenced_block(full_t)
- {
- membar_consumer();
- }
-
- // Destructor.
- ~solaris_fenced_block()
- {
- membar_producer();
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__sun)
-
-#endif // ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/static_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/static_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/static_mutex.hpp
deleted file mode 100644
index 35432b5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/static_mutex.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// detail/static_mutex.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_DETAIL_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_STATIC_MUTEX_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_HAS_THREADS)
-# include "asio/detail/null_static_mutex.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_static_mutex.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_static_mutex.hpp"
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# include "asio/detail/std_static_mutex.hpp"
-#else
-# error Only Windows and POSIX are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_NULL_STATIC_MUTEX_INIT
-#elif defined(ASIO_WINDOWS)
-typedef win_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_WIN_STATIC_MUTEX_INIT
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_POSIX_STATIC_MUTEX_INIT
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-typedef std_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_STD_STATIC_MUTEX_INIT
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_STATIC_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_event.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_event.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_event.hpp
deleted file mode 100644
index 027e10d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_event.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// detail/std_event.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_DETAIL_STD_EVENT_HPP
-#define ASIO_DETAIL_STD_EVENT_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_HAS_STD_MUTEX_AND_CONDVAR)
-
-#include <chrono>
-#include <condition_variable>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_event
- : private noncopyable
-{
-public:
- // Constructor.
- std_event()
- : state_(0)
- {
- }
-
- // Destructor.
- ~std_event()
- {
- }
-
- // Signal the event. (Retained for backward compatibility.)
- template <typename Lock>
- void signal(Lock& lock)
- {
- this->signal_all(lock);
- }
-
- // Signal all waiters.
- template <typename Lock>
- void signal_all(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- (void)lock;
- state_ |= 1;
- cond_.notify_all();
- }
-
- // Unlock the mutex and signal one waiter.
- template <typename Lock>
- void unlock_and_signal_one(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- state_ |= 1;
- bool have_waiters = (state_ > 1);
- lock.unlock();
- if (have_waiters)
- cond_.notify_one();
- }
-
- // If there's a waiter, unlock the mutex and signal it.
- template <typename Lock>
- bool maybe_unlock_and_signal_one(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- state_ |= 1;
- if (state_ > 1)
- {
- lock.unlock();
- cond_.notify_one();
- return true;
- }
- return false;
- }
-
- // Reset the event.
- template <typename Lock>
- void clear(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- (void)lock;
- state_ &= ~std::size_t(1);
- }
-
- // Wait for the event to become signalled.
- template <typename Lock>
- void wait(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- unique_lock_adapter u_lock(lock);
- while ((state_ & 1) == 0)
- {
- waiter w(state_);
- cond_.wait(u_lock.unique_lock_);
- }
- }
-
- // Timed wait for the event to become signalled.
- template <typename Lock>
- bool wait_for_usec(Lock& lock, long usec)
- {
- ASIO_ASSERT(lock.locked());
- unique_lock_adapter u_lock(lock);
- if ((state_ & 1) == 0)
- {
- waiter w(state_);
- cond_.wait_for(u_lock.unique_lock_, std::chrono::microseconds(usec));
- }
- return (state_ & 1) != 0;
- }
-
-private:
- // Helper class to temporarily adapt a scoped_lock into a unique_lock so that
- // it can be passed to std::condition_variable::wait().
- struct unique_lock_adapter
- {
- template <typename Lock>
- explicit unique_lock_adapter(Lock& lock)
- : unique_lock_(lock.mutex().mutex_, std::adopt_lock)
- {
- }
-
- ~unique_lock_adapter()
- {
- unique_lock_.release();
- }
-
- std::unique_lock<std::mutex> unique_lock_;
- };
-
- // Helper to increment and decrement the state to track outstanding waiters.
- class waiter
- {
- public:
- explicit waiter(std::size_t& state)
- : state_(state)
- {
- state_ += 2;
- }
-
- ~waiter()
- {
- state_ -= 2;
- }
-
- private:
- std::size_t& state_;
- };
-
- std::condition_variable cond_;
- std::size_t state_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#endif // ASIO_DETAIL_STD_EVENT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_mutex.hpp
deleted file mode 100644
index d88a08b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_mutex.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// detail/std_mutex.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_DETAIL_STD_MUTEX_HPP
-#define ASIO_DETAIL_STD_MUTEX_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_HAS_STD_MUTEX_AND_CONDVAR)
-
-#include <mutex>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_event;
-
-class std_mutex
- : private noncopyable
-{
-public:
- typedef asio::detail::scoped_lock<std_mutex> scoped_lock;
-
- // Constructor.
- std_mutex()
- {
- }
-
- // Destructor.
- ~std_mutex()
- {
- }
-
- // Lock the mutex.
- void lock()
- {
- mutex_.lock();
- }
-
- // Unlock the mutex.
- void unlock()
- {
- mutex_.unlock();
- }
-
-private:
- friend class std_event;
- std::mutex mutex_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#endif // ASIO_DETAIL_STD_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_static_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_static_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_static_mutex.hpp
deleted file mode 100644
index c7c08c1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_static_mutex.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// detail/std_static_mutex.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_DETAIL_STD_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_STD_STATIC_MUTEX_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_HAS_STD_MUTEX_AND_CONDVAR)
-
-#include <mutex>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_event;
-
-class std_static_mutex
- : private noncopyable
-{
-public:
- typedef asio::detail::scoped_lock<std_static_mutex> scoped_lock;
-
- // Constructor.
- std_static_mutex(int)
- {
- }
-
- // Destructor.
- ~std_static_mutex()
- {
- }
-
- // Initialise the mutex.
- void init()
- {
- // Nothing to do.
- }
-
- // Lock the mutex.
- void lock()
- {
- mutex_.lock();
- }
-
- // Unlock the mutex.
- void unlock()
- {
- mutex_.unlock();
- }
-
-private:
- friend class std_event;
- std::mutex mutex_;
-};
-
-#define ASIO_STD_STATIC_MUTEX_INIT 0
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#endif // ASIO_DETAIL_STD_STATIC_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_thread.hpp
deleted file mode 100644
index b93a165..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/std_thread.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// detail/std_thread.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_DETAIL_STD_THREAD_HPP
-#define ASIO_DETAIL_STD_THREAD_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_HAS_STD_THREAD)
-
-#include <thread>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_thread
- : private noncopyable
-{
-public:
- // Constructor.
- template <typename Function>
- std_thread(Function f, unsigned int = 0)
- : thread_(f)
- {
- }
-
- // Destructor.
- ~std_thread()
- {
- join();
- }
-
- // Wait for the thread to exit.
- void join()
- {
- if (thread_.joinable())
- thread_.join();
- }
-
-private:
- std::thread thread_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_THREAD)
-
-#endif // ASIO_DETAIL_STD_THREAD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/strand_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/strand_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/strand_service.hpp
deleted file mode 100644
index e2c5530..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/strand_service.hpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// detail/strand_service.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_DETAIL_STRAND_SERVICE_HPP
-#define ASIO_DETAIL_STRAND_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Default service implementation for a strand.
-class strand_service
- : public asio::detail::service_base<strand_service>
-{
-private:
- // Helper class to re-post the strand on exit.
- struct on_do_complete_exit;
-
- // Helper class to re-post the strand on exit.
- struct on_dispatch_exit;
-
-public:
-
- // The underlying implementation of a strand.
- class strand_impl
- : public operation
- {
- public:
- strand_impl();
-
- private:
- // Only this service will have access to the internal values.
- friend class strand_service;
- friend struct on_do_complete_exit;
- friend struct on_dispatch_exit;
-
- // Mutex to protect access to internal data.
- asio::detail::mutex mutex_;
-
- // Indicates whether the strand is currently "locked" by a handler. This
- // means that there is a handler upcall in progress, or that the strand
- // itself has been scheduled in order to invoke some pending handlers.
- bool locked_;
-
- // The handlers that are waiting on the strand but should not be run until
- // after the next time the strand is scheduled. This queue must only be
- // modified while the mutex is locked.
- op_queue<operation> waiting_queue_;
-
- // The handlers that are ready to be run. Logically speaking, these are the
- // handlers that hold the strand's lock. The ready queue is only modified
- // from within the strand and so may be accessed without locking the mutex.
- op_queue<operation> ready_queue_;
- };
-
- typedef strand_impl* implementation_type;
-
- // Construct a new strand service for the specified io_service.
- ASIO_DECL explicit strand_service(asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new strand implementation.
- ASIO_DECL void construct(implementation_type& impl);
-
- // Request the io_service to invoke the given handler.
- template <typename Handler>
- void dispatch(implementation_type& impl, Handler& handler);
-
- // Request the io_service to invoke the given handler and return immediately.
- template <typename Handler>
- void post(implementation_type& impl, Handler& handler);
-
- // Determine whether the strand is running in the current thread.
- ASIO_DECL bool running_in_this_thread(
- const implementation_type& impl) const;
-
-private:
- // Helper function to dispatch a handler. Returns true if the handler should
- // be dispatched immediately.
- ASIO_DECL bool do_dispatch(implementation_type& impl, operation* op);
-
- // Helper fiunction to post a handler.
- ASIO_DECL void do_post(implementation_type& impl,
- operation* op, bool is_continuation);
-
- ASIO_DECL static void do_complete(io_service_impl* owner,
- operation* base, const asio::error_code& ec,
- std::size_t bytes_transferred);
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex to protect access to the array of implementations.
- asio::detail::mutex mutex_;
-
- // Number of implementations shared between all strand objects.
-#if defined(ASIO_STRAND_IMPLEMENTATIONS)
- enum { num_implementations = ASIO_STRAND_IMPLEMENTATIONS };
-#else // defined(ASIO_STRAND_IMPLEMENTATIONS)
- enum { num_implementations = 193 };
-#endif // defined(ASIO_STRAND_IMPLEMENTATIONS)
-
- // Pool of implementations.
- scoped_ptr<strand_impl> implementations_[num_implementations];
-
- // Extra value used when hashing to prevent recycled memory locations from
- // getting the same strand implementation.
- std::size_t salt_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/strand_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/strand_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_STRAND_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service.hpp
deleted file mode 100644
index 569c41a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service.hpp
+++ /dev/null
@@ -1,201 +0,0 @@
-//
-// detail/task_io_service.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_DETAIL_TASK_IO_SERVICE_HPP
-#define ASIO_DETAIL_TASK_IO_SERVICE_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_HAS_IOCP)
-
-#include "asio/error_code.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/event.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_fwd.hpp"
-#include "asio/detail/task_io_service_operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct task_io_service_thread_info;
-
-class task_io_service
- : public asio::detail::service_base<task_io_service>
-{
-public:
- typedef task_io_service_operation operation;
-
- // Constructor. Specifies the number of concurrent threads that are likely to
- // run the io_service. If set to 1 certain optimisation are performed.
- ASIO_DECL task_io_service(asio::io_service& io_service,
- std::size_t concurrency_hint = 0);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Initialise the task, if required.
- ASIO_DECL void init_task();
-
- // Run the event loop until interrupted or no more work.
- ASIO_DECL std::size_t run(asio::error_code& ec);
-
- // Run until interrupted or one operation is performed.
- ASIO_DECL std::size_t run_one(asio::error_code& ec);
-
- // Poll for operations without blocking.
- ASIO_DECL std::size_t poll(asio::error_code& ec);
-
- // Poll for one operation without blocking.
- ASIO_DECL std::size_t poll_one(asio::error_code& ec);
-
- // Interrupt the event processing loop.
- ASIO_DECL void stop();
-
- // Determine whether the io_service is stopped.
- ASIO_DECL bool stopped() const;
-
- // Reset in preparation for a subsequent run invocation.
- ASIO_DECL void reset();
-
- // Notify that some work has started.
- void work_started()
- {
- ++outstanding_work_;
- }
-
- // Notify that some work has finished.
- void work_finished()
- {
- if (--outstanding_work_ == 0)
- stop();
- }
-
- // Return whether a handler can be dispatched immediately.
- bool can_dispatch()
- {
- return thread_call_stack::contains(this) != 0;
- }
-
- // Request invocation of the given handler.
- template <typename Handler>
- void dispatch(Handler& handler);
-
- // Request invocation of the given handler and return immediately.
- template <typename Handler>
- void post(Handler& handler);
-
- // Request invocation of the given operation and return immediately. Assumes
- // that work_started() has not yet been called for the operation.
- ASIO_DECL void post_immediate_completion(
- operation* op, bool is_continuation);
-
- // Request invocation of the given operation and return immediately. Assumes
- // that work_started() was previously called for the operation.
- ASIO_DECL void post_deferred_completion(operation* op);
-
- // Request invocation of the given operations and return immediately. Assumes
- // that work_started() was previously called for each operation.
- ASIO_DECL void post_deferred_completions(op_queue<operation>& ops);
-
- // Process unfinished operations as part of a shutdown_service operation.
- // Assumes that work_started() was previously called for the operations.
- ASIO_DECL void abandon_operations(op_queue<operation>& ops);
-
-private:
- // Structure containing thread-specific data.
- typedef task_io_service_thread_info thread_info;
-
- // Enqueue the given operation following a failed attempt to dispatch the
- // operation for immediate invocation.
- ASIO_DECL void do_dispatch(operation* op);
-
- // Run at most one operation. May block.
- ASIO_DECL std::size_t do_run_one(mutex::scoped_lock& lock,
- thread_info& this_thread, const asio::error_code& ec);
-
- // Poll for at most one operation.
- ASIO_DECL std::size_t do_poll_one(mutex::scoped_lock& lock,
- thread_info& this_thread, const asio::error_code& ec);
-
- // Stop the task and all idle threads.
- ASIO_DECL void stop_all_threads(mutex::scoped_lock& lock);
-
- // Wake a single idle thread, or the task, and always unlock the mutex.
- ASIO_DECL void wake_one_thread_and_unlock(
- mutex::scoped_lock& lock);
-
- // Helper class to perform task-related operations on block exit.
- struct task_cleanup;
- friend struct task_cleanup;
-
- // Helper class to call work-related operations on block exit.
- struct work_cleanup;
- friend struct work_cleanup;
-
- // Whether to optimise for single-threaded use cases.
- const bool one_thread_;
-
- // Mutex to protect access to internal data.
- mutable mutex mutex_;
-
- // Event to wake up blocked threads.
- event wakeup_event_;
-
- // The task to be run by this service.
- reactor* task_;
-
- // Operation object to represent the position of the task in the queue.
- struct task_operation : operation
- {
- task_operation() : operation(0) {}
- } task_operation_;
-
- // Whether the task has been interrupted.
- bool task_interrupted_;
-
- // The count of unfinished work.
- atomic_count outstanding_work_;
-
- // The queue of handlers that are ready to be delivered.
- op_queue<operation> op_queue_;
-
- // Flag to indicate that the dispatcher has been stopped.
- bool stopped_;
-
- // Flag to indicate that the dispatcher has been shut down.
- bool shutdown_;
-
- // Per-thread call stack to track the state of each thread in the io_service.
- typedef call_stack<task_io_service, thread_info> thread_call_stack;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/task_io_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/task_io_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_TASK_IO_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_operation.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_operation.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_operation.hpp
deleted file mode 100644
index 9dbfa16..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_operation.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/task_io_service_operation.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_DETAIL_TASK_IO_SERVICE_OPERATION_HPP
-#define ASIO_DETAIL_TASK_IO_SERVICE_OPERATION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/error_code.hpp"
-#include "asio/detail/handler_tracking.hpp"
-#include "asio/detail/op_queue.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class task_io_service;
-
-// Base class for all operations. A function pointer is used instead of virtual
-// functions to avoid the associated overhead.
-class task_io_service_operation ASIO_INHERIT_TRACKED_HANDLER
-{
-public:
- void complete(task_io_service& owner,
- const asio::error_code& ec, std::size_t bytes_transferred)
- {
- func_(&owner, this, ec, bytes_transferred);
- }
-
- void destroy()
- {
- func_(0, this, asio::error_code(), 0);
- }
-
-protected:
- typedef void (*func_type)(task_io_service*,
- task_io_service_operation*,
- const asio::error_code&, std::size_t);
-
- task_io_service_operation(func_type func)
- : next_(0),
- func_(func),
- task_result_(0)
- {
- }
-
- // Prevents deletion through this type.
- ~task_io_service_operation()
- {
- }
-
-private:
- friend class op_queue_access;
- task_io_service_operation* next_;
- func_type func_;
-protected:
- friend class task_io_service;
- unsigned int task_result_; // Passed into bytes transferred.
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TASK_IO_SERVICE_OPERATION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_thread_info.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_thread_info.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_thread_info.hpp
deleted file mode 100644
index 862c875..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/task_io_service_thread_info.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// detail/task_io_service_thread_info.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_DETAIL_TASK_IO_SERVICE_THREAD_INFO_HPP
-#define ASIO_DETAIL_TASK_IO_SERVICE_THREAD_INFO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/thread_info_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class task_io_service;
-class task_io_service_operation;
-
-struct task_io_service_thread_info : public thread_info_base
-{
- op_queue<task_io_service_operation> private_op_queue;
- long private_outstanding_work;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TASK_IO_SERVICE_THREAD_INFO_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread.hpp
deleted file mode 100644
index fc9155b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// detail/thread.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_DETAIL_THREAD_HPP
-#define ASIO_DETAIL_THREAD_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_HAS_THREADS)
-# include "asio/detail/null_thread.hpp"
-#elif defined(ASIO_WINDOWS)
-# if defined(UNDER_CE)
-# include "asio/detail/wince_thread.hpp"
-# else
-# include "asio/detail/win_thread.hpp"
-# endif
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_thread.hpp"
-#elif defined(ASIO_HAS_STD_THREAD)
-# include "asio/detail/std_thread.hpp"
-#else
-# error Only Windows, POSIX and std::thread are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_thread thread;
-#elif defined(ASIO_WINDOWS)
-# if defined(UNDER_CE)
-typedef wince_thread thread;
-# else
-typedef win_thread thread;
-# endif
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_thread thread;
-#elif defined(ASIO_HAS_STD_THREAD)
-typedef std_thread thread;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_THREAD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread_info_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread_info_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread_info_base.hpp
deleted file mode 100644
index 40d77e6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/thread_info_base.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// detail/thread_info_base.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_DETAIL_THREAD_INFO_BASE_HPP
-#define ASIO_DETAIL_THREAD_INFO_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <climits>
-#include <cstddef>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class thread_info_base
- : private noncopyable
-{
-public:
- thread_info_base()
- : reusable_memory_(0)
- {
- }
-
- ~thread_info_base()
- {
- if (reusable_memory_)
- ::operator delete(reusable_memory_);
- }
-
- static void* allocate(thread_info_base* this_thread, std::size_t size)
- {
- if (this_thread && this_thread->reusable_memory_)
- {
- void* const pointer = this_thread->reusable_memory_;
- this_thread->reusable_memory_ = 0;
-
- unsigned char* const mem = static_cast<unsigned char*>(pointer);
- if (static_cast<std::size_t>(mem[0]) >= size)
- {
- mem[size] = mem[0];
- return pointer;
- }
-
- ::operator delete(pointer);
- }
-
- void* const pointer = ::operator new(size + 1);
- unsigned char* const mem = static_cast<unsigned char*>(pointer);
- mem[size] = (size <= UCHAR_MAX) ? static_cast<unsigned char>(size) : 0;
- return pointer;
- }
-
- static void deallocate(thread_info_base* this_thread,
- void* pointer, std::size_t size)
- {
- if (size <= UCHAR_MAX)
- {
- if (this_thread && this_thread->reusable_memory_ == 0)
- {
- unsigned char* const mem = static_cast<unsigned char*>(pointer);
- mem[0] = mem[size];
- this_thread->reusable_memory_ = pointer;
- return;
- }
- }
-
- ::operator delete(pointer);
- }
-
-private:
- void* reusable_memory_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_THREAD_INFO_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_error.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_error.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_error.hpp
deleted file mode 100644
index 34a08a8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_error.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// detail/throw_error.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_DETAIL_THROW_ERROR_HPP
-#define ASIO_DETAIL_THROW_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-ASIO_DECL void do_throw_error(const asio::error_code& err);
-
-ASIO_DECL void do_throw_error(const asio::error_code& err,
- const char* location);
-
-inline void throw_error(const asio::error_code& err)
-{
- if (err)
- do_throw_error(err);
-}
-
-inline void throw_error(const asio::error_code& err,
- const char* location)
-{
- if (err)
- do_throw_error(err, location);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/throw_error.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_THROW_ERROR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_exception.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_exception.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_exception.hpp
deleted file mode 100644
index 5587a00..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/throw_exception.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// detail/throw_exception.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_DETAIL_THROW_EXCEPTION_HPP
-#define ASIO_DETAIL_THROW_EXCEPTION_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_HAS_BOOST_THROW_EXCEPTION)
-# include <boost/throw_exception.hpp>
-#endif // defined(ASIO_BOOST_THROW_EXCEPTION)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-using boost::throw_exception;
-#else // defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-
-// Declare the throw_exception function for all targets.
-template <typename Exception>
-void throw_exception(const Exception& e);
-
-// Only define the throw_exception function when exceptions are enabled.
-// Otherwise, it is up to the application to provide a definition of this
-// function.
-# if !defined(ASIO_NO_EXCEPTIONS)
-template <typename Exception>
-void throw_exception(const Exception& e)
-{
- throw e;
-}
-# endif // !defined(ASIO_NO_EXCEPTIONS)
-
-#endif // defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_THROW_EXCEPTION_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[02/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/waitable_timer_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/waitable_timer_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/waitable_timer_service.hpp
deleted file mode 100644
index 0770360..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/waitable_timer_service.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// waitable_timer_service.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_WAITABLE_TIMER_SERVICE_HPP
-#define ASIO_WAITABLE_TIMER_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 "asio/async_result.hpp"
-#include "asio/detail/chrono_time_traits.hpp"
-#include "asio/detail/deadline_timer_service.hpp"
-#include "asio/io_service.hpp"
-#include "asio/wait_traits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a timer.
-template <typename Clock,
- typename WaitTraits = asio::wait_traits<Clock> >
-class waitable_timer_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<
- waitable_timer_service<Clock, WaitTraits> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The clock type.
- typedef Clock clock_type;
-
- /// The duration type of the clock.
- typedef typename clock_type::duration duration;
-
- /// The time point type of the clock.
- typedef typename clock_type::time_point time_point;
-
- /// The wait traits type.
- typedef WaitTraits traits_type;
-
-private:
- // The type of the platform-specific implementation.
- typedef detail::deadline_timer_service<
- detail::chrono_time_traits<Clock, WaitTraits> > service_impl_type;
-
-public:
- /// The implementation type of the waitable timer.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// Construct a new timer service for the specified io_service.
- explicit waitable_timer_service(asio::io_service& io_service)
- : asio::detail::service_base<
- waitable_timer_service<Clock, WaitTraits> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new timer implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
- /// Destroy a timer implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Cancel any asynchronous wait operations associated with the timer.
- std::size_t cancel(implementation_type& impl, asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Cancels one asynchronous wait operation associated with the timer.
- std::size_t cancel_one(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel_one(impl, ec);
- }
-
- /// Get the expiry time for the timer as an absolute time.
- time_point expires_at(const implementation_type& impl) const
- {
- return service_impl_.expires_at(impl);
- }
-
- /// Set the expiry time for the timer as an absolute time.
- std::size_t expires_at(implementation_type& impl,
- const time_point& expiry_time, asio::error_code& ec)
- {
- return service_impl_.expires_at(impl, expiry_time, ec);
- }
-
- /// Get the expiry time for the timer relative to now.
- duration expires_from_now(const implementation_type& impl) const
- {
- return service_impl_.expires_from_now(impl);
- }
-
- /// Set the expiry time for the timer relative to now.
- std::size_t expires_from_now(implementation_type& impl,
- const duration& expiry_time, asio::error_code& ec)
- {
- return service_impl_.expires_from_now(impl, expiry_time, ec);
- }
-
- // Perform a blocking wait on the timer.
- void wait(implementation_type& impl, asio::error_code& ec)
- {
- service_impl_.wait(impl, ec);
- }
-
- // Start an asynchronous wait on the timer.
- template <typename WaitHandler>
- ASIO_INITFN_RESULT_TYPE(WaitHandler,
- void (asio::error_code))
- async_wait(implementation_type& impl,
- ASIO_MOVE_ARG(WaitHandler) handler)
- {
- detail::async_result_init<
- WaitHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(WaitHandler)(handler));
-
- service_impl_.async_wait(impl, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_WAITABLE_TIMER_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_handle.hpp
deleted file mode 100644
index 82d7aba..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_handle.hpp
+++ /dev/null
@@ -1,281 +0,0 @@
-//
-// windows/basic_handle.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_WINDOWS_BASIC_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_HANDLE_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_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
- || defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) \
- || defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides Windows handle functionality.
-/**
- * The windows::basic_handle class template provides the ability to wrap a
- * Windows handle.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename HandleService>
-class basic_handle
- : public basic_io_object<HandleService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// handle.
- typedef typename HandleService::native_handle_type native_type;
-
- /// The native representation of a handle.
- typedef typename HandleService::native_handle_type native_handle_type;
-
- /// A basic_handle is always the lowest layer.
- typedef basic_handle<HandleService> lowest_layer_type;
-
- /// Construct a basic_handle without opening it.
- /**
- * This constructor creates a handle without opening it.
- *
- * @param io_service The io_service object that the handle will use to
- * dispatch handlers for any asynchronous operations performed on the handle.
- */
- explicit basic_handle(asio::io_service& io_service)
- : basic_io_object<HandleService>(io_service)
- {
- }
-
- /// Construct a basic_handle on an existing native handle.
- /**
- * This constructor creates a handle object to hold an existing native handle.
- *
- * @param io_service The io_service object that the handle will use to
- * dispatch handlers for any asynchronous operations performed on the handle.
- *
- * @param handle A native handle.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_handle(asio::io_service& io_service,
- const native_handle_type& handle)
- : basic_io_object<HandleService>(io_service)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(), handle, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_handle from another.
- /**
- * This constructor moves a handle from one object to another.
- *
- * @param other The other basic_handle object from which the move will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_handle(io_service&) constructor.
- */
- basic_handle(basic_handle&& other)
- : basic_io_object<HandleService>(
- ASIO_MOVE_CAST(basic_handle)(other))
- {
- }
-
- /// Move-assign a basic_handle from another.
- /**
- * This assignment operator moves a handle from one object to another.
- *
- * @param other The other basic_handle object from which the move will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_handle(io_service&) constructor.
- */
- basic_handle& operator=(basic_handle&& other)
- {
- basic_io_object<HandleService>::operator=(
- ASIO_MOVE_CAST(basic_handle)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Get a reference to the lowest layer.
- /**
- * This function returns a reference to the lowest layer in a stack of
- * layers. Since a basic_handle cannot contain any further layers, it simply
- * returns a reference to itself.
- *
- * @return A reference to the lowest layer in the stack of layers. Ownership
- * is not transferred to the caller.
- */
- lowest_layer_type& lowest_layer()
- {
- return *this;
- }
-
- /// Get a const reference to the lowest layer.
- /**
- * This function returns a const reference to the lowest layer in a stack of
- * layers. Since a basic_handle cannot contain any further layers, it simply
- * returns a reference to itself.
- *
- * @return A const reference to the lowest layer in the stack of layers.
- * Ownership is not transferred to the caller.
- */
- const lowest_layer_type& lowest_layer() const
- {
- return *this;
- }
-
- /// Assign an existing native handle to the handle.
- /*
- * This function opens the handle to hold an existing native handle.
- *
- * @param handle A native handle.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void assign(const native_handle_type& handle)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(), handle, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
- /// Assign an existing native handle to the handle.
- /*
- * This function opens the handle to hold an existing native handle.
- *
- * @param handle A native handle.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code assign(const native_handle_type& handle,
- asio::error_code& ec)
- {
- return this->get_service().assign(this->get_implementation(), handle, ec);
- }
-
- /// Determine whether the handle is open.
- bool is_open() const
- {
- return this->get_service().is_open(this->get_implementation());
- }
-
- /// Close the handle.
- /**
- * This function is used to close the handle. Any asynchronous read or write
- * operations will be cancelled immediately, and will complete with the
- * asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void close()
- {
- asio::error_code ec;
- this->get_service().close(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "close");
- }
-
- /// Close the handle.
- /**
- * This function is used to close the handle. Any asynchronous read or write
- * operations will be cancelled immediately, and will complete with the
- * asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code close(asio::error_code& ec)
- {
- return this->get_service().close(this->get_implementation(), ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native handle representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * handle. This is intended to allow access to native handle functionality
- * that is not otherwise provided.
- */
- native_type native()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Get the native handle representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * handle. This is intended to allow access to native handle functionality
- * that is not otherwise provided.
- */
- native_handle_type native_handle()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Cancel all asynchronous operations associated with the handle.
- /**
- * This function causes all outstanding asynchronous read or write operations
- * to finish immediately, and the handlers for cancelled operations will be
- * passed the asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void cancel()
- {
- asio::error_code ec;
- this->get_service().cancel(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "cancel");
- }
-
- /// Cancel all asynchronous operations associated with the handle.
- /**
- * This function causes all outstanding asynchronous read or write operations
- * to finish immediately, and the handlers for cancelled operations will be
- * passed the asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code cancel(asio::error_code& ec)
- {
- return this->get_service().cancel(this->get_implementation(), ec);
- }
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~basic_handle()
- {
- }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
- // || defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
- // || defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_object_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_object_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_object_handle.hpp
deleted file mode 100644
index d8dcae7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_object_handle.hpp
+++ /dev/null
@@ -1,178 +0,0 @@
-//
-// windows/basic_object_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// 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_WINDOWS_BASIC_OBJECT_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_OBJECT_HANDLE_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_HAS_WINDOWS_OBJECT_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/object_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides object-oriented handle functionality.
-/**
- * The windows::basic_object_handle class template provides asynchronous and
- * blocking object-oriented handle functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename ObjectHandleService = object_handle_service>
-class basic_object_handle
- : public basic_handle<ObjectHandleService>
-{
-public:
- /// The native representation of a handle.
- typedef typename ObjectHandleService::native_handle_type native_handle_type;
-
- /// Construct a basic_object_handle without opening it.
- /**
- * This constructor creates an object handle without opening it.
- *
- * @param io_service The io_service object that the object handle will use to
- * dispatch handlers for any asynchronous operations performed on the handle.
- */
- explicit basic_object_handle(asio::io_service& io_service)
- : basic_handle<ObjectHandleService>(io_service)
- {
- }
-
- /// Construct a basic_object_handle on an existing native handle.
- /**
- * This constructor creates an object handle object to hold an existing native
- * handle.
- *
- * @param io_service The io_service object that the object handle will use to
- * dispatch handlers for any asynchronous operations performed on the handle.
- *
- * @param native_handle The new underlying handle implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_object_handle(asio::io_service& io_service,
- const native_handle_type& native_handle)
- : basic_handle<ObjectHandleService>(io_service, native_handle)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_object_handle from another.
- /**
- * This constructor moves an object handle from one object to another.
- *
- * @param other The other basic_object_handle object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_object_handle(io_service&) constructor.
- */
- basic_object_handle(basic_object_handle&& other)
- : basic_handle<ObjectHandleService>(
- ASIO_MOVE_CAST(basic_object_handle)(other))
- {
- }
-
- /// Move-assign a basic_object_handle from another.
- /**
- * This assignment operator moves an object handle from one object to another.
- *
- * @param other The other basic_object_handle object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_object_handle(io_service&) constructor.
- */
- basic_object_handle& operator=(basic_object_handle&& other)
- {
- basic_handle<ObjectHandleService>::operator=(
- ASIO_MOVE_CAST(basic_object_handle)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Perform a blocking wait on the object handle.
- /**
- * This function is used to wait for the object handle to be set to the
- * signalled state. This function blocks and does not return until the object
- * handle has been set to the signalled state.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void wait()
- {
- asio::error_code ec;
- this->get_service().wait(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "wait");
- }
-
- /// Perform a blocking wait on the object handle.
- /**
- * This function is used to wait for the object handle to be set to the
- * signalled state. This function blocks and does not return until the object
- * handle has been set to the signalled state.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- void wait(asio::error_code& ec)
- {
- this->get_service().wait(this->get_implementation(), ec);
- }
-
- /// Start an asynchronous wait on the object handle.
- /**
- * This function is be used to initiate an asynchronous wait against the
- * object handle. It always returns immediately.
- *
- * @param handler The handler to be called when the object handle is set to
- * the signalled state. Copies will be made of the handler as required. The
- * function signature of the handler must be:
- * @code void handler(
- * const asio::error_code& error // Result of operation.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename WaitHandler>
- ASIO_INITFN_RESULT_TYPE(WaitHandler,
- void (asio::error_code))
- async_wait(ASIO_MOVE_ARG(WaitHandler) handler)
- {
- return this->get_service().async_wait(this->get_implementation(),
- ASIO_MOVE_CAST(WaitHandler)(handler));
- }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_OBJECT_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_random_access_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_random_access_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_random_access_handle.hpp
deleted file mode 100644
index 4ef9874..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_random_access_handle.hpp
+++ /dev/null
@@ -1,376 +0,0 @@
-//
-// windows/basic_random_access_handle.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_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_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_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/random_access_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides random-access handle functionality.
-/**
- * The windows::basic_random_access_handle class template provides asynchronous
- * and blocking random-access handle functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename RandomAccessHandleService = random_access_handle_service>
-class basic_random_access_handle
- : public basic_handle<RandomAccessHandleService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// handle.
- typedef typename RandomAccessHandleService::native_handle_type native_type;
-
- /// The native representation of a handle.
- typedef typename RandomAccessHandleService::native_handle_type
- native_handle_type;
-
- /// Construct a basic_random_access_handle without opening it.
- /**
- * This constructor creates a random-access handle without opening it. The
- * handle needs to be opened before data can be written to or read from it.
- *
- * @param io_service The io_service object that the random-access handle will
- * use to dispatch handlers for any asynchronous operations performed on the
- * handle.
- */
- explicit basic_random_access_handle(asio::io_service& io_service)
- : basic_handle<RandomAccessHandleService>(io_service)
- {
- }
-
- /// Construct a basic_random_access_handle on an existing native handle.
- /**
- * This constructor creates a random-access handle object to hold an existing
- * native handle.
- *
- * @param io_service The io_service object that the random-access handle will
- * use to dispatch handlers for any asynchronous operations performed on the
- * handle.
- *
- * @param handle The new underlying handle implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_random_access_handle(asio::io_service& io_service,
- const native_handle_type& handle)
- : basic_handle<RandomAccessHandleService>(io_service, handle)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_random_access_handle from another.
- /**
- * This constructor moves a random-access handle from one object to another.
- *
- * @param other The other basic_random_access_handle object from which the
- * move will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_random_access_handle(io_service&)
- * constructor.
- */
- basic_random_access_handle(basic_random_access_handle&& other)
- : basic_handle<RandomAccessHandleService>(
- ASIO_MOVE_CAST(basic_random_access_handle)(other))
- {
- }
-
- /// Move-assign a basic_random_access_handle from another.
- /**
- * This assignment operator moves a random-access handle from one object to
- * another.
- *
- * @param other The other basic_random_access_handle object from which the
- * move will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_random_access_handle(io_service&)
- * constructor.
- */
- basic_random_access_handle& operator=(basic_random_access_handle&& other)
- {
- basic_handle<RandomAccessHandleService>::operator=(
- ASIO_MOVE_CAST(basic_random_access_handle)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Write some data to the handle at the specified offset.
- /**
- * This function is used to write data to the random-access handle. The
- * function call will block until one or more bytes of the data has been
- * written successfully, or until an error occurs.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more data buffers to be written to the handle.
- *
- * @returns The number of bytes written.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @note The write_some_at operation may not write all of the data. Consider
- * using the @ref write_at function if you need to ensure that all data is
- * written before the blocking operation completes.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.write_some_at(42, asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t write_some_at(uint64_t offset,
- const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().write_some_at(
- this->get_implementation(), offset, buffers, ec);
- asio::detail::throw_error(ec, "write_some_at");
- return s;
- }
-
- /// Write some data to the handle at the specified offset.
- /**
- * This function is used to write data to the random-access handle. The
- * function call will block until one or more bytes of the data has been
- * written successfully, or until an error occurs.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more data buffers to be written to the handle.
- *
- * @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_at function if you need to ensure that
- * all data is written before the blocking operation completes.
- */
- template <typename ConstBufferSequence>
- std::size_t write_some_at(uint64_t offset,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return this->get_service().write_some_at(
- this->get_implementation(), offset, buffers, ec);
- }
-
- /// Start an asynchronous write at the specified offset.
- /**
- * This function is used to asynchronously write data to the random-access
- * handle. The function call always returns immediately.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more data buffers to be written to the handle.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The write operation may not transmit all of the data to the peer.
- * Consider using the @ref async_write_at function if you need to ensure that
- * all data is written before the asynchronous operation completes.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.async_write_some_at(42, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some_at(uint64_t offset,
- const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_write_some_at(this->get_implementation(),
- offset, buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Read some data from the handle at the specified offset.
- /**
- * This function is used to read data from the random-access handle. The
- * function call will block until one or more bytes of data has been read
- * successfully, or until an error occurs.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read.
- *
- * @returns The number of bytes read.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @note The read_some operation may not read all of the requested number of
- * bytes. Consider using the @ref read_at function if you need to ensure that
- * the requested amount of data is read before the blocking operation
- * completes.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.read_some_at(42, asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t read_some_at(uint64_t offset,
- const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().read_some_at(
- this->get_implementation(), offset, buffers, ec);
- asio::detail::throw_error(ec, "read_some_at");
- return s;
- }
-
- /// Read some data from the handle at the specified offset.
- /**
- * This function is used to read data from the random-access handle. The
- * function call will block until one or more bytes of data has been read
- * successfully, or until an error occurs.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more 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_at 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_at(uint64_t offset,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return this->get_service().read_some_at(
- this->get_implementation(), offset, buffers, ec);
- }
-
- /// Start an asynchronous read at the specified offset.
- /**
- * This function is used to asynchronously read data from the random-access
- * handle. The function call always returns immediately.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The read operation may not read all of the requested number of bytes.
- * Consider using the @ref async_read_at function if you need to ensure that
- * the requested amount of data is read before the asynchronous operation
- * completes.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.async_read_some_at(42, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some_at(uint64_t offset,
- const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_read_some_at(this->get_implementation(),
- offset, buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_stream_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_stream_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_stream_handle.hpp
deleted file mode 100644
index 466b307..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/basic_stream_handle.hpp
+++ /dev/null
@@ -1,359 +0,0 @@
-//
-// windows/basic_stream_handle.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_WINDOWS_BASIC_STREAM_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_STREAM_HANDLE_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_HAS_WINDOWS_STREAM_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/stream_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides stream-oriented handle functionality.
-/**
- * The windows::basic_stream_handle class template provides asynchronous and
- * blocking stream-oriented handle functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename StreamHandleService = stream_handle_service>
-class basic_stream_handle
- : public basic_handle<StreamHandleService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// handle.
- typedef typename StreamHandleService::native_handle_type native_type;
-
- /// The native representation of a handle.
- typedef typename StreamHandleService::native_handle_type native_handle_type;
-
- /// Construct a basic_stream_handle without opening it.
- /**
- * This constructor creates a stream handle without opening it. The handle
- * needs to be opened and then connected or accepted before data can be sent
- * or received on it.
- *
- * @param io_service The io_service object that the stream handle will use to
- * dispatch handlers for any asynchronous operations performed on the handle.
- */
- explicit basic_stream_handle(asio::io_service& io_service)
- : basic_handle<StreamHandleService>(io_service)
- {
- }
-
- /// Construct a basic_stream_handle on an existing native handle.
- /**
- * This constructor creates a stream handle object to hold an existing native
- * handle.
- *
- * @param io_service The io_service object that the stream handle will use to
- * dispatch handlers for any asynchronous operations performed on the handle.
- *
- * @param handle The new underlying handle implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_stream_handle(asio::io_service& io_service,
- const native_handle_type& handle)
- : basic_handle<StreamHandleService>(io_service, handle)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_stream_handle from another.
- /**
- * This constructor moves a stream handle from one object to another.
- *
- * @param other The other basic_stream_handle object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_handle(io_service&) constructor.
- */
- basic_stream_handle(basic_stream_handle&& other)
- : basic_handle<StreamHandleService>(
- ASIO_MOVE_CAST(basic_stream_handle)(other))
- {
- }
-
- /// Move-assign a basic_stream_handle from another.
- /**
- * This assignment operator moves a stream handle from one object to
- * another.
- *
- * @param other The other basic_stream_handle object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_handle(io_service&) constructor.
- */
- basic_stream_handle& operator=(basic_stream_handle&& other)
- {
- basic_handle<StreamHandleService>::operator=(
- ASIO_MOVE_CAST(basic_stream_handle)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Write some data to the handle.
- /**
- * This function is used to write data to the stream handle. The function call
- * will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the handle.
- *
- * @returns The number of bytes written.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.write_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().write_some(
- this->get_implementation(), buffers, ec);
- asio::detail::throw_error(ec, "write_some");
- return s;
- }
-
- /// Write some data to the handle.
- /**
- * This function is used to write data to the stream handle. The function call
- * will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the handle.
- *
- * @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 this->get_service().write_some(
- this->get_implementation(), buffers, ec);
- }
-
- /// Start an asynchronous write.
- /**
- * This function is used to asynchronously write data to the stream handle.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be written to the handle.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The write 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 asynchronous operation completes.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.async_write_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_write_some(this->get_implementation(),
- buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Read some data from the handle.
- /**
- * This function is used to read data from the stream handle. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be read.
- *
- * @returns The number of bytes read.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.read_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().read_some(
- this->get_implementation(), buffers, ec);
- asio::detail::throw_error(ec, "read_some");
- return s;
- }
-
- /// Read some data from the handle.
- /**
- * This function is used to read data from the stream handle. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more 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 this->get_service().read_some(
- this->get_implementation(), buffers, ec);
- }
-
- /// Start an asynchronous read.
- /**
- * This function is used to asynchronously read data from the stream handle.
- * The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be read.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The read 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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * handle.async_read_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_read_some(this->get_implementation(),
- buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle.hpp
deleted file mode 100644
index 8669ded..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// windows/object_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// 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_WINDOWS_OBJECT_HANDLE_HPP
-#define ASIO_WINDOWS_OBJECT_HANDLE_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_HAS_WINDOWS_OBJECT_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/windows/basic_object_handle.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Typedef for the typical usage of an object handle.
-typedef basic_object_handle<> object_handle;
-
-} // namespace windows
-} // namespace asio
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_OBJECT_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle_service.hpp
deleted file mode 100644
index 3a36458..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/object_handle_service.hpp
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-// windows/object_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// 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_WINDOWS_OBJECT_HANDLE_SERVICE_HPP
-#define ASIO_WINDOWS_OBJECT_HANDLE_SERVICE_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_HAS_WINDOWS_OBJECT_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/async_result.hpp"
-#include "asio/detail/win_object_handle_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Default service implementation for an object handle.
-class object_handle_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<object_handle_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
-private:
- // The type of the platform-specific implementation.
- typedef detail::win_object_handle_service service_impl_type;
-
-public:
- /// The type of an object handle implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef service_impl_type::implementation_type implementation_type;
-#endif
-
- /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new object handle service for the specified io_service.
- explicit object_handle_service(asio::io_service& io_service)
- : asio::detail::service_base<object_handle_service>(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new object handle implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new object handle implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another object handle implementation.
- void move_assign(implementation_type& impl,
- object_handle_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy an object handle implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Assign an existing native handle to an object handle.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
- {
- return service_impl_.assign(impl, handle, ec);
- }
-
- /// Determine whether the handle is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close an object handle implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// Get the native handle implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the handle.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- // Wait for a signaled state.
- void wait(implementation_type& impl, asio::error_code& ec)
- {
- service_impl_.wait(impl, ec);
- }
-
- /// Start an asynchronous wait.
- template <typename WaitHandler>
- ASIO_INITFN_RESULT_TYPE(WaitHandler,
- void (asio::error_code))
- async_wait(implementation_type& impl,
- ASIO_MOVE_ARG(WaitHandler) handler)
- {
- asio::detail::async_result_init<
- WaitHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(WaitHandler)(handler));
-
- service_impl_.async_wait(impl, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_OBJECT_HANDLE_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/overlapped_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/overlapped_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/overlapped_ptr.hpp
deleted file mode 100644
index 3879a5b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/overlapped_ptr.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// windows/overlapped_ptr.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_WINDOWS_OVERLAPPED_PTR_HPP
-#define ASIO_WINDOWS_OVERLAPPED_PTR_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_HAS_WINDOWS_OVERLAPPED_PTR) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/win_iocp_overlapped_ptr.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
-/**
- * A special-purpose smart pointer used to wrap an application handler so that
- * it can be passed as the LPOVERLAPPED argument to overlapped I/O functions.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class overlapped_ptr
- : private noncopyable
-{
-public:
- /// Construct an empty overlapped_ptr.
- overlapped_ptr()
- : impl_()
- {
- }
-
- /// Construct an overlapped_ptr to contain the specified handler.
- template <typename Handler>
- explicit overlapped_ptr(asio::io_service& io_service,
- ASIO_MOVE_ARG(Handler) handler)
- : impl_(io_service, ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- /// Destructor automatically frees the OVERLAPPED object unless released.
- ~overlapped_ptr()
- {
- }
-
- /// Reset to empty.
- void reset()
- {
- impl_.reset();
- }
-
- /// Reset to contain the specified handler, freeing any current OVERLAPPED
- /// object.
- template <typename Handler>
- void reset(asio::io_service& io_service,
- ASIO_MOVE_ARG(Handler) handler)
- {
- impl_.reset(io_service, ASIO_MOVE_CAST(Handler)(handler));
- }
-
- /// Get the contained OVERLAPPED object.
- OVERLAPPED* get()
- {
- return impl_.get();
- }
-
- /// Get the contained OVERLAPPED object.
- const OVERLAPPED* get() const
- {
- return impl_.get();
- }
-
- /// Release ownership of the OVERLAPPED object.
- OVERLAPPED* release()
- {
- return impl_.release();
- }
-
- /// Post completion notification for overlapped operation. Releases ownership.
- void complete(const asio::error_code& ec,
- std::size_t bytes_transferred)
- {
- impl_.complete(ec, bytes_transferred);
- }
-
-private:
- detail::win_iocp_overlapped_ptr impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_OVERLAPPED_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle.hpp
deleted file mode 100644
index f49ad5b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// windows/random_access_handle.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_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
-#define ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_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_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/windows/basic_random_access_handle.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Typedef for the typical usage of a random-access handle.
-typedef basic_random_access_handle<> random_access_handle;
-
-} // namespace windows
-} // namespace asio
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle_service.hpp
deleted file mode 100644
index 10da952..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/random_access_handle_service.hpp
+++ /dev/null
@@ -1,220 +0,0 @@
-//
-// windows/random_access_handle_service.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_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
-#define ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_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_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/win_iocp_handle_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Default service implementation for a random-access handle.
-class random_access_handle_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<random_access_handle_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
-private:
- // The type of the platform-specific implementation.
- typedef detail::win_iocp_handle_service service_impl_type;
-
-public:
- /// The type of a random-access handle implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new random-access handle service for the specified io_service.
- explicit random_access_handle_service(asio::io_service& io_service)
- : asio::detail::service_base<
- random_access_handle_service>(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new random-access handle implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new random-access handle implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another random-access handle implementation.
- void move_assign(implementation_type& impl,
- random_access_handle_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a random-access handle implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Assign an existing native handle to a random-access handle.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
- {
- return service_impl_.assign(impl, handle, ec);
- }
-
- /// Determine whether the handle is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a random-access handle implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native handle implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native handle implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the handle.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Write the given data at the specified offset.
- template <typename ConstBufferSequence>
- std::size_t write_some_at(implementation_type& impl, uint64_t offset,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.write_some_at(impl, offset, buffers, ec);
- }
-
- /// Start an asynchronous write at the specified offset.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some_at(implementation_type& impl,
- uint64_t offset, const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- asio::detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_write_some_at(impl, offset, buffers, init.handler);
-
- return init.result.get();
- }
-
- /// Read some data from the specified offset.
- template <typename MutableBufferSequence>
- std::size_t read_some_at(implementation_type& impl, uint64_t offset,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.read_some_at(impl, offset, buffers, ec);
- }
-
- /// Start an asynchronous read at the specified offset.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some_at(implementation_type& impl,
- uint64_t offset, const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- asio::detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_read_some_at(impl, offset, buffers, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle.hpp
deleted file mode 100644
index d563b09..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// windows/stream_handle.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_WINDOWS_STREAM_HANDLE_HPP
-#define ASIO_WINDOWS_STREAM_HANDLE_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_HAS_WINDOWS_STREAM_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/windows/basic_stream_handle.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Typedef for the typical usage of a stream-oriented handle.
-typedef basic_stream_handle<> stream_handle;
-
-} // namespace windows
-} // namespace asio
-
-#endif // defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_STREAM_HANDLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle_service.hpp
deleted file mode 100644
index 9bebd6a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/windows/stream_handle_service.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// windows/stream_handle_service.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_WINDOWS_STREAM_HANDLE_SERVICE_HPP
-#define ASIO_WINDOWS_STREAM_HANDLE_SERVICE_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_HAS_WINDOWS_STREAM_HANDLE) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/win_iocp_handle_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Default service implementation for a stream handle.
-class stream_handle_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<stream_handle_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
-private:
- // The type of the platform-specific implementation.
- typedef detail::win_iocp_handle_service service_impl_type;
-
-public:
- /// The type of a stream handle implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new stream handle service for the specified io_service.
- explicit stream_handle_service(asio::io_service& io_service)
- : asio::detail::service_base<stream_handle_service>(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new stream handle implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new stream handle implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another stream handle implementation.
- void move_assign(implementation_type& impl,
- stream_handle_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a stream handle implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Assign an existing native handle to a stream handle.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
- {
- return service_impl_.assign(impl, handle, ec);
- }
-
- /// Determine whether the handle is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a stream handle implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native handle implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native handle implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the handle.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Write the given data to the stream.
- template <typename ConstBufferSequence>
- std::size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.write_some(impl, buffers, ec);
- }
-
- /// Start an asynchronous write.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- asio::detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_write_some(impl, buffers, init.handler);
-
- return init.result.get();
- }
-
- /// Read some data from the stream.
- template <typename MutableBufferSequence>
- std::size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.read_some(impl, buffers, ec);
- }
-
- /// Start an asynchronous read.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- asio::detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_read_some(impl, buffers, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[17/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_op.hpp
deleted file mode 100644
index 90651f0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_op.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/win_iocp_overlapped_op.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_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_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_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class win_iocp_overlapped_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_overlapped_op);
-
- win_iocp_overlapped_op(Handler& handler)
- : operation(&win_iocp_overlapped_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& ec, std::size_t bytes_transferred)
- {
- // Take ownership of the operation object.
- win_iocp_overlapped_op* o(static_cast<win_iocp_overlapped_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_ptr.hpp
deleted file mode 100644
index 7f816c5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_overlapped_ptr.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-//
-// detail/win_iocp_overlapped_ptr.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_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
-#define ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_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_HAS_IOCP)
-
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/win_iocp_overlapped_op.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
-class win_iocp_overlapped_ptr
- : private noncopyable
-{
-public:
- // Construct an empty win_iocp_overlapped_ptr.
- win_iocp_overlapped_ptr()
- : ptr_(0),
- iocp_service_(0)
- {
- }
-
- // Construct an win_iocp_overlapped_ptr to contain the specified handler.
- template <typename Handler>
- explicit win_iocp_overlapped_ptr(
- asio::io_service& io_service, ASIO_MOVE_ARG(Handler) handler)
- : ptr_(0),
- iocp_service_(0)
- {
- this->reset(io_service, ASIO_MOVE_CAST(Handler)(handler));
- }
-
- // Destructor automatically frees the OVERLAPPED object unless released.
- ~win_iocp_overlapped_ptr()
- {
- reset();
- }
-
- // Reset to empty.
- void reset()
- {
- if (ptr_)
- {
- ptr_->destroy();
- ptr_ = 0;
- iocp_service_->work_finished();
- iocp_service_ = 0;
- }
- }
-
- // Reset to contain the specified handler, freeing any current OVERLAPPED
- // object.
- template <typename Handler>
- void reset(asio::io_service& io_service, Handler handler)
- {
- typedef win_iocp_overlapped_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "io_service",
- &io_service.impl_, "overlapped"));
-
- io_service.impl_.work_started();
- reset();
- ptr_ = p.p;
- p.v = p.p = 0;
- iocp_service_ = &io_service.impl_;
- }
-
- // Get the contained OVERLAPPED object.
- OVERLAPPED* get()
- {
- return ptr_;
- }
-
- // Get the contained OVERLAPPED object.
- const OVERLAPPED* get() const
- {
- return ptr_;
- }
-
- // Release ownership of the OVERLAPPED object.
- OVERLAPPED* release()
- {
- if (ptr_)
- iocp_service_->on_pending(ptr_);
-
- OVERLAPPED* tmp = ptr_;
- ptr_ = 0;
- iocp_service_ = 0;
- return tmp;
- }
-
- // Post completion notification for overlapped operation. Releases ownership.
- void complete(const asio::error_code& ec,
- std::size_t bytes_transferred)
- {
- if (ptr_)
- {
- iocp_service_->on_completion(ptr_, ec,
- static_cast<DWORD>(bytes_transferred));
- ptr_ = 0;
- iocp_service_ = 0;
- }
- }
-
-private:
- win_iocp_operation* ptr_;
- win_iocp_io_service* iocp_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_serial_port_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_serial_port_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_serial_port_service.hpp
deleted file mode 100644
index 86d852c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_serial_port_service.hpp
+++ /dev/null
@@ -1,228 +0,0 @@
-//
-// detail/win_iocp_serial_port_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_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_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#include <string>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/win_iocp_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Extend win_iocp_handle_service to provide serial port support.
-class win_iocp_serial_port_service
-{
-public:
- // The native type of a serial port.
- typedef win_iocp_handle_service::native_handle_type native_handle_type;
-
- // The implementation type of the serial port.
- typedef win_iocp_handle_service::implementation_type implementation_type;
-
- // Constructor.
- ASIO_DECL win_iocp_serial_port_service(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new serial port implementation.
- void construct(implementation_type& impl)
- {
- handle_service_.construct(impl);
- }
-
- // Move-construct a new serial port implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- handle_service_.move_construct(impl, other_impl);
- }
-
- // Move-assign from another serial port implementation.
- void move_assign(implementation_type& impl,
- win_iocp_serial_port_service& other_service,
- implementation_type& other_impl)
- {
- handle_service_.move_assign(impl,
- other_service.handle_service_, other_impl);
- }
-
- // Destroy a serial port implementation.
- void destroy(implementation_type& impl)
- {
- handle_service_.destroy(impl);
- }
-
- // Open the serial port using the specified device name.
- ASIO_DECL asio::error_code open(implementation_type& impl,
- const std::string& device, asio::error_code& ec);
-
- // Assign a native handle to a serial port implementation.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
- {
- return handle_service_.assign(impl, handle, ec);
- }
-
- // Determine whether the serial port is open.
- bool is_open(const implementation_type& impl) const
- {
- return handle_service_.is_open(impl);
- }
-
- // Destroy a serial port implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return handle_service_.close(impl, ec);
- }
-
- // Get the native serial port representation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return handle_service_.native_handle(impl);
- }
-
- // Cancel all operations associated with the handle.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return handle_service_.cancel(impl, ec);
- }
-
- // Set an option on the serial port.
- template <typename SettableSerialPortOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSerialPortOption& option, asio::error_code& ec)
- {
- return do_set_option(impl,
- &win_iocp_serial_port_service::store_option<SettableSerialPortOption>,
- &option, ec);
- }
-
- // Get an option from the serial port.
- template <typename GettableSerialPortOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSerialPortOption& option, asio::error_code& ec) const
- {
- return do_get_option(impl,
- &win_iocp_serial_port_service::load_option<GettableSerialPortOption>,
- &option, ec);
- }
-
- // Send a break sequence to the serial port.
- asio::error_code send_break(implementation_type&,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Write the given data. Returns the number of bytes sent.
- template <typename ConstBufferSequence>
- size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return handle_service_.write_some(impl, buffers, ec);
- }
-
- // Start an asynchronous write. The data being written must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, Handler& handler)
- {
- handle_service_.async_write_some(impl, buffers, handler);
- }
-
- // Read some data. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return handle_service_.read_some(impl, buffers, ec);
- }
-
- // Start an asynchronous read. The buffer for the data being received must be
- // valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, Handler& handler)
- {
- handle_service_.async_read_some(impl, buffers, handler);
- }
-
-private:
- // Function pointer type for storing a serial port option.
- typedef asio::error_code (*store_function_type)(
- const void*, ::DCB&, asio::error_code&);
-
- // Helper function template to store a serial port option.
- template <typename SettableSerialPortOption>
- static asio::error_code store_option(const void* option,
- ::DCB& storage, asio::error_code& ec)
- {
- return static_cast<const SettableSerialPortOption*>(option)->store(
- storage, ec);
- }
-
- // Helper function to set a serial port option.
- ASIO_DECL asio::error_code do_set_option(
- implementation_type& impl, store_function_type store,
- const void* option, asio::error_code& ec);
-
- // Function pointer type for loading a serial port option.
- typedef asio::error_code (*load_function_type)(
- void*, const ::DCB&, asio::error_code&);
-
- // Helper function template to load a serial port option.
- template <typename GettableSerialPortOption>
- static asio::error_code load_option(void* option,
- const ::DCB& storage, asio::error_code& ec)
- {
- return static_cast<GettableSerialPortOption*>(option)->load(storage, ec);
- }
-
- // Helper function to get a serial port option.
- ASIO_DECL asio::error_code do_get_option(
- const implementation_type& impl, load_function_type load,
- void* option, asio::error_code& ec) const;
-
- // The implementation used for initiating asynchronous operations.
- win_iocp_handle_service handle_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_serial_port_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_accept_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_accept_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_accept_op.hpp
deleted file mode 100644
index d0d2e7d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_accept_op.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-//
-// detail/win_iocp_socket_accept_op.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_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/win_iocp_socket_service_base.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Socket, typename Protocol, typename Handler>
-class win_iocp_socket_accept_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_accept_op);
-
- win_iocp_socket_accept_op(win_iocp_socket_service_base& socket_service,
- socket_type socket, Socket& peer, const Protocol& protocol,
- typename Protocol::endpoint* peer_endpoint,
- bool enable_connection_aborted, Handler& handler)
- : operation(&win_iocp_socket_accept_op::do_complete),
- socket_service_(socket_service),
- socket_(socket),
- peer_(peer),
- protocol_(protocol),
- peer_endpoint_(peer_endpoint),
- enable_connection_aborted_(enable_connection_aborted),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- socket_holder& new_socket()
- {
- return new_socket_;
- }
-
- void* output_buffer()
- {
- return output_buffer_;
- }
-
- DWORD address_length()
- {
- return sizeof(sockaddr_storage_type) + 16;
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t /*bytes_transferred*/)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_socket_accept_op* o(static_cast<win_iocp_socket_accept_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- if (owner)
- {
- typename Protocol::endpoint peer_endpoint;
- std::size_t addr_len = peer_endpoint.capacity();
- socket_ops::complete_iocp_accept(o->socket_,
- o->output_buffer(), o->address_length(),
- peer_endpoint.data(), &addr_len,
- o->new_socket_.get(), ec);
-
- // Restart the accept operation if we got the connection_aborted error
- // and the enable_connection_aborted socket option is not set.
- if (ec == asio::error::connection_aborted
- && !o->enable_connection_aborted_)
- {
- o->reset();
- o->socket_service_.restart_accept_op(o->socket_,
- o->new_socket_, o->protocol_.family(),
- o->protocol_.type(), o->protocol_.protocol(),
- o->output_buffer(), o->address_length(), o);
- p.v = p.p = 0;
- return;
- }
-
- // If the socket was successfully accepted, transfer ownership of the
- // socket to the peer object.
- if (!ec)
- {
- o->peer_.assign(o->protocol_,
- typename Socket::native_handle_type(
- o->new_socket_.get(), peer_endpoint), ec);
- if (!ec)
- o->new_socket_.release();
- }
-
- // Pass endpoint back to caller.
- if (o->peer_endpoint_)
- *o->peer_endpoint_ = peer_endpoint;
- }
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder1<Handler, asio::error_code>
- handler(o->handler_, ec);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- win_iocp_socket_service_base& socket_service_;
- socket_type socket_;
- socket_holder new_socket_;
- Socket& peer_;
- Protocol protocol_;
- typename Protocol::endpoint* peer_endpoint_;
- unsigned char output_buffer_[(sizeof(sockaddr_storage_type) + 16) * 2];
- bool enable_connection_aborted_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_connect_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_connect_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_connect_op.hpp
deleted file mode 100644
index 4472d25..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_connect_op.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// detail/win_iocp_socket_connect_op.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_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_socket_connect_op_base : public reactor_op
-{
-public:
- win_iocp_socket_connect_op_base(socket_type socket, func_type complete_func)
- : reactor_op(&win_iocp_socket_connect_op_base::do_perform, complete_func),
- socket_(socket),
- connect_ex_(false)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- win_iocp_socket_connect_op_base* o(
- static_cast<win_iocp_socket_connect_op_base*>(base));
-
- return socket_ops::non_blocking_connect(o->socket_, o->ec_);
- }
-
- socket_type socket_;
- bool connect_ex_;
-};
-
-template <typename Handler>
-class win_iocp_socket_connect_op : public win_iocp_socket_connect_op_base
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_connect_op);
-
- win_iocp_socket_connect_op(socket_type socket, Handler& handler)
- : win_iocp_socket_connect_op_base(socket,
- &win_iocp_socket_connect_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t /*bytes_transferred*/)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_socket_connect_op* o(
- static_cast<win_iocp_socket_connect_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- if (owner)
- {
- if (o->connect_ex_)
- socket_ops::complete_iocp_connect(o->socket_, ec);
- else
- ec = o->ec_;
- }
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder1<Handler, asio::error_code>
- handler(o->handler_, ec);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recv_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recv_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recv_op.hpp
deleted file mode 100644
index ebd2131..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recv_op.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// detail/win_iocp_socket_recv_op.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_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class win_iocp_socket_recv_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recv_op);
-
- win_iocp_socket_recv_op(socket_ops::state_type state,
- socket_ops::weak_cancel_token_type cancel_token,
- const MutableBufferSequence& buffers, Handler& handler)
- : operation(&win_iocp_socket_recv_op::do_complete),
- state_(state),
- cancel_token_(cancel_token),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t bytes_transferred)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_socket_recv_op* o(static_cast<win_iocp_socket_recv_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- // Check whether buffers are still valid.
- if (owner)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- socket_ops::complete_iocp_recv(o->state_, o->cancel_token_,
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::all_empty(o->buffers_),
- ec, bytes_transferred);
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- socket_ops::state_type state_;
- socket_ops::weak_cancel_token_type cancel_token_;
- MutableBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvfrom_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvfrom_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvfrom_op.hpp
deleted file mode 100644
index 8a20db1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvfrom_op.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// detail/win_iocp_socket_recvfrom_op.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_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Endpoint, typename Handler>
-class win_iocp_socket_recvfrom_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recvfrom_op);
-
- win_iocp_socket_recvfrom_op(Endpoint& endpoint,
- socket_ops::weak_cancel_token_type cancel_token,
- const MutableBufferSequence& buffers, Handler& handler)
- : operation(&win_iocp_socket_recvfrom_op::do_complete),
- endpoint_(endpoint),
- endpoint_size_(static_cast<int>(endpoint.capacity())),
- cancel_token_(cancel_token),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- int& endpoint_size()
- {
- return endpoint_size_;
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t bytes_transferred)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_socket_recvfrom_op* o(
- static_cast<win_iocp_socket_recvfrom_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- // Check whether buffers are still valid.
- if (owner)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- socket_ops::complete_iocp_recvfrom(o->cancel_token_, ec);
-
- // Record the size of the endpoint returned by the operation.
- o->endpoint_.resize(o->endpoint_size_);
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Endpoint& endpoint_;
- int endpoint_size_;
- socket_ops::weak_cancel_token_type cancel_token_;
- MutableBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvmsg_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvmsg_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvmsg_op.hpp
deleted file mode 100644
index 1699b28..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_recvmsg_op.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// detail/win_iocp_socket_recvmsg_op.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_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class win_iocp_socket_recvmsg_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recvmsg_op);
-
- win_iocp_socket_recvmsg_op(
- socket_ops::weak_cancel_token_type cancel_token,
- const MutableBufferSequence& buffers,
- socket_base::message_flags& out_flags, Handler& handler)
- : operation(&win_iocp_socket_recvmsg_op::do_complete),
- cancel_token_(cancel_token),
- buffers_(buffers),
- out_flags_(out_flags),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t bytes_transferred)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_socket_recvmsg_op* o(
- static_cast<win_iocp_socket_recvmsg_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- // Check whether buffers are still valid.
- if (owner)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- socket_ops::complete_iocp_recvmsg(o->cancel_token_, ec);
- o->out_flags_ = 0;
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- socket_ops::weak_cancel_token_type cancel_token_;
- MutableBufferSequence buffers_;
- socket_base::message_flags& out_flags_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_send_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_send_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_send_op.hpp
deleted file mode 100644
index 455de90..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_send_op.hpp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// detail/win_iocp_socket_send_op.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_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Handler>
-class win_iocp_socket_send_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_send_op);
-
- win_iocp_socket_send_op(socket_ops::weak_cancel_token_type cancel_token,
- const ConstBufferSequence& buffers, Handler& handler)
- : operation(&win_iocp_socket_send_op::do_complete),
- cancel_token_(cancel_token),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t bytes_transferred)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_socket_send_op* o(static_cast<win_iocp_socket_send_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- // Check whether buffers are still valid.
- if (owner)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- socket_ops::complete_iocp_send(o->cancel_token_, ec);
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- socket_ops::weak_cancel_token_type cancel_token_;
- ConstBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service.hpp
deleted file mode 100644
index a3c5dec..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service.hpp
+++ /dev/null
@@ -1,525 +0,0 @@
-//
-// detail/win_iocp_socket_service.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_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_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_HAS_IOCP)
-
-#include <cstring>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-#include "asio/detail/win_iocp_null_buffers_op.hpp"
-#include "asio/detail/win_iocp_socket_accept_op.hpp"
-#include "asio/detail/win_iocp_socket_connect_op.hpp"
-#include "asio/detail/win_iocp_socket_recvfrom_op.hpp"
-#include "asio/detail/win_iocp_socket_send_op.hpp"
-#include "asio/detail/win_iocp_socket_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class win_iocp_socket_service : public win_iocp_socket_service_base
-{
-public:
- // The protocol type.
- typedef Protocol protocol_type;
-
- // The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- // The native type of a socket.
- class native_handle_type
- {
- public:
- native_handle_type(socket_type s)
- : socket_(s),
- have_remote_endpoint_(false)
- {
- }
-
- native_handle_type(socket_type s, const endpoint_type& ep)
- : socket_(s),
- have_remote_endpoint_(true),
- remote_endpoint_(ep)
- {
- }
-
- void operator=(socket_type s)
- {
- socket_ = s;
- have_remote_endpoint_ = false;
- remote_endpoint_ = endpoint_type();
- }
-
- operator socket_type() const
- {
- return socket_;
- }
-
- bool have_remote_endpoint() const
- {
- return have_remote_endpoint_;
- }
-
- endpoint_type remote_endpoint() const
- {
- return remote_endpoint_;
- }
-
- private:
- socket_type socket_;
- bool have_remote_endpoint_;
- endpoint_type remote_endpoint_;
- };
-
- // The implementation type of the socket.
- struct implementation_type :
- win_iocp_socket_service_base::base_implementation_type
- {
- // Default constructor.
- implementation_type()
- : protocol_(endpoint_type().protocol()),
- have_remote_endpoint_(false),
- remote_endpoint_()
- {
- }
-
- // The protocol associated with the socket.
- protocol_type protocol_;
-
- // Whether we have a cached remote endpoint.
- bool have_remote_endpoint_;
-
- // A cached remote endpoint.
- endpoint_type remote_endpoint_;
- };
-
- // Constructor.
- win_iocp_socket_service(asio::io_service& io_service)
- : win_iocp_socket_service_base(io_service)
- {
- }
-
- // Move-construct a new socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- this->base_move_construct(impl, other_impl);
-
- impl.protocol_ = other_impl.protocol_;
- other_impl.protocol_ = endpoint_type().protocol();
-
- impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_;
- other_impl.have_remote_endpoint_ = false;
-
- impl.remote_endpoint_ = other_impl.remote_endpoint_;
- other_impl.remote_endpoint_ = endpoint_type();
- }
-
- // Move-assign from another socket implementation.
- void move_assign(implementation_type& impl,
- win_iocp_socket_service_base& other_service,
- implementation_type& other_impl)
- {
- this->base_move_assign(impl, other_service, other_impl);
-
- impl.protocol_ = other_impl.protocol_;
- other_impl.protocol_ = endpoint_type().protocol();
-
- impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_;
- other_impl.have_remote_endpoint_ = false;
-
- impl.remote_endpoint_ = other_impl.remote_endpoint_;
- other_impl.remote_endpoint_ = endpoint_type();
- }
-
- // Move-construct a new socket implementation from another protocol type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename win_iocp_socket_service<
- Protocol1>::implementation_type& other_impl)
- {
- this->base_move_construct(impl, other_impl);
-
- impl.protocol_ = protocol_type(other_impl.protocol_);
- other_impl.protocol_ = typename Protocol1::endpoint().protocol();
-
- impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_;
- other_impl.have_remote_endpoint_ = false;
-
- impl.remote_endpoint_ = other_impl.remote_endpoint_;
- other_impl.remote_endpoint_ = typename Protocol1::endpoint();
- }
-
- // Open a new socket implementation.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (!do_open(impl, protocol.family(),
- protocol.type(), protocol.protocol(), ec))
- {
- impl.protocol_ = protocol;
- impl.have_remote_endpoint_ = false;
- impl.remote_endpoint_ = endpoint_type();
- }
- return ec;
- }
-
- // Assign a native socket to a socket implementation.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- if (!do_assign(impl, protocol.type(), native_socket, ec))
- {
- impl.protocol_ = protocol;
- impl.have_remote_endpoint_ = native_socket.have_remote_endpoint();
- impl.remote_endpoint_ = native_socket.remote_endpoint();
- }
- return ec;
- }
-
- // Get the native socket representation.
- native_handle_type native_handle(implementation_type& impl)
- {
- if (impl.have_remote_endpoint_)
- return native_handle_type(impl.socket_, impl.remote_endpoint_);
- return native_handle_type(impl.socket_);
- }
-
- // Bind the socket to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec);
- return ec;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code set_option(implementation_type& impl,
- const Option& option, asio::error_code& ec)
- {
- socket_ops::setsockopt(impl.socket_, impl.state_,
- option.level(impl.protocol_), option.name(impl.protocol_),
- option.data(impl.protocol_), option.size(impl.protocol_), ec);
- return ec;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code get_option(const implementation_type& impl,
- Option& option, asio::error_code& ec) const
- {
- std::size_t size = option.size(impl.protocol_);
- socket_ops::getsockopt(impl.socket_, impl.state_,
- option.level(impl.protocol_), option.name(impl.protocol_),
- option.data(impl.protocol_), &size, ec);
- if (!ec)
- option.resize(impl.protocol_, size);
- return ec;
- }
-
- // Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- endpoint_type endpoint;
- std::size_t addr_len = endpoint.capacity();
- if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec))
- return endpoint_type();
- endpoint.resize(addr_len);
- return endpoint;
- }
-
- // Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- endpoint_type endpoint = impl.remote_endpoint_;
- std::size_t addr_len = endpoint.capacity();
- if (socket_ops::getpeername(impl.socket_, endpoint.data(),
- &addr_len, impl.have_remote_endpoint_, ec))
- return endpoint_type();
- endpoint.resize(addr_len);
- return endpoint;
- }
-
- // Send a datagram to the specified endpoint. Returns the number of bytes
- // sent.
- template <typename ConstBufferSequence>
- size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- return socket_ops::sync_sendto(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), flags,
- destination.data(), destination.size(), ec);
- }
-
- // Wait until data can be sent without blocking.
- size_t send_to(implementation_type& impl, const null_buffers&,
- const endpoint_type&, socket_base::message_flags,
- asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send_to(implementation_type& impl,
- const ConstBufferSequence& buffers, const endpoint_type& destination,
- socket_base::message_flags flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_send_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send_to"));
-
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- start_send_to_op(impl, bufs.buffers(), bufs.count(),
- destination.data(), static_cast<int>(destination.size()),
- flags, p.p);
- p.v = p.p = 0;
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send_to(implementation_type& impl, const null_buffers&,
- const endpoint_type&, socket_base::message_flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_send_to(null_buffers)"));
-
- start_reactor_op(impl, reactor::write_op, p.p);
- p.v = p.p = 0;
- }
-
- // Receive a datagram with the endpoint of the sender. Returns the number of
- // bytes received.
- template <typename MutableBufferSequence>
- size_t receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- std::size_t addr_len = sender_endpoint.capacity();
- std::size_t bytes_recvd = socket_ops::sync_recvfrom(
- impl.socket_, impl.state_, bufs.buffers(), bufs.count(),
- flags, sender_endpoint.data(), &addr_len, ec);
-
- if (!ec)
- sender_endpoint.resize(addr_len);
-
- return bytes_recvd;
- }
-
- // Wait until data can be received without blocking.
- size_t receive_from(implementation_type& impl,
- const null_buffers&, endpoint_type& sender_endpoint,
- socket_base::message_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
- // Reset endpoint since it can be given no sensible value at this time.
- sender_endpoint = endpoint_type();
-
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received and
- // the sender_endpoint object must both be valid for the lifetime of the
- // asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers, endpoint_type& sender_endp,
- socket_base::message_flags flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_recvfrom_op<
- MutableBufferSequence, endpoint_type, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(sender_endp, impl.cancel_token_, buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive_from"));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- start_receive_from_op(impl, bufs.buffers(), bufs.count(),
- sender_endp.data(), flags, &p.p->endpoint_size(), p.p);
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive_from(implementation_type& impl,
- const null_buffers&, endpoint_type& sender_endpoint,
- socket_base::message_flags flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl,
- "async_receive_from(null_buffers)"));
-
- // Reset endpoint since it can be given no sensible value at this time.
- sender_endpoint = endpoint_type();
-
- start_null_buffers_receive_op(impl, flags, p.p);
- p.v = p.p = 0;
- }
-
- // Accept a new connection.
- template <typename Socket>
- asio::error_code accept(implementation_type& impl, Socket& peer,
- endpoint_type* peer_endpoint, asio::error_code& ec)
- {
- // We cannot accept a socket that is already open.
- if (peer.is_open())
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- std::size_t addr_len = peer_endpoint ? peer_endpoint->capacity() : 0;
- socket_holder new_socket(socket_ops::sync_accept(impl.socket_,
- impl.state_, peer_endpoint ? peer_endpoint->data() : 0,
- peer_endpoint ? &addr_len : 0, ec));
-
- // On success, assign new connection to peer socket object.
- if (new_socket.get() != invalid_socket)
- {
- if (peer_endpoint)
- peer_endpoint->resize(addr_len);
- if (!peer.assign(impl.protocol_, new_socket.get(), ec))
- new_socket.release();
- }
-
- return ec;
- }
-
- // Start an asynchronous accept. The peer and peer_endpoint objects
- // must be valid until the accept's handler is invoked.
- template <typename Socket, typename Handler>
- void async_accept(implementation_type& impl, Socket& peer,
- endpoint_type* peer_endpoint, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_accept_op<Socket, protocol_type, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- bool enable_connection_aborted =
- (impl.state_ & socket_ops::enable_connection_aborted) != 0;
- p.p = new (p.v) op(*this, impl.socket_, peer, impl.protocol_,
- peer_endpoint, enable_connection_aborted, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_accept"));
-
- start_accept_op(impl, peer.is_open(), p.p->new_socket(),
- impl.protocol_.family(), impl.protocol_.type(),
- impl.protocol_.protocol(), p.p->output_buffer(),
- p.p->address_length(), p.p);
- p.v = p.p = 0;
- }
-
- // Connect the socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- socket_ops::sync_connect(impl.socket_,
- peer_endpoint.data(), peer_endpoint.size(), ec);
- return ec;
- }
-
- // Start an asynchronous connect.
- template <typename Handler>
- void async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_connect_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect"));
-
- start_connect_op(impl, impl.protocol_.family(), impl.protocol_.type(),
- peer_endpoint.data(), static_cast<int>(peer_endpoint.size()), p.p);
- p.v = p.p = 0;
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service_base.hpp
deleted file mode 100644
index f1584fd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_socket_service_base.hpp
+++ /dev/null
@@ -1,524 +0,0 @@
-//
-// detail/win_iocp_socket_service_base.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_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_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_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-#include "asio/detail/win_iocp_null_buffers_op.hpp"
-#include "asio/detail/win_iocp_socket_connect_op.hpp"
-#include "asio/detail/win_iocp_socket_send_op.hpp"
-#include "asio/detail/win_iocp_socket_recv_op.hpp"
-#include "asio/detail/win_iocp_socket_recvmsg_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_socket_service_base
-{
-public:
- // The implementation type of the socket.
- struct base_implementation_type
- {
- // The native socket representation.
- socket_type socket_;
-
- // The current state of the socket.
- socket_ops::state_type state_;
-
- // We use a shared pointer as a cancellation token here to work around the
- // broken Windows support for cancellation. MSDN says that when you call
- // closesocket any outstanding WSARecv or WSASend operations will complete
- // with the error ERROR_OPERATION_ABORTED. In practice they complete with
- // ERROR_NETNAME_DELETED, which means you can't tell the difference between
- // a local cancellation and the socket being hard-closed by the peer.
- socket_ops::shared_cancel_token_type cancel_token_;
-
- // Per-descriptor data used by the reactor.
- reactor::per_descriptor_data reactor_data_;
-
-#if defined(ASIO_ENABLE_CANCELIO)
- // The ID of the thread from which it is safe to cancel asynchronous
- // operations. 0 means no asynchronous operations have been started yet.
- // ~0 means asynchronous operations have been started from more than one
- // thread, and cancellation is not supported for the socket.
- DWORD safe_cancellation_thread_id_;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
- // Pointers to adjacent socket implementations in linked list.
- base_implementation_type* next_;
- base_implementation_type* prev_;
- };
-
- // Constructor.
- ASIO_DECL win_iocp_socket_service_base(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new socket implementation.
- ASIO_DECL void construct(base_implementation_type& impl);
-
- // Move-construct a new socket implementation.
- ASIO_DECL void base_move_construct(base_implementation_type& impl,
- base_implementation_type& other_impl);
-
- // Move-assign from another socket implementation.
- ASIO_DECL void base_move_assign(base_implementation_type& impl,
- win_iocp_socket_service_base& other_service,
- base_implementation_type& other_impl);
-
- // Destroy a socket implementation.
- ASIO_DECL void destroy(base_implementation_type& impl);
-
- // Determine whether the socket is open.
- bool is_open(const base_implementation_type& impl) const
- {
- return impl.socket_ != invalid_socket;
- }
-
- // Destroy a socket implementation.
- ASIO_DECL asio::error_code close(
- base_implementation_type& impl, asio::error_code& ec);
-
- // Cancel all operations associated with the socket.
- ASIO_DECL asio::error_code cancel(
- base_implementation_type& impl, asio::error_code& ec);
-
- // Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const base_implementation_type& impl,
- asio::error_code& ec) const
- {
- return socket_ops::sockatmark(impl.socket_, ec);
- }
-
- // Determine the number of bytes available for reading.
- std::size_t available(const base_implementation_type& impl,
- asio::error_code& ec) const
- {
- return socket_ops::available(impl.socket_, ec);
- }
-
- // Place the socket into the state where it will listen for new connections.
- asio::error_code listen(base_implementation_type& impl,
- int backlog, asio::error_code& ec)
- {
- socket_ops::listen(impl.socket_, backlog, ec);
- return ec;
- }
-
- // Perform an IO control command on the socket.
- template <typename IO_Control_Command>
- asio::error_code io_control(base_implementation_type& impl,
- IO_Control_Command& command, asio::error_code& ec)
- {
- socket_ops::ioctl(impl.socket_, impl.state_, command.name(),
- static_cast<ioctl_arg_type*>(command.data()), ec);
- return ec;
- }
-
- // Gets the non-blocking mode of the socket.
- bool non_blocking(const base_implementation_type& impl) const
- {
- return (impl.state_ & socket_ops::user_set_non_blocking) != 0;
- }
-
- // Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(base_implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- socket_ops::set_user_non_blocking(impl.socket_, impl.state_, mode, ec);
- return ec;
- }
-
- // Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const base_implementation_type& impl) const
- {
- return (impl.state_ & socket_ops::internal_non_blocking) != 0;
- }
-
- // Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(base_implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- socket_ops::set_internal_non_blocking(impl.socket_, impl.state_, mode, ec);
- return ec;
- }
-
- // Disable sends or receives on the socket.
- asio::error_code shutdown(base_implementation_type& impl,
- socket_base::shutdown_type what, asio::error_code& ec)
- {
- socket_ops::shutdown(impl.socket_, what, ec);
- return ec;
- }
-
- // Send the given data to the peer. Returns the number of bytes sent.
- template <typename ConstBufferSequence>
- size_t send(base_implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- return socket_ops::sync_send(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
- }
-
- // Wait until data can be sent without blocking.
- size_t send(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send(base_implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_send_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send"));
-
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- start_send_op(impl, bufs.buffers(), bufs.count(), flags,
- (impl.state_ & socket_ops::stream_oriented) != 0 && bufs.all_empty(),
- p.p);
- p.v = p.p = 0;
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_send(null_buffers)"));
-
- start_reactor_op(impl, reactor::write_op, p.p);
- p.v = p.p = 0;
- }
-
- // Receive some data from the peer. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- size_t receive(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- return socket_ops::sync_recv(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
- }
-
- // Wait until data can be received without blocking.
- size_t receive(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_recv_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.state_, impl.cancel_token_, buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive"));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- start_receive_op(impl, bufs.buffers(), bufs.count(), flags,
- (impl.state_ & socket_ops::stream_oriented) != 0 && bufs.all_empty(),
- p.p);
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_receive(null_buffers)"));
-
- start_null_buffers_receive_op(impl, flags, p.p);
- p.v = p.p = 0;
- }
-
- // Receive some data with associated flags. Returns the number of bytes
- // received.
- template <typename MutableBufferSequence>
- size_t receive_with_flags(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- return socket_ops::sync_recvmsg(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), in_flags, out_flags, ec);
- }
-
- // Wait until data can be received without blocking.
- size_t receive_with_flags(base_implementation_type& impl,
- const null_buffers&, socket_base::message_flags,
- socket_base::message_flags& out_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
- // Clear out_flags, since we cannot give it any other sensible value when
- // performing a null_buffers operation.
- out_flags = 0;
-
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive_with_flags(base_implementation_type& impl,
- const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_socket_recvmsg_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, buffers, out_flags, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_receive_with_flags"));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- start_receive_op(impl, bufs.buffers(), bufs.count(), in_flags, false, p.p);
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive_with_flags(base_implementation_type& impl,
- const null_buffers&, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.cancel_token_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl,
- "async_receive_with_flags(null_buffers)"));
-
- // Reset out_flags since it can be given no sensible value at this time.
- out_flags = 0;
-
- start_null_buffers_receive_op(impl, in_flags, p.p);
- p.v = p.p = 0;
- }
-
- // Helper function to restart an asynchronous accept operation.
- ASIO_DECL void restart_accept_op(socket_type s,
- socket_holder& new_socket, int family, int type, int protocol,
- void* output_buffer, DWORD address_length, operation* op);
-
-protected:
- // Open a new socket implementation.
- ASIO_DECL asio::error_code do_open(
- base_implementation_type& impl, int family, int type,
- int protocol, asio::error_code& ec);
-
- // Assign a native socket to a socket implementation.
- ASIO_DECL asio::error_code do_assign(
- base_implementation_type& impl, int type,
- socket_type native_socket, asio::error_code& ec);
-
- // Helper function to start an asynchronous send operation.
- ASIO_DECL void start_send_op(base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count,
- socket_base::message_flags flags, bool noop, operation* op);
-
- // Helper function to start an asynchronous send_to operation.
- ASIO_DECL void start_send_to_op(base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count,
- const socket_addr_type* addr, int addrlen,
- socket_base::message_flags flags, operation* op);
-
- // Helper function to start an asynchronous receive operation.
- ASIO_DECL void start_receive_op(base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count,
- socket_base::message_flags flags, bool noop, operation* op);
-
- // Helper function to start an asynchronous null_buffers receive operation.
- ASIO_DECL void start_null_buffers_receive_op(
- base_implementation_type& impl,
- socket_base::message_flags flags, reactor_op* op);
-
- // Helper function to start an asynchronous receive_from operation.
- ASIO_DECL void start_receive_from_op(base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count, socket_addr_type* addr,
- socket_base::message_flags flags, int* addrlen, operation* op);
-
- // Helper function to start an asynchronous accept operation.
- ASIO_DECL void start_accept_op(base_implementation_type& impl,
- bool peer_is_open, socket_holder& new_socket, int family, int type,
- int protocol, void* output_buffer, DWORD address_length, operation* op);
-
- // Start an asynchronous read or write operation using the reactor.
- ASIO_DECL void start_reactor_op(base_implementation_type& impl,
- int op_type, reactor_op* op);
-
- // Start the asynchronous connect operation using the reactor.
- ASIO_DECL void start_connect_op(base_implementation_type& impl,
- int family, int type, const socket_addr_type* remote_addr,
- std::size_t remote_addrlen, win_iocp_socket_connect_op_base* op);
-
- // Helper function to close a socket when the associated object is being
- // destroyed.
- ASIO_DECL void close_for_destruction(base_implementation_type& impl);
-
- // Update the ID of the thread from which cancellation is safe.
- ASIO_DECL void update_cancellation_thread_id(
- base_implementation_type& impl);
-
- // Helper function to get the reactor. If no reactor has been created yet, a
- // new one is obtained from the io_service and a pointer to it is cached in
- // this service.
- ASIO_DECL reactor& get_reactor();
-
- // The type of a ConnectEx function pointer, as old SDKs may not provide it.
- typedef BOOL (PASCAL *connect_ex_fn)(SOCKET,
- const socket_addr_type*, int, void*, DWORD, DWORD*, OVERLAPPED*);
-
- // Helper function to get the ConnectEx pointer. If no ConnectEx pointer has
- // been obtained yet, one is obtained using WSAIoctl and the pointer is
- // cached. Returns a null pointer if ConnectEx is not available.
- ASIO_DECL connect_ex_fn get_connect_ex(
- base_implementation_type& impl, int type);
-
- // Helper function to emulate InterlockedCompareExchangePointer functionality
- // for:
- // - very old Platform SDKs; and
- // - platform SDKs where MSVC's /Wp64 option causes spurious warnings.
- ASIO_DECL void* interlocked_compare_exchange_pointer(
- void** dest, void* exch, void* cmp);
-
- // Helper function to emulate InterlockedExchangePointer functionality for:
- // - very old Platform SDKs; and
- // - platform SDKs where MSVC's /Wp64 option causes spurious warnings.
- ASIO_DECL void* interlocked_exchange_pointer(void** dest, void* val);
-
- // The io_service used to obtain the reactor, if required.
- asio::io_service& io_service_;
-
- // The IOCP service used for running asynchronous operations and dispatching
- // handlers.
- win_iocp_io_service& iocp_service_;
-
- // The reactor used for performing connect operations. This object is created
- // only if needed.
- reactor* reactor_;
-
- // Pointer to ConnectEx implementation.
- void* connect_ex_;
-
- // Mutex to protect access to the linked list of implementations.
- asio::detail::mutex mutex_;
-
- // The head of a linked list of all implementations.
- base_implementation_type* impl_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_socket_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_thread_info.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_thread_info.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_thread_info.hpp
deleted file mode 100644
index 55a3c8e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_thread_info.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// detail/win_iocp_thread_info.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_DETAIL_WIN_IOCP_THREAD_INFO_HPP
-#define ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/thread_info_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct win_iocp_thread_info : public thread_info_base
-{
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_mutex.hpp
deleted file mode 100644
index 0ced34b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_mutex.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/win_mutex.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_DETAIL_WIN_MUTEX_HPP
-#define ASIO_DETAIL_WIN_MUTEX_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_WINDOWS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_mutex
- : private noncopyable
-{
-public:
- typedef asio::detail::scoped_lock<win_mutex> scoped_lock;
-
- // Constructor.
- ASIO_DECL win_mutex();
-
- // Destructor.
- ~win_mutex()
- {
- ::DeleteCriticalSection(&crit_section_);
- }
-
- // Lock the mutex.
- void lock()
- {
- ::EnterCriticalSection(&crit_section_);
- }
-
- // Unlock the mutex.
- void unlock()
- {
- ::LeaveCriticalSection(&crit_section_);
- }
-
-private:
- // Initialisation must be performed in a separate function to the constructor
- // since the compiler does not support the use of structured exceptions and
- // C++ exceptions in the same function.
- ASIO_DECL int do_init();
-
- ::CRITICAL_SECTION crit_section_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_mutex.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_MUTEX_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[08/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor_service.hpp
deleted file mode 100644
index 556912e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor_service.hpp
+++ /dev/null
@@ -1,260 +0,0 @@
-//
-// posix/stream_descriptor_service.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_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
-#define ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_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_HAS_POSIX_STREAM_DESCRIPTOR) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/reactive_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Default service implementation for a stream descriptor.
-class stream_descriptor_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<stream_descriptor_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
-private:
- // The type of the platform-specific implementation.
- typedef detail::reactive_descriptor_service service_impl_type;
-
-public:
- /// The type of a stream descriptor implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native descriptor type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native descriptor type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new stream descriptor service for the specified io_service.
- explicit stream_descriptor_service(asio::io_service& io_service)
- : asio::detail::service_base<stream_descriptor_service>(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new stream descriptor implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new stream descriptor implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another stream descriptor implementation.
- void move_assign(implementation_type& impl,
- stream_descriptor_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a stream descriptor implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Assign an existing native descriptor to a stream descriptor.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& native_descriptor,
- asio::error_code& ec)
- {
- return service_impl_.assign(impl, native_descriptor, ec);
- }
-
- /// Determine whether the descriptor is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a stream descriptor implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native descriptor
- /// implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native descriptor implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Release ownership of the native descriptor implementation.
- native_handle_type release(implementation_type& impl)
- {
- return service_impl_.release(impl);
- }
-
- /// Cancel all asynchronous operations associated with the descriptor.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Perform an IO control command on the descriptor.
- template <typename IoControlCommand>
- asio::error_code io_control(implementation_type& impl,
- IoControlCommand& command, asio::error_code& ec)
- {
- return service_impl_.io_control(impl, command, ec);
- }
-
- /// Gets the non-blocking mode of the descriptor.
- bool non_blocking(const implementation_type& impl) const
- {
- return service_impl_.non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the descriptor.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.non_blocking(impl, mode, ec);
- }
-
- /// Gets the non-blocking mode of the native descriptor implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return service_impl_.native_non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the native descriptor implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.native_non_blocking(impl, mode, ec);
- }
-
- /// Write the given data to the stream.
- template <typename ConstBufferSequence>
- std::size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.write_some(impl, buffers, ec);
- }
-
- /// Start an asynchronous write.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- asio::detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_write_some(impl, buffers, init.handler);
-
- return init.result.get();
- }
-
- /// Read some data from the stream.
- template <typename MutableBufferSequence>
- std::size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.read_some(impl, buffers, ec);
- }
-
- /// Start an asynchronous read.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- asio::detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_read_some(impl, buffers, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/raw_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/raw_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/raw_socket_service.hpp
deleted file mode 100644
index 03e7ae8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/raw_socket_service.hpp
+++ /dev/null
@@ -1,432 +0,0 @@
-//
-// raw_socket_service.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_RAW_SOCKET_SERVICE_HPP
-#define ASIO_RAW_SOCKET_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 "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a raw socket.
-template <typename Protocol>
-class raw_socket_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<raw_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
- typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
- typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
- /// The type of a raw socket.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new raw socket service for the specified io_service.
- explicit raw_socket_service(asio::io_service& io_service)
- : asio::detail::service_base<
- raw_socket_service<Protocol> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new raw socket implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new raw socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another raw socket implementation.
- void move_assign(implementation_type& impl,
- raw_socket_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-
- /// Move-construct a new raw socket implementation from another protocol
- /// type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename raw_socket_service<
- Protocol1>::implementation_type& other_impl,
- typename enable_if<is_convertible<
- Protocol1, Protocol>::value>::type* = 0)
- {
- service_impl_.template converting_move_construct<Protocol1>(
- impl, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a raw socket implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- // Open a new raw socket implementation.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (protocol.type() == ASIO_OS_DEF(SOCK_RAW))
- service_impl_.open(impl, protocol, ec);
- else
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- /// Assign an existing native socket to a raw socket.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- return service_impl_.assign(impl, protocol, native_socket, ec);
- }
-
- /// Determine whether the socket is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a raw socket implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native socket implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native socket implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the socket.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.at_mark(impl, ec);
- }
-
- /// Determine the number of bytes available for reading.
- std::size_t available(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.available(impl, ec);
- }
-
- // Bind the raw socket to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- return service_impl_.bind(impl, endpoint, ec);
- }
-
- /// Connect the raw socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- return service_impl_.connect(impl, peer_endpoint, ec);
- }
-
- /// Start an asynchronous connect.
- template <typename ConnectHandler>
- ASIO_INITFN_RESULT_TYPE(ConnectHandler,
- void (asio::error_code))
- async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint,
- ASIO_MOVE_ARG(ConnectHandler) handler)
- {
- detail::async_result_init<
- ConnectHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(ConnectHandler)(handler));
-
- service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
- return init.result.get();
- }
-
- /// Set a socket option.
- template <typename SettableSocketOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSocketOption& option, asio::error_code& ec)
- {
- return service_impl_.set_option(impl, option, ec);
- }
-
- /// Get a socket option.
- template <typename GettableSocketOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSocketOption& option, asio::error_code& ec) const
- {
- return service_impl_.get_option(impl, option, ec);
- }
-
- /// Perform an IO control command on the socket.
- template <typename IoControlCommand>
- asio::error_code io_control(implementation_type& impl,
- IoControlCommand& command, asio::error_code& ec)
- {
- return service_impl_.io_control(impl, command, ec);
- }
-
- /// Gets the non-blocking mode of the socket.
- bool non_blocking(const implementation_type& impl) const
- {
- return service_impl_.non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.non_blocking(impl, mode, ec);
- }
-
- /// Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return service_impl_.native_non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.native_non_blocking(impl, mode, ec);
- }
-
- /// Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.local_endpoint(impl, ec);
- }
-
- /// Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.remote_endpoint(impl, ec);
- }
-
- /// Disable sends or receives on the socket.
- asio::error_code shutdown(implementation_type& impl,
- socket_base::shutdown_type what, asio::error_code& ec)
- {
- return service_impl_.shutdown(impl, what, ec);
- }
-
- /// Send the given data to the peer.
- template <typename ConstBufferSequence>
- std::size_t send(implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.send(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous send.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(implementation_type& impl, const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_send(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Send raw data to the specified endpoint.
- template <typename ConstBufferSequence>
- std::size_t send_to(implementation_type& impl,
- const ConstBufferSequence& buffers, const endpoint_type& destination,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.send_to(impl, buffers, destination, flags, ec);
- }
-
- /// Start an asynchronous send.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send_to(implementation_type& impl,
- const ConstBufferSequence& buffers, const endpoint_type& destination,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_send_to(impl, buffers,
- destination, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Receive some data from the peer.
- template <typename MutableBufferSequence>
- std::size_t receive(implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.receive(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous receive.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_receive(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Receive raw data with the endpoint of the sender.
- template <typename MutableBufferSequence>
- std::size_t receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.receive_from(impl, buffers, sender_endpoint, flags,
- ec);
- }
-
- /// Start an asynchronous receive that will get the endpoint of the sender.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_receive_from(impl, buffers,
- sender_endpoint, flags, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_RAW_SOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read.hpp
deleted file mode 100644
index 12c7653..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read.hpp
+++ /dev/null
@@ -1,631 +0,0 @@
-//
-// read.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_READ_HPP
-#define ASIO_READ_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 "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup read asio::read
- *
- * @brief Attempt to read a certain amount of data from a stream before
- * returning.
- */
-/*@{*/
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read(s, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- * s, buffers,
- * asio::transfer_all()); @endcode
- */
-template <typename SyncReadStream, typename MutableBufferSequence>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read(s, asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- * s, buffers,
- * asio::transfer_all(), ec); @endcode
- */
-template <typename SyncReadStream, typename MutableBufferSequence>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
- asio::error_code& ec);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read(s, asio::buffer(data, size),
- * asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- * s, b,
- * asio::transfer_all()); @endcode
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- * s, b,
- * asio::transfer_all(), ec); @endcode
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
- asio::error_code& ec);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncReadStream, typename Allocator,
- typename CompletionCondition>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncReadStream, typename Allocator,
- typename CompletionCondition>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_read asio::async_read
- *
- * @brief Start an asynchronous operation to read a certain amount of data from
- * a stream.
- */
-/*@{*/
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other read operations (such
- * as async_read, the stream's async_read_some function, or any other composed
- * operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks 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 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 copied into the
- * // buffers. If an error occurred,
- * // this will be the number of
- * // bytes successfully transferred
- * // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_read(s, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read(
- * s, buffers,
- * asio::transfer_all(),
- * handler); @endcode
- */
-template <typename AsyncReadStream, typename MutableBufferSequence,
- typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest async_read_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's async_read_some function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The 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 copied into the
- * // buffers. If an error occurred,
- * // this will be the number of
- * // bytes successfully transferred
- * // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::async_read(s,
- * asio::buffer(data, size),
- * asio::transfer_at_least(32),
- * handler); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncReadStream, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other read operations (such
- * as async_read, the stream's async_read_some function, or any other composed
- * operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains 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 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 copied into the
- * // buffers. If an error occurred,
- * // this will be the number of
- * // bytes successfully transferred
- * // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read(
- * s, b,
- * asio::transfer_all(),
- * handler); @endcode
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other read operations (such
- * as async_read, the stream's async_read_some function, or any other composed
- * operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest async_read_some operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's async_read_some function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The 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 copied into the
- * // buffers. If an error occurred,
- * // this will be the number of
- * // bytes successfully transferred
- * // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncReadStream, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/read.hpp"
-
-#endif // ASIO_READ_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_at.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_at.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_at.hpp
deleted file mode 100644
index 9b15528..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_at.hpp
+++ /dev/null
@@ -1,664 +0,0 @@
-//
-// read_at.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_READ_AT_HPP
-#define ASIO_READ_AT_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 "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup read_at asio::read_at
- *
- * @brief Attempt to read a certain amount of data at the specified offset
- * before returning.
- */
-/*@{*/
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read_at(d, 42, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- * d, 42, buffers,
- * asio::transfer_all()); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read_at(d, 42,
- * asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- * d, 42, buffers,
- * asio::transfer_all(), ec); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- asio::error_code& ec);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some_at operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read_at(d, 42, asio::buffer(data, size),
- * asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some_at operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- * d, 42, b,
- * asio::transfer_all()); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, basic_streambuf<Allocator>& b);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- * d, 42, b,
- * asio::transfer_all(), ec); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, basic_streambuf<Allocator>& b,
- asio::error_code& ec);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some_at operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest read_some_at operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_read_at asio::async_read_at
- *
- * @brief Start an asynchronous operation to read a certain amount of data at
- * the specified offset.
- */
-/*@{*/
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks 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 function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // Number of bytes copied into the buffers. If an error
- * // occurred, this will be the number of bytes successfully
- * // transferred prior to the error.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_read_at(d, 42, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read_at(
- * d, 42, buffers,
- * asio::transfer_all(),
- * handler); @endcode
- */
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
- const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest async_read_some_at operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's async_read_some_at function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // Number of bytes copied into the buffers. If an error
- * // occurred, this will be the number of bytes successfully
- * // transferred prior to the error.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::async_read_at(d, 42,
- * asio::buffer(data, size),
- * asio::transfer_at_least(32),
- * handler); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains 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 function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // Number of bytes copied into the buffers. If an error
- * // occurred, this will be the number of bytes successfully
- * // transferred prior to the error.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read_at(
- * d, 42, b,
- * asio::transfer_all(),
- * handler); @endcode
- */
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
- basic_streambuf<Allocator>& b, ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- * // Result of latest async_read_some_at operation.
- * const asio::error_code& error,
- *
- * // Number of bytes transferred so far.
- * std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's async_read_some_at function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // Number of bytes copied into the buffers. If an error
- * // occurred, this will be the number of bytes successfully
- * // transferred prior to the error.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
- uint64_t offset, basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/read_at.hpp"
-
-#endif // ASIO_READ_AT_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[24/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_select_interrupter.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_select_interrupter.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_select_interrupter.ipp
deleted file mode 100644
index bd6f363..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/socket_select_interrupter.ipp
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// detail/impl/socket_select_interrupter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP
-#define ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
-
-#include <cstdlib>
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_select_interrupter.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-socket_select_interrupter::socket_select_interrupter()
-{
- open_descriptors();
-}
-
-void socket_select_interrupter::open_descriptors()
-{
- asio::error_code ec;
- socket_holder acceptor(socket_ops::socket(
- AF_INET, SOCK_STREAM, IPPROTO_TCP, ec));
- if (acceptor.get() == invalid_socket)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- int opt = 1;
- socket_ops::state_type acceptor_state = 0;
- socket_ops::setsockopt(acceptor.get(), acceptor_state,
- SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt), ec);
-
- using namespace std; // For memset.
- sockaddr_in4_type addr;
- std::size_t addr_len = sizeof(addr);
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = inet_addr("127.0.0.1");
- addr.sin_port = 0;
- if (socket_ops::bind(acceptor.get(), (const socket_addr_type*)&addr,
- addr_len, ec) == socket_error_retval)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- if (socket_ops::getsockname(acceptor.get(), (socket_addr_type*)&addr,
- &addr_len, ec) == socket_error_retval)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- // Some broken firewalls on Windows will intermittently cause getsockname to
- // return 0.0.0.0 when the socket is actually bound to 127.0.0.1. We
- // explicitly specify the target address here to work around this problem.
- addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-
- if (socket_ops::listen(acceptor.get(),
- SOMAXCONN, ec) == socket_error_retval)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- socket_holder client(socket_ops::socket(
- AF_INET, SOCK_STREAM, IPPROTO_TCP, ec));
- if (client.get() == invalid_socket)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- if (socket_ops::connect(client.get(), (const socket_addr_type*)&addr,
- addr_len, ec) == socket_error_retval)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- socket_holder server(socket_ops::accept(acceptor.get(), 0, 0, ec));
- if (server.get() == invalid_socket)
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- ioctl_arg_type non_blocking = 1;
- socket_ops::state_type client_state = 0;
- if (socket_ops::ioctl(client.get(), client_state,
- FIONBIO, &non_blocking, ec))
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- opt = 1;
- socket_ops::setsockopt(client.get(), client_state,
- IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec);
-
- non_blocking = 1;
- socket_ops::state_type server_state = 0;
- if (socket_ops::ioctl(server.get(), server_state,
- FIONBIO, &non_blocking, ec))
- asio::detail::throw_error(ec, "socket_select_interrupter");
-
- opt = 1;
- socket_ops::setsockopt(server.get(), server_state,
- IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec);
-
- read_descriptor_ = server.release();
- write_descriptor_ = client.release();
-}
-
-socket_select_interrupter::~socket_select_interrupter()
-{
- close_descriptors();
-}
-
-void socket_select_interrupter::close_descriptors()
-{
- asio::error_code ec;
- socket_ops::state_type state = socket_ops::internal_non_blocking;
- if (read_descriptor_ != invalid_socket)
- socket_ops::close(read_descriptor_, state, true, ec);
- if (write_descriptor_ != invalid_socket)
- socket_ops::close(write_descriptor_, state, true, ec);
-}
-
-void socket_select_interrupter::recreate()
-{
- close_descriptors();
-
- write_descriptor_ = invalid_socket;
- read_descriptor_ = invalid_socket;
-
- open_descriptors();
-}
-
-void socket_select_interrupter::interrupt()
-{
- char byte = 0;
- socket_ops::buf b;
- socket_ops::init_buf(b, &byte, 1);
- asio::error_code ec;
- socket_ops::send(write_descriptor_, &b, 1, 0, ec);
-}
-
-bool socket_select_interrupter::reset()
-{
- char data[1024];
- socket_ops::buf b;
- socket_ops::init_buf(b, data, sizeof(data));
- asio::error_code ec;
- int bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec);
- bool was_interrupted = (bytes_read > 0);
- while (bytes_read == sizeof(data))
- bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec);
- return was_interrupted;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.hpp
deleted file mode 100644
index bed0eca..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/impl/strand_service.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_DETAIL_IMPL_STRAND_SERVICE_HPP
-#define ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/completion_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-inline strand_service::strand_impl::strand_impl()
- : operation(&strand_service::do_complete),
- locked_(false)
-{
-}
-
-struct strand_service::on_dispatch_exit
-{
- io_service_impl* io_service_;
- strand_impl* impl_;
-
- ~on_dispatch_exit()
- {
- impl_->mutex_.lock();
- impl_->ready_queue_.push(impl_->waiting_queue_);
- bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty();
- impl_->mutex_.unlock();
-
- if (more_handlers)
- io_service_->post_immediate_completion(impl_, false);
- }
-};
-
-template <typename Handler>
-void strand_service::dispatch(strand_service::implementation_type& impl,
- Handler& handler)
-{
- // If we are already in the strand then the handler can run immediately.
- if (call_stack<strand_impl>::contains(impl))
- {
- fenced_block b(fenced_block::full);
- asio_handler_invoke_helpers::invoke(handler, handler);
- return;
- }
-
- // Allocate and construct an operation to wrap the handler.
- typedef completion_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "strand", impl, "dispatch"));
-
- bool dispatch_immediately = do_dispatch(impl, p.p);
- operation* o = p.p;
- p.v = p.p = 0;
-
- if (dispatch_immediately)
- {
- // Indicate that this strand is executing on the current thread.
- call_stack<strand_impl>::context ctx(impl);
-
- // Ensure the next handler, if any, is scheduled on block exit.
- on_dispatch_exit on_exit = { &io_service_, impl };
- (void)on_exit;
-
- completion_handler<Handler>::do_complete(
- &io_service_, o, asio::error_code(), 0);
- }
-}
-
-// Request the io_service to invoke the given handler and return immediately.
-template <typename Handler>
-void strand_service::post(strand_service::implementation_type& impl,
- Handler& handler)
-{
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef completion_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "strand", impl, "post"));
-
- do_post(impl, p.p, is_continuation);
- p.v = p.p = 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.ipp
deleted file mode 100644
index 0083e86..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/strand_service.ipp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// detail/impl/strand_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_STRAND_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/strand_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct strand_service::on_do_complete_exit
-{
- io_service_impl* owner_;
- strand_impl* impl_;
-
- ~on_do_complete_exit()
- {
- impl_->mutex_.lock();
- impl_->ready_queue_.push(impl_->waiting_queue_);
- bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty();
- impl_->mutex_.unlock();
-
- if (more_handlers)
- owner_->post_immediate_completion(impl_, true);
- }
-};
-
-strand_service::strand_service(asio::io_service& io_service)
- : asio::detail::service_base<strand_service>(io_service),
- io_service_(asio::use_service<io_service_impl>(io_service)),
- mutex_(),
- salt_(0)
-{
-}
-
-void strand_service::shutdown_service()
-{
- op_queue<operation> ops;
-
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- for (std::size_t i = 0; i < num_implementations; ++i)
- {
- if (strand_impl* impl = implementations_[i].get())
- {
- ops.push(impl->waiting_queue_);
- ops.push(impl->ready_queue_);
- }
- }
-}
-
-void strand_service::construct(strand_service::implementation_type& impl)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- std::size_t salt = salt_++;
-#if defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
- std::size_t index = salt;
-#else // defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
- std::size_t index = reinterpret_cast<std::size_t>(&impl);
- index += (reinterpret_cast<std::size_t>(&impl) >> 3);
- index ^= salt + 0x9e3779b9 + (index << 6) + (index >> 2);
-#endif // defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
- index = index % num_implementations;
-
- if (!implementations_[index].get())
- implementations_[index].reset(new strand_impl);
- impl = implementations_[index].get();
-}
-
-bool strand_service::running_in_this_thread(
- const implementation_type& impl) const
-{
- return call_stack<strand_impl>::contains(impl) != 0;
-}
-
-bool strand_service::do_dispatch(implementation_type& impl, operation* op)
-{
- // If we are running inside the io_service, and no other handler already
- // holds the strand lock, then the handler can run immediately.
- bool can_dispatch = io_service_.can_dispatch();
- impl->mutex_.lock();
- if (can_dispatch && !impl->locked_)
- {
- // Immediate invocation is allowed.
- impl->locked_ = true;
- impl->mutex_.unlock();
- return true;
- }
-
- if (impl->locked_)
- {
- // Some other handler already holds the strand lock. Enqueue for later.
- impl->waiting_queue_.push(op);
- impl->mutex_.unlock();
- }
- else
- {
- // The handler is acquiring the strand lock and so is responsible for
- // scheduling the strand.
- impl->locked_ = true;
- impl->mutex_.unlock();
- impl->ready_queue_.push(op);
- io_service_.post_immediate_completion(impl, false);
- }
-
- return false;
-}
-
-void strand_service::do_post(implementation_type& impl,
- operation* op, bool is_continuation)
-{
- impl->mutex_.lock();
- if (impl->locked_)
- {
- // Some other handler already holds the strand lock. Enqueue for later.
- impl->waiting_queue_.push(op);
- impl->mutex_.unlock();
- }
- else
- {
- // The handler is acquiring the strand lock and so is responsible for
- // scheduling the strand.
- impl->locked_ = true;
- impl->mutex_.unlock();
- impl->ready_queue_.push(op);
- io_service_.post_immediate_completion(impl, is_continuation);
- }
-}
-
-void strand_service::do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& ec, std::size_t /*bytes_transferred*/)
-{
- if (owner)
- {
- strand_impl* impl = static_cast<strand_impl*>(base);
-
- // Indicate that this strand is executing on the current thread.
- call_stack<strand_impl>::context ctx(impl);
-
- // Ensure the next handler, if any, is scheduled on block exit.
- on_do_complete_exit on_exit = { owner, impl };
- (void)on_exit;
-
- // Run all ready handlers. No lock is required since the ready queue is
- // accessed only within the strand.
- while (operation* o = impl->ready_queue_.front())
- {
- impl->ready_queue_.pop();
- o->complete(*owner, ec, 0);
- }
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.hpp
deleted file mode 100644
index 9e8bc8f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/impl/task_io_service.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_DETAIL_IMPL_TASK_IO_SERVICE_HPP
-#define ASIO_DETAIL_IMPL_TASK_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/completion_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-void task_io_service::dispatch(Handler& handler)
-{
- if (thread_call_stack::contains(this))
- {
- fenced_block b(fenced_block::full);
- asio_handler_invoke_helpers::invoke(handler, handler);
- }
- else
- {
- // Allocate and construct an operation to wrap the handler.
- typedef completion_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "io_service", this, "dispatch"));
-
- do_dispatch(p.p);
- p.v = p.p = 0;
- }
-}
-
-template <typename Handler>
-void task_io_service::post(Handler& handler)
-{
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef completion_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "io_service", this, "post"));
-
- post_immediate_completion(p.p, is_continuation);
- p.v = p.p = 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_TASK_IO_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.ipp
deleted file mode 100644
index baf27c8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/task_io_service.ipp
+++ /dev/null
@@ -1,474 +0,0 @@
-//
-// detail/impl/task_io_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_TASK_IO_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_TASK_IO_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/event.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/task_io_service.hpp"
-#include "asio/detail/task_io_service_thread_info.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct task_io_service::task_cleanup
-{
- ~task_cleanup()
- {
- if (this_thread_->private_outstanding_work > 0)
- {
- asio::detail::increment(
- task_io_service_->outstanding_work_,
- this_thread_->private_outstanding_work);
- }
- this_thread_->private_outstanding_work = 0;
-
- // Enqueue the completed operations and reinsert the task at the end of
- // the operation queue.
- lock_->lock();
- task_io_service_->task_interrupted_ = true;
- task_io_service_->op_queue_.push(this_thread_->private_op_queue);
- task_io_service_->op_queue_.push(&task_io_service_->task_operation_);
- }
-
- task_io_service* task_io_service_;
- mutex::scoped_lock* lock_;
- thread_info* this_thread_;
-};
-
-struct task_io_service::work_cleanup
-{
- ~work_cleanup()
- {
- if (this_thread_->private_outstanding_work > 1)
- {
- asio::detail::increment(
- task_io_service_->outstanding_work_,
- this_thread_->private_outstanding_work - 1);
- }
- else if (this_thread_->private_outstanding_work < 1)
- {
- task_io_service_->work_finished();
- }
- this_thread_->private_outstanding_work = 0;
-
-#if defined(ASIO_HAS_THREADS)
- if (!this_thread_->private_op_queue.empty())
- {
- lock_->lock();
- task_io_service_->op_queue_.push(this_thread_->private_op_queue);
- }
-#endif // defined(ASIO_HAS_THREADS)
- }
-
- task_io_service* task_io_service_;
- mutex::scoped_lock* lock_;
- thread_info* this_thread_;
-};
-
-task_io_service::task_io_service(
- asio::io_service& io_service, std::size_t concurrency_hint)
- : asio::detail::service_base<task_io_service>(io_service),
- one_thread_(concurrency_hint == 1),
- mutex_(),
- task_(0),
- task_interrupted_(true),
- outstanding_work_(0),
- stopped_(false),
- shutdown_(false)
-{
- ASIO_HANDLER_TRACKING_INIT;
-}
-
-void task_io_service::shutdown_service()
-{
- mutex::scoped_lock lock(mutex_);
- shutdown_ = true;
- lock.unlock();
-
- // Destroy handler objects.
- while (!op_queue_.empty())
- {
- operation* o = op_queue_.front();
- op_queue_.pop();
- if (o != &task_operation_)
- o->destroy();
- }
-
- // Reset to initial state.
- task_ = 0;
-}
-
-void task_io_service::init_task()
-{
- mutex::scoped_lock lock(mutex_);
- if (!shutdown_ && !task_)
- {
- task_ = &use_service<reactor>(this->get_io_service());
- op_queue_.push(&task_operation_);
- wake_one_thread_and_unlock(lock);
- }
-}
-
-std::size_t task_io_service::run(asio::error_code& ec)
-{
- ec = asio::error_code();
- if (outstanding_work_ == 0)
- {
- stop();
- return 0;
- }
-
- thread_info this_thread;
- this_thread.private_outstanding_work = 0;
- thread_call_stack::context ctx(this, this_thread);
-
- mutex::scoped_lock lock(mutex_);
-
- std::size_t n = 0;
- for (; do_run_one(lock, this_thread, ec); lock.lock())
- if (n != (std::numeric_limits<std::size_t>::max)())
- ++n;
- return n;
-}
-
-std::size_t task_io_service::run_one(asio::error_code& ec)
-{
- ec = asio::error_code();
- if (outstanding_work_ == 0)
- {
- stop();
- return 0;
- }
-
- thread_info this_thread;
- this_thread.private_outstanding_work = 0;
- thread_call_stack::context ctx(this, this_thread);
-
- mutex::scoped_lock lock(mutex_);
-
- return do_run_one(lock, this_thread, ec);
-}
-
-std::size_t task_io_service::poll(asio::error_code& ec)
-{
- ec = asio::error_code();
- if (outstanding_work_ == 0)
- {
- stop();
- return 0;
- }
-
- thread_info this_thread;
- this_thread.private_outstanding_work = 0;
- thread_call_stack::context ctx(this, this_thread);
-
- mutex::scoped_lock lock(mutex_);
-
-#if defined(ASIO_HAS_THREADS)
- // We want to support nested calls to poll() and poll_one(), so any handlers
- // that are already on a thread-private queue need to be put on to the main
- // queue now.
- if (one_thread_)
- if (thread_info* outer_thread_info = ctx.next_by_key())
- op_queue_.push(outer_thread_info->private_op_queue);
-#endif // defined(ASIO_HAS_THREADS)
-
- std::size_t n = 0;
- for (; do_poll_one(lock, this_thread, ec); lock.lock())
- if (n != (std::numeric_limits<std::size_t>::max)())
- ++n;
- return n;
-}
-
-std::size_t task_io_service::poll_one(asio::error_code& ec)
-{
- ec = asio::error_code();
- if (outstanding_work_ == 0)
- {
- stop();
- return 0;
- }
-
- thread_info this_thread;
- this_thread.private_outstanding_work = 0;
- thread_call_stack::context ctx(this, this_thread);
-
- mutex::scoped_lock lock(mutex_);
-
-#if defined(ASIO_HAS_THREADS)
- // We want to support nested calls to poll() and poll_one(), so any handlers
- // that are already on a thread-private queue need to be put on to the main
- // queue now.
- if (one_thread_)
- if (thread_info* outer_thread_info = ctx.next_by_key())
- op_queue_.push(outer_thread_info->private_op_queue);
-#endif // defined(ASIO_HAS_THREADS)
-
- return do_poll_one(lock, this_thread, ec);
-}
-
-void task_io_service::stop()
-{
- mutex::scoped_lock lock(mutex_);
- stop_all_threads(lock);
-}
-
-bool task_io_service::stopped() const
-{
- mutex::scoped_lock lock(mutex_);
- return stopped_;
-}
-
-void task_io_service::reset()
-{
- mutex::scoped_lock lock(mutex_);
- stopped_ = false;
-}
-
-void task_io_service::post_immediate_completion(
- task_io_service::operation* op, bool is_continuation)
-{
-#if defined(ASIO_HAS_THREADS)
- if (one_thread_ || is_continuation)
- {
- if (thread_info* this_thread = thread_call_stack::contains(this))
- {
- ++this_thread->private_outstanding_work;
- this_thread->private_op_queue.push(op);
- return;
- }
- }
-#else // defined(ASIO_HAS_THREADS)
- (void)is_continuation;
-#endif // defined(ASIO_HAS_THREADS)
-
- work_started();
- mutex::scoped_lock lock(mutex_);
- op_queue_.push(op);
- wake_one_thread_and_unlock(lock);
-}
-
-void task_io_service::post_deferred_completion(task_io_service::operation* op)
-{
-#if defined(ASIO_HAS_THREADS)
- if (one_thread_)
- {
- if (thread_info* this_thread = thread_call_stack::contains(this))
- {
- this_thread->private_op_queue.push(op);
- return;
- }
- }
-#endif // defined(ASIO_HAS_THREADS)
-
- mutex::scoped_lock lock(mutex_);
- op_queue_.push(op);
- wake_one_thread_and_unlock(lock);
-}
-
-void task_io_service::post_deferred_completions(
- op_queue<task_io_service::operation>& ops)
-{
- if (!ops.empty())
- {
-#if defined(ASIO_HAS_THREADS)
- if (one_thread_)
- {
- if (thread_info* this_thread = thread_call_stack::contains(this))
- {
- this_thread->private_op_queue.push(ops);
- return;
- }
- }
-#endif // defined(ASIO_HAS_THREADS)
-
- mutex::scoped_lock lock(mutex_);
- op_queue_.push(ops);
- wake_one_thread_and_unlock(lock);
- }
-}
-
-void task_io_service::do_dispatch(
- task_io_service::operation* op)
-{
- work_started();
- mutex::scoped_lock lock(mutex_);
- op_queue_.push(op);
- wake_one_thread_and_unlock(lock);
-}
-
-void task_io_service::abandon_operations(
- op_queue<task_io_service::operation>& ops)
-{
- op_queue<task_io_service::operation> ops2;
- ops2.push(ops);
-}
-
-std::size_t task_io_service::do_run_one(mutex::scoped_lock& lock,
- task_io_service::thread_info& this_thread,
- const asio::error_code& ec)
-{
- while (!stopped_)
- {
- if (!op_queue_.empty())
- {
- // Prepare to execute first handler from queue.
- operation* o = op_queue_.front();
- op_queue_.pop();
- bool more_handlers = (!op_queue_.empty());
-
- if (o == &task_operation_)
- {
- task_interrupted_ = more_handlers;
-
- if (more_handlers && !one_thread_)
- wakeup_event_.unlock_and_signal_one(lock);
- else
- lock.unlock();
-
- task_cleanup on_exit = { this, &lock, &this_thread };
- (void)on_exit;
-
- // Run the task. May throw an exception. Only block if the operation
- // queue is empty and we're not polling, otherwise we want to return
- // as soon as possible.
- task_->run(!more_handlers, this_thread.private_op_queue);
- }
- else
- {
- std::size_t task_result = o->task_result_;
-
- if (more_handlers && !one_thread_)
- wake_one_thread_and_unlock(lock);
- else
- lock.unlock();
-
- // Ensure the count of outstanding work is decremented on block exit.
- work_cleanup on_exit = { this, &lock, &this_thread };
- (void)on_exit;
-
- // Complete the operation. May throw an exception. Deletes the object.
- o->complete(*this, ec, task_result);
-
- return 1;
- }
- }
- else
- {
- wakeup_event_.clear(lock);
- wakeup_event_.wait(lock);
- }
- }
-
- return 0;
-}
-
-std::size_t task_io_service::do_poll_one(mutex::scoped_lock& lock,
- task_io_service::thread_info& this_thread,
- const asio::error_code& ec)
-{
- if (stopped_)
- return 0;
-
- operation* o = op_queue_.front();
- if (o == &task_operation_)
- {
- op_queue_.pop();
- lock.unlock();
-
- {
- task_cleanup c = { this, &lock, &this_thread };
- (void)c;
-
- // Run the task. May throw an exception. Only block if the operation
- // queue is empty and we're not polling, otherwise we want to return
- // as soon as possible.
- task_->run(false, this_thread.private_op_queue);
- }
-
- o = op_queue_.front();
- if (o == &task_operation_)
- {
- wakeup_event_.maybe_unlock_and_signal_one(lock);
- return 0;
- }
- }
-
- if (o == 0)
- return 0;
-
- op_queue_.pop();
- bool more_handlers = (!op_queue_.empty());
-
- std::size_t task_result = o->task_result_;
-
- if (more_handlers && !one_thread_)
- wake_one_thread_and_unlock(lock);
- else
- lock.unlock();
-
- // Ensure the count of outstanding work is decremented on block exit.
- work_cleanup on_exit = { this, &lock, &this_thread };
- (void)on_exit;
-
- // Complete the operation. May throw an exception. Deletes the object.
- o->complete(*this, ec, task_result);
-
- return 1;
-}
-
-void task_io_service::stop_all_threads(
- mutex::scoped_lock& lock)
-{
- stopped_ = true;
- wakeup_event_.signal_all(lock);
-
- if (!task_interrupted_ && task_)
- {
- task_interrupted_ = true;
- task_->interrupt();
- }
-}
-
-void task_io_service::wake_one_thread_and_unlock(
- mutex::scoped_lock& lock)
-{
- if (!wakeup_event_.maybe_unlock_and_signal_one(lock))
- {
- if (!task_interrupted_ && task_)
- {
- task_interrupted_ = true;
- task_->interrupt();
- }
- lock.unlock();
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_TASK_IO_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/throw_error.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/throw_error.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/throw_error.ipp
deleted file mode 100644
index 94b5853..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/throw_error.ipp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// detail/impl/throw_error.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_THROW_ERROR_IPP
-#define ASIO_DETAIL_IMPL_THROW_ERROR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void do_throw_error(const asio::error_code& err)
-{
- asio::system_error e(err);
- asio::detail::throw_exception(e);
-}
-
-void do_throw_error(const asio::error_code& err, const char* location)
-{
- // boostify: non-boost code starts here
-#if defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR)
- // Microsoft's implementation of std::system_error is non-conformant in that
- // it ignores the error code's message when a "what" string is supplied. We'll
- // work around this by explicitly formatting the "what" string.
- std::string what_msg = location;
- what_msg += ": ";
- what_msg += err.message();
- asio::system_error e(err, what_msg);
- asio::detail::throw_exception(e);
-#else // defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR)
- // boostify: non-boost code ends here
- asio::system_error e(err, location);
- asio::detail::throw_exception(e);
- // boostify: non-boost code starts here
-#endif // defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR)
- // boostify: non-boost code ends here
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_THROW_ERROR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_ptime.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_ptime.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_ptime.ipp
deleted file mode 100644
index 97c87b5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_ptime.ipp
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// detail/impl/timer_queue_ptime.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP
-#define ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_queue_ptime.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-
-namespace asio {
-namespace detail {
-
-timer_queue<time_traits<boost::posix_time::ptime> >::timer_queue()
-{
-}
-
-timer_queue<time_traits<boost::posix_time::ptime> >::~timer_queue()
-{
-}
-
-bool timer_queue<time_traits<boost::posix_time::ptime> >::enqueue_timer(
- const time_type& time, per_timer_data& timer, wait_op* op)
-{
- return impl_.enqueue_timer(time, timer, op);
-}
-
-bool timer_queue<time_traits<boost::posix_time::ptime> >::empty() const
-{
- return impl_.empty();
-}
-
-long timer_queue<time_traits<boost::posix_time::ptime> >::wait_duration_msec(
- long max_duration) const
-{
- return impl_.wait_duration_msec(max_duration);
-}
-
-long timer_queue<time_traits<boost::posix_time::ptime> >::wait_duration_usec(
- long max_duration) const
-{
- return impl_.wait_duration_usec(max_duration);
-}
-
-void timer_queue<time_traits<boost::posix_time::ptime> >::get_ready_timers(
- op_queue<operation>& ops)
-{
- impl_.get_ready_timers(ops);
-}
-
-void timer_queue<time_traits<boost::posix_time::ptime> >::get_all_timers(
- op_queue<operation>& ops)
-{
- impl_.get_all_timers(ops);
-}
-
-std::size_t timer_queue<time_traits<boost::posix_time::ptime> >::cancel_timer(
- per_timer_data& timer, op_queue<operation>& ops, std::size_t max_cancelled)
-{
- return impl_.cancel_timer(timer, ops, max_cancelled);
-}
-
-} // namespace detail
-} // namespace asio
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_set.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_set.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_set.ipp
deleted file mode 100644
index a8b59e5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/timer_queue_set.ipp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/impl/timer_queue_set.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_TIMER_QUEUE_SET_IPP
-#define ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-timer_queue_set::timer_queue_set()
- : first_(0)
-{
-}
-
-void timer_queue_set::insert(timer_queue_base* q)
-{
- q->next_ = first_;
- first_ = q;
-}
-
-void timer_queue_set::erase(timer_queue_base* q)
-{
- if (first_)
- {
- if (q == first_)
- {
- first_ = q->next_;
- q->next_ = 0;
- return;
- }
-
- for (timer_queue_base* p = first_; p->next_; p = p->next_)
- {
- if (p->next_ == q)
- {
- p->next_ = q->next_;
- q->next_ = 0;
- return;
- }
- }
- }
-}
-
-bool timer_queue_set::all_empty() const
-{
- for (timer_queue_base* p = first_; p; p = p->next_)
- if (!p->empty())
- return false;
- return true;
-}
-
-long timer_queue_set::wait_duration_msec(long max_duration) const
-{
- long min_duration = max_duration;
- for (timer_queue_base* p = first_; p; p = p->next_)
- min_duration = p->wait_duration_msec(min_duration);
- return min_duration;
-}
-
-long timer_queue_set::wait_duration_usec(long max_duration) const
-{
- long min_duration = max_duration;
- for (timer_queue_base* p = first_; p; p = p->next_)
- min_duration = p->wait_duration_usec(min_duration);
- return min_duration;
-}
-
-void timer_queue_set::get_ready_timers(op_queue<operation>& ops)
-{
- for (timer_queue_base* p = first_; p; p = p->next_)
- p->get_ready_timers(ops);
-}
-
-void timer_queue_set::get_all_timers(op_queue<operation>& ops)
-{
- for (timer_queue_base* p = first_; p; p = p->next_)
- p->get_all_timers(ops);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_event.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_event.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_event.ipp
deleted file mode 100644
index 29f9af9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_event.ipp
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// detail/win_event.ipp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_EVENT_IPP
-#define ASIO_DETAIL_IMPL_WIN_EVENT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_event.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_event::win_event()
- : state_(0)
-{
- events_[0] = ::CreateEvent(0, true, false, 0);
- if (!events_[0])
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "event");
- }
-
- events_[1] = ::CreateEvent(0, false, false, 0);
- if (!events_[1])
- {
- DWORD last_error = ::GetLastError();
- ::CloseHandle(events_[0]);
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "event");
- }
-}
-
-win_event::~win_event()
-{
- ::CloseHandle(events_[0]);
- ::CloseHandle(events_[1]);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_EVENT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_handle_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_handle_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_handle_service.ipp
deleted file mode 100644
index 1281050..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_handle_service.ipp
+++ /dev/null
@@ -1,528 +0,0 @@
-//
-// detail/impl/win_iocp_handle_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/win_iocp_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_handle_service::overlapped_wrapper
- : public OVERLAPPED
-{
-public:
- explicit overlapped_wrapper(asio::error_code& ec)
- {
- Internal = 0;
- InternalHigh = 0;
- Offset = 0;
- OffsetHigh = 0;
-
- // Create a non-signalled manual-reset event, for GetOverlappedResult.
- hEvent = ::CreateEvent(0, TRUE, FALSE, 0);
- if (hEvent)
- {
- // As documented in GetQueuedCompletionStatus, setting the low order
- // bit of this event prevents our synchronous writes from being treated
- // as completion port events.
- DWORD_PTR tmp = reinterpret_cast<DWORD_PTR>(hEvent);
- hEvent = reinterpret_cast<HANDLE>(tmp | 1);
- }
- else
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- }
-
- ~overlapped_wrapper()
- {
- if (hEvent)
- {
- ::CloseHandle(hEvent);
- }
- }
-};
-
-win_iocp_handle_service::win_iocp_handle_service(
- asio::io_service& io_service)
- : iocp_service_(asio::use_service<win_iocp_io_service>(io_service)),
- mutex_(),
- impl_list_(0)
-{
-}
-
-void win_iocp_handle_service::shutdown_service()
-{
- // Close all implementations, causing all operations to complete.
- asio::detail::mutex::scoped_lock lock(mutex_);
- implementation_type* impl = impl_list_;
- while (impl)
- {
- close_for_destruction(*impl);
- impl = impl->next_;
- }
-}
-
-void win_iocp_handle_service::construct(
- win_iocp_handle_service::implementation_type& impl)
-{
- impl.handle_ = INVALID_HANDLE_VALUE;
- impl.safe_cancellation_thread_id_ = 0;
-
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
-}
-
-void win_iocp_handle_service::move_construct(
- win_iocp_handle_service::implementation_type& impl,
- win_iocp_handle_service::implementation_type& other_impl)
-{
- impl.handle_ = other_impl.handle_;
- other_impl.handle_ = INVALID_HANDLE_VALUE;
-
- impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
- other_impl.safe_cancellation_thread_id_ = 0;
-
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
-}
-
-void win_iocp_handle_service::move_assign(
- win_iocp_handle_service::implementation_type& impl,
- win_iocp_handle_service& other_service,
- win_iocp_handle_service::implementation_type& other_impl)
-{
- close_for_destruction(impl);
-
- if (this != &other_service)
- {
- // Remove implementation from linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
- }
-
- impl.handle_ = other_impl.handle_;
- other_impl.handle_ = INVALID_HANDLE_VALUE;
-
- impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
- other_impl.safe_cancellation_thread_id_ = 0;
-
- if (this != &other_service)
- {
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(other_service.mutex_);
- impl.next_ = other_service.impl_list_;
- impl.prev_ = 0;
- if (other_service.impl_list_)
- other_service.impl_list_->prev_ = &impl;
- other_service.impl_list_ = &impl;
- }
-}
-
-void win_iocp_handle_service::destroy(
- win_iocp_handle_service::implementation_type& impl)
-{
- close_for_destruction(impl);
-
- // Remove implementation from linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
-}
-
-asio::error_code win_iocp_handle_service::assign(
- win_iocp_handle_service::implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- if (iocp_service_.register_handle(handle, ec))
- return ec;
-
- impl.handle_ = handle;
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code win_iocp_handle_service::close(
- win_iocp_handle_service::implementation_type& impl,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("handle", &impl, "close"));
-
- if (!::CloseHandle(impl.handle_))
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- else
- {
- ec = asio::error_code();
- }
-
- impl.handle_ = INVALID_HANDLE_VALUE;
- impl.safe_cancellation_thread_id_ = 0;
- }
- else
- {
- ec = asio::error_code();
- }
-
- return ec;
-}
-
-asio::error_code win_iocp_handle_service::cancel(
- win_iocp_handle_service::implementation_type& impl,
- asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return ec;
- }
-
- ASIO_HANDLER_OPERATION(("handle", &impl, "cancel"));
-
- if (FARPROC cancel_io_ex_ptr = ::GetProcAddress(
- ::GetModuleHandleA("KERNEL32"), "CancelIoEx"))
- {
- // The version of Windows supports cancellation from any thread.
- typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED);
- cancel_io_ex_t cancel_io_ex = (cancel_io_ex_t)cancel_io_ex_ptr;
- if (!cancel_io_ex(impl.handle_, 0))
- {
- DWORD last_error = ::GetLastError();
- if (last_error == ERROR_NOT_FOUND)
- {
- // ERROR_NOT_FOUND means that there were no operations to be
- // cancelled. We swallow this error to match the behaviour on other
- // platforms.
- ec = asio::error_code();
- }
- else
- {
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- }
- else
- {
- ec = asio::error_code();
- }
- }
- else if (impl.safe_cancellation_thread_id_ == 0)
- {
- // No operations have been started, so there's nothing to cancel.
- ec = asio::error_code();
- }
- else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId())
- {
- // Asynchronous operations have been started from the current thread only,
- // so it is safe to try to cancel them using CancelIo.
- if (!::CancelIo(impl.handle_))
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- else
- {
- ec = asio::error_code();
- }
- }
- else
- {
- // Asynchronous operations have been started from more than one thread,
- // so cancellation is not safe.
- ec = asio::error::operation_not_supported;
- }
-
- return ec;
-}
-
-size_t win_iocp_handle_service::do_write(
- win_iocp_handle_service::implementation_type& impl, uint64_t offset,
- const asio::const_buffer& buffer, asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // A request to write 0 bytes on a handle is a no-op.
- if (asio::buffer_size(buffer) == 0)
- {
- ec = asio::error_code();
- return 0;
- }
-
- overlapped_wrapper overlapped(ec);
- if (ec)
- {
- return 0;
- }
-
- // Write the data.
- overlapped.Offset = offset & 0xFFFFFFFF;
- overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
- BOOL ok = ::WriteFile(impl.handle_,
- asio::buffer_cast<LPCVOID>(buffer),
- static_cast<DWORD>(asio::buffer_size(buffer)), 0, &overlapped);
- if (!ok)
- {
- DWORD last_error = ::GetLastError();
- if (last_error != ERROR_IO_PENDING)
- {
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return 0;
- }
- }
-
- // Wait for the operation to complete.
- DWORD bytes_transferred = 0;
- ok = ::GetOverlappedResult(impl.handle_,
- &overlapped, &bytes_transferred, TRUE);
- if (!ok)
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return 0;
- }
-
- ec = asio::error_code();
- return bytes_transferred;
-}
-
-void win_iocp_handle_service::start_write_op(
- win_iocp_handle_service::implementation_type& impl, uint64_t offset,
- const asio::const_buffer& buffer, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (!is_open(impl))
- {
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- }
- else if (asio::buffer_size(buffer) == 0)
- {
- // A request to write 0 bytes on a handle is a no-op.
- iocp_service_.on_completion(op);
- }
- else
- {
- DWORD bytes_transferred = 0;
- op->Offset = offset & 0xFFFFFFFF;
- op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
- BOOL ok = ::WriteFile(impl.handle_,
- asio::buffer_cast<LPCVOID>(buffer),
- static_cast<DWORD>(asio::buffer_size(buffer)),
- &bytes_transferred, op);
- DWORD last_error = ::GetLastError();
- if (!ok && last_error != ERROR_IO_PENDING
- && last_error != ERROR_MORE_DATA)
- {
- iocp_service_.on_completion(op, last_error, bytes_transferred);
- }
- else
- {
- iocp_service_.on_pending(op);
- }
- }
-}
-
-size_t win_iocp_handle_service::do_read(
- win_iocp_handle_service::implementation_type& impl, uint64_t offset,
- const asio::mutable_buffer& buffer, asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // A request to read 0 bytes on a stream handle is a no-op.
- if (asio::buffer_size(buffer) == 0)
- {
- ec = asio::error_code();
- return 0;
- }
-
- overlapped_wrapper overlapped(ec);
- if (ec)
- {
- return 0;
- }
-
- // Read some data.
- overlapped.Offset = offset & 0xFFFFFFFF;
- overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
- BOOL ok = ::ReadFile(impl.handle_,
- asio::buffer_cast<LPVOID>(buffer),
- static_cast<DWORD>(asio::buffer_size(buffer)), 0, &overlapped);
- if (!ok)
- {
- DWORD last_error = ::GetLastError();
- if (last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA)
- {
- if (last_error == ERROR_HANDLE_EOF)
- {
- ec = asio::error::eof;
- }
- else
- {
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- return 0;
- }
- }
-
- // Wait for the operation to complete.
- DWORD bytes_transferred = 0;
- ok = ::GetOverlappedResult(impl.handle_,
- &overlapped, &bytes_transferred, TRUE);
- if (!ok)
- {
- DWORD last_error = ::GetLastError();
- if (last_error != ERROR_MORE_DATA)
- {
- if (last_error == ERROR_HANDLE_EOF)
- {
- ec = asio::error::eof;
- }
- else
- {
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- }
- return 0;
- }
-
- ec = asio::error_code();
- return bytes_transferred;
-}
-
-void win_iocp_handle_service::start_read_op(
- win_iocp_handle_service::implementation_type& impl, uint64_t offset,
- const asio::mutable_buffer& buffer, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (!is_open(impl))
- {
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- }
- else if (asio::buffer_size(buffer) == 0)
- {
- // A request to read 0 bytes on a handle is a no-op.
- iocp_service_.on_completion(op);
- }
- else
- {
- DWORD bytes_transferred = 0;
- op->Offset = offset & 0xFFFFFFFF;
- op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
- BOOL ok = ::ReadFile(impl.handle_,
- asio::buffer_cast<LPVOID>(buffer),
- static_cast<DWORD>(asio::buffer_size(buffer)),
- &bytes_transferred, op);
- DWORD last_error = ::GetLastError();
- if (!ok && last_error != ERROR_IO_PENDING
- && last_error != ERROR_MORE_DATA)
- {
- iocp_service_.on_completion(op, last_error, bytes_transferred);
- }
- else
- {
- iocp_service_.on_pending(op);
- }
- }
-}
-
-void win_iocp_handle_service::update_cancellation_thread_id(
- win_iocp_handle_service::implementation_type& impl)
-{
- if (impl.safe_cancellation_thread_id_ == 0)
- impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
- else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
- impl.safe_cancellation_thread_id_ = ~DWORD(0);
-}
-
-void win_iocp_handle_service::close_for_destruction(implementation_type& impl)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("handle", &impl, "close"));
-
- ::CloseHandle(impl.handle_);
- impl.handle_ = INVALID_HANDLE_VALUE;
- impl.safe_cancellation_thread_id_ = 0;
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.hpp
deleted file mode 100644
index 02d346d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// detail/impl/win_iocp_io_service.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_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_HPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/completion_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-void win_iocp_io_service::dispatch(Handler& handler)
-{
- if (thread_call_stack::contains(this))
- {
- fenced_block b(fenced_block::full);
- asio_handler_invoke_helpers::invoke(handler, handler);
- }
- else
- {
- // Allocate and construct an operation to wrap the handler.
- typedef completion_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "io_service", this, "dispatch"));
-
- post_immediate_completion(p.p, false);
- p.v = p.p = 0;
- }
-}
-
-template <typename Handler>
-void win_iocp_io_service::post(Handler& handler)
-{
- // Allocate and construct an operation to wrap the handler.
- typedef completion_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "io_service", this, "post"));
-
- post_immediate_completion(p.p, false);
- p.v = p.p = 0;
-}
-
-template <typename Time_Traits>
-void win_iocp_io_service::add_timer_queue(
- timer_queue<Time_Traits>& queue)
-{
- do_add_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void win_iocp_io_service::remove_timer_queue(
- timer_queue<Time_Traits>& queue)
-{
- do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void win_iocp_io_service::schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
- // If the service has been shut down we silently discard the timer.
- if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
- {
- post_immediate_completion(op, false);
- return;
- }
-
- mutex::scoped_lock lock(dispatch_mutex_);
-
- bool earliest = queue.enqueue_timer(time, timer, op);
- work_started();
- if (earliest)
- update_timeout();
-}
-
-template <typename Time_Traits>
-std::size_t win_iocp_io_service::cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled)
-{
- // If the service has been shut down we silently ignore the cancellation.
- if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
- return 0;
-
- mutex::scoped_lock lock(dispatch_mutex_);
- op_queue<win_iocp_operation> ops;
- std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
- post_deferred_completions(ops);
- return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.ipp
deleted file mode 100644
index a4f56dc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_io_service.ipp
+++ /dev/null
@@ -1,531 +0,0 @@
-//
-// detail/impl/win_iocp_io_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct win_iocp_io_service::work_finished_on_block_exit
-{
- ~work_finished_on_block_exit()
- {
- io_service_->work_finished();
- }
-
- win_iocp_io_service* io_service_;
-};
-
-struct win_iocp_io_service::timer_thread_function
-{
- void operator()()
- {
- while (::InterlockedExchangeAdd(&io_service_->shutdown_, 0) == 0)
- {
- if (::WaitForSingleObject(io_service_->waitable_timer_.handle,
- INFINITE) == WAIT_OBJECT_0)
- {
- ::InterlockedExchange(&io_service_->dispatch_required_, 1);
- ::PostQueuedCompletionStatus(io_service_->iocp_.handle,
- 0, wake_for_dispatch, 0);
- }
- }
- }
-
- win_iocp_io_service* io_service_;
-};
-
-win_iocp_io_service::win_iocp_io_service(
- asio::io_service& io_service, size_t concurrency_hint)
- : asio::detail::service_base<win_iocp_io_service>(io_service),
- iocp_(),
- outstanding_work_(0),
- stopped_(0),
- stop_event_posted_(0),
- shutdown_(0),
- gqcs_timeout_(get_gqcs_timeout()),
- dispatch_required_(0)
-{
- ASIO_HANDLER_TRACKING_INIT;
-
- iocp_.handle = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, 0, 0,
- static_cast<DWORD>(concurrency_hint < DWORD(~0)
- ? concurrency_hint : DWORD(~0)));
- if (!iocp_.handle)
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "iocp");
- }
-}
-
-void win_iocp_io_service::shutdown_service()
-{
- ::InterlockedExchange(&shutdown_, 1);
-
- if (timer_thread_.get())
- {
- LARGE_INTEGER timeout;
- timeout.QuadPart = 1;
- ::SetWaitableTimer(waitable_timer_.handle, &timeout, 1, 0, 0, FALSE);
- }
-
- while (::InterlockedExchangeAdd(&outstanding_work_, 0) > 0)
- {
- op_queue<win_iocp_operation> ops;
- timer_queues_.get_all_timers(ops);
- ops.push(completed_ops_);
- if (!ops.empty())
- {
- while (win_iocp_operation* op = ops.front())
- {
- ops.pop();
- ::InterlockedDecrement(&outstanding_work_);
- op->destroy();
- }
- }
- else
- {
- DWORD bytes_transferred = 0;
- dword_ptr_t completion_key = 0;
- LPOVERLAPPED overlapped = 0;
- ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
- &completion_key, &overlapped, gqcs_timeout_);
- if (overlapped)
- {
- ::InterlockedDecrement(&outstanding_work_);
- static_cast<win_iocp_operation*>(overlapped)->destroy();
- }
- }
- }
-
- if (timer_thread_.get())
- timer_thread_->join();
-}
-
-asio::error_code win_iocp_io_service::register_handle(
- HANDLE handle, asio::error_code& ec)
-{
- if (::CreateIoCompletionPort(handle, iocp_.handle, 0, 0) == 0)
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- else
- {
- ec = asio::error_code();
- }
- return ec;
-}
-
-size_t win_iocp_io_service::run(asio::error_code& ec)
-{
- if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
- {
- stop();
- ec = asio::error_code();
- return 0;
- }
-
- win_iocp_thread_info this_thread;
- thread_call_stack::context ctx(this, this_thread);
-
- size_t n = 0;
- while (do_one(true, ec))
- if (n != (std::numeric_limits<size_t>::max)())
- ++n;
- return n;
-}
-
-size_t win_iocp_io_service::run_one(asio::error_code& ec)
-{
- if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
- {
- stop();
- ec = asio::error_code();
- return 0;
- }
-
- win_iocp_thread_info this_thread;
- thread_call_stack::context ctx(this, this_thread);
-
- return do_one(true, ec);
-}
-
-size_t win_iocp_io_service::poll(asio::error_code& ec)
-{
- if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
- {
- stop();
- ec = asio::error_code();
- return 0;
- }
-
- win_iocp_thread_info this_thread;
- thread_call_stack::context ctx(this, this_thread);
-
- size_t n = 0;
- while (do_one(false, ec))
- if (n != (std::numeric_limits<size_t>::max)())
- ++n;
- return n;
-}
-
-size_t win_iocp_io_service::poll_one(asio::error_code& ec)
-{
- if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
- {
- stop();
- ec = asio::error_code();
- return 0;
- }
-
- win_iocp_thread_info this_thread;
- thread_call_stack::context ctx(this, this_thread);
-
- return do_one(false, ec);
-}
-
-void win_iocp_io_service::stop()
-{
- if (::InterlockedExchange(&stopped_, 1) == 0)
- {
- if (::InterlockedExchange(&stop_event_posted_, 1) == 0)
- {
- if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "pqcs");
- }
- }
- }
-}
-
-void win_iocp_io_service::post_deferred_completion(win_iocp_operation* op)
-{
- // Flag the operation as ready.
- op->ready_ = 1;
-
- // Enqueue the operation on the I/O completion port.
- if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op))
- {
- // Out of resources. Put on completed queue instead.
- mutex::scoped_lock lock(dispatch_mutex_);
- completed_ops_.push(op);
- ::InterlockedExchange(&dispatch_required_, 1);
- }
-}
-
-void win_iocp_io_service::post_deferred_completions(
- op_queue<win_iocp_operation>& ops)
-{
- while (win_iocp_operation* op = ops.front())
- {
- ops.pop();
-
- // Flag the operation as ready.
- op->ready_ = 1;
-
- // Enqueue the operation on the I/O completion port.
- if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op))
- {
- // Out of resources. Put on completed queue instead.
- mutex::scoped_lock lock(dispatch_mutex_);
- completed_ops_.push(op);
- completed_ops_.push(ops);
- ::InterlockedExchange(&dispatch_required_, 1);
- }
- }
-}
-
-void win_iocp_io_service::abandon_operations(
- op_queue<win_iocp_operation>& ops)
-{
- while (win_iocp_operation* op = ops.front())
- {
- ops.pop();
- ::InterlockedDecrement(&outstanding_work_);
- op->destroy();
- }
-}
-
-void win_iocp_io_service::on_pending(win_iocp_operation* op)
-{
- if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1)
- {
- // Enqueue the operation on the I/O completion port.
- if (!::PostQueuedCompletionStatus(iocp_.handle,
- 0, overlapped_contains_result, op))
- {
- // Out of resources. Put on completed queue instead.
- mutex::scoped_lock lock(dispatch_mutex_);
- completed_ops_.push(op);
- ::InterlockedExchange(&dispatch_required_, 1);
- }
- }
-}
-
-void win_iocp_io_service::on_completion(win_iocp_operation* op,
- DWORD last_error, DWORD bytes_transferred)
-{
- // Flag that the operation is ready for invocation.
- op->ready_ = 1;
-
- // Store results in the OVERLAPPED structure.
- op->Internal = reinterpret_cast<ulong_ptr_t>(
- &asio::error::get_system_category());
- op->Offset = last_error;
- op->OffsetHigh = bytes_transferred;
-
- // Enqueue the operation on the I/O completion port.
- if (!::PostQueuedCompletionStatus(iocp_.handle,
- 0, overlapped_contains_result, op))
- {
- // Out of resources. Put on completed queue instead.
- mutex::scoped_lock lock(dispatch_mutex_);
- completed_ops_.push(op);
- ::InterlockedExchange(&dispatch_required_, 1);
- }
-}
-
-void win_iocp_io_service::on_completion(win_iocp_operation* op,
- const asio::error_code& ec, DWORD bytes_transferred)
-{
- // Flag that the operation is ready for invocation.
- op->ready_ = 1;
-
- // Store results in the OVERLAPPED structure.
- op->Internal = reinterpret_cast<ulong_ptr_t>(&ec.category());
- op->Offset = ec.value();
- op->OffsetHigh = bytes_transferred;
-
- // Enqueue the operation on the I/O completion port.
- if (!::PostQueuedCompletionStatus(iocp_.handle,
- 0, overlapped_contains_result, op))
- {
- // Out of resources. Put on completed queue instead.
- mutex::scoped_lock lock(dispatch_mutex_);
- completed_ops_.push(op);
- ::InterlockedExchange(&dispatch_required_, 1);
- }
-}
-
-size_t win_iocp_io_service::do_one(bool block, asio::error_code& ec)
-{
- for (;;)
- {
- // Try to acquire responsibility for dispatching timers and completed ops.
- if (::InterlockedCompareExchange(&dispatch_required_, 0, 1) == 1)
- {
- mutex::scoped_lock lock(dispatch_mutex_);
-
- // Dispatch pending timers and operations.
- op_queue<win_iocp_operation> ops;
- ops.push(completed_ops_);
- timer_queues_.get_ready_timers(ops);
- post_deferred_completions(ops);
- update_timeout();
- }
-
- // Get the next operation from the queue.
- DWORD bytes_transferred = 0;
- dword_ptr_t completion_key = 0;
- LPOVERLAPPED overlapped = 0;
- ::SetLastError(0);
- BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
- &completion_key, &overlapped, block ? gqcs_timeout_ : 0);
- DWORD last_error = ::GetLastError();
-
- if (overlapped)
- {
- win_iocp_operation* op = static_cast<win_iocp_operation*>(overlapped);
- asio::error_code result_ec(last_error,
- asio::error::get_system_category());
-
- // We may have been passed the last_error and bytes_transferred in the
- // OVERLAPPED structure itself.
- if (completion_key == overlapped_contains_result)
- {
- result_ec = asio::error_code(static_cast<int>(op->Offset),
- *reinterpret_cast<asio::error_category*>(op->Internal));
- bytes_transferred = op->OffsetHigh;
- }
-
- // Otherwise ensure any result has been saved into the OVERLAPPED
- // structure.
- else
- {
- op->Internal = reinterpret_cast<ulong_ptr_t>(&result_ec.category());
- op->Offset = result_ec.value();
- op->OffsetHigh = bytes_transferred;
- }
-
- // Dispatch the operation only if ready. The operation may not be ready
- // if the initiating function (e.g. a call to WSARecv) has not yet
- // returned. This is because the initiating function still wants access
- // to the operation's OVERLAPPED structure.
- if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1)
- {
- // Ensure the count of outstanding work is decremented on block exit.
- work_finished_on_block_exit on_exit = { this };
- (void)on_exit;
-
- op->complete(*this, result_ec, bytes_transferred);
- ec = asio::error_code();
- return 1;
- }
- }
- else if (!ok)
- {
- if (last_error != WAIT_TIMEOUT)
- {
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return 0;
- }
-
- // If we're not polling we need to keep going until we get a real handler.
- if (block)
- continue;
-
- ec = asio::error_code();
- return 0;
- }
- else if (completion_key == wake_for_dispatch)
- {
- // We have been woken up to try to acquire responsibility for dispatching
- // timers and completed operations.
- }
- else
- {
- // Indicate that there is no longer an in-flight stop event.
- ::InterlockedExchange(&stop_event_posted_, 0);
-
- // The stopped_ flag is always checked to ensure that any leftover
- // stop events from a previous run invocation are ignored.
- if (::InterlockedExchangeAdd(&stopped_, 0) != 0)
- {
- // Wake up next thread that is blocked on GetQueuedCompletionStatus.
- if (::InterlockedExchange(&stop_event_posted_, 1) == 0)
- {
- if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
- {
- last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return 0;
- }
- }
-
- ec = asio::error_code();
- return 0;
- }
- }
- }
-}
-
-DWORD win_iocp_io_service::get_gqcs_timeout()
-{
- OSVERSIONINFO version_info;
- version_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- if (::GetVersionEx(&version_info))
- if (version_info.dwMajorVersion >= 6)
- return INFINITE;
- return default_gqcs_timeout;
-}
-
-void win_iocp_io_service::do_add_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(dispatch_mutex_);
-
- timer_queues_.insert(&queue);
-
- if (!waitable_timer_.handle)
- {
- waitable_timer_.handle = ::CreateWaitableTimer(0, FALSE, 0);
- if (waitable_timer_.handle == 0)
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "timer");
- }
-
- LARGE_INTEGER timeout;
- timeout.QuadPart = -max_timeout_usec;
- timeout.QuadPart *= 10;
- ::SetWaitableTimer(waitable_timer_.handle,
- &timeout, max_timeout_msec, 0, 0, FALSE);
- }
-
- if (!timer_thread_.get())
- {
- timer_thread_function thread_function = { this };
- timer_thread_.reset(new thread(thread_function, 65536));
- }
-}
-
-void win_iocp_io_service::do_remove_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(dispatch_mutex_);
-
- timer_queues_.erase(&queue);
-}
-
-void win_iocp_io_service::update_timeout()
-{
- if (timer_thread_.get())
- {
- // There's no point updating the waitable timer if the new timeout period
- // exceeds the maximum timeout. In that case, we might as well wait for the
- // existing period of the timer to expire.
- long timeout_usec = timer_queues_.wait_duration_usec(max_timeout_usec);
- if (timeout_usec < max_timeout_usec)
- {
- LARGE_INTEGER timeout;
- timeout.QuadPart = -timeout_usec;
- timeout.QuadPart *= 10;
- ::SetWaitableTimer(waitable_timer_.handle,
- &timeout, max_timeout_msec, 0, 0, FALSE);
- }
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_serial_port_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_serial_port_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_serial_port_service.ipp
deleted file mode 100644
index 4b2b671..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_serial_port_service.ipp
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// detail/impl/win_iocp_serial_port_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#include <cstring>
-#include "asio/detail/win_iocp_serial_port_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_iocp_serial_port_service::win_iocp_serial_port_service(
- asio::io_service& io_service)
- : handle_service_(io_service)
-{
-}
-
-void win_iocp_serial_port_service::shutdown_service()
-{
-}
-
-asio::error_code win_iocp_serial_port_service::open(
- win_iocp_serial_port_service::implementation_type& impl,
- const std::string& device, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- // For convenience, add a leading \\.\ sequence if not already present.
- std::string name = (device[0] == '\\') ? device : "\\\\.\\" + device;
-
- // Open a handle to the serial port.
- ::HANDLE handle = ::CreateFileA(name.c_str(),
- GENERIC_READ | GENERIC_WRITE, 0, 0,
- OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
- if (handle == INVALID_HANDLE_VALUE)
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- // Determine the initial serial port parameters.
- using namespace std; // For memset.
- ::DCB dcb;
- memset(&dcb, 0, sizeof(DCB));
- dcb.DCBlength = sizeof(DCB);
- if (!::GetCommState(handle, &dcb))
- {
- DWORD last_error = ::GetLastError();
- ::CloseHandle(handle);
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- // Set some default serial port parameters. This implementation does not
- // support changing these, so they might as well be in a known state.
- dcb.fBinary = TRUE; // Win32 only supports binary mode.
- dcb.fDsrSensitivity = FALSE;
- dcb.fNull = FALSE; // Do not ignore NULL characters.
- dcb.fAbortOnError = FALSE; // Ignore serial framing errors.
- if (!::SetCommState(handle, &dcb))
- {
- DWORD last_error = ::GetLastError();
- ::CloseHandle(handle);
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- // Set up timeouts so that the serial port will behave similarly to a
- // network socket. Reads wait for at least one byte, then return with
- // whatever they have. Writes return once everything is out the door.
- ::COMMTIMEOUTS timeouts;
- timeouts.ReadIntervalTimeout = 1;
- timeouts.ReadTotalTimeoutMultiplier = 0;
- timeouts.ReadTotalTimeoutConstant = 0;
- timeouts.WriteTotalTimeoutMultiplier = 0;
- timeouts.WriteTotalTimeoutConstant = 0;
- if (!::SetCommTimeouts(handle, &timeouts))
- {
- DWORD last_error = ::GetLastError();
- ::CloseHandle(handle);
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- // We're done. Take ownership of the serial port handle.
- if (handle_service_.assign(impl, handle, ec))
- ::CloseHandle(handle);
- return ec;
-}
-
-asio::error_code win_iocp_serial_port_service::do_set_option(
- win_iocp_serial_port_service::implementation_type& impl,
- win_iocp_serial_port_service::store_function_type store,
- const void* option, asio::error_code& ec)
-{
- using namespace std; // For memcpy.
-
- ::DCB dcb;
- memset(&dcb, 0, sizeof(DCB));
- dcb.DCBlength = sizeof(DCB);
- if (!::GetCommState(handle_service_.native_handle(impl), &dcb))
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- if (store(option, dcb, ec))
- return ec;
-
- if (!::SetCommState(handle_service_.native_handle(impl), &dcb))
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code win_iocp_serial_port_service::do_get_option(
- const win_iocp_serial_port_service::implementation_type& impl,
- win_iocp_serial_port_service::load_function_type load,
- void* option, asio::error_code& ec) const
-{
- using namespace std; // For memset.
-
- ::DCB dcb;
- memset(&dcb, 0, sizeof(DCB));
- dcb.DCBlength = sizeof(DCB);
- if (!::GetCommState(handle_service_.native_handle(impl), &dcb))
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- return ec;
- }
-
- return load(option, dcb, ec);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[41/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
deleted file mode 100644
index ee9b704..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
+++ /dev/null
@@ -1,506 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "rpc_engine.h"
-#include "rpc_connection_impl.h"
-#include "sasl_protocol.h"
-
-#include "RpcHeader.pb.h"
-#include "ProtobufRpcEngine.pb.h"
-#include "IpcConnectionContext.pb.h"
-
-namespace hdfs {
-
-namespace pb = ::google::protobuf;
-namespace pbio = ::google::protobuf::io;
-
-using namespace ::hadoop::common;
-using namespace ::std::placeholders;
-
-static void AddHeadersToPacket(
- std::string *res, std::initializer_list<const pb::MessageLite *> headers,
- const std::string *payload) {
- int len = 0;
- std::for_each(
- headers.begin(), headers.end(),
- [&len](const pb::MessageLite *v) { len += DelimitedPBMessageSize(v); });
-
- if (payload) {
- len += payload->size();
- }
-
- int net_len = htonl(len);
- res->reserve(res->size() + sizeof(net_len) + len);
-
- pbio::StringOutputStream ss(res);
- pbio::CodedOutputStream os(&ss);
- os.WriteRaw(reinterpret_cast<const char *>(&net_len), sizeof(net_len));
-
- uint8_t *buf = os.GetDirectBufferForNBytesAndAdvance(len);
- assert(buf);
-
- std::for_each(
- headers.begin(), headers.end(), [&buf](const pb::MessageLite *v) {
- buf = pbio::CodedOutputStream::WriteVarint32ToArray(v->ByteSize(), buf);
- buf = v->SerializeWithCachedSizesToArray(buf);
- });
-
- if (payload) {
- buf = os.WriteStringToArray(*payload, buf);
- }
-}
-
-RpcConnection::~RpcConnection() {}
-
-RpcConnection::RpcConnection(std::shared_ptr<LockFreeRpcEngine> engine)
- : engine_(engine),
- connected_(kNotYetConnected) {}
-
-::asio::io_service *RpcConnection::GetIoService() {
- std::shared_ptr<LockFreeRpcEngine> pinnedEngine = engine_.lock();
- if(!pinnedEngine) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid RpcEngine");
- return nullptr;
- }
-
- return &pinnedEngine->io_service();
-}
-
-void RpcConnection::StartReading() {
- auto shared_this = shared_from_this();
- ::asio::io_service *service = GetIoService();
- if(!service) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid IoService");
- return;
- }
-
- service->post([shared_this, this] () {
- OnRecvCompleted(::asio::error_code(), 0);
- });
-}
-
-void RpcConnection::HandshakeComplete(const Status &s) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::HandshakeComplete called");
-
- if (s.ok()) {
- if (connected_ == kHandshaking) {
- auto shared_this = shared_from_this();
-
- connected_ = kAuthenticating;
- if (auth_info_.useSASL()) {
-#ifdef USE_SASL
- sasl_protocol_ = std::make_shared<SaslProtocol>(cluster_name_, auth_info_, shared_from_this());
- sasl_protocol_->SetEventHandlers(event_handlers_);
- sasl_protocol_->Authenticate([shared_this, this](
- const Status & status, const AuthInfo & new_auth_info) {
- AuthComplete(status, new_auth_info); } );
-#else
- AuthComplete_locked(Status::Error("SASL is required, but no SASL library was found"), auth_info_);
-#endif
- } else {
- AuthComplete_locked(Status::OK(), auth_info_);
- }
- }
- } else {
- CommsError(s);
- };
-}
-
-void RpcConnection::AuthComplete(const Status &s, const AuthInfo & new_auth_info) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- AuthComplete_locked(s, new_auth_info);
-}
-
-void RpcConnection::AuthComplete_locked(const Status &s, const AuthInfo & new_auth_info) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
- LOG_TRACE(kRPC, << "RpcConnectionImpl::AuthComplete called");
-
- // Free the sasl_protocol object
- sasl_protocol_.reset();
-
- if (s.ok()) {
- auth_info_ = new_auth_info;
-
- auto shared_this = shared_from_this();
- SendContext([shared_this, this](const Status & s) {
- ContextComplete(s);
- });
- } else {
- CommsError(s);
- };
-}
-
-void RpcConnection::ContextComplete(const Status &s) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::ContextComplete called");
-
- if (s.ok()) {
- if (connected_ == kAuthenticating) {
- connected_ = kConnected;
- }
- FlushPendingRequests();
- } else {
- CommsError(s);
- };
-}
-
-void RpcConnection::AsyncFlushPendingRequests() {
- std::shared_ptr<RpcConnection> shared_this = shared_from_this();
-
- ::asio::io_service *service = GetIoService();
- if(!service) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid IoService");
- return;
- }
-
- service->post([shared_this, this]() {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- LOG_TRACE(kRPC, << "RpcConnection::AsyncFlushPendingRequests called (connected=" << ToString(connected_) << ")");
-
- if (!outgoing_request_) {
- FlushPendingRequests();
- }
- });
-}
-
-Status RpcConnection::HandleRpcResponse(std::shared_ptr<Response> response) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- response->ar.reset(new pbio::ArrayInputStream(&response->data_[0], response->data_.size()));
- response->in.reset(new pbio::CodedInputStream(response->ar.get()));
- response->in->PushLimit(response->data_.size());
- RpcResponseHeaderProto h;
- ReadDelimitedPBMessage(response->in.get(), &h);
-
- auto req = RemoveFromRunningQueue(h.callid());
- if (!req) {
- LOG_WARN(kRPC, << "RPC response with Unknown call id " << (int32_t)h.callid());
- if((int32_t)h.callid() == RpcEngine::kCallIdSasl) {
- return Status::AuthenticationFailed("You have an unsecured client connecting to a secured server");
- } else if((int32_t)h.callid() == RpcEngine::kCallIdAuthorizationFailed) {
- return Status::AuthorizationFailed("RPC call id indicates an authorization failure");
- } else {
- return Status::Error("Rpc response with unknown call id");
- }
- }
-
- Status status;
- if(event_handlers_) {
- event_response event_resp = event_handlers_->call(FS_NN_READ_EVENT, cluster_name_.c_str(), 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (event_resp.response_type() == event_response::kTest_Error) {
- status = event_resp.status();
- }
-#endif
- }
-
- if (status.ok() && h.has_exceptionclassname()) {
- status =
- Status::Exception(h.exceptionclassname().c_str(), h.errormsg().c_str());
- }
-
- if(status.get_server_exception_type() == Status::kStandbyException) {
- LOG_WARN(kRPC, << "Tried to connect to standby. status = " << status.ToString());
-
- // We got the request back, but it needs to be resent to the other NN
- std::vector<std::shared_ptr<Request>> reqs_to_redirect = {req};
- PrependRequests_locked(reqs_to_redirect);
-
- CommsError(status);
- return status;
- }
-
- ::asio::io_service *service = GetIoService();
- if(!service) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid IoService");
- return Status::Error("RpcConnection attempted to access invalid IoService");
- }
-
- service->post([req, response, status]() {
- req->OnResponseArrived(response->in.get(), status); // Never call back while holding a lock
- });
-
- return Status::OK();
-}
-
-void RpcConnection::HandleRpcTimeout(std::shared_ptr<Request> req,
- const ::asio::error_code &ec) {
- if (ec.value() == asio::error::operation_aborted) {
- return;
- }
-
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- auto r = RemoveFromRunningQueue(req->call_id());
- if (!r) {
- // The RPC might have been finished and removed from the queue
- return;
- }
-
- Status stat = ToStatus(ec ? ec : make_error_code(::asio::error::timed_out));
-
- r->OnResponseArrived(nullptr, stat);
-}
-
-std::shared_ptr<std::string> RpcConnection::PrepareHandshakePacket() {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- /** From Client.java:
- *
- * Write the connection header - this is sent when connection is established
- * +----------------------------------+
- * | "hrpc" 4 bytes |
- * +----------------------------------+
- * | Version (1 byte) |
- * +----------------------------------+
- * | Service Class (1 byte) |
- * +----------------------------------+
- * | AuthProtocol (1 byte) |
- * +----------------------------------+
- *
- * AuthProtocol: 0->none, -33->SASL
- */
-
- char auth_protocol = auth_info_.useSASL() ? -33 : 0;
- const char handshake_header[] = {'h', 'r', 'p', 'c',
- RpcEngine::kRpcVersion, 0, auth_protocol};
- auto res =
- std::make_shared<std::string>(handshake_header, sizeof(handshake_header));
-
- return res;
-}
-
-std::shared_ptr<std::string> RpcConnection::PrepareContextPacket() {
- // This needs to be send after the SASL handshake, and
- // after the SASL handshake (if any)
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- std::shared_ptr<LockFreeRpcEngine> pinnedEngine = engine_.lock();
- if(!pinnedEngine) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid RpcEngine");
- return std::make_shared<std::string>();
- }
-
- std::shared_ptr<std::string> serializedPacketBuffer = std::make_shared<std::string>();
-
- RpcRequestHeaderProto headerProto;
- headerProto.set_rpckind(RPC_PROTOCOL_BUFFER);
- headerProto.set_rpcop(RpcRequestHeaderProto::RPC_FINAL_PACKET);
- headerProto.set_callid(RpcEngine::kCallIdConnectionContext);
- headerProto.set_clientid(pinnedEngine->client_name());
-
- IpcConnectionContextProto handshakeContextProto;
- handshakeContextProto.set_protocol(pinnedEngine->protocol_name());
- const std::string & user_name = auth_info_.getUser();
- if (!user_name.empty()) {
- *handshakeContextProto.mutable_userinfo()->mutable_effectiveuser() = user_name;
- }
- AddHeadersToPacket(serializedPacketBuffer.get(), {&headerProto, &handshakeContextProto}, nullptr);
-
- return serializedPacketBuffer;
-}
-
-void RpcConnection::AsyncRpc(
- const std::string &method_name, const ::google::protobuf::MessageLite *req,
- std::shared_ptr<::google::protobuf::MessageLite> resp,
- const RpcCallback &handler) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- AsyncRpc_locked(method_name, req, resp, handler);
-}
-
-void RpcConnection::AsyncRpc_locked(
- const std::string &method_name, const ::google::protobuf::MessageLite *req,
- std::shared_ptr<::google::protobuf::MessageLite> resp,
- const RpcCallback &handler) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- auto wrapped_handler =
- [resp, handler](pbio::CodedInputStream *is, const Status &status) {
- if (status.ok()) {
- if (is) { // Connect messages will not have an is
- ReadDelimitedPBMessage(is, resp.get());
- }
- }
- handler(status);
- };
-
-
- std::shared_ptr<Request> rpcRequest;
- { // Scope to minimize how long RpcEngine's lifetime may be extended
- std::shared_ptr<LockFreeRpcEngine> pinnedEngine = engine_.lock();
- if(!pinnedEngine) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid RpcEngine");
- handler(Status::Error("Invalid RpcEngine access."));
- return;
- }
-
- int call_id = (method_name != SASL_METHOD_NAME ? pinnedEngine->NextCallId() : RpcEngine::kCallIdSasl);
- rpcRequest = std::make_shared<Request>(pinnedEngine, method_name, call_id,
- req, std::move(wrapped_handler));
- }
-
- SendRpcRequests({rpcRequest});
-}
-
-void RpcConnection::AsyncRpc(const std::vector<std::shared_ptr<Request> > & requests) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- SendRpcRequests(requests);
-}
-
-void RpcConnection::SendRpcRequests(const std::vector<std::shared_ptr<Request> > & requests) {
- LOG_TRACE(kRPC, << "RpcConnection::SendRpcRequests[] called; connected=" << ToString(connected_));
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- if (connected_ == kDisconnected) {
- // Oops. The connection failed _just_ before the engine got a chance
- // to send it. Register it as a failure
- Status status = Status::ResourceUnavailable("RpcConnection closed before send.");
-
- std::shared_ptr<LockFreeRpcEngine> pinnedEngine = engine_.lock();
- if(!pinnedEngine) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access invalid RpcEngine");
- return;
- }
-
- pinnedEngine->AsyncRpcCommsError(status, shared_from_this(), requests);
- } else {
- for (auto request : requests) {
- if (request->method_name() != SASL_METHOD_NAME)
- pending_requests_.push_back(request);
- else
- auth_requests_.push_back(request);
- }
- if (connected_ == kConnected || connected_ == kHandshaking || connected_ == kAuthenticating) { // Dont flush if we're waiting or handshaking
- FlushPendingRequests();
- }
- }
-}
-
-
-void RpcConnection::PreEnqueueRequests(
- std::vector<std::shared_ptr<Request>> requests) {
- // Public method - acquire lock
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- LOG_DEBUG(kRPC, << "RpcConnection::PreEnqueueRequests called");
-
- assert(connected_ == kNotYetConnected);
-
- pending_requests_.insert(pending_requests_.end(), requests.begin(),
- requests.end());
- // Don't start sending yet; will flush when connected
-}
-
-// Only call when already holding conn state lock
-void RpcConnection::PrependRequests_locked( std::vector<std::shared_ptr<Request>> requests) {
- LOG_DEBUG(kRPC, << "RpcConnection::PrependRequests called");
-
- pending_requests_.insert(pending_requests_.begin(), requests.begin(),
- requests.end());
- // Don't start sending yet; will flush when connected
-}
-
-void RpcConnection::SetEventHandlers(std::shared_ptr<LibhdfsEvents> event_handlers) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- event_handlers_ = event_handlers;
- if (sasl_protocol_) {
- sasl_protocol_->SetEventHandlers(event_handlers);
- }
-}
-
-void RpcConnection::SetClusterName(std::string cluster_name) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- cluster_name_ = cluster_name;
-}
-
-void RpcConnection::SetAuthInfo(const AuthInfo& auth_info) {
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- auth_info_ = auth_info;
-}
-
-void RpcConnection::CommsError(const Status &status) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
- LOG_DEBUG(kRPC, << "RpcConnection::CommsError called");
-
- Disconnect();
-
- // Anything that has been queued to the connection (on the fly or pending)
- // will get dinged for a retry
- std::vector<std::shared_ptr<Request>> requestsToReturn;
- std::transform(sent_requests_.begin(), sent_requests_.end(),
- std::back_inserter(requestsToReturn),
- std::bind(&SentRequestMap::value_type::second, _1));
- sent_requests_.clear();
-
- requestsToReturn.insert(requestsToReturn.end(),
- std::make_move_iterator(pending_requests_.begin()),
- std::make_move_iterator(pending_requests_.end()));
- pending_requests_.clear();
-
- std::shared_ptr<LockFreeRpcEngine> pinnedEngine = engine_.lock();
- if(!pinnedEngine) {
- LOG_ERROR(kRPC, << "RpcConnection@" << this << " attempted to access an invalid RpcEngine");
- return;
- }
-
- pinnedEngine->AsyncRpcCommsError(status, shared_from_this(), requestsToReturn);
-}
-
-void RpcConnection::ClearAndDisconnect(const ::asio::error_code &ec) {
- Disconnect();
- std::vector<std::shared_ptr<Request>> requests;
- std::transform(sent_requests_.begin(), sent_requests_.end(),
- std::back_inserter(requests),
- std::bind(&SentRequestMap::value_type::second, _1));
- sent_requests_.clear();
- requests.insert(requests.end(),
- std::make_move_iterator(pending_requests_.begin()),
- std::make_move_iterator(pending_requests_.end()));
- pending_requests_.clear();
- for (const auto &req : requests) {
- req->OnResponseArrived(nullptr, ToStatus(ec));
- }
-}
-
-std::shared_ptr<Request> RpcConnection::RemoveFromRunningQueue(int call_id) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
- auto it = sent_requests_.find(call_id);
- if (it == sent_requests_.end()) {
- return std::shared_ptr<Request>();
- }
-
- auto req = it->second;
- sent_requests_.erase(it);
- return req;
-}
-
-std::string RpcConnection::ToString(ConnectedState connected) {
- switch(connected) {
- case kNotYetConnected: return "NotYetConnected";
- case kConnecting: return "Connecting";
- case kHandshaking: return "Handshaking";
- case kAuthenticating: return "Authenticating";
- case kConnected: return "Connected";
- case kDisconnected: return "Disconnected";
- default: return "Invalid ConnectedState";
- }
-}
-
-}// end namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.h
deleted file mode 100644
index 8e579a2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.h
+++ /dev/null
@@ -1,463 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_RPC_RPC_CONNECTION_IMPL_H_
-#define LIB_RPC_RPC_CONNECTION_IMPL_H_
-
-#include "rpc_connection.h"
-#include "rpc_engine.h"
-#include "request.h"
-
-#include "common/auth_info.h"
-#include "common/logging.h"
-#include "common/util.h"
-#include "common/libhdfs_events_impl.h"
-
-#include <asio/connect.hpp>
-#include <asio/read.hpp>
-#include <asio/write.hpp>
-
-#include <system_error>
-
-namespace hdfs {
-
-template <class Socket>
-class RpcConnectionImpl : public RpcConnection {
-public:
- MEMCHECKED_CLASS(RpcConnectionImpl)
-
- RpcConnectionImpl(std::shared_ptr<RpcEngine> engine);
- virtual ~RpcConnectionImpl() override;
-
- virtual void Connect(const std::vector<::asio::ip::tcp::endpoint> &server,
- const AuthInfo & auth_info,
- RpcCallback &handler) override;
- virtual void ConnectAndFlush(
- const std::vector<::asio::ip::tcp::endpoint> &server) override;
- virtual void SendHandshake(RpcCallback &handler) override;
- virtual void SendContext(RpcCallback &handler) override;
- virtual void Disconnect() override;
- virtual void OnSendCompleted(const ::asio::error_code &ec,
- size_t transferred) override;
- virtual void OnRecvCompleted(const ::asio::error_code &ec,
- size_t transferred) override;
- virtual void FlushPendingRequests() override;
-
-
- Socket &TEST_get_mutable_socket() { return socket_; }
-
- void TEST_set_connected(bool connected) { connected_ = connected ? kConnected : kNotYetConnected; }
-
- private:
- const Options options_;
- ::asio::ip::tcp::endpoint current_endpoint_;
- std::vector<::asio::ip::tcp::endpoint> additional_endpoints_;
- Socket socket_;
- ::asio::deadline_timer connect_timer_;
-
- void ConnectComplete(const ::asio::error_code &ec, const ::asio::ip::tcp::endpoint &remote);
-};
-
-template <class Socket>
-RpcConnectionImpl<Socket>::RpcConnectionImpl(std::shared_ptr<RpcEngine> engine)
- : RpcConnection(engine),
- options_(engine->options()),
- socket_(engine->io_service()),
- connect_timer_(engine->io_service())
-{
- LOG_TRACE(kRPC, << "RpcConnectionImpl::RpcConnectionImpl called &" << (void*)this);
-}
-
-template <class Socket>
-RpcConnectionImpl<Socket>::~RpcConnectionImpl() {
- LOG_DEBUG(kRPC, << "RpcConnectionImpl::~RpcConnectionImpl called &" << (void*)this);
-
- if (pending_requests_.size() > 0)
- LOG_WARN(kRPC, << "RpcConnectionImpl::~RpcConnectionImpl called with items in the pending queue");
- if (sent_requests_.size() > 0)
- LOG_WARN(kRPC, << "RpcConnectionImpl::~RpcConnectionImpl called with items in the sent_requests queue");
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::Connect(
- const std::vector<::asio::ip::tcp::endpoint> &server,
- const AuthInfo & auth_info,
- RpcCallback &handler) {
- LOG_TRACE(kRPC, << "RpcConnectionImpl::Connect called");
-
- this->auth_info_ = auth_info;
-
- std::shared_ptr<Request> connectionRequest;
- { // Scope to minimize how long RpcEngine's lifetime may be extended
- std::shared_ptr<LockFreeRpcEngine> pinned_engine = engine_.lock();
- if(!pinned_engine) {
- LOG_ERROR(kRPC, << "RpcConnectionImpl@" << this << " attempted to access invalid RpcEngine");
- handler(Status::Error("Invalid RpcEngine access."));
- return;
- }
-
- connectionRequest = std::make_shared<Request>(pinned_engine,
- [handler](::google::protobuf::io::CodedInputStream *is,const Status &status) {
- (void)is;
- handler(status);
- });
- }
-
- pending_requests_.push_back(connectionRequest);
- this->ConnectAndFlush(server); // need "this" so compiler can infer type of CAF
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::ConnectAndFlush(
- const std::vector<::asio::ip::tcp::endpoint> &server) {
-
- LOG_INFO(kRPC, << "ConnectAndFlush called");
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- if (server.empty()) {
- Status s = Status::InvalidArgument("No endpoints provided");
- CommsError(s);
- return;
- }
-
- if (connected_ == kConnected) {
- FlushPendingRequests();
- return;
- }
- if (connected_ != kNotYetConnected) {
- LOG_WARN(kRPC, << "RpcConnectionImpl::ConnectAndFlush called while connected=" << ToString(connected_));
- return;
- }
- connected_ = kConnecting;
-
- // Take the first endpoint, but remember the alternatives for later
- additional_endpoints_ = server;
- ::asio::ip::tcp::endpoint first_endpoint = additional_endpoints_.front();
- additional_endpoints_.erase(additional_endpoints_.begin());
- current_endpoint_ = first_endpoint;
-
- auto shared_this = shared_from_this();
- socket_.async_connect(first_endpoint, [shared_this, this, first_endpoint](const ::asio::error_code &ec) {
- ConnectComplete(ec, first_endpoint);
- });
-
- // Prompt the timer to timeout
- auto weak_this = std::weak_ptr<RpcConnection>(shared_this);
- connect_timer_.expires_from_now(
- std::chrono::milliseconds(options_.rpc_connect_timeout));
- connect_timer_.async_wait([shared_this, this, first_endpoint](const ::asio::error_code &ec) {
- if (ec)
- ConnectComplete(ec, first_endpoint);
- else
- ConnectComplete(make_error_code(asio::error::host_unreachable), first_endpoint);
- });
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::ConnectComplete(const ::asio::error_code &ec, const ::asio::ip::tcp::endpoint & remote) {
- auto shared_this = RpcConnectionImpl<Socket>::shared_from_this();
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
- connect_timer_.cancel();
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::ConnectComplete called");
-
- // Could be an old async connect returning a result after we've moved on
- if (remote != current_endpoint_) {
- LOG_DEBUG(kRPC, << "Got ConnectComplete for " << remote << " but current_endpoint_ is " << current_endpoint_);
- return;
- }
- if (connected_ != kConnecting) {
- LOG_DEBUG(kRPC, << "Got ConnectComplete but current state is " << connected_);;
- return;
- }
-
- Status status = ToStatus(ec);
- if(event_handlers_) {
- event_response event_resp = event_handlers_->call(FS_NN_CONNECT_EVENT, cluster_name_.c_str(), 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (event_resp.response_type() == event_response::kTest_Error) {
- status = event_resp.status();
- }
-#endif
- }
-
- if (status.ok()) {
- StartReading();
- SendHandshake([shared_this, this](const Status & s) {
- HandshakeComplete(s);
- });
- } else {
- LOG_DEBUG(kRPC, << "Rpc connection failed; err=" << status.ToString());;
- std::string err = SafeDisconnect(get_asio_socket_ptr(&socket_));
- if(!err.empty()) {
- LOG_INFO(kRPC, << "Rpc connection failed to connect to endpoint, error closing connection: " << err);
- }
-
- if (!additional_endpoints_.empty()) {
- // If we have additional endpoints, keep trying until we either run out or
- // hit one
- ::asio::ip::tcp::endpoint next_endpoint = additional_endpoints_.front();
- additional_endpoints_.erase(additional_endpoints_.begin());
- current_endpoint_ = next_endpoint;
-
- socket_.async_connect(next_endpoint, [shared_this, this, next_endpoint](const ::asio::error_code &ec) {
- ConnectComplete(ec, next_endpoint);
- });
- connect_timer_.expires_from_now(
- std::chrono::milliseconds(options_.rpc_connect_timeout));
- connect_timer_.async_wait([shared_this, this, next_endpoint](const ::asio::error_code &ec) {
- if (ec)
- ConnectComplete(ec, next_endpoint);
- else
- ConnectComplete(make_error_code(asio::error::host_unreachable), next_endpoint);
- });
- } else {
- CommsError(status);
- }
- }
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::SendHandshake(RpcCallback &handler) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::SendHandshake called");
- connected_ = kHandshaking;
-
- auto shared_this = shared_from_this();
- auto handshake_packet = PrepareHandshakePacket();
- ::asio::async_write(socket_, asio::buffer(*handshake_packet),
- [handshake_packet, handler, shared_this, this](
- const ::asio::error_code &ec, size_t) {
- Status status = ToStatus(ec);
- handler(status);
- });
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::SendContext(RpcCallback &handler) {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::SendContext called");
-
- auto shared_this = shared_from_this();
- auto context_packet = PrepareContextPacket();
- ::asio::async_write(socket_, asio::buffer(*context_packet),
- [context_packet, handler, shared_this, this](
- const ::asio::error_code &ec, size_t) {
- Status status = ToStatus(ec);
- handler(status);
- });
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::OnSendCompleted(const ::asio::error_code &ec,
- size_t) {
- using std::placeholders::_1;
- using std::placeholders::_2;
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::OnSendCompleted called");
-
- outgoing_request_.reset();
- if (ec) {
- LOG_WARN(kRPC, << "Network error during RPC write: " << ec.message());
- CommsError(ToStatus(ec));
- return;
- }
-
- FlushPendingRequests();
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::FlushPendingRequests() {
- using namespace ::std::placeholders;
-
- // Lock should be held
- assert(lock_held(connection_state_lock_));
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::FlushPendingRequests called");
-
- // Don't send if we don't need to
- if (outgoing_request_) {
- return;
- }
-
- std::shared_ptr<Request> req;
- switch (connected_) {
- case kNotYetConnected:
- return;
- case kConnecting:
- return;
- case kHandshaking:
- return;
- case kAuthenticating:
- if (auth_requests_.empty()) {
- return;
- }
- req = auth_requests_.front();
- auth_requests_.erase(auth_requests_.begin());
- break;
- case kConnected:
- if (pending_requests_.empty()) {
- return;
- }
- req = pending_requests_.front();
- pending_requests_.erase(pending_requests_.begin());
- break;
- case kDisconnected:
- LOG_DEBUG(kRPC, << "RpcConnectionImpl::FlushPendingRequests attempted to flush a " << ToString(connected_) << " connection");
- return;
- default:
- LOG_DEBUG(kRPC, << "RpcConnectionImpl::FlushPendingRequests invalid state: " << ToString(connected_));
- return;
- }
-
- std::shared_ptr<RpcConnection> shared_this = shared_from_this();
- auto weak_this = std::weak_ptr<RpcConnection>(shared_this);
- auto weak_req = std::weak_ptr<Request>(req);
-
- std::shared_ptr<std::string> payload = std::make_shared<std::string>();
- req->GetPacket(payload.get());
- if (!payload->empty()) {
- assert(sent_requests_.find(req->call_id()) == sent_requests_.end());
- sent_requests_[req->call_id()] = req;
- outgoing_request_ = req;
-
- req->timer().expires_from_now(
- std::chrono::milliseconds(options_.rpc_timeout));
- req->timer().async_wait([weak_this, weak_req, this](const ::asio::error_code &ec) {
- auto timeout_this = weak_this.lock();
- auto timeout_req = weak_req.lock();
- if (timeout_this && timeout_req)
- this->HandleRpcTimeout(timeout_req, ec);
- });
-
- asio::async_write(socket_, asio::buffer(*payload),
- [shared_this, this, payload](const ::asio::error_code &ec,
- size_t size) {
- OnSendCompleted(ec, size);
- });
- } else { // Nothing to send for this request, inform the handler immediately
- ::asio::io_service *service = GetIoService();
- if(!service) {
- LOG_ERROR(kRPC, << "RpcConnectionImpl@" << this << " attempted to access null IoService");
- // No easy way to bail out of this context, but the only way to get here is when
- // the FileSystem is being destroyed.
- return;
- }
-
- service->post(
- // Never hold locks when calling a callback
- [req]() { req->OnResponseArrived(nullptr, Status::OK()); }
- );
-
- // Reschedule to flush the next one
- AsyncFlushPendingRequests();
- }
-}
-
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::OnRecvCompleted(const ::asio::error_code &original_ec,
- size_t) {
- using std::placeholders::_1;
- using std::placeholders::_2;
- std::lock_guard<std::mutex> state_lock(connection_state_lock_);
-
- ::asio::error_code my_ec(original_ec);
-
- LOG_TRACE(kRPC, << "RpcConnectionImpl::OnRecvCompleted called");
-
- std::shared_ptr<RpcConnection> shared_this = shared_from_this();
-
- if(event_handlers_) {
- event_response event_resp = event_handlers_->call(FS_NN_READ_EVENT, cluster_name_.c_str(), 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (event_resp.response_type() == event_response::kTest_Error) {
- my_ec = std::make_error_code(std::errc::network_down);
- }
-#endif
- }
-
- switch (my_ec.value()) {
- case 0:
- // No errors
- break;
- case asio::error::operation_aborted:
- // The event loop has been shut down. Ignore the error.
- return;
- default:
- LOG_WARN(kRPC, << "Network error during RPC read: " << my_ec.message());
- CommsError(ToStatus(my_ec));
- return;
- }
-
- if (!current_response_state_) { /* start a new one */
- current_response_state_ = std::make_shared<Response>();
- }
-
- if (current_response_state_->state_ == Response::kReadLength) {
- current_response_state_->state_ = Response::kReadContent;
- auto buf = ::asio::buffer(reinterpret_cast<char *>(¤t_response_state_->length_),
- sizeof(current_response_state_->length_));
- asio::async_read(
- socket_, buf,
- [shared_this, this](const ::asio::error_code &ec, size_t size) {
- OnRecvCompleted(ec, size);
- });
- } else if (current_response_state_->state_ == Response::kReadContent) {
- current_response_state_->state_ = Response::kParseResponse;
- current_response_state_->length_ = ntohl(current_response_state_->length_);
- current_response_state_->data_.resize(current_response_state_->length_);
- asio::async_read(
- socket_, ::asio::buffer(current_response_state_->data_),
- [shared_this, this](const ::asio::error_code &ec, size_t size) {
- OnRecvCompleted(ec, size);
- });
- } else if (current_response_state_->state_ == Response::kParseResponse) {
- // Check return status from the RPC response. We may have received a msg
- // indicating a server side error.
-
- Status stat = HandleRpcResponse(current_response_state_);
-
- if(stat.get_server_exception_type() == Status::kStandbyException) {
- // May need to bail out, connect to new NN, and restart loop
- LOG_INFO(kRPC, << "Communicating with standby NN, attempting to reconnect");
- }
-
- current_response_state_ = nullptr;
- StartReading();
- }
-}
-
-template <class Socket>
-void RpcConnectionImpl<Socket>::Disconnect() {
- assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
-
- LOG_INFO(kRPC, << "RpcConnectionImpl::Disconnect called");
-
- outgoing_request_.reset();
- if (connected_ == kConnecting || connected_ == kHandshaking || connected_ == kAuthenticating || connected_ == kConnected) {
- // Don't print out errors, we were expecting a disconnect here
- SafeDisconnect(get_asio_socket_ptr(&socket_));
- }
- connected_ = kDisconnected;
-}
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.cc
deleted file mode 100644
index 0ca7c6a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.cc
+++ /dev/null
@@ -1,334 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "rpc_engine.h"
-#include "rpc_connection_impl.h"
-#include "common/util.h"
-#include "common/logging.h"
-#include "common/namenode_info.h"
-#include "common/optional_wrapper.h"
-
-#include <algorithm>
-
-namespace hdfs {
-
-template <class T>
-using optional = std::experimental::optional<T>;
-
-
-RpcEngine::RpcEngine(::asio::io_service *io_service, const Options &options,
- const std::string &client_name, const std::string &user_name,
- const char *protocol_name, int protocol_version)
- : io_service_(io_service),
- options_(options),
- client_name_(client_name),
- client_id_(getRandomClientId()),
- protocol_name_(protocol_name),
- protocol_version_(protocol_version),
- call_id_(0),
- retry_timer(*io_service),
- event_handlers_(std::make_shared<LibhdfsEvents>()),
- connect_canceled_(false)
-{
- LOG_DEBUG(kRPC, << "RpcEngine::RpcEngine called");
-
- auth_info_.setUser(user_name);
- if (options.authentication == Options::kKerberos) {
- auth_info_.setMethod(AuthInfo::kKerberos);
- }
-}
-
-void RpcEngine::Connect(const std::string &cluster_name,
- const std::vector<ResolvedNamenodeInfo> servers,
- RpcCallback &handler) {
- std::lock_guard<std::mutex> state_lock(engine_state_lock_);
- LOG_DEBUG(kRPC, << "RpcEngine::Connect called");
-
- last_endpoints_ = servers[0].endpoints;
- cluster_name_ = cluster_name;
- LOG_TRACE(kRPC, << "Got cluster name \"" << cluster_name << "\" in RpcEngine::Connect")
-
- ha_persisted_info_.reset(new HANamenodeTracker(servers, io_service_, event_handlers_));
- if(!ha_persisted_info_->is_enabled()) {
- ha_persisted_info_.reset();
- }
-
- // Construct retry policy after we determine if config is HA
- retry_policy_ = MakeRetryPolicy(options_);
-
- conn_ = InitializeConnection();
- conn_->Connect(last_endpoints_, auth_info_, handler);
-}
-
-bool RpcEngine::CancelPendingConnect() {
- if(connect_canceled_) {
- LOG_DEBUG(kRPC, << "RpcEngine@" << this << "::CancelPendingConnect called more than once");
- return false;
- }
-
- connect_canceled_ = true;
- return true;
-}
-
-void RpcEngine::Shutdown() {
- LOG_DEBUG(kRPC, << "RpcEngine::Shutdown called");
- io_service_->post([this]() {
- std::lock_guard<std::mutex> state_lock(engine_state_lock_);
- conn_.reset();
- });
-}
-
-std::unique_ptr<const RetryPolicy> RpcEngine::MakeRetryPolicy(const Options &options) {
- LOG_DEBUG(kRPC, << "RpcEngine::MakeRetryPolicy called");
-
- if(ha_persisted_info_) {
- LOG_INFO(kRPC, << "Cluster is HA configued so policy will default to HA until a knob is implemented");
- return std::unique_ptr<RetryPolicy>(new FixedDelayWithFailover(options.rpc_retry_delay_ms,
- options.max_rpc_retries,
- options.failover_max_retries,
- options.failover_connection_max_retries));
- } else if (options.max_rpc_retries > 0) {
- return std::unique_ptr<RetryPolicy>(new FixedDelayRetryPolicy(options.rpc_retry_delay_ms,
- options.max_rpc_retries));
- } else {
- return nullptr;
- }
-}
-
-std::string RpcEngine::getRandomClientId()
-{
- /**
- * The server is requesting a 16-byte UUID:
- * https://github.com/c9n/hadoop/blob/master/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ClientId.java
- *
- * This function generates a 16-byte UUID (version 4):
- * https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29
- **/
- std::vector<unsigned char>buf(16);
- RAND_pseudo_bytes(&buf[0], buf.size());
-
- //clear the first four bits of byte 6 then set the second bit
- buf[6] = (buf[6] & 0x0f) | 0x40;
-
- //clear the second bit of byte 8 and set the first bit
- buf[8] = (buf[8] & 0xbf) | 0x80;
- return std::string(reinterpret_cast<const char*>(&buf[0]), buf.size());
-}
-
-
-
-void RpcEngine::TEST_SetRpcConnection(std::shared_ptr<RpcConnection> conn) {
- conn_ = conn;
- retry_policy_ = MakeRetryPolicy(options_);
-}
-
-void RpcEngine::TEST_SetRetryPolicy(std::unique_ptr<const RetryPolicy> policy) {
- retry_policy_ = std::move(policy);
-}
-
-std::unique_ptr<const RetryPolicy> RpcEngine::TEST_GenerateRetryPolicyUsingOptions() {
- return MakeRetryPolicy(options_);
-}
-
-void RpcEngine::AsyncRpc(
- const std::string &method_name, const ::google::protobuf::MessageLite *req,
- const std::shared_ptr<::google::protobuf::MessageLite> &resp,
- const std::function<void(const Status &)> &handler) {
- std::lock_guard<std::mutex> state_lock(engine_state_lock_);
-
- LOG_TRACE(kRPC, << "RpcEngine::AsyncRpc called");
-
- // In case user-side code isn't checking the status of Connect before doing RPC
- if(connect_canceled_) {
- io_service_->post(
- [handler](){ handler(Status::Canceled()); }
- );
- return;
- }
-
- if (!conn_) {
- conn_ = InitializeConnection();
- conn_->ConnectAndFlush(last_endpoints_);
- }
- conn_->AsyncRpc(method_name, req, resp, handler);
-}
-
-std::shared_ptr<RpcConnection> RpcEngine::NewConnection()
-{
- LOG_DEBUG(kRPC, << "RpcEngine::NewConnection called");
-
- return std::make_shared<RpcConnectionImpl<::asio::ip::tcp::socket>>(shared_from_this());
-}
-
-std::shared_ptr<RpcConnection> RpcEngine::InitializeConnection()
-{
- std::shared_ptr<RpcConnection> newConn = NewConnection();
- newConn->SetEventHandlers(event_handlers_);
- newConn->SetClusterName(cluster_name_);
- newConn->SetAuthInfo(auth_info_);
-
- return newConn;
-}
-
-void RpcEngine::AsyncRpcCommsError(
- const Status &status,
- std::shared_ptr<RpcConnection> failedConnection,
- std::vector<std::shared_ptr<Request>> pendingRequests) {
- LOG_ERROR(kRPC, << "RpcEngine::AsyncRpcCommsError called; status=\"" << status.ToString() << "\" conn=" << failedConnection.get() << " reqs=" << std::to_string(pendingRequests.size()));
-
- io_service().post([this, status, failedConnection, pendingRequests]() {
- RpcCommsError(status, failedConnection, pendingRequests);
- });
-}
-
-void RpcEngine::RpcCommsError(
- const Status &status,
- std::shared_ptr<RpcConnection> failedConnection,
- std::vector<std::shared_ptr<Request>> pendingRequests) {
- LOG_WARN(kRPC, << "RpcEngine::RpcCommsError called; status=\"" << status.ToString() << "\" conn=" << failedConnection.get() << " reqs=" << std::to_string(pendingRequests.size()));
-
- std::lock_guard<std::mutex> state_lock(engine_state_lock_);
-
- // If the failed connection is the current one, shut it down
- // It will be reconnected when there is work to do
- if (failedConnection == conn_) {
- LOG_INFO(kRPC, << "Disconnecting from failed RpcConnection");
- conn_.reset();
- }
-
- optional<RetryAction> head_action = optional<RetryAction>();
-
- // Filter out anything with too many retries already
- if(event_handlers_) {
- event_handlers_->call(FS_NN_PRE_RPC_RETRY_EVENT, "RpcCommsError",
- reinterpret_cast<int64_t>(this));
- }
-
- for (auto it = pendingRequests.begin(); it < pendingRequests.end();) {
- auto req = *it;
-
- LOG_DEBUG(kRPC, << req->GetDebugString());
-
- RetryAction retry = RetryAction::fail(""); // Default to fail
-
- if(connect_canceled_) {
- retry = RetryAction::fail("Operation canceled");
- } else if (status.notWorthRetry()) {
- retry = RetryAction::fail(status.ToString().c_str());
- } else if (retry_policy()) {
- retry = retry_policy()->ShouldRetry(status, req->IncrementRetryCount(), req->get_failover_count(), true);
- }
-
- if (retry.action == RetryAction::FAIL) {
- // If we've exceeded the maximum retry, take the latest error and pass it
- // on. There might be a good argument for caching the first error
- // rather than the last one, that gets messy
-
- io_service().post([req, status]() {
- req->OnResponseArrived(nullptr, status); // Never call back while holding a lock
- });
- it = pendingRequests.erase(it);
- } else {
- if (!head_action) {
- head_action = retry;
- }
-
- ++it;
- }
- }
-
- // If we have reqests that need to be re-sent, ensure that we have a connection
- // and send the requests to it
- bool haveRequests = !pendingRequests.empty() &&
- head_action && head_action->action != RetryAction::FAIL;
-
- if (haveRequests) {
- LOG_TRACE(kRPC, << "Have " << std::to_string(pendingRequests.size()) << " requests to resend");
- bool needNewConnection = !conn_;
- if (needNewConnection) {
- LOG_DEBUG(kRPC, << "Creating a new NN conection");
-
-
- // If HA is enabled and we have valid HA info then fail over to the standby (hopefully now active)
- if(head_action->action == RetryAction::FAILOVER_AND_RETRY && ha_persisted_info_) {
-
- for(unsigned int i=0; i<pendingRequests.size();i++) {
- pendingRequests[i]->IncrementFailoverCount();
- }
-
- ResolvedNamenodeInfo new_active_nn_info;
- bool failoverInfoFound = ha_persisted_info_->GetFailoverAndUpdate(last_endpoints_, new_active_nn_info);
- if(!failoverInfoFound) {
- // This shouldn't be a common case, the set of endpoints was empty, likely due to DNS issues.
- // Another possibility is a network device has been added or removed due to a VM starting or stopping.
-
- LOG_ERROR(kRPC, << "Failed to find endpoints for the alternate namenode."
- << "Make sure Namenode hostnames can be found with a DNS lookup.");
- // Kill all pending RPC requests since there's nowhere for this to go
- Status badEndpointStatus = Status::Error("No endpoints found for namenode");
-
- for(unsigned int i=0; i<pendingRequests.size(); i++) {
- std::shared_ptr<Request> sharedCurrentRequest = pendingRequests[i];
- io_service().post([sharedCurrentRequest, badEndpointStatus]() {
- sharedCurrentRequest->OnResponseArrived(nullptr, badEndpointStatus); // Never call back while holding a lock
- });
- }
-
- // Clear request vector. This isn't a recoverable error.
- pendingRequests.clear();
- }
-
- if(ha_persisted_info_->is_resolved()) {
- LOG_INFO(kRPC, << "Going to try connecting to alternate Namenode: " << new_active_nn_info.uri.str());
- last_endpoints_ = new_active_nn_info.endpoints;
- } else {
- LOG_WARN(kRPC, << "It looks HA is turned on, but unable to fail over. has info="
- << ha_persisted_info_->is_enabled() << " resolved=" << ha_persisted_info_->is_resolved());
- }
- }
-
- conn_ = InitializeConnection();
- conn_->PreEnqueueRequests(pendingRequests);
-
- if (head_action->delayMillis > 0) {
- auto weak_conn = std::weak_ptr<RpcConnection>(conn_);
- retry_timer.expires_from_now(
- std::chrono::milliseconds(head_action->delayMillis));
- retry_timer.async_wait([this, weak_conn](asio::error_code ec) {
- auto strong_conn = weak_conn.lock();
- if ( (!ec) && (strong_conn) ) {
- strong_conn->ConnectAndFlush(last_endpoints_);
- }
- });
- } else {
- conn_->ConnectAndFlush(last_endpoints_);
- }
- } else {
- // We have an existing connection (which might be closed; we don't know
- // until we hold the connection local) and should just add the new requests
- conn_->AsyncRpc(pendingRequests);
- }
- }
-}
-
-
-void RpcEngine::SetFsEventCallback(fs_event_callback callback) {
- event_handlers_->set_fs_callback(callback);
-}
-
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.h
deleted file mode 100644
index 9f45fcf..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_RPC_RPC_ENGINE_H_
-#define LIB_RPC_RPC_ENGINE_H_
-
-#include "hdfspp/options.h"
-#include "hdfspp/status.h"
-
-#include "common/auth_info.h"
-#include "common/retry_policy.h"
-#include "common/libhdfs_events_impl.h"
-#include "common/util.h"
-#include "common/new_delete.h"
-#include "common/namenode_info.h"
-#include "namenode_tracker.h"
-
-#include <google/protobuf/message_lite.h>
-
-#include <asio/ip/tcp.hpp>
-#include <asio/deadline_timer.hpp>
-
-#include <atomic>
-#include <memory>
-#include <vector>
-#include <mutex>
-
-namespace hdfs {
-
- /*
- * NOTE ABOUT LOCKING MODELS
- *
- * To prevent deadlocks, anything that might acquire multiple locks must
- * acquire the lock on the RpcEngine first, then the RpcConnection. Callbacks
- * will never be called while holding any locks, so the components are free
- * to take locks when servicing a callback.
- *
- * An RpcRequest or RpcConnection should never call any methods on the RpcEngine
- * except for those that are exposed through the LockFreeRpcEngine interface.
- */
-
-typedef const std::function<void(const Status &)> RpcCallback;
-
-class LockFreeRpcEngine;
-class RpcConnection;
-class SaslProtocol;
-class RpcConnection;
-class Request;
-
-/*
- * These methods of the RpcEngine will never acquire locks, and are safe for
- * RpcConnections to call while holding a ConnectionLock.
- */
-class LockFreeRpcEngine {
-public:
- MEMCHECKED_CLASS(LockFreeRpcEngine)
-
- /* Enqueues a CommsError without acquiring a lock*/
- virtual void AsyncRpcCommsError(const Status &status,
- std::shared_ptr<RpcConnection> failedConnection,
- std::vector<std::shared_ptr<Request>> pendingRequests) = 0;
-
-
- virtual const RetryPolicy *retry_policy() = 0;
- virtual int NextCallId() = 0;
-
- virtual const std::string &client_name() = 0;
- virtual const std::string &client_id() = 0;
- virtual const std::string &user_name() = 0;
- virtual const std::string &protocol_name() = 0;
- virtual int protocol_version() = 0;
- virtual ::asio::io_service &io_service() = 0;
- virtual const Options &options() = 0;
-};
-
-
-/*
- * An engine for reliable communication with a NameNode. Handles connection,
- * retry, and (someday) failover of the requested messages.
- *
- * Threading model: thread-safe. All callbacks will be called back from
- * an asio pool and will not hold any internal locks
- */
-class RpcEngine : public LockFreeRpcEngine, public std::enable_shared_from_this<RpcEngine> {
- public:
- MEMCHECKED_CLASS(RpcEngine)
- enum { kRpcVersion = 9 };
- enum {
- kCallIdAuthorizationFailed = -1,
- kCallIdInvalid = -2,
- kCallIdConnectionContext = -3,
- kCallIdPing = -4,
- kCallIdSasl = -33
- };
-
- RpcEngine(::asio::io_service *io_service, const Options &options,
- const std::string &client_name, const std::string &user_name,
- const char *protocol_name, int protocol_version);
-
- void Connect(const std::string & cluster_name,
- const std::vector<ResolvedNamenodeInfo> servers,
- RpcCallback &handler);
-
- bool CancelPendingConnect();
-
- void AsyncRpc(const std::string &method_name,
- const ::google::protobuf::MessageLite *req,
- const std::shared_ptr<::google::protobuf::MessageLite> &resp,
- const std::function<void(const Status &)> &handler);
-
- void Shutdown();
-
- /* Enqueues a CommsError without acquiring a lock*/
- void AsyncRpcCommsError(const Status &status,
- std::shared_ptr<RpcConnection> failedConnection,
- std::vector<std::shared_ptr<Request>> pendingRequests) override;
- void RpcCommsError(const Status &status,
- std::shared_ptr<RpcConnection> failedConnection,
- std::vector<std::shared_ptr<Request>> pendingRequests);
-
-
- const RetryPolicy * retry_policy() override { return retry_policy_.get(); }
- int NextCallId() override { return ++call_id_; }
-
- void TEST_SetRpcConnection(std::shared_ptr<RpcConnection> conn);
- void TEST_SetRetryPolicy(std::unique_ptr<const RetryPolicy> policy);
- std::unique_ptr<const RetryPolicy> TEST_GenerateRetryPolicyUsingOptions();
-
- const std::string &client_name() override { return client_name_; }
- const std::string &client_id() override { return client_id_; }
- const std::string &user_name() override { return auth_info_.getUser(); }
- const std::string &protocol_name() override { return protocol_name_; }
- int protocol_version() override { return protocol_version_; }
- ::asio::io_service &io_service() override { return *io_service_; }
- const Options &options() override { return options_; }
- static std::string GetRandomClientName();
-
- void SetFsEventCallback(fs_event_callback callback);
-protected:
- std::shared_ptr<RpcConnection> conn_;
- std::shared_ptr<RpcConnection> InitializeConnection();
- virtual std::shared_ptr<RpcConnection> NewConnection();
- virtual std::unique_ptr<const RetryPolicy> MakeRetryPolicy(const Options &options);
-
- static std::string getRandomClientId();
-
- // Remember all of the last endpoints in case we need to reconnect and retry
- std::vector<::asio::ip::tcp::endpoint> last_endpoints_;
-
-private:
- ::asio::io_service * const io_service_;
- const Options options_;
- const std::string client_name_;
- const std::string client_id_;
- const std::string protocol_name_;
- const int protocol_version_;
- std::unique_ptr<const RetryPolicy> retry_policy_; //null --> no retry
- AuthInfo auth_info_;
- std::string cluster_name_;
- std::atomic_int call_id_;
- ::asio::deadline_timer retry_timer;
-
- std::shared_ptr<LibhdfsEvents> event_handlers_;
-
- std::mutex engine_state_lock_;
-
- // Once Connect has been canceled there is no going back
- bool connect_canceled_;
-
- // Keep endpoint info for all HA connections, a non-null ptr indicates
- // that HA info was found in the configuation.
- std::unique_ptr<HANamenodeTracker> ha_persisted_info_;
-};
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.cc
deleted file mode 100644
index c5b90f0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <sstream>
-#include <string.h> // memcpy()
-
-#include "sasl_engine.h"
-#include "common/logging.h"
-
-namespace hdfs {
-
-/*****************************************************************************
- * SASL ENGINE BASE CLASS
- */
-
-SaslEngine::State SaslEngine::GetState()
-{
- return state_;
-}
-
-SaslEngine::~SaslEngine() {
-}
-
-Status SaslEngine::SetKerberosInfo(const std::string &principal)
-{
- principal_ = principal;
- return Status::OK();
-}
-
-Status SaslEngine::SetPasswordInfo(const std::string &id,
- const std::string &password)
-{
- id_ = id;
- password_ = password;
- return Status::OK();
-}
-
-bool SaslEngine::ChooseMech(const std::vector<SaslMethod> &resp_auths) {
- Status status = Status::OK();
-
- if (resp_auths.empty()) return false;
-
- for (SaslMethod auth: resp_auths) {
- if ( auth.mechanism != "GSSAPI") continue; // Hack: only GSSAPI for now
-
- // do a proper deep copy of the vector element
- // that we like, because the original v ector will go away:
- chosen_mech_.mechanism = auth.mechanism;
- chosen_mech_.protocol = auth.protocol;
- chosen_mech_.serverid = auth.serverid;
- chosen_mech_.challenge = auth.challenge;
-
- return auth.mechanism.c_str();
- }
-
- state_ = kErrorState;
- status = Status::Error("SaslEngine::chooseMech(): No good protocol.");
-
- // Clear out the chosen mech
- chosen_mech_ = SaslMethod();
-
- return false;
-} // choose_mech()
-
-} // namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.h
deleted file mode 100644
index 6c82ccd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_engine.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_RPC_SASLENGINE_H
-#define LIB_RPC_SASLENGINE_H
-
-#include "hdfspp/status.h"
-#include "common/optional_wrapper.h"
-
-#include <vector>
-
-namespace hdfs {
-
-class SaslProtocol;
-
-template <class T>
-using optional = std::experimental::optional<T>;
-
-class SaslMethod {
-public:
- std::string protocol;
- std::string mechanism;
- std::string serverid;
- std::string challenge;
-};
-
-class SaslEngine {
-public:
- enum State {
- kUnstarted,
- kWaitingForData,
- kSuccess,
- kFailure,
- kErrorState,
- };
-
- // State transitions:
- // \--------------------------/
- // kUnstarted --start--> kWaitingForData --step-+--> kSuccess --finish--v
- // \-> kFailure -/
-
- // State transitions:
- // \--------------------------/
- // kUnstarted --start--> kWaitingForData --step-+--> kSuccess --finish--v
- // \-> kFailure -/
-
- SaslEngine(): state_ (kUnstarted) {}
- virtual ~SaslEngine();
-
- // Must be called when state is kUnstarted
- Status SetKerberosInfo(const std::string &principal);
- // Must be called when state is kUnstarted
- Status SetPasswordInfo(const std::string &id,
- const std::string &password);
-
- // Choose a mechanism from the available ones. Will set the
- // chosen_mech_ member and return true if we found one we
- // can process
- bool ChooseMech(const std::vector<SaslMethod> &avail_auths);
-
- // Returns the current state
- State GetState();
-
- // Must be called when state is kUnstarted
- virtual std::pair<Status,std::string> Start() = 0;
-
- // Must be called when state is kWaitingForData
- // Returns kOK and any data that should be sent to the server
- virtual std::pair<Status,std::string> Step(const std::string data) = 0;
-
- // Must only be called when state is kSuccess, kFailure, or kErrorState
- virtual Status Finish() = 0;
-
- // main repository of generic Sasl config data:
- SaslMethod chosen_mech_;
-protected:
- State state_;
- SaslProtocol * sasl_protocol_;
-
- optional<std::string> principal_;
- optional<std::string> realm_;
- optional<std::string> id_;
- optional<std::string> password_;
-
-}; // class SaslEngine
-
-} // namespace hdfs
-
-#endif /* LIB_RPC_SASLENGINE_H */
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.cc
deleted file mode 100644
index 0957ea3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.cc
+++ /dev/null
@@ -1,407 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "rpc_engine.h"
-#include "rpc_connection.h"
-#include "common/logging.h"
-#include "common/optional_wrapper.h"
-
-#include "sasl_engine.h"
-#include "sasl_protocol.h"
-
-#if defined USE_SASL
- #if defined USE_CYRUS_SASL
- #include "cyrus_sasl_engine.h" // CySaslEngine()
- #elif defined USE_GSASL
- #include "gsasl_engine.h" // GSaslEngine()
- #else
- #error USE_SASL defined but no engine (USE_GSASL) defined
- #endif
-#endif
-
-namespace hdfs {
-
-using namespace hadoop::common;
-using namespace google::protobuf;
-
-/*****
- * Threading model: all entry points need to acquire the sasl_lock before accessing
- * members of the class
- *
- * Lifecycle model: asio may have outstanding callbacks into this class for arbitrary
- * amounts of time, so any references to the class must be shared_ptr's. The
- * SASLProtocol keeps a weak_ptr to the owning RpcConnection, which might go away,
- * so the weak_ptr should be locked only long enough to make callbacks into the
- * RpcConnection.
- */
-
-SaslProtocol::SaslProtocol(const std::string & cluster_name,
- const AuthInfo & auth_info,
- std::shared_ptr<RpcConnection> connection) :
- state_(kUnstarted),
- cluster_name_(cluster_name),
- auth_info_(auth_info),
- connection_(connection)
-{
-}
-
-SaslProtocol::~SaslProtocol()
-{
- assert(state_ != kNegotiate);
-}
-
-void SaslProtocol::SetEventHandlers(std::shared_ptr<LibhdfsEvents> event_handlers) {
- std::lock_guard<std::mutex> state_lock(sasl_state_lock_);
- event_handlers_ = event_handlers;
-} // SetEventHandlers() method
-
-void SaslProtocol::Authenticate(std::function<void(const Status & status, const AuthInfo new_auth_info)> callback)
-{
- std::lock_guard<std::mutex> state_lock(sasl_state_lock_);
-
- callback_ = callback;
- state_ = kNegotiate;
- event_handlers_->call("SASL Start", cluster_name_.c_str(), 0);
-
- std::shared_ptr<RpcSaslProto> req_msg = std::make_shared<RpcSaslProto>();
- req_msg->set_state(RpcSaslProto_SaslState_NEGOTIATE);
-
- // We cheat here since this is always called while holding the RpcConnection's lock
- std::shared_ptr<RpcConnection> connection = connection_.lock();
- if (!connection) {
- AuthComplete(Status::AuthenticationFailed("Lost RPC Connection"), AuthInfo());
- return;
- }
-
- std::shared_ptr<RpcSaslProto> resp_msg = std::make_shared<RpcSaslProto>();
- auto self(shared_from_this());
- connection->AsyncRpc_locked(SASL_METHOD_NAME, req_msg.get(), resp_msg,
- [self, req_msg, resp_msg] (const Status & status) {
- self->OnServerResponse(status, resp_msg.get()); } );
-} // authenticate() method
-
-AuthInfo::AuthMethod ParseMethod(const std::string & method)
- {
- if (0 == strcasecmp(method.c_str(), "SIMPLE")) {
- return AuthInfo::kSimple;
- }
- else if (0 == strcasecmp(method.c_str(), "KERBEROS")) {
- return AuthInfo::kKerberos;
- }
- else if (0 == strcasecmp(method.c_str(), "TOKEN")) {
- return AuthInfo::kToken;
- }
- else {
- return AuthInfo::kUnknownAuth;
- }
-} // ParseMethod()
-
-// build_init_msg():
-// Helper function for Start(), to keep
-// these ProtoBuf-RPC calls out of the sasl_engine code.
-
-std::pair<Status, RpcSaslProto>
-SaslProtocol::BuildInitMessage(std::string & token, const hadoop::common::RpcSaslProto * negotiate_msg)
-{
- // The init message needs one of the RpcSaslProto_SaslAuth structures that
- // was sent in the negotiate message as our chosen mechanism
- // Map the chosen_mech name back to the RpcSaslProto_SaslAuth from the negotiate
- // message that it corresponds to
- SaslMethod & chosenMech = sasl_engine_->chosen_mech_;
- auto auths = negotiate_msg->auths();
- auto pb_auth_it = std::find_if(auths.begin(), auths.end(),
- [chosenMech](const RpcSaslProto_SaslAuth & data)
- {
- return data.mechanism() == chosenMech.mechanism;
- });
- if (pb_auth_it == auths.end())
- return std::make_pair(Status::Error("Couldn't find mechanism in negotiate msg"), RpcSaslProto());
- auto & pb_auth = *pb_auth_it;
-
- // Prepare INITIATE message
- RpcSaslProto initiate = RpcSaslProto();
-
- initiate.set_state(RpcSaslProto_SaslState_INITIATE);
- // initiate message will contain:
- // token_ (binary data), and
- // auths_[ ], an array of objects just like pb_auth.
- // In our case, we want the auths array
- // to hold just the single element from pb_auth:
-
- RpcSaslProto_SaslAuth * respAuth = initiate.add_auths();
- respAuth->CopyFrom(pb_auth);
-
- // Mostly, an INITIATE message contains a "Token".
- // For GSSAPI, the token is a Kerberos AP_REQ, aka
- // "Authenticated application request," comprising
- // the client's application ticket & and an encrypted
- // message that Kerberos calls an "authenticator".
-
- if (token.empty()) {
- const char * errmsg = "SaslProtocol::build_init_msg(): No token available.";
- LOG_ERROR(kRPC, << errmsg);
- return std::make_pair(Status::Error(errmsg), RpcSaslProto());
- }
-
- // add challenge token to the INITIATE message:
- initiate.set_token(token);
-
- // the initiate message is ready to send:
- return std::make_pair(Status::OK(), initiate);
-} // build_init_msg()
-
-// Converts the RpcSaslProto.auths ararray from RpcSaslProto_SaslAuth PB
-// structures to SaslMethod structures
-static bool
-extract_auths(std::vector<SaslMethod> & resp_auths,
- const hadoop::common::RpcSaslProto * response) {
-
- bool simple_avail = false;
- auto pb_auths = response->auths();
-
- // For our GSSAPI case, an element of pb_auths contains:
- // method_ = "KERBEROS"
- // mechanism_ = "GSSAPI"
- // protocol_ = "nn" /* "name node", AKA "hdfs"
- // serverid_ = "foobar1.acmecorp.com"
- // challenge_ = ""
- // _cached_size_ = 0
- // _has_bits_ = 15
-
- for (int i = 0; i < pb_auths.size(); ++i) {
- auto pb_auth = pb_auths.Get(i);
- AuthInfo::AuthMethod method = ParseMethod(pb_auth.method());
-
- switch(method) {
- case AuthInfo::kToken:
- case AuthInfo::kKerberos: {
- SaslMethod new_method;
- new_method.mechanism = pb_auth.mechanism();
- new_method.protocol = pb_auth.protocol();
- new_method.serverid = pb_auth.serverid();
- new_method.challenge = pb_auth.has_challenge() ?
- pb_auth.challenge() : "";
- resp_auths.push_back(new_method);
- }
- break;
- case AuthInfo::kSimple:
- simple_avail = true;
- break;
- case AuthInfo::kUnknownAuth:
- LOG_WARN(kRPC, << "Unknown auth method " << pb_auth.method() << "; ignoring");
- break;
- default:
- LOG_WARN(kRPC, << "Invalid auth type: " << method << "; ignoring");
- break;
- }
- } // for
- return simple_avail;
-} // extract_auths()
-
-void SaslProtocol::ResetEngine() {
-#if defined USE_SASL
- #if defined USE_CYRUS_SASL
- sasl_engine_.reset(new CySaslEngine());
- #elif defined USE_GSASL
- sasl_engine_.reset(new GSaslEngine());
- #else
- #error USE_SASL defined but no engine (USE_GSASL) defined
- #endif
-#endif
- return;
-} // Reset_Engine() method
-
-void SaslProtocol::Negotiate(const hadoop::common::RpcSaslProto * response)
-{
- this->ResetEngine(); // get a new SaslEngine
-
- if (auth_info_.getToken()) {
- sasl_engine_->SetPasswordInfo(auth_info_.getToken().value().identifier,
- auth_info_.getToken().value().password);
- }
- sasl_engine_->SetKerberosInfo(auth_info_.getUser()); // TODO: map to principal?
-
- // Copy the response's auths list to an array of SaslMethod objects.
- // SaslEngine shouldn't need to know about the protobuf classes.
- std::vector<SaslMethod> resp_auths;
- bool simple_available = extract_auths(resp_auths, response);
- bool mech_chosen = sasl_engine_->ChooseMech(resp_auths);
-
- if (mech_chosen) {
-
- // Prepare an INITIATE message,
- // later on we'll send it to the hdfs server:
- auto start_result = sasl_engine_->Start();
- Status status = start_result.first;
- if (! status.ok()) {
- // start() failed, simple isn't avail,
- // so give up & stop authentication:
- AuthComplete(status, auth_info_);
- return;
- }
- // token.second is a binary buffer, containing
- // client credentials that will prove the
- // client's identity to the application server.
- // Put the token into an INITIATE message:
- auto init = BuildInitMessage(start_result.second, response);
-
- // If all is OK, send the INITIATE msg to the hdfs server;
- // Otherwise, if possible, fail over to simple authentication:
- status = init.first;
- if (status.ok()) {
- SendSaslMessage(init.second);
- return;
- }
- if (!simple_available) {
- // build_init_msg() failed, simple isn't avail,
- // so give up & stop authentication:
- AuthComplete(status, auth_info_);
- return;
- }
- // If simple IS available, fall through to below,
- // but without build_init_msg()'s failure-status.
- }
-
- // There were no resp_auths, or the SaslEngine couldn't make one work
- if (simple_available) {
- // Simple was the only one we could use. That's OK.
- AuthComplete(Status::OK(), auth_info_);
- return;
- } else {
- // We didn't understand any of the resp_auths;
- // Give back some information
- std::stringstream ss;
- ss << "Client cannot authenticate via: ";
-
- auto pb_auths = response->auths();
- for (int i = 0; i < pb_auths.size(); ++i) {
- const RpcSaslProto_SaslAuth & pb_auth = pb_auths.Get(i);
- ss << pb_auth.mechanism() << ", ";
- }
-
- AuthComplete(Status::Error(ss.str().c_str()), auth_info_);
- return;
- }
-} // Negotiate() method
-
-void SaslProtocol::Challenge(const hadoop::common::RpcSaslProto * challenge)
-{
- if (!sasl_engine_) {
- AuthComplete(Status::Error("Received challenge before negotiate"), auth_info_);
- return;
- }
-
- RpcSaslProto response;
- response.CopyFrom(*challenge);
- response.set_state(RpcSaslProto_SaslState_RESPONSE);
-
- std::string challenge_token = challenge->has_token() ? challenge->token() : "";
- auto sasl_response = sasl_engine_->Step(challenge_token);
-
- if (sasl_response.first.ok()) {
- response.set_token(sasl_response.second);
-
- std::shared_ptr<RpcSaslProto> return_msg = std::make_shared<RpcSaslProto>();
- SendSaslMessage(response);
- } else {
- AuthComplete(sasl_response.first, auth_info_);
- return;
- }
-} // Challenge() method
-
-bool SaslProtocol::SendSaslMessage(RpcSaslProto & message)
-{
- assert(lock_held(sasl_state_lock_)); // Must be holding lock before calling
-
- // RpcConnection might have been freed when we weren't looking. Lock it
- // to make sure it's there long enough for us
- std::shared_ptr<RpcConnection> connection = connection_.lock();
- if (!connection) {
- LOG_DEBUG(kRPC, << "Tried sending a SASL Message but the RPC connection was gone");
- AuthComplete(Status::AuthenticationFailed("Lost RPC Connection"), AuthInfo());
- return false;
- }
-
- std::shared_ptr<RpcSaslProto> resp_msg = std::make_shared<RpcSaslProto>();
- auto self(shared_from_this());
- connection->AsyncRpc(SASL_METHOD_NAME, &message, resp_msg,
- [self, resp_msg] (const Status & status) {
- self->OnServerResponse(status, resp_msg.get());
- } );
-
- return true;
-} // SendSaslMessage() method
-
-// AuthComplete(): stop the auth effort, successful ot not:
-bool SaslProtocol::AuthComplete(const Status & status, const AuthInfo & auth_info)
-{
- assert(lock_held(sasl_state_lock_)); // Must be holding lock before calling
- state_ = kComplete;
- event_handlers_->call("SASL End", cluster_name_.c_str(), 0);
-
- // RpcConnection might have been freed when we weren't looking. Lock it
- // to make sure it's there long enough for us
- std::shared_ptr<RpcConnection> connection = connection_.lock();
- if (!connection) {
- LOG_DEBUG(kRPC, << "Tried sending an AuthComplete but the RPC connection was gone: " << status.ToString());
- return false;
- }
-
- LOG_TRACE(kRPC, << "Received SASL response" << status.ToString());
- connection->AuthComplete(status, auth_info);
-
- return true;
-} // AuthComplete() method
-
-void SaslProtocol::OnServerResponse(const Status & status, const hadoop::common::RpcSaslProto * response)
-{
- std::lock_guard<std::mutex> state_lock(sasl_state_lock_);
- LOG_TRACE(kRPC, << "Received SASL response: " << status.ToString());
-
- if (status.ok()) {
- switch(response->state()) {
- case RpcSaslProto_SaslState_NEGOTIATE:
- Negotiate(response);
- break;
- case RpcSaslProto_SaslState_CHALLENGE:
- Challenge(response);
- break;
- case RpcSaslProto_SaslState_SUCCESS:
- if (sasl_engine_) {
- sasl_engine_->Finish();
- }
- AuthComplete(Status::OK(), auth_info_);
- break;
-
- case RpcSaslProto_SaslState_INITIATE: // Server side only
- case RpcSaslProto_SaslState_RESPONSE: // Server side only
- case RpcSaslProto_SaslState_WRAP:
- LOG_ERROR(kRPC, << "Invalid client-side SASL state: " << response->state());
- AuthComplete(Status::Error("Invalid client-side state"), auth_info_);
- break;
- default:
- LOG_ERROR(kRPC, << "Unknown client-side SASL state: " << response->state());
- AuthComplete(Status::Error("Unknown client-side state"), auth_info_);
- break;
- }
- } else {
- AuthComplete(status, auth_info_);
- }
-} // OnServerResponse() method
-
-} // namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.h
deleted file mode 100644
index a46ae08..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/sasl_protocol.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_RPC_SASLPROTOCOL_H
-#define LIB_RPC_SASLPROTOCOL_H
-
-#include <memory>
-#include <mutex>
-#include <functional>
-
-#include <RpcHeader.pb.h>
-
-#include "hdfspp/status.h"
-#include "common/auth_info.h"
-#include "common/libhdfs_events_impl.h"
-
-namespace hdfs {
-
-static constexpr const char * SASL_METHOD_NAME = "sasl message";
-
-class RpcConnection;
-class SaslEngine;
-class SaslMethod;
-
-class SaslProtocol : public std::enable_shared_from_this<SaslProtocol>
-{
-public:
- SaslProtocol(const std::string &cluster_name,
- const AuthInfo & auth_info,
- std::shared_ptr<RpcConnection> connection);
- virtual ~SaslProtocol();
-
- void SetEventHandlers(std::shared_ptr<LibhdfsEvents> event_handlers);
-
- // Start the async authentication process. Must be called while holding the
- // connection lock, but all callbacks will occur outside of the connection lock
- void Authenticate(std::function<void(const Status & status, const AuthInfo new_auth_info)> callback);
- void OnServerResponse(const Status & status, const hadoop::common::RpcSaslProto * response);
- std::pair<Status, hadoop::common::RpcSaslProto> BuildInitMessage( std::string & token, const hadoop::common::RpcSaslProto * negotiate_msg);
-private:
- enum State {
- kUnstarted,
- kNegotiate,
- kComplete
- };
-
- // Lock for access to members of the class
- std::mutex sasl_state_lock_;
-
- State state_;
- const std::string cluster_name_;
- AuthInfo auth_info_;
- std::weak_ptr<RpcConnection> connection_;
- std::function<void(const Status & status, const AuthInfo new_auth_info)> callback_;
- std::unique_ptr<SaslEngine> sasl_engine_;
- std::shared_ptr<LibhdfsEvents> event_handlers_;
-
- bool SendSaslMessage(hadoop::common::RpcSaslProto & message);
- bool AuthComplete(const Status & status, const AuthInfo & auth_info);
-
- void ResetEngine();
- void Negotiate(const hadoop::common::RpcSaslProto * response);
- void Challenge(const hadoop::common::RpcSaslProto * response);
-
-}; // class SaslProtocol
-
-} // namespace hdfs
-
-#endif /* LIB_RPC_SASLPROTOCOL_H */
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[38/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/logging_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/logging_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/logging_test.cc
deleted file mode 100644
index d487bf5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/logging_test.cc
+++ /dev/null
@@ -1,374 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <common/logging.h>
-#include <bindings/c/hdfs.cc>
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <iostream>
-
-using namespace hdfs;
-
-struct log_state {
- int trace_count;
- int debug_count;
- int info_count;
- int warning_count;
- int error_count;
-
- int origin_unknown;
- int origin_rpc;
- int origin_blockreader;
- int origin_filehandle;
- int origin_filesystem;
-
- std::string msg;
-
- log_state() {
- reset();
- }
-
- void reset() {
- trace_count = 0;
- debug_count = 0;
- info_count = 0;
- warning_count = 0;
- error_count = 0;
-
- origin_unknown = 0;
- origin_rpc = 0;
- origin_blockreader = 0;
- origin_filehandle = 0;
- origin_filesystem = 0;
-
- msg = "";
- }
-};
-log_state log_state_instance;
-
-void process_log_msg(LogData *data) {
- if(data->msg)
- log_state_instance.msg = data->msg;
-
- switch(data->level) {
- case HDFSPP_LOG_LEVEL_TRACE:
- log_state_instance.trace_count++;
- break;
- case HDFSPP_LOG_LEVEL_DEBUG:
- log_state_instance.debug_count++;
- break;
- case HDFSPP_LOG_LEVEL_INFO:
- log_state_instance.info_count++;
- break;
- case HDFSPP_LOG_LEVEL_WARN:
- log_state_instance.warning_count++;
- break;
- case HDFSPP_LOG_LEVEL_ERROR:
- log_state_instance.error_count++;
- break;
- default:
- //should never happen
- std::cout << "foo" << std::endl;
- ASSERT_FALSE(true);
- }
-
- switch(data->component) {
- case HDFSPP_LOG_COMPONENT_UNKNOWN:
- log_state_instance.origin_unknown++;
- break;
- case HDFSPP_LOG_COMPONENT_RPC:
- log_state_instance.origin_rpc++;
- break;
- case HDFSPP_LOG_COMPONENT_BLOCKREADER:
- log_state_instance.origin_blockreader++;
- break;
- case HDFSPP_LOG_COMPONENT_FILEHANDLE:
- log_state_instance.origin_filehandle++;
- break;
- case HDFSPP_LOG_COMPONENT_FILESYSTEM:
- log_state_instance.origin_filesystem++;
- break;
- default:
- std::cout << "bar" << std::endl;
- ASSERT_FALSE(true);
- }
-
-}
-
-void reset_log_counters() {
- log_state_instance.reset();
-}
-
-void assert_nothing_logged() {
- if(log_state_instance.trace_count || log_state_instance.debug_count ||
- log_state_instance.info_count || log_state_instance.warning_count ||
- log_state_instance.error_count) {
- ASSERT_FALSE(true);
- }
-}
-
-void assert_trace_logged() { ASSERT_TRUE(log_state_instance.trace_count > 0); }
-void assert_debug_logged() { ASSERT_TRUE(log_state_instance.debug_count > 0); }
-void assert_info_logged() { ASSERT_TRUE(log_state_instance.info_count > 0); }
-void assert_warning_logged() { ASSERT_TRUE(log_state_instance.warning_count > 0); }
-void assert_error_logged() { ASSERT_TRUE(log_state_instance.error_count > 0); }
-
-void assert_no_trace_logged() { ASSERT_EQ(log_state_instance.trace_count, 0); }
-void assert_no_debug_logged() { ASSERT_EQ(log_state_instance.debug_count, 0); }
-void assert_no_info_logged() { ASSERT_EQ(log_state_instance.info_count, 0); }
-void assert_no_warning_logged() { ASSERT_EQ(log_state_instance.warning_count, 0); }
-void assert_no_error_logged() { ASSERT_EQ(log_state_instance.error_count, 0); }
-
-void assert_unknown_logged() { ASSERT_TRUE(log_state_instance.origin_unknown > 0); }
-void assert_rpc_logged() { ASSERT_TRUE(log_state_instance.origin_rpc > 0); }
-void assert_blockreader_logged() { ASSERT_TRUE(log_state_instance.origin_blockreader > 0); }
-void assert_filehandle_logged() { ASSERT_TRUE(log_state_instance.origin_filehandle > 0); }
-void assert_filesystem_logged() { ASSERT_TRUE(log_state_instance.origin_filesystem > 0); }
-
-void assert_no_unknown_logged() { ASSERT_EQ(log_state_instance.origin_unknown, 0); }
-void assert_no_rpc_logged() { ASSERT_EQ(log_state_instance.origin_rpc, 0); }
-void assert_no_blockreader_logged() { ASSERT_EQ(log_state_instance.origin_blockreader, 0); }
-void assert_no_filehandle_logged() { ASSERT_EQ(log_state_instance.origin_filehandle, 0); }
-void assert_no_filesystem_logged() { ASSERT_EQ(log_state_instance.origin_filesystem, 0); }
-
-void log_all_components_at_level(LogLevel lvl) {
- if(lvl == kTrace) {
- LOG_TRACE(kUnknown, << 'a');
- LOG_TRACE(kRPC, << 'b');
- LOG_TRACE(kBlockReader, << 'c');
- LOG_TRACE(kFileHandle, << 'd');
- LOG_TRACE(kFileSystem, << 'e');
- } else if (lvl == kDebug) {
- LOG_DEBUG(kUnknown, << 'a');
- LOG_DEBUG(kRPC, << 'b');
- LOG_DEBUG(kBlockReader, << 'c');
- LOG_DEBUG(kFileHandle, << 'd');
- LOG_DEBUG(kFileSystem, << 'e');
- } else if (lvl == kInfo) {
- LOG_INFO(kUnknown, << 'a');
- LOG_INFO(kRPC, << 'b');
- LOG_INFO(kBlockReader, << 'c');
- LOG_INFO(kFileHandle, << 'd');
- LOG_INFO(kFileSystem, << 'e');
- } else if (lvl == kWarning) {
- LOG_WARN(kUnknown, << 'a');
- LOG_WARN(kRPC, << 'b');
- LOG_WARN(kBlockReader, << 'c');
- LOG_WARN(kFileHandle, << 'd');
- LOG_WARN(kFileSystem, << 'e');
- } else if (lvl == kError) {
- LOG_ERROR(kUnknown, << 'a');
- LOG_ERROR(kRPC, << 'b');
- LOG_ERROR(kBlockReader, << 'c');
- LOG_ERROR(kFileHandle, << 'd');
- LOG_ERROR(kFileSystem, << 'e');
- } else {
- // A level was added and not accounted for here
- ASSERT_TRUE(false);
- }
-}
-
-// make sure everything can be masked
-TEST(LoggingTest, MaskAll) {
- LogManager::DisableLogForComponent(kUnknown);
- LogManager::DisableLogForComponent(kRPC);
- LogManager::DisableLogForComponent(kBlockReader);
- LogManager::DisableLogForComponent(kFileHandle);
- LogManager::DisableLogForComponent(kFileSystem);
-
- // use trace so anything that isn't masked should come through
- LogManager::SetLogLevel(kTrace);
- log_state_instance.reset();
- log_all_components_at_level(kError);
- assert_nothing_logged();
- log_state_instance.reset();
-}
-
-// make sure components can be masked individually
-TEST(LoggingTest, MaskOne) {
- LogManager::DisableLogForComponent(kUnknown);
- LogManager::DisableLogForComponent(kRPC);
- LogManager::DisableLogForComponent(kBlockReader);
- LogManager::DisableLogForComponent(kFileHandle);
- LogManager::DisableLogForComponent(kFileSystem);
- LogManager::SetLogLevel(kTrace);
-
- // Unknown - aka component not provided
- LogManager::EnableLogForComponent(kUnknown);
- log_all_components_at_level(kError);
- assert_unknown_logged();
- assert_error_logged();
- assert_no_rpc_logged();
- assert_no_blockreader_logged();
- assert_no_filehandle_logged();
- assert_no_filesystem_logged();
- log_state_instance.reset();
- LogManager::DisableLogForComponent(kUnknown);
-
- // RPC
- LogManager::EnableLogForComponent(kRPC);
- log_all_components_at_level(kError);
- assert_rpc_logged();
- assert_error_logged();
- assert_no_unknown_logged();
- assert_no_blockreader_logged();
- assert_no_filehandle_logged();
- assert_no_filesystem_logged();
- log_state_instance.reset();
- LogManager::DisableLogForComponent(kRPC);
-
- // BlockReader
- LogManager::EnableLogForComponent(kBlockReader);
- log_all_components_at_level(kError);
- assert_blockreader_logged();
- assert_error_logged();
- assert_no_unknown_logged();
- assert_no_rpc_logged();
- assert_no_filehandle_logged();
- assert_no_filesystem_logged();
- log_state_instance.reset();
- LogManager::DisableLogForComponent(kBlockReader);
-
- // FileHandle
- LogManager::EnableLogForComponent(kFileHandle);
- log_all_components_at_level(kError);
- assert_filehandle_logged();
- assert_error_logged();
- assert_no_unknown_logged();
- assert_no_rpc_logged();
- assert_no_blockreader_logged();
- assert_no_filesystem_logged();
- log_state_instance.reset();
- LogManager::DisableLogForComponent(kFileHandle);
-
- // FileSystem
- LogManager::EnableLogForComponent(kFileSystem);
- log_all_components_at_level(kError);
- assert_filesystem_logged();
- assert_error_logged();
- assert_no_unknown_logged();
- assert_no_rpc_logged();
- assert_no_blockreader_logged();
- assert_no_filehandle_logged();
- log_state_instance.reset();
- LogManager::DisableLogForComponent(kFileSystem);
-}
-
-TEST(LoggingTest, Levels) {
- // should be safe to focus on one component if MaskOne passes
- LogManager::EnableLogForComponent(kUnknown);
- LogManager::SetLogLevel(kError);
-
- LOG_TRACE(kUnknown, << "a");
- LOG_DEBUG(kUnknown, << "b");
- LOG_INFO(kUnknown,<< "c");
- LOG_WARN(kUnknown, << "d");
- assert_nothing_logged();
- LOG_ERROR(kUnknown, << "e");
- assert_error_logged();
- assert_unknown_logged();
- log_state_instance.reset();
-
- // anything >= warning
- LogManager::SetLogLevel(kWarning);
- LOG_TRACE(kUnknown, << "a");
- LOG_DEBUG(kUnknown, << "b");
- LOG_INFO(kUnknown, << "c");
- assert_nothing_logged();
- LOG_WARN(kUnknown, << "d");
- assert_warning_logged();
- LOG_ERROR(kUnknown, << "e");
- assert_error_logged();
- log_state_instance.reset();
-
- // anything >= info
- LogManager::SetLogLevel(kInfo);
- LOG_TRACE(kUnknown, << "a");
- LOG_DEBUG(kUnknown, << "b");
- assert_nothing_logged();
- LOG_INFO(kUnknown, << "c");
- assert_info_logged();
- LOG_WARN(kUnknown, << "d");
- assert_warning_logged();
- LOG_ERROR(kUnknown, << "e");
- assert_error_logged();
- log_state_instance.reset();
-
- // anything >= debug
- LogManager::SetLogLevel(kDebug);
- LOG_TRACE(kUnknown, << "a");
- assert_nothing_logged();
- LOG_DEBUG(kUnknown, << "b");
- assert_debug_logged();
- assert_no_info_logged();
- assert_no_warning_logged();
- assert_no_error_logged();
- LOG_INFO(kUnknown, << "c");
- assert_info_logged();
- assert_no_warning_logged();
- assert_no_error_logged();
- LOG_WARN(kUnknown, << "d");
- assert_warning_logged();
- assert_no_error_logged();
- LOG_ERROR(kUnknown, << "e");
- assert_error_logged();
- log_state_instance.reset();
-
- // anything
- LogManager::SetLogLevel(kTrace);
- assert_nothing_logged();
- LOG_TRACE(kUnknown, << "a");
- assert_trace_logged();
- log_state_instance.reset();
- LOG_DEBUG(kUnknown, << "b");
- assert_debug_logged();
- log_state_instance.reset();
- LOG_INFO(kUnknown, << "c");
- assert_info_logged();
- log_state_instance.reset();
- LOG_WARN(kUnknown, << "d");
- assert_warning_logged();
- log_state_instance.reset();
- LOG_ERROR(kUnknown, << "e");
- assert_error_logged();
-}
-
-TEST(LoggingTest, Text) {
- LogManager::EnableLogForComponent(kRPC);
-
- std::string text;
- LOG_ERROR(kRPC, << text);
-
- ASSERT_EQ(text, log_state_instance.msg);
-}
-
-
-int main(int argc, char *argv[]) {
- CForwardingLogger *logger = new CForwardingLogger();
- logger->SetCallback(process_log_msg);
- LogManager::SetLoggerImplementation(std::unique_ptr<LoggerInterface>(logger));
-
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int res = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
- return res;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.cc
deleted file mode 100644
index 1885eea..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "mock_connection.h"
-
-namespace hdfs {
-
-MockConnectionBase::MockConnectionBase(::asio::io_service *io_service)
- : io_service_(io_service)
-{}
-
-MockConnectionBase::~MockConnectionBase() {}
-
-ProducerResult SharedMockConnection::Produce() {
- if (auto shared_prducer = shared_connection_data_.lock()) {
- return shared_prducer->Produce();
- } else {
- assert(false && "No producer registered");
- return std::make_pair(asio::error_code(), "");
- }
-}
-
-std::weak_ptr<SharedConnectionData> SharedMockConnection::shared_connection_data_;
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.h
deleted file mode 100644
index cd1fc12..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/mock_connection.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_TEST_MOCK_CONNECTION_H_
-#define LIBHDFSPP_TEST_MOCK_CONNECTION_H_
-
-#include "common/async_stream.h"
-
-#include <asio/error_code.hpp>
-#include <asio/buffer.hpp>
-#include <asio/streambuf.hpp>
-#include <asio/io_service.hpp>
-
-#include <gmock/gmock.h>
-
-namespace hdfs {
-
-typedef std::pair<asio::error_code, std::string> ProducerResult;
-class AsioProducer {
-public:
- /*
- * Return either:
- * (::asio::error_code(), <some data>) for a good result
- * (<an ::asio::error instance>, <anything>) to pass an error to the caller
- * (::asio::error::would_block, <anything>) to block the next call forever
- */
-
- virtual ProducerResult Produce() = 0;
-};
-
-
-class MockConnectionBase : public AsioProducer, public AsyncStream {
-public:
- MockConnectionBase(::asio::io_service *io_service);
- virtual ~MockConnectionBase();
- typedef std::pair<asio::error_code, std::string> ProducerResult;
-
- void async_read_some(const MutableBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- if (produced_.size() == 0) {
- ProducerResult r = Produce();
- if (r.first == asio::error::would_block) {
- return; // No more reads to do
- }
- if (r.first) {
- io_service_->post(std::bind(handler, r.first, 0));
- return;
- }
- asio::mutable_buffers_1 data = produced_.prepare(r.second.size());
- asio::buffer_copy(data, asio::buffer(r.second));
- produced_.commit(r.second.size());
- }
-
- size_t len = std::min(asio::buffer_size(buf), produced_.size());
- asio::buffer_copy(buf, produced_.data());
- produced_.consume(len);
- io_service_->post(std::bind(handler, asio::error_code(), len));
- }
-
- void async_write_some(const ConstBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- // CompletionResult res = OnWrite(buf);
- io_service_->post(std::bind(handler, asio::error_code(), asio::buffer_size(buf)));
- }
-
- template <class Endpoint, class Callback>
- void async_connect(const Endpoint &, Callback &&handler) {
- io_service_->post([handler]() { handler(::asio::error_code()); });
- }
-
- virtual void cancel() {}
- virtual void close() {}
-protected:
- virtual ProducerResult Produce() = 0;
- ::asio::io_service *io_service_;
-
-private:
- asio::streambuf produced_;
-};
-
-
-
-
-class SharedConnectionData : public AsioProducer {
- public:
- bool checkProducerForConnect = false;
-
- MOCK_METHOD0(Produce, ProducerResult());
-};
-
-class SharedMockConnection : public MockConnectionBase {
-public:
- using MockConnectionBase::MockConnectionBase;
-
- template <class Endpoint, class Callback>
- void async_connect(const Endpoint &, Callback &&handler) {
- auto data = shared_connection_data_.lock();
- assert(data);
-
- if (!data->checkProducerForConnect) {
- io_service_->post([handler]() { handler(::asio::error_code()); });
- } else {
- ProducerResult result = Produce();
- if (result.first == asio::error::would_block) {
- return; // Connect will hang
- } else {
- io_service_->post([handler, result]() { handler( result.first); });
- }
- }
- }
-
- static void SetSharedConnectionData(std::shared_ptr<SharedConnectionData> new_producer) {
- shared_connection_data_ = new_producer; // get a weak reference to it
- }
-
-protected:
- ProducerResult Produce() override;
-
- static std::weak_ptr<SharedConnectionData> shared_connection_data_;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/node_exclusion_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/node_exclusion_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/node_exclusion_test.cc
deleted file mode 100644
index d1212b9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/node_exclusion_test.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "fs/filesystem.h"
-#include "fs/bad_datanode_tracker.h"
-
-#include <gmock/gmock.h>
-
-using ::testing::_;
-using ::testing::InvokeArgument;
-using ::testing::Return;
-
-using namespace hdfs;
-
-/**
- * Unit test for the tracker
- **/
-
-/* make sure nodes can be added */
-TEST(NodeExclusionTest, AddBadNode) {
- auto tracker = std::make_shared<BadDataNodeTracker>();
-
- ASSERT_FALSE(tracker->IsBadNode("dn1"));
- tracker->AddBadNode("dn1");
- ASSERT_TRUE(tracker->IsBadNode("dn1"));
- ASSERT_FALSE(tracker->IsBadNode("dn2"));
- tracker->AddBadNode("dn2");
- ASSERT_TRUE(tracker->IsBadNode("dn2"));
-}
-
-/* Make sure nodes get removed when time elapses */
-TEST(NodeExclusionTest, RemoveOnTimeout) {
- auto tracker = std::make_shared<BadDataNodeTracker>();
-
- /* add node and make sure only that node is marked bad */
- std::string bad_dn("this_dn_died");
- tracker->AddBadNode(bad_dn);
- ASSERT_TRUE(tracker->IsBadNode(bad_dn));
- ASSERT_FALSE(tracker->IsBadNode("good_dn"));
-
- tracker->TEST_set_clock_shift(1000000);
-
- /* node should be removed on lookup after time shift */
- ASSERT_FALSE(tracker->IsBadNode(bad_dn));
-}
-
-/**
- * Unit tests for ExcludeSet
- **/
-
-TEST(NodeExclusionTest, ExcludeSet) {
- /* empty case */
- auto exclude_set = std::make_shared<ExclusionSet>(std::set<std::string>());
- ASSERT_FALSE(exclude_set->IsBadNode("any_node"));
-
- /* common case */
- exclude_set =
- std::make_shared<ExclusionSet>(std::set<std::string>({"dn_1", "dn_3"}));
- ASSERT_TRUE(exclude_set->IsBadNode("dn_1"));
- ASSERT_FALSE(exclude_set->IsBadNode("dn_2"));
- ASSERT_TRUE(exclude_set->IsBadNode("dn_3"));
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/remote_block_reader_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/remote_block_reader_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/remote_block_reader_test.cc
deleted file mode 100644
index 80127f3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/remote_block_reader_test.cc
+++ /dev/null
@@ -1,536 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "mock_connection.h"
-
-#include "datatransfer.pb.h"
-#include "common/util.h"
-#include "common/cancel_tracker.h"
-#include "reader/block_reader.h"
-#include "reader/datatransfer.h"
-#include "reader/fileinfo.h"
-
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl.h>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <iostream>
-
-using namespace hdfs;
-
-using ::hadoop::common::TokenProto;
-using ::hadoop::hdfs::BlockOpResponseProto;
-using ::hadoop::hdfs::ChecksumProto;
-using ::hadoop::hdfs::DataTransferEncryptorMessageProto;
-using ::hadoop::hdfs::ExtendedBlockProto;
-using ::hadoop::hdfs::PacketHeaderProto;
-using ::hadoop::hdfs::ReadOpChecksumInfoProto;
-using ::hadoop::hdfs::LocatedBlockProto;
-using ::hadoop::hdfs::LocatedBlocksProto;
-
-using ::asio::buffer;
-using ::asio::error_code;
-using ::asio::mutable_buffers_1;
-using ::testing::_;
-using ::testing::InvokeArgument;
-using ::testing::Return;
-using std::make_pair;
-using std::string;
-
-namespace pb = ::google::protobuf;
-namespace pbio = pb::io;
-
-namespace hdfs {
-
-class MockDNConnection : public MockConnectionBase, public DataNodeConnection{
-public:
- MockDNConnection(::asio::io_service &io_service)
- : MockConnectionBase(&io_service), OnRead([](){}) {}
- MOCK_METHOD0(Produce, ProducerResult());
-
- MOCK_METHOD1(Connect, void(std::function<void(Status status, std::shared_ptr<DataNodeConnection> dn)>));
-
- /* event handler to trigger side effects */
- std::function<void(void)> OnRead;
-
- void async_read_some(const MutableBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- this->OnRead();
- this->MockConnectionBase::async_read_some(buf, handler);
- }
-
- void async_write_some(const ConstBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- this->MockConnectionBase::async_write_some(buf, handler);
- }
-
- void Cancel() {
- /* no-op, declared pure virtual */
- }
-};
-
-// Mocks AsyncReadPacket and AsyncRequestBlock but not AsyncReadBlock, so we
-// can test the logic of AsyncReadBlock
-class PartialMockReader : public BlockReaderImpl {
-public:
- PartialMockReader() :
- BlockReaderImpl(BlockReaderOptions(), std::shared_ptr<DataNodeConnection>(), CancelTracker::New()) {};
-
- MOCK_METHOD2(
- AsyncReadPacket,
- void(const asio::mutable_buffers_1 &,
- const std::function<void(const Status &, size_t transferred)> &));
-
- MOCK_METHOD5(AsyncRequestBlock,
- void(const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block,
- uint64_t length, uint64_t offset,
- const std::function<void(Status)> &handler));
-};
-
-
-}
-
-static inline string ToDelimitedString(const pb::MessageLite *msg) {
- string res;
- res.reserve(hdfs::DelimitedPBMessageSize(msg));
- pbio::StringOutputStream os(&res);
- pbio::CodedOutputStream out(&os);
- out.WriteVarint32(msg->ByteSize());
- msg->SerializeToCodedStream(&out);
- return res;
-}
-
-static inline std::pair<error_code, string> Produce(const std::string &s) {
- return make_pair(error_code(), s);
-}
-
-static inline std::pair<error_code, string> ProducePacket(
- const std::string &data, const std::string &checksum, int offset_in_block,
- int seqno, bool last_packet) {
- PacketHeaderProto proto;
- proto.set_datalen(data.size());
- proto.set_offsetinblock(offset_in_block);
- proto.set_seqno(seqno);
- proto.set_lastpacketinblock(last_packet);
-
- char prefix[6];
- *reinterpret_cast<unsigned *>(prefix) =
- htonl(data.size() + checksum.size() + sizeof(int32_t));
- *reinterpret_cast<short *>(prefix + sizeof(int32_t)) =
- htons(proto.ByteSize());
- std::string payload(prefix, sizeof(prefix));
- payload.reserve(payload.size() + proto.ByteSize() + checksum.size() +
- data.size());
- proto.AppendToString(&payload);
- payload += checksum;
- payload += data;
- return std::make_pair(error_code(), std::move(payload));
-}
-
-TEST(RemoteBlockReaderTest, TestReadSingleTrunk) {
- auto file_info = std::make_shared<struct FileInfo>();
- LocatedBlocksProto blocks;
- LocatedBlockProto block;
- char buf[4096] = {
- 0,
- };
-
- Status stat;
- size_t read = 0;
- PartialMockReader reader;
- EXPECT_CALL(reader, AsyncRequestBlock(_, _, _, _, _))
- .WillOnce(InvokeArgument<4>(Status::OK()));
- EXPECT_CALL(reader, AsyncReadPacket(_, _))
- .WillOnce(InvokeArgument<1>(Status::OK(), sizeof(buf)));
-
- reader.AsyncReadBlock(
- GetRandomClientName(), block, 0, asio::buffer(buf, sizeof(buf)),
- [&stat, &read](const Status &status, size_t transferred) {
- stat = status;
- read = transferred;
- });
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(sizeof(buf), read);
- read = 0;
-}
-
-TEST(RemoteBlockReaderTest, TestReadMultipleTrunk) {
- LocatedBlockProto block;
- char buf[4096] = {
- 0,
- };
- Status stat;
- size_t read = 0;
-
- PartialMockReader reader;
- EXPECT_CALL(reader, AsyncRequestBlock(_, _, _, _, _))
- .WillOnce(InvokeArgument<4>(Status::OK()));
-
- EXPECT_CALL(reader, AsyncReadPacket(_, _))
- .Times(4)
- .WillRepeatedly(InvokeArgument<1>(Status::OK(), sizeof(buf) / 4));
-
- reader.AsyncReadBlock(
- GetRandomClientName(), block, 0, asio::buffer(buf, sizeof(buf)),
- [&stat, &read](const Status &status, size_t transferred) {
- stat = status;
- read = transferred;
- });
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(sizeof(buf), read);
- read = 0;
-}
-
-TEST(RemoteBlockReaderTest, TestReadError) {
- LocatedBlockProto block;
- char buf[4096] = {
- 0,
- };
- Status stat;
- size_t read = 0;
- PartialMockReader reader;
- EXPECT_CALL(reader, AsyncRequestBlock(_, _, _, _, _))
- .WillOnce(InvokeArgument<4>(Status::OK()));
-
- EXPECT_CALL(reader, AsyncReadPacket(_, _))
- .WillOnce(InvokeArgument<1>(Status::OK(), sizeof(buf) / 4))
- .WillOnce(InvokeArgument<1>(Status::OK(), sizeof(buf) / 4))
- .WillOnce(InvokeArgument<1>(Status::OK(), sizeof(buf) / 4))
- .WillOnce(InvokeArgument<1>(Status::Error("error"), 0));
-
- reader.AsyncReadBlock(
- GetRandomClientName(), block, 0, asio::buffer(buf, sizeof(buf)),
- [&stat, &read](const Status &status, size_t transferred) {
- stat = status;
- read = transferred;
- });
- ASSERT_FALSE(stat.ok());
- ASSERT_EQ(sizeof(buf) / 4 * 3, read);
- read = 0;
-}
-
-template <class Stream = MockDNConnection, class Handler>
-static std::shared_ptr<BlockReaderImpl>
-ReadContent(std::shared_ptr<Stream> conn, const ExtendedBlockProto &block,
- uint64_t length, uint64_t offset, const mutable_buffers_1 &buf,
- const Handler &handler, CancelHandle cancel_handle = CancelTracker::New()) {
- BlockReaderOptions options;
- auto reader = std::make_shared<BlockReaderImpl>(options, conn, cancel_handle);
- Status result;
- reader->AsyncRequestBlock("libhdfs++", &block, length, offset,
- [buf, reader, handler](const Status &stat) {
- if (!stat.ok()) {
- handler(stat, 0);
- } else {
- reader->AsyncReadPacket(buf, handler);
- }
- });
- return reader;
-}
-
-TEST(RemoteBlockReaderTest, TestReadWholeBlock) {
- static const size_t kChunkSize = 512;
- static const string kChunkData(kChunkSize, 'a');
- ::asio::io_service io_service;
- auto conn = std::make_shared<MockDNConnection>(io_service);
- BlockOpResponseProto block_op_resp;
-
- block_op_resp.set_status(::hadoop::hdfs::Status::SUCCESS);
- EXPECT_CALL(*conn, Produce())
- .WillOnce(Return(Produce(ToDelimitedString(&block_op_resp))))
- .WillOnce(Return(ProducePacket(kChunkData, "", 0, 1, true)));
-
- ExtendedBlockProto block;
- block.set_poolid("foo");
- block.set_blockid(0);
- block.set_generationstamp(0);
-
- bool done = false;
- std::string data(kChunkSize, 0);
- ReadContent(conn, block, kChunkSize, 0,
- buffer(const_cast<char *>(data.c_str()), data.size()),
- [&data, &io_service, &done](const Status &stat, size_t transferred) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(kChunkSize, transferred);
- ASSERT_EQ(kChunkData, data);
- done = true;
- io_service.stop();
- });
- io_service.run();
- ASSERT_TRUE(done);
-}
-
-/* used for cancelation tests, global to avoid cluttering capture lists */
-CancelHandle packet_canceller;
-
-TEST(RemoteBlockReaderTest, TestCancelWhileReceiving) {
- packet_canceller = CancelTracker::New();
-
- static const size_t kChunkSize = 512;
- static const string kChunkData(kChunkSize, 'a');
- ::asio::io_service io_service;
- auto conn = std::make_shared<MockDNConnection>(io_service);
- BlockOpResponseProto block_op_resp;
-
- /**
- * async_read would normally get called 5 times here; once for each
- * continuation in the pipeline. Cancel will be triggered on the
- * fourth call to catch the pipeline mid-execution.
- **/
- int call_count = 0;
- int trigger_at_count = 4;
- auto cancel_trigger = [&call_count, &trigger_at_count]() {
- call_count += 1;
- std::cout << "read called " << call_count << " times" << std::endl;
- if(call_count == trigger_at_count)
- packet_canceller->set_canceled();
- };
-
- conn->OnRead = cancel_trigger;
-
- block_op_resp.set_status(::hadoop::hdfs::Status::SUCCESS);
- EXPECT_CALL(*conn, Produce())
- .WillOnce(Return(Produce(ToDelimitedString(&block_op_resp))))
- .WillOnce(Return(ProducePacket(kChunkData, "", 0, 1, true)));
-
- ExtendedBlockProto block;
- block.set_poolid("foo");
- block.set_blockid(0);
- block.set_generationstamp(0);
-
- bool done = false;
- std::string data(kChunkSize, 0);
- ReadContent(conn, block, kChunkSize, 0,
- buffer(const_cast<char *>(data.c_str()), data.size()),
- [&data, &io_service, &done](const Status &stat, size_t transferred) {
- ASSERT_EQ(stat.code(), Status::kOperationCanceled);
- ASSERT_EQ(0, transferred);
- done = true;
- io_service.stop();
- }, packet_canceller);
-
- io_service.run();
- ASSERT_TRUE(done);
-}
-
-TEST(RemoteBlockReaderTest, TestReadWithinChunk) {
- static const size_t kChunkSize = 1024;
- static const size_t kLength = kChunkSize / 4 * 3;
- static const size_t kOffset = kChunkSize / 4;
- static const string kChunkData = string(kOffset, 'a') + string(kLength, 'b');
-
- ::asio::io_service io_service;
- auto conn = std::make_shared<MockDNConnection>(io_service);
- BlockOpResponseProto block_op_resp;
- ReadOpChecksumInfoProto *checksum_info =
- block_op_resp.mutable_readopchecksuminfo();
- checksum_info->set_chunkoffset(0);
- ChecksumProto *checksum = checksum_info->mutable_checksum();
- checksum->set_type(::hadoop::hdfs::ChecksumTypeProto::CHECKSUM_NULL);
- checksum->set_bytesperchecksum(512);
- block_op_resp.set_status(::hadoop::hdfs::Status::SUCCESS);
-
- EXPECT_CALL(*conn, Produce())
- .WillOnce(Return(Produce(ToDelimitedString(&block_op_resp))))
- .WillOnce(Return(ProducePacket(kChunkData, "", kOffset, 1, true)));
-
- ExtendedBlockProto block;
- block.set_poolid("foo");
- block.set_blockid(0);
- block.set_generationstamp(0);
-
- bool done = false;
-
- string data(kLength, 0);
- ReadContent(conn, block, data.size(), kOffset,
- buffer(const_cast<char *>(data.c_str()), data.size()),
- [&data, &io_service,&done](const Status &stat, size_t transferred) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(kLength, transferred);
- ASSERT_EQ(kChunkData.substr(kOffset, kLength), data);
- done = true;
- io_service.stop();
- });
- io_service.run();
- ASSERT_TRUE(done);
-}
-
-TEST(RemoteBlockReaderTest, TestReadMultiplePacket) {
- static const size_t kChunkSize = 1024;
- static const string kChunkData(kChunkSize, 'a');
-
- ::asio::io_service io_service;
- auto conn = std::make_shared<MockDNConnection>(io_service);
- BlockOpResponseProto block_op_resp;
- block_op_resp.set_status(::hadoop::hdfs::Status::SUCCESS);
-
- EXPECT_CALL(*conn, Produce())
- .WillOnce(Return(Produce(ToDelimitedString(&block_op_resp))))
- .WillOnce(Return(ProducePacket(kChunkData, "", 0, 1, false)))
- .WillOnce(Return(ProducePacket(kChunkData, "", kChunkSize, 2, true)));
-
- ExtendedBlockProto block;
- block.set_poolid("foo");
- block.set_blockid(0);
- block.set_generationstamp(0);
-
- string data(kChunkSize, 0);
- mutable_buffers_1 buf = buffer(const_cast<char *>(data.c_str()), data.size());
- BlockReaderOptions options;
- auto reader = std::make_shared<BlockReaderImpl>(options, conn, CancelTracker::New());
- Status result;
- reader->AsyncRequestBlock(
- "libhdfs++", &block, data.size(), 0,
- [buf, reader, &data, &io_service](const Status &stat) {
- ASSERT_TRUE(stat.ok());
- reader->AsyncReadPacket(
- buf, [buf, reader, &data, &io_service](const Status &stat, size_t transferred) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(kChunkSize, transferred);
- ASSERT_EQ(kChunkData, data);
- data.clear();
- data.resize(kChunkSize);
- transferred = 0;
- reader->AsyncReadPacket(
- buf, [&data,&io_service](const Status &stat, size_t transferred) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(kChunkSize, transferred);
- ASSERT_EQ(kChunkData, data);
- io_service.stop();
- });
- });
- });
- io_service.run();
-}
-
-TEST(RemoteBlockReaderTest, TestReadCancelBetweenPackets) {
- packet_canceller = CancelTracker::New();
-
- static const size_t kChunkSize = 1024;
- static const string kChunkData(kChunkSize, 'a');
-
- ::asio::io_service io_service;
- auto conn = std::make_shared<MockDNConnection>(io_service);
- BlockOpResponseProto block_op_resp;
- block_op_resp.set_status(::hadoop::hdfs::Status::SUCCESS);
-
- EXPECT_CALL(*conn, Produce())
- .WillOnce(Return(Produce(ToDelimitedString(&block_op_resp))))
- .WillOnce(Return(ProducePacket(kChunkData, "", 0, 1, false)));
- /* the second AsyncReadPacket should never attempt to read */
-
- ExtendedBlockProto block;
- block.set_poolid("foo");
- block.set_blockid(0);
- block.set_generationstamp(0);
-
- string data(kChunkSize, 0);
- mutable_buffers_1 buf = buffer(const_cast<char *>(data.c_str()), data.size());
- BlockReaderOptions options;
- auto reader = std::make_shared<BlockReaderImpl>(options, conn, packet_canceller);
- Status result;
- reader->AsyncRequestBlock(
- "libhdfs++", &block, data.size(), 0,
- [buf, reader, &data, &io_service](const Status &stat) {
- ASSERT_TRUE(stat.ok());
- reader->AsyncReadPacket(
- buf, [buf, reader, &data, &io_service](const Status &stat, size_t transferred) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(kChunkSize, transferred);
- ASSERT_EQ(kChunkData, data);
- data.clear();
- data.resize(kChunkSize);
- transferred = 0;
-
- /* Cancel the operation.*/
- packet_canceller->set_canceled();
-
- reader->AsyncReadPacket(
- buf, [&data,&io_service](const Status &stat, size_t transferred) {
- ASSERT_EQ(stat.code(), Status::kOperationCanceled);
- ASSERT_EQ(0, transferred);
- io_service.stop();
- });
- });
- });
- io_service.run();
-}
-
-
-TEST(RemoteBlockReaderTest, TestSaslConnection) {
- static const size_t kChunkSize = 512;
- static const string kChunkData(kChunkSize, 'a');
- static const string kAuthPayload = "realm=\"0\",nonce=\"+GAWc+O6yEAWpew/"
- "qKah8qh4QZLoOLCDcTtEKhlS\",qop=\"auth\","
- "charset=utf-8,algorithm=md5-sess";
- ::asio::io_service io_service;
- auto conn = std::make_shared<MockDNConnection>(io_service);
- BlockOpResponseProto block_op_resp;
- block_op_resp.set_status(::hadoop::hdfs::Status::SUCCESS);
-
- DataTransferEncryptorMessageProto sasl_resp0, sasl_resp1;
- sasl_resp0.set_status(
- ::hadoop::hdfs::
- DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_SUCCESS);
- sasl_resp0.set_payload(kAuthPayload);
- sasl_resp1.set_status(
- ::hadoop::hdfs::
- DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_SUCCESS);
-
- EXPECT_CALL(*conn, Produce())
- .WillOnce(Return(Produce(ToDelimitedString(&sasl_resp0))))
- .WillOnce(Return(Produce(ToDelimitedString(&sasl_resp1))))
- .WillOnce(Return(Produce(ToDelimitedString(&block_op_resp))))
- .WillOnce(Return(ProducePacket(kChunkData, "", 0, 1, true)));
-
- auto sasl_conn = std::make_shared<DataTransferSaslStream<MockDNConnection> >(conn, "foo", "bar");
- ExtendedBlockProto block;
- block.set_poolid("foo");
- block.set_blockid(0);
- block.set_generationstamp(0);
-
- std::string data(kChunkSize, 0);
- sasl_conn->Handshake([sasl_conn, &block, &data, &io_service](
- const Status &s) {
- ASSERT_TRUE(s.ok());
- ReadContent(sasl_conn, block, kChunkSize, 0,
- buffer(const_cast<char *>(data.c_str()), data.size()),
- [&data, &io_service](const Status &stat, size_t transferred) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ(kChunkSize, transferred);
- ASSERT_EQ(kChunkData, data);
- io_service.stop();
- });
- });
- io_service.run();
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/retry_policy_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/retry_policy_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/retry_policy_test.cc
deleted file mode 100644
index 03d1b97..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/retry_policy_test.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/retry_policy.h"
-
-#include <gmock/gmock.h>
-
-using namespace hdfs;
-
-TEST(RetryPolicyTest, TestNoRetry) {
- NoRetryPolicy policy;
- EXPECT_EQ(RetryAction::FAIL, policy.ShouldRetry(Status::Unimplemented(), 0, 0, true).action);
-}
-
-TEST(RetryPolicyTest, TestFixedDelay) {
- static const uint64_t DELAY = 100;
- FixedDelayRetryPolicy policy(DELAY, 10);
-
- // No error
- RetryAction result = policy.ShouldRetry(Status::Unimplemented(), 0, 0, true);
- EXPECT_EQ(RetryAction::RETRY, result.action);
- EXPECT_EQ(DELAY, result.delayMillis);
-
- // Few errors
- result = policy.ShouldRetry(Status::Unimplemented(), 2, 2, true);
- EXPECT_EQ(RetryAction::RETRY, result.action);
- EXPECT_EQ(DELAY, result.delayMillis);
-
- result = policy.ShouldRetry(Status::Unimplemented(), 9, 0, true);
- EXPECT_EQ(RetryAction::RETRY, result.action);
- EXPECT_EQ(DELAY, result.delayMillis);
-
- // Too many errors
- result = policy.ShouldRetry(Status::Unimplemented(), 10, 0, true);
- EXPECT_EQ(RetryAction::FAIL, result.action);
- EXPECT_TRUE(result.reason.size() > 0); // some error message
-
- result = policy.ShouldRetry(Status::Unimplemented(), 0, 10, true);
- EXPECT_EQ(RetryAction::FAIL, result.action);
- EXPECT_TRUE(result.reason.size() > 0); // some error message
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/rpc_engine_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/rpc_engine_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/rpc_engine_test.cc
deleted file mode 100644
index f998c7f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/rpc_engine_test.cc
+++ /dev/null
@@ -1,505 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "mock_connection.h"
-#include "test.pb.h"
-#include "RpcHeader.pb.h"
-#include "rpc/rpc_connection_impl.h"
-#include "common/namenode_info.h"
-
-#include <google/protobuf/io/coded_stream.h>
-
-#include <gmock/gmock.h>
-
-using ::hadoop::common::RpcResponseHeaderProto;
-using ::hadoop::common::EmptyRequestProto;
-using ::hadoop::common::EmptyResponseProto;
-using ::hadoop::common::EchoRequestProto;
-using ::hadoop::common::EchoResponseProto;
-
-using ::asio::error_code;
-
-using ::testing::Return;
-
-using ::std::make_pair;
-using ::std::string;
-
-namespace pb = ::google::protobuf;
-namespace pbio = ::google::protobuf::io;
-
-namespace hdfs {
-
-std::vector<ResolvedNamenodeInfo> make_endpoint() {
- ResolvedNamenodeInfo result;
- result.endpoints.push_back(asio::ip::basic_endpoint<asio::ip::tcp>());
- return std::vector<ResolvedNamenodeInfo>({result});
-}
-
-class MockRPCConnection : public MockConnectionBase {
- public:
- MockRPCConnection(::asio::io_service &io_service)
- : MockConnectionBase(&io_service) {}
- MOCK_METHOD0(Produce, ProducerResult());
-};
-
-class SharedMockRPCConnection : public SharedMockConnection {
- public:
- SharedMockRPCConnection(::asio::io_service &io_service)
- : SharedMockConnection(&io_service) {}
-};
-
-class SharedConnectionEngine : public RpcEngine {
- using RpcEngine::RpcEngine;
-
-protected:
- std::shared_ptr<RpcConnection> NewConnection() override {
- // Stuff in some dummy endpoints so we don't error out
- last_endpoints_ = make_endpoint()[0].endpoints;
-
- return std::make_shared<RpcConnectionImpl<SharedMockRPCConnection>>(shared_from_this());
- }
-
-};
-
-}
-
-static inline std::pair<error_code, string> RpcResponse(
- const RpcResponseHeaderProto &h, const std::string &data,
- const ::asio::error_code &ec = error_code()) {
- uint32_t payload_length =
- pbio::CodedOutputStream::VarintSize32(h.ByteSize()) +
- pbio::CodedOutputStream::VarintSize32(data.size()) + h.ByteSize() +
- data.size();
-
- std::string res;
- res.resize(sizeof(uint32_t) + payload_length);
- uint8_t *buf = reinterpret_cast<uint8_t *>(const_cast<char *>(res.c_str()));
-
- buf = pbio::CodedOutputStream::WriteLittleEndian32ToArray(
- htonl(payload_length), buf);
- buf = pbio::CodedOutputStream::WriteVarint32ToArray(h.ByteSize(), buf);
- buf = h.SerializeWithCachedSizesToArray(buf);
- buf = pbio::CodedOutputStream::WriteVarint32ToArray(data.size(), buf);
- buf = pbio::CodedOutputStream::WriteStringToArray(data, buf);
-
- return std::make_pair(ec, std::move(res));
-}
-
-
-using namespace hdfs;
-
-TEST(RpcEngineTest, TestRoundTrip) {
- ::asio::io_service io_service;
- Options options;
- std::shared_ptr<RpcEngine> engine = std::make_shared<RpcEngine>(&io_service, options, "foo", "", "protocol", 1);
- auto conn =
- std::make_shared<RpcConnectionImpl<MockRPCConnection> >(engine);
- conn->TEST_set_connected(true);
- conn->StartReading();
-
- EchoResponseProto server_resp;
- server_resp.set_message("foo");
-
- RpcResponseHeaderProto h;
- h.set_callid(1);
- h.set_status(RpcResponseHeaderProto::SUCCESS);
- EXPECT_CALL(conn->TEST_get_mutable_socket(), Produce())
- .WillOnce(Return(RpcResponse(h, server_resp.SerializeAsString())));
-
- std::shared_ptr<RpcConnection> conn_ptr(conn);
- engine->TEST_SetRpcConnection(conn_ptr);
-
- bool complete = false;
-
- EchoRequestProto req;
- req.set_message("foo");
- std::shared_ptr<EchoResponseProto> resp(new EchoResponseProto());
- engine->AsyncRpc("test", &req, resp, [resp, &complete,&io_service](const Status &stat) {
- ASSERT_TRUE(stat.ok());
- ASSERT_EQ("foo", resp->message());
- complete = true;
- io_service.stop();
- });
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestConnectionResetAndFail) {
- ::asio::io_service io_service;
- Options options;
- std::shared_ptr<RpcEngine> engine = std::make_shared<RpcEngine>(&io_service, options, "foo", "", "protocol", 1);
- auto conn =
- std::make_shared<RpcConnectionImpl<MockRPCConnection> >(engine);
- conn->TEST_set_connected(true);
- conn->StartReading();
-
- bool complete = false;
-
- RpcResponseHeaderProto h;
- h.set_callid(1);
- h.set_status(RpcResponseHeaderProto::SUCCESS);
- EXPECT_CALL(conn->TEST_get_mutable_socket(), Produce())
- .WillOnce(Return(RpcResponse(
- h, "", make_error_code(::asio::error::connection_reset))));
-
- std::shared_ptr<RpcConnection> conn_ptr(conn);
- engine->TEST_SetRpcConnection(conn_ptr);
-
- EchoRequestProto req;
- req.set_message("foo");
- std::shared_ptr<EchoResponseProto> resp(new EchoResponseProto());
-
- engine->AsyncRpc("test", &req, resp, [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_FALSE(stat.ok());
- });
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-
-TEST(RpcEngineTest, TestConnectionResetAndRecover) {
- ::asio::io_service io_service;
- Options options;
- options.max_rpc_retries = 1;
- options.rpc_retry_delay_ms = 0;
- std::shared_ptr<SharedConnectionEngine> engine
- = std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
-
- // Normally determined during RpcEngine::Connect, but in this case options
- // provides enough info to determine policy here.
- engine->TEST_SetRetryPolicy(engine->TEST_GenerateRetryPolicyUsingOptions());
-
-
- EchoResponseProto server_resp;
- server_resp.set_message("foo");
-
- bool complete = false;
-
- auto producer = std::make_shared<SharedConnectionData>();
- RpcResponseHeaderProto h;
- h.set_callid(1);
- h.set_status(RpcResponseHeaderProto::SUCCESS);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(RpcResponse(
- h, "", make_error_code(::asio::error::connection_reset))))
- .WillOnce(Return(RpcResponse(h, server_resp.SerializeAsString())));
- SharedMockConnection::SetSharedConnectionData(producer);
-
- EchoRequestProto req;
- req.set_message("foo");
- std::shared_ptr<EchoResponseProto> resp(new EchoResponseProto());
-
- engine->AsyncRpc("test", &req, resp, [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_TRUE(stat.ok());
- });
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestConnectionResetAndRecoverWithDelay) {
- ::asio::io_service io_service;
- Options options;
- options.max_rpc_retries = 1;
- options.rpc_retry_delay_ms = 1;
- std::shared_ptr<SharedConnectionEngine> engine =
- std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
-
- // Normally determined during RpcEngine::Connect, but in this case options
- // provides enough info to determine policy here.
- engine->TEST_SetRetryPolicy(engine->TEST_GenerateRetryPolicyUsingOptions());
-
- EchoResponseProto server_resp;
- server_resp.set_message("foo");
-
- bool complete = false;
-
- auto producer = std::make_shared<SharedConnectionData>();
- RpcResponseHeaderProto h;
- h.set_callid(1);
- h.set_status(RpcResponseHeaderProto::SUCCESS);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(RpcResponse(
- h, "", make_error_code(::asio::error::connection_reset))))
- .WillOnce(Return(RpcResponse(h, server_resp.SerializeAsString())));
- SharedMockConnection::SetSharedConnectionData(producer);
-
- EchoRequestProto req;
- req.set_message("foo");
- std::shared_ptr<EchoResponseProto> resp(new EchoResponseProto());
-
- engine->AsyncRpc("test", &req, resp, [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_TRUE(stat.ok());
- });
-
- ::asio::deadline_timer timer(io_service);
- timer.expires_from_now(std::chrono::hours(100));
- timer.async_wait([](const asio::error_code & err){(void)err; ASSERT_FALSE("Timed out"); });
-
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestConnectionFailure)
-{
- auto producer = std::make_shared<SharedConnectionData>();
- producer->checkProducerForConnect = true;
- SharedMockConnection::SetSharedConnectionData(producer);
-
- // Error and no retry
- ::asio::io_service io_service;
-
- bool complete = false;
-
- Options options;
- options.max_rpc_retries = 0;
- options.rpc_retry_delay_ms = 0;
- std::shared_ptr<SharedConnectionEngine> engine
- = std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(std::make_pair(make_error_code(::asio::error::connection_reset), "")));
-
- engine->Connect("", make_endpoint(), [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_FALSE(stat.ok());
- });
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestConnectionFailureRetryAndFailure)
-{
- auto producer = std::make_shared<SharedConnectionData>();
- producer->checkProducerForConnect = true;
- SharedMockConnection::SetSharedConnectionData(producer);
-
- ::asio::io_service io_service;
-
- bool complete = false;
-
- Options options;
- options.max_rpc_retries = 2;
- options.rpc_retry_delay_ms = 0;
- std::shared_ptr<SharedConnectionEngine> engine =
- std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(std::make_pair(make_error_code(::asio::error::connection_reset), "")))
- .WillOnce(Return(std::make_pair(make_error_code(::asio::error::connection_reset), "")))
- .WillOnce(Return(std::make_pair(make_error_code(::asio::error::connection_reset), "")));
-
- engine->Connect("", make_endpoint(), [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_FALSE(stat.ok());
- });
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestConnectionFailureAndRecover)
-{
- auto producer = std::make_shared<SharedConnectionData>();
- producer->checkProducerForConnect = true;
- SharedMockConnection::SetSharedConnectionData(producer);
-
- ::asio::io_service io_service;
-
- bool complete = false;
-
- Options options;
- options.max_rpc_retries = 1;
- options.rpc_retry_delay_ms = 0;
- std::shared_ptr<SharedConnectionEngine> engine =
- std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(std::make_pair(make_error_code(::asio::error::connection_reset), "")))
- .WillOnce(Return(std::make_pair(::asio::error_code(), "")))
- .WillOnce(Return(std::make_pair(::asio::error::would_block, "")));
-
- engine->Connect("", make_endpoint(), [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_TRUE(stat.ok());
- });
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestEventCallbacks)
-{
- ::asio::io_service io_service;
- Options options;
- options.max_rpc_retries = 99;
- options.rpc_retry_delay_ms = 0;
- std::shared_ptr<SharedConnectionEngine> engine =
- std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
-
- // Normally determined during RpcEngine::Connect, but in this case options
- // provides enough info to determine policy here.
- engine->TEST_SetRetryPolicy(engine->TEST_GenerateRetryPolicyUsingOptions());
-
- // Set up event callbacks
- int calls = 0;
- std::vector<std::string> callbacks;
- engine->SetFsEventCallback([&calls, &callbacks] (const char * event,
- const char * cluster,
- int64_t value) {
- (void)cluster; (void)value;
- callbacks.push_back(event);
-
- // Allow connect and fail first read
- calls++;
- if (calls == 1 || calls == 3) // First connect and first read
- return event_response::test_err(Status::Error("Test"));
-
- return event_response::make_ok();
- });
-
-
-
- EchoResponseProto server_resp;
- server_resp.set_message("foo");
-
- auto producer = std::make_shared<SharedConnectionData>();
- producer->checkProducerForConnect = true;
- RpcResponseHeaderProto h;
- h.set_callid(1);
- h.set_status(RpcResponseHeaderProto::SUCCESS);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(std::make_pair(::asio::error_code(), ""))) // subverted by callback
- .WillOnce(Return(std::make_pair(::asio::error_code(), "")))
- .WillOnce(Return(RpcResponse(h, "b"))) // subverted by callback
- .WillOnce(Return(RpcResponse(h, server_resp.SerializeAsString())));
- SharedMockConnection::SetSharedConnectionData(producer);
-
-
- EchoRequestProto req;
- req.set_message("foo");
- std::shared_ptr<EchoResponseProto> resp(new EchoResponseProto());
-
- bool complete = false;
- engine->AsyncRpc("test", &req, resp, [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_TRUE(stat.ok());
- });
-
- // If you're adding event hooks you'll most likely need to update this.
- // It's a brittle test but makes it hard to miss control flow changes in RPC retry.
- for(const auto& m : callbacks)
- std::cerr << m << std::endl;
- io_service.run();
- ASSERT_TRUE(complete);
- ASSERT_EQ(9, callbacks.size());
- ASSERT_EQ(FS_NN_CONNECT_EVENT, callbacks[0]); // error
- ASSERT_EQ(FS_NN_PRE_RPC_RETRY_EVENT, callbacks[1]); // figure out retry decision
- ASSERT_EQ(FS_NN_CONNECT_EVENT, callbacks[2]); // reconnect
- ASSERT_EQ(FS_NN_PRE_RPC_RETRY_EVENT, callbacks[3]); // makes an error
- ASSERT_EQ(FS_NN_CONNECT_EVENT, callbacks[4]); // reconnect
- for (int i=5; i < 8; i++)
- ASSERT_EQ(FS_NN_READ_EVENT, callbacks[i]);
-}
-
-
-
-TEST(RpcEngineTest, TestConnectionFailureAndAsyncRecover)
-{
- // Error and async recover
- auto producer = std::make_shared<SharedConnectionData>();
- producer->checkProducerForConnect = true;
- SharedMockConnection::SetSharedConnectionData(producer);
-
- ::asio::io_service io_service;
-
- bool complete = false;
-
- Options options;
- options.max_rpc_retries = 1;
- options.rpc_retry_delay_ms = 1;
- std::shared_ptr<SharedConnectionEngine> engine =
- std::make_shared<SharedConnectionEngine>(&io_service, options, "foo", "", "protocol", 1);
- EXPECT_CALL(*producer, Produce())
- .WillOnce(Return(std::make_pair(make_error_code(::asio::error::connection_reset), "")))
- .WillOnce(Return(std::make_pair(::asio::error_code(), "")))
- .WillOnce(Return(std::make_pair(::asio::error::would_block, "")));
-
- engine->Connect("", make_endpoint(), [&complete, &io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_TRUE(stat.ok());
- });
-
- ::asio::deadline_timer timer(io_service);
- timer.expires_from_now(std::chrono::hours(100));
- timer.async_wait([](const asio::error_code & err){(void)err; ASSERT_FALSE("Timed out"); });
-
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-TEST(RpcEngineTest, TestTimeout) {
- ::asio::io_service io_service;
- Options options;
- options.rpc_timeout = 1;
- std::shared_ptr<RpcEngine> engine = std::make_shared<RpcEngine>(&io_service, options, "foo", "", "protocol", 1);
- auto conn =
- std::make_shared<RpcConnectionImpl<MockRPCConnection> >(engine);
- conn->TEST_set_connected(true);
- conn->StartReading();
-
- EXPECT_CALL(conn->TEST_get_mutable_socket(), Produce())
- .WillOnce(Return(std::make_pair(::asio::error::would_block, "")));
-
- std::shared_ptr<RpcConnection> conn_ptr(conn);
- engine->TEST_SetRpcConnection(conn_ptr);
-
- bool complete = false;
-
- EchoRequestProto req;
- req.set_message("foo");
- std::shared_ptr<EchoResponseProto> resp(new EchoResponseProto());
- engine->AsyncRpc("test", &req, resp, [resp, &complete,&io_service](const Status &stat) {
- complete = true;
- io_service.stop();
- ASSERT_FALSE(stat.ok());
- });
-
- ::asio::deadline_timer timer(io_service);
- timer.expires_from_now(std::chrono::hours(100));
- timer.async_wait([](const asio::error_code & err){(void)err; ASSERT_FALSE("Timed out"); });
-
- io_service.run();
- ASSERT_TRUE(complete);
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/sasl_digest_md5_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/sasl_digest_md5_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/sasl_digest_md5_test.cc
deleted file mode 100644
index 553ffa4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/sasl_digest_md5_test.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "common/sasl_authenticator.h"
-
-#include <gtest/gtest.h>
-#include <google/protobuf/stubs/common.h>
-
-namespace hdfs {
-
-/**
- * Testing whether the authenticator generates the MD5 digest correctly.
- **/
-TEST(DigestMD5AuthenticatorTest, TestResponse) {
- const std::string username = "igFLnEx4OIx5PZWHAAAABGhtYWkAAAAoQlAtMTM3MDQ2OTk"
- "zLTE5Mi4xNjguMS4yMjctMTQyNDIyMDM4MTM2M4xAAAABAQ"
- "RSRUFE";
- const std::string password = "K5IFUibAynVVrApeCXLrBk9Sro8=";
- DigestMD5Authenticator auth(username, password, true);
- auth.cnonce_ = "KQlJwBDTseCHpAkFLZls4WcAktp6r5wTzje5feLY";
- std::string result;
- Status status =
- auth.EvaluateResponse("realm=\"0\",nonce=\"+GAWc+O6yEAWpew/"
- "qKah8qh4QZLoOLCDcTtEKhlS\",qop=\"auth\",charset="
- "utf-8,algorithm=md5-sess",
- &result);
- ASSERT_TRUE(status.ok());
- ASSERT_TRUE(result.find("response=3a286c2c385b92a06ebc66d58b8c4330") !=
- std::string::npos);
-
- google::protobuf::ShutdownProtobufLibrary();
-}
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/uri_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/uri_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/uri_test.cc
deleted file mode 100644
index 97f0afd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/uri_test.cc
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/uri.h"
-#include <gmock/gmock.h>
-
-using ::testing::_;
-
-using namespace hdfs;
-
-URI expect_uri_throw(const char *uri) {
- bool threw = false;
- std::string what_msg;
- URI val;
- try {
- val = URI::parse_from_string(uri);
- } catch (const uri_parse_error& e) {
- threw = true;
- what_msg = e.what();
- } catch (...) {
- threw = true;
- }
-
- EXPECT_TRUE(threw);
- EXPECT_EQ(what_msg, uri);
- return val;
-}
-
-URI expect_uri_nothrow(const char *uri) {
- bool threw = false;
- std::string what_msg;
- URI val;
- try {
- val = URI::parse_from_string(uri);
- } catch (const uri_parse_error& e) {
- threw = true;
- what_msg = e.what();
- } catch (...) {
- threw = true;
- }
-
- EXPECT_FALSE(threw);
- EXPECT_EQ(what_msg, "");
- return val;
-}
-
-
-TEST(UriTest, TestDegenerateInputs) {
- /* Empty input */
- expect_uri_nothrow("");
-
- /* Invalid encoding */
- expect_uri_throw("%%");
-
- /* Invalid port */
- expect_uri_throw("hdfs://nn:foo/");
-
- /* Negative port */
- expect_uri_throw("hdfs://nn:-100/");
-
- /* Empty paths */
- expect_uri_nothrow("hdfs://////");
-}
-
-
-TEST(UriTest, TestNominalInputs) {
- /* Simple input */
- {
- URI uri = expect_uri_nothrow("hdfs:///foo");
- EXPECT_EQ("hdfs", uri.get_scheme());
- EXPECT_EQ("", uri.get_host());
- EXPECT_FALSE(uri.has_port());
- EXPECT_EQ(0, uri.get_port_or_default(0));
- EXPECT_EQ("/foo", uri.get_path());
- EXPECT_EQ("", uri.get_fragment());
- EXPECT_EQ("", uri.get_query());
- }
-
- /* With authority */
- {
- URI uri = expect_uri_nothrow("hdfs://host:100/foo");
- EXPECT_EQ("hdfs", uri.get_scheme());
- EXPECT_EQ("host", uri.get_host());
- EXPECT_TRUE(uri.has_port());
- EXPECT_EQ(100, uri.get_port());
- EXPECT_EQ(100, uri.get_port_or_default(0));
- EXPECT_EQ("/foo", uri.get_path());
- EXPECT_EQ("", uri.get_fragment());
- EXPECT_EQ("", uri.get_query());
- }
-
- /* No scheme */
- {
- URI uri = expect_uri_nothrow("/foo");
- EXPECT_EQ("", uri.get_scheme());
- EXPECT_EQ("", uri.get_host());
- EXPECT_FALSE(uri.has_port());
- EXPECT_EQ(0, uri.get_port_or_default(0));
- EXPECT_EQ("/foo", uri.get_path());
- EXPECT_EQ("", uri.get_fragment());
- EXPECT_EQ("", uri.get_query());
- }
-
- /* All fields */
- {
- URI uri = expect_uri_nothrow("hdfs://nn:8020/path/to/data?a=b&c=d#fragment");
- EXPECT_EQ("hdfs", uri.get_scheme());
- EXPECT_EQ("nn", uri.get_host());
- EXPECT_TRUE(uri.has_port());
- EXPECT_EQ(8020, uri.get_port());
- EXPECT_EQ(8020, uri.get_port_or_default(0));
- EXPECT_EQ("/path/to/data", uri.get_path());
- EXPECT_EQ("a=b&c=d", uri.get_query());
- EXPECT_EQ(3, uri.get_path_elements().size());
- EXPECT_EQ("path", uri.get_path_elements()[0]);
- EXPECT_EQ("to", uri.get_path_elements()[1]);
- EXPECT_EQ("data", uri.get_path_elements()[2]);
- EXPECT_EQ(2, uri.get_query_elements().size());
- EXPECT_EQ("a", uri.get_query_elements()[0].key);
- EXPECT_EQ("b", uri.get_query_elements()[0].value);
- EXPECT_EQ("c", uri.get_query_elements()[1].key);
- EXPECT_EQ("d", uri.get_query_elements()[1].value);
- EXPECT_EQ("fragment", uri.get_fragment());
- }
-}
-
-TEST(UriTest, TestEncodedInputs) {
- // Note that scheme and port cannot be uri-encoded
-
- /* Encoded input */
- {
- URI uri = expect_uri_nothrow("S://%5E:1/+%5E%20?%5E=%5E#%5E");
- EXPECT_EQ("S", uri.get_scheme());
- EXPECT_EQ("^", uri.get_host());
- EXPECT_EQ(1, uri.get_port_or_default(0));
- EXPECT_EQ("/ ^ ", uri.get_path());
- EXPECT_EQ("^", uri.get_fragment());
- EXPECT_EQ("^=^", uri.get_query());
- }
-
- /* Lowercase */
- {
- URI uri = expect_uri_nothrow("S://%5e:1/+%5e%20?%5e=%5e#%5e");
- EXPECT_EQ("S", uri.get_scheme());
- EXPECT_EQ("^", uri.get_host());
- EXPECT_EQ(1, uri.get_port_or_default(0));
- EXPECT_EQ("/ ^ ", uri.get_path());
- EXPECT_EQ("^", uri.get_fragment());
- EXPECT_EQ("^=^", uri.get_query());
- }
-}
-
-TEST(UriTest, TestDecodedInputsAndOutputs) {
- /* All fields non-encoded and shouldn't be interpreted */
- {
- URI uri = expect_uri_nothrow("S://%25/%25+?%25=%25#%25");
- EXPECT_EQ("S", uri.get_scheme());
- EXPECT_EQ("%", uri.get_host());
- EXPECT_EQ(0, uri.get_port_or_default(0));
- EXPECT_EQ("/% ", uri.get_path());
- EXPECT_EQ("%", uri.get_fragment());
- EXPECT_EQ("%=%", uri.get_query());
- }
-
- /* All fields encode fields on their way out */
- {
- URI uri = expect_uri_nothrow("S://%25/%25+?%25=%25#%25");
- EXPECT_EQ("S", uri.get_scheme(true));
- EXPECT_EQ("%25", uri.get_host(true));
- EXPECT_EQ(0, uri.get_port_or_default(0));
- EXPECT_EQ("/%25+", uri.get_path(true));
- EXPECT_EQ("%25", uri.get_fragment(true));
- EXPECT_EQ("%25=%25", uri.get_query(true));
- }
-
-}
-
-TEST(UriTest, TestSetters) {
-
- /* Non-encoded inputs */
- {
- URI uri;
- uri.set_scheme("S");
- uri.set_host("%");
- uri.set_port(100);
- uri.set_path("%/%/%");
- uri.set_fragment("%");
- uri.set_query("%25=%25"); //set_query must always be encoded
- EXPECT_EQ("S://%25:100/%25/%25/%25?%25=%25#%25", uri.str());
- }
-
- /* Incremental adders, non-encoded */
- {
- URI uri;
- uri.set_scheme("S");
- uri.set_host("%");
- uri.set_port(100);
- uri.set_fragment("%");
- EXPECT_EQ("S://%25:100#%25", uri.str());
-
- uri.add_path("%");
- uri.add_query("%", "%");
- EXPECT_EQ("S://%25:100/%25?%25=%25#%25", uri.str());
-
- uri.add_path("%");
- uri.add_query("%", "%");
- EXPECT_EQ("S://%25:100/%25/%25?%25=%25&%25=%25#%25", uri.str());
- }
-
- /* Encoded inputs */
- {
- URI uri;
- uri.set_scheme("S", true);
- uri.set_host("%25", true);
- uri.set_port(100);
- uri.set_path("%25/%25/%25", true);
- uri.set_fragment("%25", true);
- uri.set_query("%25=%25"); //set_query must always be encoded
- EXPECT_EQ("S://%25:100/%25/%25/%25?%25=%25#%25", uri.str());
- }
-
- /* Incremental adders, encoded */
- {
- URI uri;
- uri.set_scheme("S", true);
- uri.set_host("%25", true);
- uri.set_port(100);
- uri.set_fragment("%25", true);
- EXPECT_EQ("S://%25:100#%25", uri.str());
-
- uri.add_path("%25", true);
- uri.add_query("%25", "%25", true);
- EXPECT_EQ("S://%25:100/%25?%25=%25#%25", uri.str());
-
- uri.add_path("%25", true);
- uri.add_query("%25", "%25", true);
- EXPECT_EQ("S://%25:100/%25/%25?%25=%25&%25=%25#%25", uri.str());
- }
-
-}
-
-TEST(UriTest, QueryManip) {
- // Not encoded, just basic adding and removing query parts
- {
- URI uri = URI::parse_from_string("hdfs://nn:8020/path?thedude=lebowski&donny=outofhiselement");
- EXPECT_TRUE(uri.has_port());
- EXPECT_EQ(uri.get_query(), "thedude=lebowski&donny=outofhiselement");
-
- std::vector<URI::Query> queries = uri.get_query_elements();
- EXPECT_EQ(queries.size(), 2);
- EXPECT_EQ(queries[0].key, "thedude");
- EXPECT_EQ(queries[0].value, "lebowski");
- EXPECT_EQ(queries[1].key, "donny");
- EXPECT_EQ(queries[1].value, "outofhiselement");
-
- uri.remove_query("donny"); // that's a bummer, man
- EXPECT_EQ(uri.get_query(), "thedude=lebowski");
- queries = uri.get_query_elements();
- EXPECT_EQ(queries.size(), 1);
- EXPECT_EQ(queries[0].key, "thedude");
- EXPECT_EQ(queries[0].value, "lebowski");
-
- uri.add_query("HeyPeter", "CheckItOut");
- EXPECT_EQ(uri.get_query(), "thedude=lebowski&HeyPeter=CheckItOut");
- queries = uri.get_query_elements();
- EXPECT_EQ(queries.size(), 2);
- }
-
-}
-
-int main(int argc, char *argv[]) {
- /*
- * The following line must be executed to initialize Google Mock
- * (and Google Test) before running the tests.
- */
- ::testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/user_lock_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/user_lock_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/user_lock_test.cc
deleted file mode 100644
index 6df47b2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/user_lock_test.cc
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <hdfspp/locks.h>
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <iostream>
-#include <memory>
-#include <mutex>
-#include <thread>
-#include <vector>
-
-using namespace hdfs;
-
-// try_lock will always return false, unlock will always throw because it
-// can never be locked.
-class CantLockMutex : public Mutex {
- public:
- void lock() override {
- throw LockFailure("This mutex cannot be locked");
- }
- void unlock() override {
- throw LockFailure("Unlock");
- }
- std::string str() override {
- return "CantLockMutex";
- }
-};
-
-TEST(UserLockTest, DefaultMutexBasics) {
- Mutex *mtx = LockManager::TEST_get_default_mutex();
-
- // lock and unlock twice to make sure unlock works
- bool locked = false;
- try {
- mtx->lock();
- locked = true;
- } catch (...) {}
- EXPECT_TRUE(locked);
- mtx->unlock();
-
- locked = false;
- try {
- mtx->lock();
- locked = true;
- } catch (...) {}
- EXPECT_TRUE(locked);
- mtx->unlock();
-
- EXPECT_EQ(mtx->str(), "DefaultMutex");
-}
-
-
-// Make sure lock manager can only be initialized once unless test reset called
-TEST(UserLockTest, LockManager) {
- std::unique_ptr<CantLockMutex> mtx(new CantLockMutex());
- EXPECT_TRUE(mtx != nullptr);
-
- // Check the default lock
- Mutex *defaultGssapiMtx = LockManager::getGssapiMutex();
- EXPECT_TRUE(defaultGssapiMtx != nullptr);
-
- // Try a double init. Should not work
- bool res = LockManager::InitLocks(mtx.get());
- EXPECT_TRUE(res);
-
- // Check pointer value
- EXPECT_EQ(LockManager::getGssapiMutex(), mtx.get());
-
- res = LockManager::InitLocks(mtx.get());
- EXPECT_FALSE(res);
-
- // Make sure test reset still works
- LockManager::TEST_reset_manager();
- res = LockManager::InitLocks(mtx.get());
- EXPECT_TRUE(res);
- LockManager::TEST_reset_manager();
- EXPECT_EQ(LockManager::getGssapiMutex(), defaultGssapiMtx);
-}
-
-TEST(UserLockTest, CheckCantLockMutex) {
- std::unique_ptr<CantLockMutex> mtx(new CantLockMutex());
- EXPECT_TRUE(mtx != nullptr);
-
- bool locked = false;
- try {
- mtx->lock();
- } catch (...) {}
- EXPECT_FALSE(locked);
-
- bool threw_on_unlock = false;
- try {
- mtx->unlock();
- } catch (const LockFailure& e) {
- threw_on_unlock = true;
- }
- EXPECT_TRUE(threw_on_unlock);
-
- EXPECT_EQ("CantLockMutex", mtx->str());
-}
-
-TEST(UserLockTest, LockGuardBasics) {
- Mutex *goodMtx = LockManager::TEST_get_default_mutex();
- CantLockMutex badMtx;
-
- // lock/unlock a few times to increase chances of UB if lock is misused
- for(int i=0;i<10;i++) {
- bool caught_exception = false;
- try {
- LockGuard guard(goodMtx);
- // now have a scoped lock
- } catch (const LockFailure& e) {
- caught_exception = true;
- }
- EXPECT_FALSE(caught_exception);
- }
-
- // still do a few times, but expect it to blow up each time
- for(int i=0;i<10;i++) {
- bool caught_exception = false;
- try {
- LockGuard guard(&badMtx);
- // now have a scoped lock
- } catch (const LockFailure& e) {
- caught_exception = true;
- }
- EXPECT_TRUE(caught_exception);
- }
-
-}
-
-struct Incrementer {
- int64_t& _val;
- int64_t _iters;
- Mutex *_mtx;
- Incrementer(int64_t &val, int64_t iters, Mutex *m)
- : _val(val), _iters(iters), _mtx(m) {}
- void operator()(){
- for(int64_t i=0; i<_iters; i++) {
- LockGuard valguard(_mtx);
- _val += 1;
- }
- }
-};
-
-struct Decrementer {
- int64_t& _val;
- int64_t _iters;
- Mutex *_mtx;
- Decrementer(int64_t &val, int64_t iters, Mutex *m)
- : _val(val), _iters(iters), _mtx(m) {}
- void operator()(){
- for(int64_t i=0; i<_iters; i++) {
- LockGuard valguard(_mtx);
- _val -= 1;
- }
- }
-};
-
-TEST(UserLockTest, LockGuardConcurrency) {
- Mutex *mtx = LockManager::TEST_get_default_mutex();
-
- // Prove that these actually mutate the value
- int64_t test_value = 0;
- Incrementer inc(test_value, 1000, mtx);
- inc();
- EXPECT_EQ(test_value, 1000);
-
- Decrementer dec(test_value, 1000, mtx);
- dec();
- EXPECT_EQ(test_value, 0);
-
- std::vector<std::thread> workers;
- std::vector<Incrementer> incrementers;
- std::vector<Decrementer> decrementors;
-
- const int delta = 1024 * 1024;
- const int threads = 2 * 6;
- EXPECT_EQ(threads % 2, 0);
-
- // a bunch of threads race to increment and decrement the value
- // if all goes well the operations balance out and the value is unchanged
- for(int i=0; i < threads; i++) {
- if(i%2 == 0) {
- incrementers.emplace_back(test_value, delta, mtx);
- workers.emplace_back(incrementers.back());
- } else {
- decrementors.emplace_back(test_value, delta, mtx);
- workers.emplace_back(decrementors.back());
- }
- }
-
- // join, everything should balance to 0
- for(std::thread& thread : workers) {
- thread.join();
- }
- EXPECT_EQ(test_value, 0);
-}
-
-
-int main(int argc, char *argv[]) {
-
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int res = RUN_ALL_TESTS();
- return res;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/COPYING
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/COPYING b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/COPYING
deleted file mode 100644
index e86a381..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/COPYING
+++ /dev/null
@@ -1,4 +0,0 @@
-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)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio.hpp
deleted file mode 100644
index 1f47840..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// asio.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_HPP
-#define ASIO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/async_result.hpp"
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/basic_deadline_timer.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/basic_raw_socket.hpp"
-#include "asio/basic_seq_packet_socket.hpp"
-#include "asio/basic_serial_port.hpp"
-#include "asio/basic_signal_set.hpp"
-#include "asio/basic_socket_acceptor.hpp"
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_socket_streambuf.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/basic_streambuf.hpp"
-#include "asio/basic_waitable_timer.hpp"
-#include "asio/buffer.hpp"
-#include "asio/buffered_read_stream_fwd.hpp"
-#include "asio/buffered_read_stream.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-#include "asio/buffered_stream.hpp"
-#include "asio/buffered_write_stream_fwd.hpp"
-#include "asio/buffered_write_stream.hpp"
-#include "asio/buffers_iterator.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/connect.hpp"
-#include "asio/coroutine.hpp"
-#include "asio/datagram_socket_service.hpp"
-#include "asio/deadline_timer_service.hpp"
-#include "asio/deadline_timer.hpp"
-#include "asio/error.hpp"
-#include "asio/error_code.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-#include "asio/generic/datagram_protocol.hpp"
-#include "asio/generic/raw_protocol.hpp"
-#include "asio/generic/seq_packet_protocol.hpp"
-#include "asio/generic/stream_protocol.hpp"
-#include "asio/handler_alloc_hook.hpp"
-#include "asio/handler_continuation_hook.hpp"
-#include "asio/handler_invoke_hook.hpp"
-#include "asio/handler_type.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/address.hpp"
-#include "asio/ip/address_v4.hpp"
-#include "asio/ip/address_v6.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_entry.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/ip/host_name.hpp"
-#include "asio/ip/icmp.hpp"
-#include "asio/ip/multicast.hpp"
-#include "asio/ip/resolver_query_base.hpp"
-#include "asio/ip/resolver_service.hpp"
-#include "asio/ip/tcp.hpp"
-#include "asio/ip/udp.hpp"
-#include "asio/ip/unicast.hpp"
-#include "asio/ip/v6_only.hpp"
-#include "asio/is_read_buffered.hpp"
-#include "asio/is_write_buffered.hpp"
-#include "asio/local/basic_endpoint.hpp"
-#include "asio/local/connect_pair.hpp"
-#include "asio/local/datagram_protocol.hpp"
-#include "asio/local/stream_protocol.hpp"
-#include "asio/placeholders.hpp"
-#include "asio/posix/basic_descriptor.hpp"
-#include "asio/posix/basic_stream_descriptor.hpp"
-#include "asio/posix/descriptor_base.hpp"
-#include "asio/posix/stream_descriptor.hpp"
-#include "asio/posix/stream_descriptor_service.hpp"
-#include "asio/raw_socket_service.hpp"
-#include "asio/read.hpp"
-#include "asio/read_at.hpp"
-#include "asio/read_until.hpp"
-#include "asio/seq_packet_socket_service.hpp"
-#include "asio/serial_port.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/serial_port_service.hpp"
-#include "asio/signal_set.hpp"
-#include "asio/signal_set_service.hpp"
-#include "asio/socket_acceptor_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/strand.hpp"
-#include "asio/stream_socket_service.hpp"
-#include "asio/streambuf.hpp"
-#include "asio/system_error.hpp"
-#include "asio/thread.hpp"
-#include "asio/time_traits.hpp"
-#include "asio/version.hpp"
-#include "asio/wait_traits.hpp"
-#include "asio/waitable_timer_service.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/basic_object_handle.hpp"
-#include "asio/windows/basic_random_access_handle.hpp"
-#include "asio/windows/basic_stream_handle.hpp"
-#include "asio/windows/object_handle.hpp"
-#include "asio/windows/object_handle_service.hpp"
-#include "asio/windows/overlapped_ptr.hpp"
-#include "asio/windows/random_access_handle.hpp"
-#include "asio/windows/random_access_handle_service.hpp"
-#include "asio/windows/stream_handle.hpp"
-#include "asio/windows/stream_handle_service.hpp"
-#include "asio/write.hpp"
-#include "asio/write_at.hpp"
-
-#endif // ASIO_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[35/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_signal_set.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_signal_set.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_signal_set.hpp
deleted file mode 100644
index 2dd71ce..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_signal_set.hpp
+++ /dev/null
@@ -1,384 +0,0 @@
-//
-// basic_signal_set.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_BASIC_SIGNAL_SET_HPP
-#define ASIO_BASIC_SIGNAL_SET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/signal_set_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides signal functionality.
-/**
- * The basic_signal_set class template provides the ability to perform an
- * asynchronous wait for one or more signals to occur.
- *
- * Most applications will use the asio::signal_set typedef.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * Performing an asynchronous wait:
- * @code
- * void handler(
- * const asio::error_code& error,
- * int signal_number)
- * {
- * if (!error)
- * {
- * // A signal occurred.
- * }
- * }
- *
- * ...
- *
- * // Construct a signal set registered for process termination.
- * asio::signal_set signals(io_service, SIGINT, SIGTERM);
- *
- * // Start an asynchronous wait for one of the signals to occur.
- * signals.async_wait(handler);
- * @endcode
- *
- * @par Queueing of signal notifications
- *
- * If a signal is registered with a signal_set, and the signal occurs when
- * there are no waiting handlers, then the signal notification is queued. The
- * next async_wait operation on that signal_set will dequeue the notification.
- * If multiple notifications are queued, subsequent async_wait operations
- * dequeue them one at a time. Signal notifications are dequeued in order of
- * ascending signal number.
- *
- * If a signal number is removed from a signal_set (using the @c remove or @c
- * erase member functions) then any queued notifications for that signal are
- * discarded.
- *
- * @par Multiple registration of signals
- *
- * The same signal number may be registered with different signal_set objects.
- * When the signal occurs, one handler is called for each signal_set object.
- *
- * Note that multiple registration only works for signals that are registered
- * using Asio. The application must not also register a signal handler using
- * functions such as @c signal() or @c sigaction().
- *
- * @par Signal masking on POSIX platforms
- *
- * POSIX allows signals to be blocked using functions such as @c sigprocmask()
- * and @c pthread_sigmask(). For signals to be delivered, programs must ensure
- * that any signals registered using signal_set objects are unblocked in at
- * least one thread.
- */
-template <typename SignalSetService = signal_set_service>
-class basic_signal_set
- : public basic_io_object<SignalSetService>
-{
-public:
- /// Construct a signal set without adding any signals.
- /**
- * This constructor creates a signal set without registering for any signals.
- *
- * @param io_service The io_service object that the signal set will use to
- * dispatch handlers for any asynchronous operations performed on the set.
- */
- explicit basic_signal_set(asio::io_service& io_service)
- : basic_io_object<SignalSetService>(io_service)
- {
- }
-
- /// Construct a signal set and add one signal.
- /**
- * This constructor creates a signal set and registers for one signal.
- *
- * @param io_service The io_service object that the signal set will use to
- * dispatch handlers for any asynchronous operations performed on the set.
- *
- * @param signal_number_1 The signal number to be added.
- *
- * @note This constructor is equivalent to performing:
- * @code asio::signal_set signals(io_service);
- * signals.add(signal_number_1); @endcode
- */
- basic_signal_set(asio::io_service& io_service, int signal_number_1)
- : basic_io_object<SignalSetService>(io_service)
- {
- asio::error_code ec;
- this->service.add(this->implementation, signal_number_1, ec);
- asio::detail::throw_error(ec, "add");
- }
-
- /// Construct a signal set and add two signals.
- /**
- * This constructor creates a signal set and registers for two signals.
- *
- * @param io_service The io_service object that the signal set will use to
- * dispatch handlers for any asynchronous operations performed on the set.
- *
- * @param signal_number_1 The first signal number to be added.
- *
- * @param signal_number_2 The second signal number to be added.
- *
- * @note This constructor is equivalent to performing:
- * @code asio::signal_set signals(io_service);
- * signals.add(signal_number_1);
- * signals.add(signal_number_2); @endcode
- */
- basic_signal_set(asio::io_service& io_service, int signal_number_1,
- int signal_number_2)
- : basic_io_object<SignalSetService>(io_service)
- {
- asio::error_code ec;
- this->service.add(this->implementation, signal_number_1, ec);
- asio::detail::throw_error(ec, "add");
- this->service.add(this->implementation, signal_number_2, ec);
- asio::detail::throw_error(ec, "add");
- }
-
- /// Construct a signal set and add three signals.
- /**
- * This constructor creates a signal set and registers for three signals.
- *
- * @param io_service The io_service object that the signal set will use to
- * dispatch handlers for any asynchronous operations performed on the set.
- *
- * @param signal_number_1 The first signal number to be added.
- *
- * @param signal_number_2 The second signal number to be added.
- *
- * @param signal_number_3 The third signal number to be added.
- *
- * @note This constructor is equivalent to performing:
- * @code asio::signal_set signals(io_service);
- * signals.add(signal_number_1);
- * signals.add(signal_number_2);
- * signals.add(signal_number_3); @endcode
- */
- basic_signal_set(asio::io_service& io_service, int signal_number_1,
- int signal_number_2, int signal_number_3)
- : basic_io_object<SignalSetService>(io_service)
- {
- asio::error_code ec;
- this->service.add(this->implementation, signal_number_1, ec);
- asio::detail::throw_error(ec, "add");
- this->service.add(this->implementation, signal_number_2, ec);
- asio::detail::throw_error(ec, "add");
- this->service.add(this->implementation, signal_number_3, ec);
- asio::detail::throw_error(ec, "add");
- }
-
- /// Add a signal to a signal_set.
- /**
- * This function adds the specified signal to the set. It has no effect if the
- * signal is already in the set.
- *
- * @param signal_number The signal to be added to the set.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void add(int signal_number)
- {
- asio::error_code ec;
- this->service.add(this->implementation, signal_number, ec);
- asio::detail::throw_error(ec, "add");
- }
-
- /// Add a signal to a signal_set.
- /**
- * This function adds the specified signal to the set. It has no effect if the
- * signal is already in the set.
- *
- * @param signal_number The signal to be added to the set.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code add(int signal_number,
- asio::error_code& ec)
- {
- return this->service.add(this->implementation, signal_number, ec);
- }
-
- /// Remove a signal from a signal_set.
- /**
- * This function removes the specified signal from the set. It has no effect
- * if the signal is not in the set.
- *
- * @param signal_number The signal to be removed from the set.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Removes any notifications that have been queued for the specified
- * signal number.
- */
- void remove(int signal_number)
- {
- asio::error_code ec;
- this->service.remove(this->implementation, signal_number, ec);
- asio::detail::throw_error(ec, "remove");
- }
-
- /// Remove a signal from a signal_set.
- /**
- * This function removes the specified signal from the set. It has no effect
- * if the signal is not in the set.
- *
- * @param signal_number The signal to be removed from the set.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Removes any notifications that have been queued for the specified
- * signal number.
- */
- asio::error_code remove(int signal_number,
- asio::error_code& ec)
- {
- return this->service.remove(this->implementation, signal_number, ec);
- }
-
- /// Remove all signals from a signal_set.
- /**
- * This function removes all signals from the set. It has no effect if the set
- * is already empty.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Removes all queued notifications.
- */
- void clear()
- {
- asio::error_code ec;
- this->service.clear(this->implementation, ec);
- asio::detail::throw_error(ec, "clear");
- }
-
- /// Remove all signals from a signal_set.
- /**
- * This function removes all signals from the set. It has no effect if the set
- * is already empty.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Removes all queued notifications.
- */
- asio::error_code clear(asio::error_code& ec)
- {
- return this->service.clear(this->implementation, ec);
- }
-
- /// Cancel all operations associated with the signal set.
- /**
- * This function forces the completion of any pending asynchronous wait
- * operations against the signal set. The handler for each cancelled
- * operation will be invoked with the asio::error::operation_aborted
- * error code.
- *
- * Cancellation does not alter the set of registered signals.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If a registered signal occurred before cancel() is called, then the
- * handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- void cancel()
- {
- asio::error_code ec;
- this->service.cancel(this->implementation, ec);
- asio::detail::throw_error(ec, "cancel");
- }
-
- /// Cancel all operations associated with the signal set.
- /**
- * This function forces the completion of any pending asynchronous wait
- * operations against the signal set. The handler for each cancelled
- * operation will be invoked with the asio::error::operation_aborted
- * error code.
- *
- * Cancellation does not alter the set of registered signals.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note If a registered signal occurred before cancel() is called, then the
- * handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- asio::error_code cancel(asio::error_code& ec)
- {
- return this->service.cancel(this->implementation, ec);
- }
-
- /// Start an asynchronous operation to wait for a signal to be delivered.
- /**
- * This function may be used to initiate an asynchronous wait against the
- * signal set. It always returns immediately.
- *
- * For each call to async_wait(), the supplied handler will be called exactly
- * once. The handler will be called when:
- *
- * @li One of the registered signals in the signal set occurs; or
- *
- * @li The signal set was cancelled, in which case the handler is passed the
- * error code asio::error::operation_aborted.
- *
- * @param handler The handler to be called when the signal occurs. Copies
- * will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * const asio::error_code& error, // Result of operation.
- * int signal_number // Indicates which signal occurred.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename SignalHandler>
- ASIO_INITFN_RESULT_TYPE(SignalHandler,
- void (asio::error_code, int))
- async_wait(ASIO_MOVE_ARG(SignalHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a SignalHandler.
- ASIO_SIGNAL_HANDLER_CHECK(SignalHandler, handler) type_check;
-
- return this->service.async_wait(this->implementation,
- ASIO_MOVE_CAST(SignalHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SIGNAL_SET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket.hpp
deleted file mode 100644
index be4fb3c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket.hpp
+++ /dev/null
@@ -1,1518 +0,0 @@
-//
-// basic_socket.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_BASIC_SOCKET_HPP
-#define ASIO_BASIC_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides socket functionality.
-/**
- * The basic_socket class template provides functionality that is common to both
- * stream-oriented and datagram-oriented sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol, typename SocketService>
-class basic_socket
- : public basic_io_object<SocketService>,
- public socket_base
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename SocketService::native_handle_type native_type;
-
- /// The native representation of a socket.
- typedef typename SocketService::native_handle_type native_handle_type;
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- /// A basic_socket is always the lowest layer.
- typedef basic_socket<Protocol, SocketService> lowest_layer_type;
-
- /// Construct a basic_socket without opening it.
- /**
- * This constructor creates a socket without opening it.
- *
- * @param io_service The io_service object that the socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- */
- explicit basic_socket(asio::io_service& io_service)
- : basic_io_object<SocketService>(io_service)
- {
- }
-
- /// Construct and open a basic_socket.
- /**
- * This constructor creates and opens a socket.
- *
- * @param io_service The io_service object that the socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_socket(asio::io_service& io_service,
- const protocol_type& protocol)
- : basic_io_object<SocketService>(io_service)
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), protocol, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Construct a basic_socket, opening it and binding it to the given local
- /// endpoint.
- /**
- * This constructor creates a socket and automatically opens it bound to the
- * specified endpoint on the local machine. The protocol used is the protocol
- * associated with the given endpoint.
- *
- * @param io_service The io_service object that the socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- *
- * @param endpoint An endpoint on the local machine to which the socket will
- * be bound.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_socket(asio::io_service& io_service,
- const endpoint_type& endpoint)
- : basic_io_object<SocketService>(io_service)
- {
- asio::error_code ec;
- const protocol_type protocol = endpoint.protocol();
- this->get_service().open(this->get_implementation(), protocol, ec);
- asio::detail::throw_error(ec, "open");
- this->get_service().bind(this->get_implementation(), endpoint, ec);
- asio::detail::throw_error(ec, "bind");
- }
-
- /// Construct a basic_socket on an existing native socket.
- /**
- * This constructor creates a socket object to hold an existing native socket.
- *
- * @param io_service The io_service object that the socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @param native_socket A native socket.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_socket(asio::io_service& io_service,
- const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_io_object<SocketService>(io_service)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- protocol, native_socket, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_socket from another.
- /**
- * This constructor moves a socket from one object to another.
- *
- * @param other The other basic_socket object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
- */
- basic_socket(basic_socket&& other)
- : basic_io_object<SocketService>(
- ASIO_MOVE_CAST(basic_socket)(other))
- {
- }
-
- /// Move-assign a basic_socket from another.
- /**
- * This assignment operator moves a socket from one object to another.
- *
- * @param other The other basic_socket object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
- */
- basic_socket& operator=(basic_socket&& other)
- {
- basic_io_object<SocketService>::operator=(
- ASIO_MOVE_CAST(basic_socket)(other));
- return *this;
- }
-
- // All sockets have access to each other's implementations.
- template <typename Protocol1, typename SocketService1>
- friend class basic_socket;
-
- /// Move-construct a basic_socket from a socket of another protocol type.
- /**
- * This constructor moves a socket from one object to another.
- *
- * @param other The other basic_socket object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename SocketService1>
- basic_socket(basic_socket<Protocol1, SocketService1>&& other,
- typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_io_object<SocketService>(other.get_io_service())
- {
- this->get_service().template converting_move_construct<Protocol1>(
- this->get_implementation(), other.get_implementation());
- }
-
- /// Move-assign a basic_socket from a socket of another protocol type.
- /**
- * This assignment operator moves a socket from one object to another.
- *
- * @param other The other basic_socket object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename SocketService1>
- typename enable_if<is_convertible<Protocol1, Protocol>::value,
- basic_socket>::type& operator=(
- basic_socket<Protocol1, SocketService1>&& other)
- {
- basic_socket tmp(ASIO_MOVE_CAST2(basic_socket<
- Protocol1, SocketService1>)(other));
- basic_io_object<SocketService>::operator=(
- ASIO_MOVE_CAST(basic_socket)(tmp));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Get a reference to the lowest layer.
- /**
- * This function returns a reference to the lowest layer in a stack of
- * layers. Since a basic_socket cannot contain any further layers, it simply
- * returns a reference to itself.
- *
- * @return A reference to the lowest layer in the stack of layers. Ownership
- * is not transferred to the caller.
- */
- lowest_layer_type& lowest_layer()
- {
- return *this;
- }
-
- /// Get a const reference to the lowest layer.
- /**
- * This function returns a const reference to the lowest layer in a stack of
- * layers. Since a basic_socket cannot contain any further layers, it simply
- * returns a reference to itself.
- *
- * @return A const reference to the lowest layer in the stack of layers.
- * Ownership is not transferred to the caller.
- */
- const lowest_layer_type& lowest_layer() const
- {
- return *this;
- }
-
- /// Open the socket using the specified protocol.
- /**
- * This function opens the socket so that it will use the specified protocol.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * socket.open(asio::ip::tcp::v4());
- * @endcode
- */
- void open(const protocol_type& protocol = protocol_type())
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), protocol, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Open the socket using the specified protocol.
- /**
- * This function opens the socket so that it will use the specified protocol.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * asio::error_code ec;
- * socket.open(asio::ip::tcp::v4(), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code open(const protocol_type& protocol,
- asio::error_code& ec)
- {
- return this->get_service().open(this->get_implementation(), protocol, ec);
- }
-
- /// Assign an existing native socket to the socket.
- /*
- * This function opens the socket to hold an existing native socket.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @param native_socket A native socket.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void assign(const protocol_type& protocol,
- const native_handle_type& native_socket)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- protocol, native_socket, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
- /// Assign an existing native socket to the socket.
- /*
- * This function opens the socket to hold an existing native socket.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @param native_socket A native socket.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code assign(const protocol_type& protocol,
- const native_handle_type& native_socket, asio::error_code& ec)
- {
- return this->get_service().assign(this->get_implementation(),
- protocol, native_socket, ec);
- }
-
- /// Determine whether the socket is open.
- bool is_open() const
- {
- return this->get_service().is_open(this->get_implementation());
- }
-
- /// Close the socket.
- /**
- * This function is used to close the socket. Any asynchronous send, receive
- * or connect operations will be cancelled immediately, and will complete
- * with the asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure. Note that, even if
- * the function indicates an error, the underlying descriptor is closed.
- *
- * @note For portable behaviour with respect to graceful closure of a
- * connected socket, call shutdown() before closing the socket.
- */
- void close()
- {
- asio::error_code ec;
- this->get_service().close(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "close");
- }
-
- /// Close the socket.
- /**
- * This function is used to close the socket. Any asynchronous send, receive
- * or connect operations will be cancelled immediately, and will complete
- * with the asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any. Note that, even if
- * the function indicates an error, the underlying descriptor is closed.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::error_code ec;
- * socket.close(ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- *
- * @note For portable behaviour with respect to graceful closure of a
- * connected socket, call shutdown() before closing the socket.
- */
- asio::error_code close(asio::error_code& ec)
- {
- return this->get_service().close(this->get_implementation(), ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native socket representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * socket. This is intended to allow access to native socket functionality
- * that is not otherwise provided.
- */
- native_type native()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Get the native socket representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * socket. This is intended to allow access to native socket functionality
- * that is not otherwise provided.
- */
- native_handle_type native_handle()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Cancel all asynchronous operations associated with the socket.
- /**
- * This function causes all outstanding asynchronous connect, send and receive
- * operations to finish immediately, and the handlers for cancelled operations
- * will be passed the asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls to cancel() will always fail with
- * asio::error::operation_not_supported when run on Windows XP, Windows
- * Server 2003, and earlier versions of Windows, unless
- * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
- * two issues that should be considered before enabling its use:
- *
- * @li It will only cancel asynchronous operations that were initiated in the
- * current thread.
- *
- * @li It can appear to complete without error, but the request to cancel the
- * unfinished operations may be silently ignored by the operating system.
- * Whether it works or not seems to depend on the drivers that are installed.
- *
- * For portable cancellation, consider using one of the following
- * alternatives:
- *
- * @li Disable asio's I/O completion port backend by defining
- * ASIO_DISABLE_IOCP.
- *
- * @li Use the close() function to simultaneously cancel the outstanding
- * operations and close the socket.
- *
- * When running on Windows Vista, Windows Server 2008, and later, the
- * CancelIoEx function is always used. This function does not have the
- * problems described above.
- */
-#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
- && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
- && !defined(ASIO_ENABLE_CANCELIO)
- __declspec(deprecated("By default, this function always fails with "
- "operation_not_supported when used on Windows XP, Windows Server 2003, "
- "or earlier. Consult documentation for details."))
-#endif
- void cancel()
- {
- asio::error_code ec;
- this->get_service().cancel(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "cancel");
- }
-
- /// Cancel all asynchronous operations associated with the socket.
- /**
- * This function causes all outstanding asynchronous connect, send and receive
- * operations to finish immediately, and the handlers for cancelled operations
- * will be passed the asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls to cancel() will always fail with
- * asio::error::operation_not_supported when run on Windows XP, Windows
- * Server 2003, and earlier versions of Windows, unless
- * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
- * two issues that should be considered before enabling its use:
- *
- * @li It will only cancel asynchronous operations that were initiated in the
- * current thread.
- *
- * @li It can appear to complete without error, but the request to cancel the
- * unfinished operations may be silently ignored by the operating system.
- * Whether it works or not seems to depend on the drivers that are installed.
- *
- * For portable cancellation, consider using one of the following
- * alternatives:
- *
- * @li Disable asio's I/O completion port backend by defining
- * ASIO_DISABLE_IOCP.
- *
- * @li Use the close() function to simultaneously cancel the outstanding
- * operations and close the socket.
- *
- * When running on Windows Vista, Windows Server 2008, and later, the
- * CancelIoEx function is always used. This function does not have the
- * problems described above.
- */
-#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
- && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
- && !defined(ASIO_ENABLE_CANCELIO)
- __declspec(deprecated("By default, this function always fails with "
- "operation_not_supported when used on Windows XP, Windows Server 2003, "
- "or earlier. Consult documentation for details."))
-#endif
- asio::error_code cancel(asio::error_code& ec)
- {
- return this->get_service().cancel(this->get_implementation(), ec);
- }
-
- /// Determine whether the socket is at the out-of-band data mark.
- /**
- * This function is used to check whether the socket input is currently
- * positioned at the out-of-band data mark.
- *
- * @return A bool indicating whether the socket is at the out-of-band data
- * mark.
- *
- * @throws asio::system_error Thrown on failure.
- */
- bool at_mark() const
- {
- asio::error_code ec;
- bool b = this->get_service().at_mark(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "at_mark");
- return b;
- }
-
- /// Determine whether the socket is at the out-of-band data mark.
- /**
- * This function is used to check whether the socket input is currently
- * positioned at the out-of-band data mark.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return A bool indicating whether the socket is at the out-of-band data
- * mark.
- */
- bool at_mark(asio::error_code& ec) const
- {
- return this->get_service().at_mark(this->get_implementation(), ec);
- }
-
- /// Determine the number of bytes available for reading.
- /**
- * This function is used to determine the number of bytes that may be read
- * without blocking.
- *
- * @return The number of bytes that may be read without blocking, or 0 if an
- * error occurs.
- *
- * @throws asio::system_error Thrown on failure.
- */
- std::size_t available() const
- {
- asio::error_code ec;
- std::size_t s = this->get_service().available(
- this->get_implementation(), ec);
- asio::detail::throw_error(ec, "available");
- return s;
- }
-
- /// Determine the number of bytes available for reading.
- /**
- * This function is used to determine the number of bytes that may be read
- * without blocking.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of bytes that may be read without blocking, or 0 if an
- * error occurs.
- */
- std::size_t available(asio::error_code& ec) const
- {
- return this->get_service().available(this->get_implementation(), ec);
- }
-
- /// Bind the socket to the given local endpoint.
- /**
- * This function binds the socket to the specified endpoint on the local
- * machine.
- *
- * @param endpoint An endpoint on the local machine to which the socket will
- * be bound.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * socket.open(asio::ip::tcp::v4());
- * socket.bind(asio::ip::tcp::endpoint(
- * asio::ip::tcp::v4(), 12345));
- * @endcode
- */
- void bind(const endpoint_type& endpoint)
- {
- asio::error_code ec;
- this->get_service().bind(this->get_implementation(), endpoint, ec);
- asio::detail::throw_error(ec, "bind");
- }
-
- /// Bind the socket to the given local endpoint.
- /**
- * This function binds the socket to the specified endpoint on the local
- * machine.
- *
- * @param endpoint An endpoint on the local machine to which the socket will
- * be bound.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * socket.open(asio::ip::tcp::v4());
- * asio::error_code ec;
- * socket.bind(asio::ip::tcp::endpoint(
- * asio::ip::tcp::v4(), 12345), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code bind(const endpoint_type& endpoint,
- asio::error_code& ec)
- {
- return this->get_service().bind(this->get_implementation(), endpoint, ec);
- }
-
- /// Connect the socket to the specified endpoint.
- /**
- * This function is used to connect a socket to the specified remote endpoint.
- * The function call will block until the connection is successfully made or
- * an error occurs.
- *
- * The socket is automatically opened if it is not already open. If the
- * connect fails, and the socket was automatically opened, the socket is
- * not returned to the closed state.
- *
- * @param peer_endpoint The remote endpoint to which the socket will be
- * connected.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * asio::ip::tcp::endpoint endpoint(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * socket.connect(endpoint);
- * @endcode
- */
- void connect(const endpoint_type& peer_endpoint)
- {
- asio::error_code ec;
- if (!is_open())
- {
- this->get_service().open(this->get_implementation(),
- peer_endpoint.protocol(), ec);
- asio::detail::throw_error(ec, "connect");
- }
- this->get_service().connect(this->get_implementation(), peer_endpoint, ec);
- asio::detail::throw_error(ec, "connect");
- }
-
- /// Connect the socket to the specified endpoint.
- /**
- * This function is used to connect a socket to the specified remote endpoint.
- * The function call will block until the connection is successfully made or
- * an error occurs.
- *
- * The socket is automatically opened if it is not already open. If the
- * connect fails, and the socket was automatically opened, the socket is
- * not returned to the closed state.
- *
- * @param peer_endpoint The remote endpoint to which the socket will be
- * connected.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * asio::ip::tcp::endpoint endpoint(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * asio::error_code ec;
- * socket.connect(endpoint, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code connect(const endpoint_type& peer_endpoint,
- asio::error_code& ec)
- {
- if (!is_open())
- {
- if (this->get_service().open(this->get_implementation(),
- peer_endpoint.protocol(), ec))
- {
- return ec;
- }
- }
-
- return this->get_service().connect(
- this->get_implementation(), peer_endpoint, ec);
- }
-
- /// Start an asynchronous connect.
- /**
- * This function is used to asynchronously connect a socket to the specified
- * remote endpoint. The function call always returns immediately.
- *
- * The socket is automatically opened if it is not already open. If the
- * connect fails, and the socket was automatically opened, the socket is
- * not returned to the closed state.
- *
- * @param peer_endpoint The remote endpoint to which the socket will be
- * connected. Copies will be made of the endpoint object as required.
- *
- * @param handler The handler to be called when the connection operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * const asio::error_code& error // Result of operation
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * @code
- * void connect_handler(const asio::error_code& error)
- * {
- * if (!error)
- * {
- * // Connect succeeded.
- * }
- * }
- *
- * ...
- *
- * asio::ip::tcp::socket socket(io_service);
- * asio::ip::tcp::endpoint endpoint(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * socket.async_connect(endpoint, connect_handler);
- * @endcode
- */
- template <typename ConnectHandler>
- ASIO_INITFN_RESULT_TYPE(ConnectHandler,
- void (asio::error_code))
- async_connect(const endpoint_type& peer_endpoint,
- ASIO_MOVE_ARG(ConnectHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ConnectHandler.
- ASIO_CONNECT_HANDLER_CHECK(ConnectHandler, handler) type_check;
-
- if (!is_open())
- {
- asio::error_code ec;
- const protocol_type protocol = peer_endpoint.protocol();
- if (this->get_service().open(this->get_implementation(), protocol, ec))
- {
- detail::async_result_init<
- ConnectHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(ConnectHandler)(handler));
-
- this->get_io_service().post(
- asio::detail::bind_handler(
- ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(
- ConnectHandler, void (asio::error_code)))(
- init.handler), ec));
-
- return init.result.get();
- }
- }
-
- return this->get_service().async_connect(this->get_implementation(),
- peer_endpoint, ASIO_MOVE_CAST(ConnectHandler)(handler));
- }
-
- /// Set an option on the socket.
- /**
- * This function is used to set an option on the socket.
- *
- * @param option The new option value to be set on the socket.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa SettableSocketOption @n
- * asio::socket_base::broadcast @n
- * asio::socket_base::do_not_route @n
- * asio::socket_base::keep_alive @n
- * asio::socket_base::linger @n
- * asio::socket_base::receive_buffer_size @n
- * asio::socket_base::receive_low_watermark @n
- * asio::socket_base::reuse_address @n
- * asio::socket_base::send_buffer_size @n
- * asio::socket_base::send_low_watermark @n
- * asio::ip::multicast::join_group @n
- * asio::ip::multicast::leave_group @n
- * asio::ip::multicast::enable_loopback @n
- * asio::ip::multicast::outbound_interface @n
- * asio::ip::multicast::hops @n
- * asio::ip::tcp::no_delay
- *
- * @par Example
- * Setting the IPPROTO_TCP/TCP_NODELAY option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::no_delay option(true);
- * socket.set_option(option);
- * @endcode
- */
- template <typename SettableSocketOption>
- void set_option(const SettableSocketOption& option)
- {
- asio::error_code ec;
- this->get_service().set_option(this->get_implementation(), option, ec);
- asio::detail::throw_error(ec, "set_option");
- }
-
- /// Set an option on the socket.
- /**
- * This function is used to set an option on the socket.
- *
- * @param option The new option value to be set on the socket.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa SettableSocketOption @n
- * asio::socket_base::broadcast @n
- * asio::socket_base::do_not_route @n
- * asio::socket_base::keep_alive @n
- * asio::socket_base::linger @n
- * asio::socket_base::receive_buffer_size @n
- * asio::socket_base::receive_low_watermark @n
- * asio::socket_base::reuse_address @n
- * asio::socket_base::send_buffer_size @n
- * asio::socket_base::send_low_watermark @n
- * asio::ip::multicast::join_group @n
- * asio::ip::multicast::leave_group @n
- * asio::ip::multicast::enable_loopback @n
- * asio::ip::multicast::outbound_interface @n
- * asio::ip::multicast::hops @n
- * asio::ip::tcp::no_delay
- *
- * @par Example
- * Setting the IPPROTO_TCP/TCP_NODELAY option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::no_delay option(true);
- * asio::error_code ec;
- * socket.set_option(option, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- template <typename SettableSocketOption>
- asio::error_code set_option(const SettableSocketOption& option,
- asio::error_code& ec)
- {
- return this->get_service().set_option(
- this->get_implementation(), option, ec);
- }
-
- /// Get an option from the socket.
- /**
- * This function is used to get the current value of an option on the socket.
- *
- * @param option The option value to be obtained from the socket.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa GettableSocketOption @n
- * asio::socket_base::broadcast @n
- * asio::socket_base::do_not_route @n
- * asio::socket_base::keep_alive @n
- * asio::socket_base::linger @n
- * asio::socket_base::receive_buffer_size @n
- * asio::socket_base::receive_low_watermark @n
- * asio::socket_base::reuse_address @n
- * asio::socket_base::send_buffer_size @n
- * asio::socket_base::send_low_watermark @n
- * asio::ip::multicast::join_group @n
- * asio::ip::multicast::leave_group @n
- * asio::ip::multicast::enable_loopback @n
- * asio::ip::multicast::outbound_interface @n
- * asio::ip::multicast::hops @n
- * asio::ip::tcp::no_delay
- *
- * @par Example
- * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::socket::keep_alive option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- */
- template <typename GettableSocketOption>
- void get_option(GettableSocketOption& option) const
- {
- asio::error_code ec;
- this->get_service().get_option(this->get_implementation(), option, ec);
- asio::detail::throw_error(ec, "get_option");
- }
-
- /// Get an option from the socket.
- /**
- * This function is used to get the current value of an option on the socket.
- *
- * @param option The option value to be obtained from the socket.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa GettableSocketOption @n
- * asio::socket_base::broadcast @n
- * asio::socket_base::do_not_route @n
- * asio::socket_base::keep_alive @n
- * asio::socket_base::linger @n
- * asio::socket_base::receive_buffer_size @n
- * asio::socket_base::receive_low_watermark @n
- * asio::socket_base::reuse_address @n
- * asio::socket_base::send_buffer_size @n
- * asio::socket_base::send_low_watermark @n
- * asio::ip::multicast::join_group @n
- * asio::ip::multicast::leave_group @n
- * asio::ip::multicast::enable_loopback @n
- * asio::ip::multicast::outbound_interface @n
- * asio::ip::multicast::hops @n
- * asio::ip::tcp::no_delay
- *
- * @par Example
- * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::socket::keep_alive option;
- * asio::error_code ec;
- * socket.get_option(option, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * bool is_set = option.value();
- * @endcode
- */
- template <typename GettableSocketOption>
- asio::error_code get_option(GettableSocketOption& option,
- asio::error_code& ec) const
- {
- return this->get_service().get_option(
- this->get_implementation(), option, ec);
- }
-
- /// Perform an IO control command on the socket.
- /**
- * This function is used to execute an IO control command on the socket.
- *
- * @param command The IO control command to be performed on the socket.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa IoControlCommand @n
- * asio::socket_base::bytes_readable @n
- * asio::socket_base::non_blocking_io
- *
- * @par Example
- * Getting the number of bytes ready to read:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::socket::bytes_readable command;
- * socket.io_control(command);
- * std::size_t bytes_readable = command.get();
- * @endcode
- */
- template <typename IoControlCommand>
- void io_control(IoControlCommand& command)
- {
- asio::error_code ec;
- this->get_service().io_control(this->get_implementation(), command, ec);
- asio::detail::throw_error(ec, "io_control");
- }
-
- /// Perform an IO control command on the socket.
- /**
- * This function is used to execute an IO control command on the socket.
- *
- * @param command The IO control command to be performed on the socket.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa IoControlCommand @n
- * asio::socket_base::bytes_readable @n
- * asio::socket_base::non_blocking_io
- *
- * @par Example
- * Getting the number of bytes ready to read:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::socket::bytes_readable command;
- * asio::error_code ec;
- * socket.io_control(command, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * std::size_t bytes_readable = command.get();
- * @endcode
- */
- template <typename IoControlCommand>
- asio::error_code io_control(IoControlCommand& command,
- asio::error_code& ec)
- {
- return this->get_service().io_control(
- this->get_implementation(), command, ec);
- }
-
- /// Gets the non-blocking mode of the socket.
- /**
- * @returns @c true if the socket's synchronous operations will fail with
- * asio::error::would_block if they are unable to perform the requested
- * operation immediately. If @c false, synchronous operations will block
- * until complete.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- bool non_blocking() const
- {
- return this->get_service().non_blocking(this->get_implementation());
- }
-
- /// Sets the non-blocking mode of the socket.
- /**
- * @param mode If @c true, the socket's synchronous operations will fail with
- * asio::error::would_block if they are unable to perform the requested
- * operation immediately. If @c false, synchronous operations will block
- * until complete.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- void non_blocking(bool mode)
- {
- asio::error_code ec;
- this->get_service().non_blocking(this->get_implementation(), mode, ec);
- asio::detail::throw_error(ec, "non_blocking");
- }
-
- /// Sets the non-blocking mode of the socket.
- /**
- * @param mode If @c true, the socket's synchronous operations will fail with
- * asio::error::would_block if they are unable to perform the requested
- * operation immediately. If @c false, synchronous operations will block
- * until complete.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- asio::error_code non_blocking(
- bool mode, asio::error_code& ec)
- {
- return this->get_service().non_blocking(
- this->get_implementation(), mode, ec);
- }
-
- /// Gets the non-blocking mode of the native socket implementation.
- /**
- * This function is used to retrieve the non-blocking mode of the underlying
- * native socket. This mode has no effect on the behaviour of the socket
- * object's synchronous operations.
- *
- * @returns @c true if the underlying socket is in non-blocking mode and
- * direct system calls may fail with asio::error::would_block (or the
- * equivalent system error).
- *
- * @note The current non-blocking mode is cached by the socket object.
- * Consequently, the return value may be incorrect if the non-blocking mode
- * was set directly on the native socket.
- *
- * @par Example
- * This function is intended to allow the encapsulation of arbitrary
- * non-blocking system calls as asynchronous operations, in a way that is
- * transparent to the user of the socket object. The following example
- * illustrates how Linux's @c sendfile system call might be encapsulated:
- * @code template <typename Handler>
- * struct sendfile_op
- * {
- * tcp::socket& sock_;
- * int fd_;
- * Handler handler_;
- * off_t offset_;
- * std::size_t total_bytes_transferred_;
- *
- * // Function call operator meeting WriteHandler requirements.
- * // Used as the handler for the async_write_some operation.
- * void operator()(asio::error_code ec, std::size_t)
- * {
- * // Put the underlying socket into non-blocking mode.
- * if (!ec)
- * if (!sock_.native_non_blocking())
- * sock_.native_non_blocking(true, ec);
- *
- * if (!ec)
- * {
- * for (;;)
- * {
- * // Try the system call.
- * errno = 0;
- * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
- * ec = asio::error_code(n < 0 ? errno : 0,
- * asio::error::get_system_category());
- * total_bytes_transferred_ += ec ? 0 : n;
- *
- * // Retry operation immediately if interrupted by signal.
- * if (ec == asio::error::interrupted)
- * continue;
- *
- * // Check if we need to run the operation again.
- * if (ec == asio::error::would_block
- * || ec == asio::error::try_again)
- * {
- * // We have to wait for the socket to become ready again.
- * sock_.async_write_some(asio::null_buffers(), *this);
- * return;
- * }
- *
- * if (ec || n == 0)
- * {
- * // An error occurred, or we have reached the end of the file.
- * // Either way we must exit the loop so we can call the handler.
- * break;
- * }
- *
- * // Loop around to try calling sendfile again.
- * }
- * }
- *
- * // Pass result back to user's handler.
- * handler_(ec, total_bytes_transferred_);
- * }
- * };
- *
- * template <typename Handler>
- * void async_sendfile(tcp::socket& sock, int fd, Handler h)
- * {
- * sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
- * sock.async_write_some(asio::null_buffers(), op);
- * } @endcode
- */
- bool native_non_blocking() const
- {
- return this->get_service().native_non_blocking(this->get_implementation());
- }
-
- /// Sets the non-blocking mode of the native socket implementation.
- /**
- * This function is used to modify the non-blocking mode of the underlying
- * native socket. It has no effect on the behaviour of the socket object's
- * synchronous operations.
- *
- * @param mode If @c true, the underlying socket is put into non-blocking
- * mode and direct system calls may fail with asio::error::would_block
- * (or the equivalent system error).
- *
- * @throws asio::system_error Thrown on failure. If the @c mode is
- * @c false, but the current value of @c non_blocking() is @c true, this
- * function fails with asio::error::invalid_argument, as the
- * combination does not make sense.
- *
- * @par Example
- * This function is intended to allow the encapsulation of arbitrary
- * non-blocking system calls as asynchronous operations, in a way that is
- * transparent to the user of the socket object. The following example
- * illustrates how Linux's @c sendfile system call might be encapsulated:
- * @code template <typename Handler>
- * struct sendfile_op
- * {
- * tcp::socket& sock_;
- * int fd_;
- * Handler handler_;
- * off_t offset_;
- * std::size_t total_bytes_transferred_;
- *
- * // Function call operator meeting WriteHandler requirements.
- * // Used as the handler for the async_write_some operation.
- * void operator()(asio::error_code ec, std::size_t)
- * {
- * // Put the underlying socket into non-blocking mode.
- * if (!ec)
- * if (!sock_.native_non_blocking())
- * sock_.native_non_blocking(true, ec);
- *
- * if (!ec)
- * {
- * for (;;)
- * {
- * // Try the system call.
- * errno = 0;
- * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
- * ec = asio::error_code(n < 0 ? errno : 0,
- * asio::error::get_system_category());
- * total_bytes_transferred_ += ec ? 0 : n;
- *
- * // Retry operation immediately if interrupted by signal.
- * if (ec == asio::error::interrupted)
- * continue;
- *
- * // Check if we need to run the operation again.
- * if (ec == asio::error::would_block
- * || ec == asio::error::try_again)
- * {
- * // We have to wait for the socket to become ready again.
- * sock_.async_write_some(asio::null_buffers(), *this);
- * return;
- * }
- *
- * if (ec || n == 0)
- * {
- * // An error occurred, or we have reached the end of the file.
- * // Either way we must exit the loop so we can call the handler.
- * break;
- * }
- *
- * // Loop around to try calling sendfile again.
- * }
- * }
- *
- * // Pass result back to user's handler.
- * handler_(ec, total_bytes_transferred_);
- * }
- * };
- *
- * template <typename Handler>
- * void async_sendfile(tcp::socket& sock, int fd, Handler h)
- * {
- * sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
- * sock.async_write_some(asio::null_buffers(), op);
- * } @endcode
- */
- void native_non_blocking(bool mode)
- {
- asio::error_code ec;
- this->get_service().native_non_blocking(
- this->get_implementation(), mode, ec);
- asio::detail::throw_error(ec, "native_non_blocking");
- }
-
- /// Sets the non-blocking mode of the native socket implementation.
- /**
- * This function is used to modify the non-blocking mode of the underlying
- * native socket. It has no effect on the behaviour of the socket object's
- * synchronous operations.
- *
- * @param mode If @c true, the underlying socket is put into non-blocking
- * mode and direct system calls may fail with asio::error::would_block
- * (or the equivalent system error).
- *
- * @param ec Set to indicate what error occurred, if any. If the @c mode is
- * @c false, but the current value of @c non_blocking() is @c true, this
- * function fails with asio::error::invalid_argument, as the
- * combination does not make sense.
- *
- * @par Example
- * This function is intended to allow the encapsulation of arbitrary
- * non-blocking system calls as asynchronous operations, in a way that is
- * transparent to the user of the socket object. The following example
- * illustrates how Linux's @c sendfile system call might be encapsulated:
- * @code template <typename Handler>
- * struct sendfile_op
- * {
- * tcp::socket& sock_;
- * int fd_;
- * Handler handler_;
- * off_t offset_;
- * std::size_t total_bytes_transferred_;
- *
- * // Function call operator meeting WriteHandler requirements.
- * // Used as the handler for the async_write_some operation.
- * void operator()(asio::error_code ec, std::size_t)
- * {
- * // Put the underlying socket into non-blocking mode.
- * if (!ec)
- * if (!sock_.native_non_blocking())
- * sock_.native_non_blocking(true, ec);
- *
- * if (!ec)
- * {
- * for (;;)
- * {
- * // Try the system call.
- * errno = 0;
- * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
- * ec = asio::error_code(n < 0 ? errno : 0,
- * asio::error::get_system_category());
- * total_bytes_transferred_ += ec ? 0 : n;
- *
- * // Retry operation immediately if interrupted by signal.
- * if (ec == asio::error::interrupted)
- * continue;
- *
- * // Check if we need to run the operation again.
- * if (ec == asio::error::would_block
- * || ec == asio::error::try_again)
- * {
- * // We have to wait for the socket to become ready again.
- * sock_.async_write_some(asio::null_buffers(), *this);
- * return;
- * }
- *
- * if (ec || n == 0)
- * {
- * // An error occurred, or we have reached the end of the file.
- * // Either way we must exit the loop so we can call the handler.
- * break;
- * }
- *
- * // Loop around to try calling sendfile again.
- * }
- * }
- *
- * // Pass result back to user's handler.
- * handler_(ec, total_bytes_transferred_);
- * }
- * };
- *
- * template <typename Handler>
- * void async_sendfile(tcp::socket& sock, int fd, Handler h)
- * {
- * sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
- * sock.async_write_some(asio::null_buffers(), op);
- * } @endcode
- */
- asio::error_code native_non_blocking(
- bool mode, asio::error_code& ec)
- {
- return this->get_service().native_non_blocking(
- this->get_implementation(), mode, ec);
- }
-
- /// Get the local endpoint of the socket.
- /**
- * This function is used to obtain the locally bound endpoint of the socket.
- *
- * @returns An object that represents the local endpoint of the socket.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
- * @endcode
- */
- endpoint_type local_endpoint() const
- {
- asio::error_code ec;
- endpoint_type ep = this->get_service().local_endpoint(
- this->get_implementation(), ec);
- asio::detail::throw_error(ec, "local_endpoint");
- return ep;
- }
-
- /// Get the local endpoint of the socket.
- /**
- * This function is used to obtain the locally bound endpoint of the socket.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns An object that represents the local endpoint of the socket.
- * Returns a default-constructed endpoint object if an error occurred.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::error_code ec;
- * asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- endpoint_type local_endpoint(asio::error_code& ec) const
- {
- return this->get_service().local_endpoint(this->get_implementation(), ec);
- }
-
- /// Get the remote endpoint of the socket.
- /**
- * This function is used to obtain the remote endpoint of the socket.
- *
- * @returns An object that represents the remote endpoint of the socket.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
- * @endcode
- */
- endpoint_type remote_endpoint() const
- {
- asio::error_code ec;
- endpoint_type ep = this->get_service().remote_endpoint(
- this->get_implementation(), ec);
- asio::detail::throw_error(ec, "remote_endpoint");
- return ep;
- }
-
- /// Get the remote endpoint of the socket.
- /**
- * This function is used to obtain the remote endpoint of the socket.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns An object that represents the remote endpoint of the socket.
- * Returns a default-constructed endpoint object if an error occurred.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::error_code ec;
- * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- endpoint_type remote_endpoint(asio::error_code& ec) const
- {
- return this->get_service().remote_endpoint(this->get_implementation(), ec);
- }
-
- /// Disable sends or receives on the socket.
- /**
- * This function is used to disable send operations, receive operations, or
- * both.
- *
- * @param what Determines what types of operation will no longer be allowed.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * Shutting down the send side of the socket:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * socket.shutdown(asio::ip::tcp::socket::shutdown_send);
- * @endcode
- */
- void shutdown(shutdown_type what)
- {
- asio::error_code ec;
- this->get_service().shutdown(this->get_implementation(), what, ec);
- asio::detail::throw_error(ec, "shutdown");
- }
-
- /// Disable sends or receives on the socket.
- /**
- * This function is used to disable send operations, receive operations, or
- * both.
- *
- * @param what Determines what types of operation will no longer be allowed.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * Shutting down the send side of the socket:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::error_code ec;
- * socket.shutdown(asio::ip::tcp::socket::shutdown_send, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code shutdown(shutdown_type what,
- asio::error_code& ec)
- {
- return this->get_service().shutdown(this->get_implementation(), what, ec);
- }
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~basic_socket()
- {
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SOCKET_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[43/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem_sync.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem_sync.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem_sync.cc
deleted file mode 100644
index 53c9e26..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem_sync.cc
+++ /dev/null
@@ -1,607 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "filesystem.h"
-
-#include <future>
-#include <tuple>
-
-#define FMT_THIS_ADDR "this=" << (void*)this
-
-// Note: This is just a place to hold boilerplate async to sync shim code,
-// place actual filesystem logic in filesystem.cc
-//
-//
-// Shim pattern pseudocode
-//
-// Status MySynchronizedMethod(method_args):
-// let stat = a promise<Status> wrapped in a shared_ptr
-//
-// Create a lambda that captures stat and any other variables that need to
-// be set based on the async operation. When invoked set variables with the
-// arguments passed (possibly do some translation), then set stat to indicate
-// the return status of the async call.
-//
-// invoke MyAsyncMethod(method_args, handler_lambda)
-//
-// block until stat value has been set while async work takes place
-//
-// return stat
-
-namespace hdfs {
-
-Status FileSystemImpl::Connect(const std::string &server, const std::string &service) {
- LOG_INFO(kFileSystem, << "FileSystemImpl::[sync]Connect(" << FMT_THIS_ADDR
- << ", server=" << server << ", service=" << service << ") called");
-
- /* synchronized */
- auto stat = std::make_shared<std::promise<Status>>();
- std::future<Status> future = stat->get_future();
-
- auto callback = [stat](const Status &s, FileSystem *fs) {
- (void)fs;
- stat->set_value(s);
- };
-
- Connect(server, service, callback);
-
- /* block until promise is set */
- auto s = future.get();
-
- return s;
-}
-
-
-Status FileSystemImpl::ConnectToDefaultFs() {
- auto stat = std::make_shared<std::promise<Status>>();
- std::future<Status> future = stat->get_future();
-
- auto callback = [stat](const Status &s, FileSystem *fs) {
- (void)fs;
- stat->set_value(s);
- };
-
- ConnectToDefaultFs(callback);
-
- /* block until promise is set */
- auto s = future.get();
-
- return s;
-}
-
-
-Status FileSystemImpl::Open(const std::string &path,
- FileHandle **handle) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]Open("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, FileHandle*>>>();
- std::future<std::tuple<Status, FileHandle*>> future(callstate->get_future());
-
- /* wrap async FileSystem::Open with promise to make it a blocking call */
- auto h = [callstate](const Status &s, FileHandle *is) {
- callstate->set_value(std::make_tuple(s, is));
- };
-
- Open(path, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = std::get<0>(returnstate);
- FileHandle *file_handle = std::get<1>(returnstate);
-
- if (!stat.ok()) {
- delete file_handle;
- return stat;
- }
- if (!file_handle) {
- return stat;
- }
-
- *handle = file_handle;
- return stat;
-}
-
-Status FileSystemImpl::GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- std::shared_ptr<FileBlockLocation> * fileBlockLocations)
-{
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]GetBlockLocations("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- if (!fileBlockLocations)
- return Status::InvalidArgument("Null pointer passed to GetBlockLocations");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, std::shared_ptr<FileBlockLocation>>>>();
- std::future<std::tuple<Status, std::shared_ptr<FileBlockLocation>>> future(callstate->get_future());
-
- /* wrap async call with promise/future to make it blocking */
- auto callback = [callstate](const Status &s, std::shared_ptr<FileBlockLocation> blockInfo) {
- callstate->set_value(std::make_tuple(s,blockInfo));
- };
-
- GetBlockLocations(path, offset, length, callback);
-
- /* wait for async to finish */
- auto returnstate = future.get();
- auto stat = std::get<0>(returnstate);
-
- if (!stat.ok()) {
- return stat;
- }
-
- *fileBlockLocations = std::get<1>(returnstate);
-
- return stat;
-}
-
-Status FileSystemImpl::GetPreferredBlockSize(const std::string &path, uint64_t & block_size) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]GetPreferredBlockSize("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, uint64_t>>>();
- std::future<std::tuple<Status, uint64_t>> future(callstate->get_future());
-
- /* wrap async FileSystem::GetPreferredBlockSize with promise to make it a blocking call */
- auto h = [callstate](const Status &s, const uint64_t & bsize) {
- callstate->set_value(std::make_tuple(s, bsize));
- };
-
- GetPreferredBlockSize(path, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = std::get<0>(returnstate);
- uint64_t size = std::get<1>(returnstate);
-
- if (!stat.ok()) {
- return stat;
- }
-
- block_size = size;
- return stat;
-}
-
-Status FileSystemImpl::SetReplication(const std::string & path, int16_t replication) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]SetReplication(" << FMT_THIS_ADDR << ", path=" << path <<
- ", replication=" << replication << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::SetReplication with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- SetReplication(path, replication, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::SetTimes(const std::string & path, uint64_t mtime, uint64_t atime) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]SetTimes(" << FMT_THIS_ADDR << ", path=" << path <<
- ", mtime=" << mtime << ", atime=" << atime << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::SetTimes with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- SetTimes(path, mtime, atime, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::GetFileInfo(const std::string &path,
- StatInfo & stat_info) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]GetFileInfo("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, StatInfo>>>();
- std::future<std::tuple<Status, StatInfo>> future(callstate->get_future());
-
- /* wrap async FileSystem::GetFileInfo with promise to make it a blocking call */
- auto h = [callstate](const Status &s, const StatInfo &si) {
- callstate->set_value(std::make_tuple(s, si));
- };
-
- GetFileInfo(path, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = std::get<0>(returnstate);
- StatInfo info = std::get<1>(returnstate);
-
- if (!stat.ok()) {
- return stat;
- }
-
- stat_info = info;
- return stat;
-}
-
-Status FileSystemImpl::GetContentSummary(const std::string &path,
- ContentSummary & content_summary) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]GetContentSummary("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, ContentSummary>>>();
- std::future<std::tuple<Status, ContentSummary>> future(callstate->get_future());
-
- /* wrap async FileSystem::GetContentSummary with promise to make it a blocking call */
- auto h = [callstate](const Status &s, const ContentSummary &si) {
- callstate->set_value(std::make_tuple(s, si));
- };
-
- GetContentSummary(path, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = std::get<0>(returnstate);
- ContentSummary cs = std::get<1>(returnstate);
-
- if (!stat.ok()) {
- return stat;
- }
-
- content_summary = cs;
- return stat;
-}
-
-Status FileSystemImpl::GetFsStats(FsInfo & fs_info) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]GetFsStats(" << FMT_THIS_ADDR << ") called");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, FsInfo>>>();
- std::future<std::tuple<Status, FsInfo>> future(callstate->get_future());
-
- /* wrap async FileSystem::GetFsStats with promise to make it a blocking call */
- auto h = [callstate](const Status &s, const FsInfo &si) {
- callstate->set_value(std::make_tuple(s, si));
- };
-
- GetFsStats(h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = std::get<0>(returnstate);
- FsInfo info = std::get<1>(returnstate);
-
- if (!stat.ok()) {
- return stat;
- }
-
- fs_info = info;
- return stat;
-}
-
-Status FileSystemImpl::GetListing(const std::string &path, std::vector<StatInfo> * stat_infos) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]GetListing("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- if (!stat_infos) {
- return Status::InvalidArgument("FileSystemImpl::GetListing: argument 'stat_infos' cannot be NULL");
- }
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::GetListing with promise to make it a blocking call.
- *
- Keep requesting more until we get the entire listing, and don't set the promise
- * until we have the entire listing.
- */
- auto h = [callstate, stat_infos](const Status &s, const std::vector<StatInfo> & si, bool has_more) -> bool {
- if (!si.empty()) {
- stat_infos->insert(stat_infos->end(), si.begin(), si.end());
- }
-
- bool done = !s.ok() || !has_more;
- if (done) {
- callstate->set_value(s);
- return false;
- }
- return true;
- };
-
- GetListing(path, h);
-
- /* block until promise is set */
- Status stat = future.get();
-
- return stat;
-}
-
-Status FileSystemImpl::Mkdirs(const std::string & path, uint16_t permissions, bool createparent) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]Mkdirs(" << FMT_THIS_ADDR << ", path=" << path <<
- ", permissions=" << permissions << ", createparent=" << createparent << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::Mkdirs with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- Mkdirs(path, permissions, createparent, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::Delete(const std::string &path, bool recursive) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]Delete(" << FMT_THIS_ADDR << ", path=" << path << ", recursive=" << recursive << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::Delete with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- Delete(path, recursive, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::Rename(const std::string &oldPath, const std::string &newPath) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]Rename(" << FMT_THIS_ADDR << ", oldPath=" << oldPath << ", newPath=" << newPath << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::Rename with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- Rename(oldPath, newPath, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::SetPermission(const std::string & path, uint16_t permissions) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]SetPermission(" << FMT_THIS_ADDR << ", path=" << path << ", permissions=" << permissions << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::SetPermission with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- SetPermission(path, permissions, h);
-
- /* block until promise is set */
- Status stat = future.get();
-
- return stat;
-}
-
-Status FileSystemImpl::SetOwner(const std::string & path, const std::string & username,
- const std::string & groupname) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]SetOwner(" << FMT_THIS_ADDR << ", path=" << path << ", username=" << username << ", groupname=" << groupname << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::SetOwner with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- SetOwner(path, username, groupname, h);
-
- /* block until promise is set */
- Status stat = future.get();
- return stat;
-}
-
-Status FileSystemImpl::Find(const std::string &path, const std::string &name, const uint32_t maxdepth, std::vector<StatInfo> * stat_infos) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::[sync]Find("
- << FMT_THIS_ADDR << ", path="
- << path << ", name="
- << name << ") called");
-
- if (!stat_infos) {
- return Status::InvalidArgument("FileSystemImpl::Find: argument 'stat_infos' cannot be NULL");
- }
-
- // In this case, we're going to have the async code populate stat_infos.
-
- std::promise<void> promise = std::promise<void>();
- std::future<void> future(promise.get_future());
- Status status = Status::OK();
-
- /**
- * Keep requesting more until we get the entire listing. Set the promise
- * when we have the entire listing to stop.
- *
- * Find guarantees that the handler will only be called once at a time,
- * so we do not need any locking here
- */
- auto h = [&status, &promise, stat_infos](const Status &s, const std::vector<StatInfo> & si, bool has_more_results) -> bool {
- if (!si.empty()) {
- stat_infos->insert(stat_infos->end(), si.begin(), si.end());
- }
- if (!s.ok() && status.ok()){
- //We make sure we set 'status' only on the first error.
- status = s;
- }
- if (!has_more_results) {
- promise.set_value();
- return false;
- }
- return true;
- };
-
- Find(path, name, maxdepth, h);
-
- /* block until promise is set */
- future.get();
- return status;
-}
-
-Status FileSystemImpl::CreateSnapshot(const std::string &path,
- const std::string &name) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]CreateSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ", name=" << name << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::CreateSnapshot with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- CreateSnapshot(path, name, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::DeleteSnapshot(const std::string &path,
- const std::string &name) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]DeleteSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ", name=" << name << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::DeleteSnapshot with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- DeleteSnapshot(path, name, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::RenameSnapshot(const std::string &path,
- const std::string &old_name, const std::string &new_name) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]RenameSnapshot(" << FMT_THIS_ADDR << ", path=" << path <<
- ", old_name=" << old_name << ", new_name=" << new_name << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::RenameSnapshot with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- RenameSnapshot(path, old_name, new_name, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::AllowSnapshot(const std::string &path) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]AllowSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::AllowSnapshot with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- AllowSnapshot(path, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-Status FileSystemImpl::DisallowSnapshot(const std::string &path) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::[sync]DisallowSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- auto callstate = std::make_shared<std::promise<Status>>();
- std::future<Status> future(callstate->get_future());
-
- /* wrap async FileSystem::DisallowSnapshot with promise to make it a blocking call */
- auto h = [callstate](const Status &s) {
- callstate->set_value(s);
- };
-
- DisallowSnapshot(path, h);
-
- /* block until promise is set */
- auto returnstate = future.get();
- Status stat = returnstate;
-
- return stat;
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.cc
deleted file mode 100644
index e46faad..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.cc
+++ /dev/null
@@ -1,727 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "filesystem.h"
-#include "common/continuation/asio.h"
-
-#include <asio/ip/tcp.hpp>
-
-#include <functional>
-#include <limits>
-#include <future>
-#include <tuple>
-#include <iostream>
-#include <pwd.h>
-#include <utility>
-
-#define FMT_THIS_ADDR "this=" << (void*)this
-
-using ::asio::ip::tcp;
-
-namespace hdfs {
-
-/*****************************************************************************
- * NAMENODE OPERATIONS
- ****************************************************************************/
-
-void NameNodeOperations::Connect(const std::string &cluster_name,
- const std::vector<ResolvedNamenodeInfo> &servers,
- std::function<void(const Status &)> &&handler) {
- engine_->Connect(cluster_name, servers, handler);
-}
-
-bool NameNodeOperations::CancelPendingConnect() {
- return engine_->CancelPendingConnect();
-}
-
-void NameNodeOperations::GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- std::function<void(const Status &, std::shared_ptr<const struct FileInfo>)> handler)
-{
- using ::hadoop::hdfs::GetBlockLocationsRequestProto;
- using ::hadoop::hdfs::GetBlockLocationsResponseProto;
-
- LOG_TRACE(kFileSystem, << "NameNodeOperations::GetBlockLocations("
- << FMT_THIS_ADDR << ", path=" << path << ", ...) called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("GetBlockLocations: argument 'path' cannot be empty"), nullptr);
- return;
- }
-
- //Protobuf gives an error 'Negative value is not supported'
- //if the high bit is set in uint64 in GetBlockLocations
- if (IsHighBitSet(offset)) {
- handler(Status::InvalidArgument("GetBlockLocations: argument 'offset' cannot have high bit set"), nullptr);
- return;
- }
- if (IsHighBitSet(length)) {
- handler(Status::InvalidArgument("GetBlockLocations: argument 'length' cannot have high bit set"), nullptr);
- return;
- }
-
- GetBlockLocationsRequestProto req;
- req.set_src(path);
- req.set_offset(offset);
- req.set_length(length);
-
- auto resp = std::make_shared<GetBlockLocationsResponseProto>();
-
- namenode_.GetBlockLocations(&req, resp, [resp, handler](const Status &stat) {
- if (stat.ok()) {
- auto file_info = std::make_shared<struct FileInfo>();
- auto locations = resp->locations();
-
- file_info->file_length_ = locations.filelength();
- file_info->last_block_complete_ = locations.islastblockcomplete();
- file_info->under_construction_ = locations.underconstruction();
-
- for (const auto &block : locations.blocks()) {
- file_info->blocks_.push_back(block);
- }
-
- if (!locations.islastblockcomplete() &&
- locations.has_lastblock() && locations.lastblock().b().numbytes()) {
- file_info->blocks_.push_back(locations.lastblock());
- file_info->file_length_ += locations.lastblock().b().numbytes();
- }
-
- handler(stat, file_info);
- } else {
- handler(stat, nullptr);
- }
- });
-}
-
-void NameNodeOperations::GetPreferredBlockSize(const std::string & path,
- std::function<void(const Status &, const uint64_t)> handler)
-{
- using ::hadoop::hdfs::GetPreferredBlockSizeRequestProto;
- using ::hadoop::hdfs::GetPreferredBlockSizeResponseProto;
-
- LOG_TRACE(kFileSystem, << "NameNodeOperations::GetPreferredBlockSize("
- << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("GetPreferredBlockSize: argument 'path' cannot be empty"), -1);
- return;
- }
-
- GetPreferredBlockSizeRequestProto req;
- req.set_filename(path);
-
- auto resp = std::make_shared<GetPreferredBlockSizeResponseProto>();
-
- namenode_.GetPreferredBlockSize(&req, resp, [resp, handler, path](const Status &stat) {
- if (stat.ok() && resp -> has_bsize()) {
- uint64_t block_size = resp -> bsize();
- handler(stat, block_size);
- } else {
- handler(stat, -1);
- }
- });
-}
-
-void NameNodeOperations::SetReplication(const std::string & path, int16_t replication,
- std::function<void(const Status &)> handler)
-{
- using ::hadoop::hdfs::SetReplicationRequestProto;
- using ::hadoop::hdfs::SetReplicationResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::SetReplication(" << FMT_THIS_ADDR << ", path=" << path <<
- ", replication=" << replication << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetReplication: argument 'path' cannot be empty"));
- return;
- }
- Status replStatus = FileSystemImpl::CheckValidReplication(replication);
- if (!replStatus.ok()) {
- handler(replStatus);
- return;
- }
- SetReplicationRequestProto req;
- req.set_src(path);
- req.set_replication(replication);
-
- auto resp = std::make_shared<SetReplicationResponseProto>();
-
- namenode_.SetReplication(&req, resp, [resp, handler, path](const Status &stat) {
- if (stat.ok()) {
- // Checking resp
- if(resp -> has_result() && resp ->result() == 1) {
- handler(stat);
- } else {
- //NameNode does not specify why there is no result, in my testing it was happening when the path is not found
- std::string errormsg = "No such file or directory: " + path;
- Status statNew = Status::PathNotFound(errormsg.c_str());
- handler(statNew);
- }
- } else {
- handler(stat);
- }
- });
-}
-
-void NameNodeOperations::SetTimes(const std::string & path, uint64_t mtime, uint64_t atime,
- std::function<void(const Status &)> handler)
-{
- using ::hadoop::hdfs::SetTimesRequestProto;
- using ::hadoop::hdfs::SetTimesResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::SetTimes(" << FMT_THIS_ADDR << ", path=" << path <<
- ", mtime=" << mtime << ", atime=" << atime << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetTimes: argument 'path' cannot be empty"));
- return;
- }
-
- SetTimesRequestProto req;
- req.set_src(path);
- req.set_mtime(mtime);
- req.set_atime(atime);
-
- auto resp = std::make_shared<SetTimesResponseProto>();
-
- namenode_.SetTimes(&req, resp, [resp, handler, path](const Status &stat) {
- handler(stat);
- });
-}
-
-
-
-void NameNodeOperations::GetFileInfo(const std::string & path,
- std::function<void(const Status &, const StatInfo &)> handler)
-{
- using ::hadoop::hdfs::GetFileInfoRequestProto;
- using ::hadoop::hdfs::GetFileInfoResponseProto;
-
- LOG_TRACE(kFileSystem, << "NameNodeOperations::GetFileInfo("
- << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("GetFileInfo: argument 'path' cannot be empty"), StatInfo());
- return;
- }
-
- GetFileInfoRequestProto req;
- req.set_src(path);
-
- auto resp = std::make_shared<GetFileInfoResponseProto>();
-
- namenode_.GetFileInfo(&req, resp, [resp, handler, path](const Status &stat) {
- if (stat.ok()) {
- // For non-existant files, the server will respond with an OK message but
- // no fs in the protobuf.
- if(resp -> has_fs()){
- struct StatInfo stat_info;
- stat_info.path = path;
- stat_info.full_path = path;
- HdfsFileStatusProtoToStatInfo(stat_info, resp->fs());
- handler(stat, stat_info);
- } else {
- std::string errormsg = "No such file or directory: " + path;
- Status statNew = Status::PathNotFound(errormsg.c_str());
- handler(statNew, StatInfo());
- }
- } else {
- handler(stat, StatInfo());
- }
- });
-}
-
-void NameNodeOperations::GetContentSummary(const std::string & path,
- std::function<void(const Status &, const ContentSummary &)> handler)
-{
- using ::hadoop::hdfs::GetContentSummaryRequestProto;
- using ::hadoop::hdfs::GetContentSummaryResponseProto;
-
- LOG_TRACE(kFileSystem, << "NameNodeOperations::GetContentSummary("
- << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("GetContentSummary: argument 'path' cannot be empty"), ContentSummary());
- return;
- }
-
- GetContentSummaryRequestProto req;
- req.set_path(path);
-
- auto resp = std::make_shared<GetContentSummaryResponseProto>();
-
- namenode_.GetContentSummary(&req, resp, [resp, handler, path](const Status &stat) {
- if (stat.ok()) {
- // For non-existant files, the server will respond with an OK message but
- // no summary in the protobuf.
- if(resp -> has_summary()){
- struct ContentSummary content_summary;
- content_summary.path = path;
- ContentSummaryProtoToContentSummary(content_summary, resp->summary());
- handler(stat, content_summary);
- } else {
- std::string errormsg = "No such file or directory: " + path;
- Status statNew = Status::PathNotFound(errormsg.c_str());
- handler(statNew, ContentSummary());
- }
- } else {
- handler(stat, ContentSummary());
- }
- });
-}
-
-void NameNodeOperations::GetFsStats(
- std::function<void(const Status &, const FsInfo &)> handler) {
- using ::hadoop::hdfs::GetFsStatusRequestProto;
- using ::hadoop::hdfs::GetFsStatsResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::GetFsStats(" << FMT_THIS_ADDR << ") called");
-
- GetFsStatusRequestProto req;
- auto resp = std::make_shared<GetFsStatsResponseProto>();
-
- namenode_.GetFsStats(&req, resp, [resp, handler](const Status &stat) {
- if (stat.ok()) {
- struct FsInfo fs_info;
- GetFsStatsResponseProtoToFsInfo(fs_info, resp);
- handler(stat, fs_info);
- } else {
- handler(stat, FsInfo());
- }
- });
-}
-
-void NameNodeOperations::GetListing(
- const std::string & path,
- std::function<void(const Status &, const std::vector<StatInfo> &, bool)> handler,
- const std::string & start_after) {
- using ::hadoop::hdfs::GetListingRequestProto;
- using ::hadoop::hdfs::GetListingResponseProto;
-
- LOG_TRACE(
- kFileSystem,
- << "NameNodeOperations::GetListing(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- std::vector<StatInfo> empty;
- handler(Status::InvalidArgument("GetListing: argument 'path' cannot be empty"), empty, false);
- return;
- }
-
- GetListingRequestProto req;
- req.set_src(path);
- req.set_startafter(start_after.c_str());
- req.set_needlocation(false);
-
- auto resp = std::make_shared<GetListingResponseProto>();
-
- namenode_.GetListing(&req, resp, [resp, handler, path](const Status &stat) {
- std::vector<StatInfo> stat_infos;
- if (stat.ok()) {
- if(resp -> has_dirlist()){
- for (::hadoop::hdfs::HdfsFileStatusProto const& fs : resp->dirlist().partiallisting()) {
- StatInfo si;
- si.path = fs.path();
- si.full_path = path + fs.path();
- if(si.full_path.back() != '/'){
- si.full_path += "/";
- }
- HdfsFileStatusProtoToStatInfo(si, fs);
- stat_infos.push_back(si);
- }
- handler(stat, stat_infos, resp->dirlist().remainingentries() > 0);
- } else {
- std::string errormsg = "No such file or directory: " + path;
- handler(Status::PathNotFound(errormsg.c_str()), stat_infos, false);
- }
- } else {
- handler(stat, stat_infos, false);
- }
- });
-}
-
-void NameNodeOperations::Mkdirs(const std::string & path, uint16_t permissions, bool createparent,
- std::function<void(const Status &)> handler)
-{
- using ::hadoop::hdfs::MkdirsRequestProto;
- using ::hadoop::hdfs::MkdirsResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::Mkdirs(" << FMT_THIS_ADDR << ", path=" << path <<
- ", permissions=" << permissions << ", createparent=" << createparent << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("Mkdirs: argument 'path' cannot be empty"));
- return;
- }
-
- MkdirsRequestProto req;
- Status permStatus = FileSystemImpl::CheckValidPermissionMask(permissions);
- if (!permStatus.ok()) {
- handler(permStatus);
- return;
- }
- req.set_src(path);
- hadoop::hdfs::FsPermissionProto *perm = req.mutable_masked();
- perm->set_perm(permissions);
- req.set_createparent(createparent);
-
- auto resp = std::make_shared<MkdirsResponseProto>();
-
- namenode_.Mkdirs(&req, resp, [resp, handler, path](const Status &stat) {
- if (stat.ok()) {
- // Checking resp
- if(resp -> has_result() && resp ->result() == 1) {
- handler(stat);
- } else {
- //NameNode does not specify why there is no result, in my testing it was happening when the path is not found
- std::string errormsg = "No such file or directory: " + path;
- Status statNew = Status::PathNotFound(errormsg.c_str());
- handler(statNew);
- }
- } else {
- handler(stat);
- }
- });
-}
-
-void NameNodeOperations::Delete(const std::string & path, bool recursive, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::DeleteRequestProto;
- using ::hadoop::hdfs::DeleteResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::Delete(" << FMT_THIS_ADDR << ", path=" << path << ", recursive=" << recursive << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("Delete: argument 'path' cannot be empty"));
- return;
- }
-
- DeleteRequestProto req;
- req.set_src(path);
- req.set_recursive(recursive);
-
- auto resp = std::make_shared<DeleteResponseProto>();
-
- namenode_.Delete(&req, resp, [resp, handler, path](const Status &stat) {
- if (stat.ok()) {
- // Checking resp
- if(resp -> has_result() && resp ->result() == 1) {
- handler(stat);
- } else {
- //NameNode does not specify why there is no result, in my testing it was happening when the path is not found
- std::string errormsg = "No such file or directory: " + path;
- Status statNew = Status::PathNotFound(errormsg.c_str());
- handler(statNew);
- }
- } else {
- handler(stat);
- }
- });
-}
-
-void NameNodeOperations::Rename(const std::string & oldPath, const std::string & newPath, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::RenameRequestProto;
- using ::hadoop::hdfs::RenameResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::Rename(" << FMT_THIS_ADDR << ", oldPath=" << oldPath << ", newPath=" << newPath << ") called");
-
- if (oldPath.empty()) {
- handler(Status::InvalidArgument("Rename: argument 'oldPath' cannot be empty"));
- return;
- }
-
- if (newPath.empty()) {
- handler(Status::InvalidArgument("Rename: argument 'newPath' cannot be empty"));
- return;
- }
-
- RenameRequestProto req;
- req.set_src(oldPath);
- req.set_dst(newPath);
-
- auto resp = std::make_shared<RenameResponseProto>();
-
- namenode_.Rename(&req, resp, [resp, handler](const Status &stat) {
- if (stat.ok()) {
- // Checking resp
- if(resp -> has_result() && resp ->result() == 1) {
- handler(stat);
- } else {
- //Since NameNode does not specify why the result is not success, we set the general error
- std::string errormsg = "oldPath and parent directory of newPath must exist. newPath must not exist.";
- Status statNew = Status::InvalidArgument(errormsg.c_str());
- handler(statNew);
- }
- } else {
- handler(stat);
- }
- });
-}
-
-void NameNodeOperations::SetPermission(const std::string & path,
- uint16_t permissions, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::SetPermissionRequestProto;
- using ::hadoop::hdfs::SetPermissionResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::SetPermission(" << FMT_THIS_ADDR << ", path=" << path << ", permissions=" << permissions << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetPermission: argument 'path' cannot be empty"));
- return;
- }
- Status permStatus = FileSystemImpl::CheckValidPermissionMask(permissions);
- if (!permStatus.ok()) {
- handler(permStatus);
- return;
- }
-
- SetPermissionRequestProto req;
- req.set_src(path);
-
- hadoop::hdfs::FsPermissionProto *perm = req.mutable_permission();
- perm->set_perm(permissions);
-
- auto resp = std::make_shared<SetPermissionResponseProto>();
-
- namenode_.SetPermission(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::SetOwner(const std::string & path,
- const std::string & username, const std::string & groupname, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::SetOwnerRequestProto;
- using ::hadoop::hdfs::SetOwnerResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::SetOwner(" << FMT_THIS_ADDR << ", path=" << path << ", username=" << username << ", groupname=" << groupname << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetOwner: argument 'path' cannot be empty"));
- return;
- }
-
- SetOwnerRequestProto req;
- req.set_src(path);
-
- if(!username.empty()) {
- req.set_username(username);
- }
- if(!groupname.empty()) {
- req.set_groupname(groupname);
- }
-
- auto resp = std::make_shared<SetOwnerResponseProto>();
-
- namenode_.SetOwner(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::CreateSnapshot(const std::string & path,
- const std::string & name, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::CreateSnapshotRequestProto;
- using ::hadoop::hdfs::CreateSnapshotResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::CreateSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ", name=" << name << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("CreateSnapshot: argument 'path' cannot be empty"));
- return;
- }
-
- CreateSnapshotRequestProto req;
- req.set_snapshotroot(path);
- if (!name.empty()) {
- req.set_snapshotname(name);
- }
-
- auto resp = std::make_shared<CreateSnapshotResponseProto>();
-
- namenode_.CreateSnapshot(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::DeleteSnapshot(const std::string & path,
- const std::string & name, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::DeleteSnapshotRequestProto;
- using ::hadoop::hdfs::DeleteSnapshotResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::DeleteSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ", name=" << name << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("DeleteSnapshot: argument 'path' cannot be empty"));
- return;
- }
- if (name.empty()) {
- handler(Status::InvalidArgument("DeleteSnapshot: argument 'name' cannot be empty"));
- return;
- }
-
- DeleteSnapshotRequestProto req;
- req.set_snapshotroot(path);
- req.set_snapshotname(name);
-
- auto resp = std::make_shared<DeleteSnapshotResponseProto>();
-
- namenode_.DeleteSnapshot(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::RenameSnapshot(const std::string & path, const std::string & old_name,
- const std::string & new_name, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::RenameSnapshotRequestProto;
- using ::hadoop::hdfs::RenameSnapshotResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::RenameSnapshot(" << FMT_THIS_ADDR << ", path=" << path <<
- ", old_name=" << old_name << ", new_name=" << new_name << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("RenameSnapshot: argument 'path' cannot be empty"));
- return;
- }
- if (old_name.empty()) {
- handler(Status::InvalidArgument("RenameSnapshot: argument 'old_name' cannot be empty"));
- return;
- }
- if (new_name.empty()) {
- handler(Status::InvalidArgument("RenameSnapshot: argument 'new_name' cannot be empty"));
- return;
- }
-
- RenameSnapshotRequestProto req;
- req.set_snapshotroot(path);
- req.set_snapshotoldname(old_name);
- req.set_snapshotnewname(new_name);
-
- auto resp = std::make_shared<RenameSnapshotResponseProto>();
-
- namenode_.RenameSnapshot(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::AllowSnapshot(const std::string & path, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::AllowSnapshotRequestProto;
- using ::hadoop::hdfs::AllowSnapshotResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::AllowSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("AllowSnapshot: argument 'path' cannot be empty"));
- return;
- }
-
- AllowSnapshotRequestProto req;
- req.set_snapshotroot(path);
-
- auto resp = std::make_shared<AllowSnapshotResponseProto>();
-
- namenode_.AllowSnapshot(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::DisallowSnapshot(const std::string & path, std::function<void(const Status &)> handler) {
- using ::hadoop::hdfs::DisallowSnapshotRequestProto;
- using ::hadoop::hdfs::DisallowSnapshotResponseProto;
-
- LOG_TRACE(kFileSystem,
- << "NameNodeOperations::DisallowSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("DisallowSnapshot: argument 'path' cannot be empty"));
- return;
- }
-
- DisallowSnapshotRequestProto req;
- req.set_snapshotroot(path);
-
- auto resp = std::make_shared<DisallowSnapshotResponseProto>();
-
- namenode_.DisallowSnapshot(&req, resp,
- [handler](const Status &stat) {
- handler(stat);
- });
-}
-
-void NameNodeOperations::SetFsEventCallback(fs_event_callback callback) {
- engine_->SetFsEventCallback(callback);
-}
-
-void NameNodeOperations::HdfsFileStatusProtoToStatInfo(
- hdfs::StatInfo & stat_info,
- const ::hadoop::hdfs::HdfsFileStatusProto & fs) {
- stat_info.file_type = fs.filetype();
- stat_info.length = fs.length();
- stat_info.permissions = fs.permission().perm();
- stat_info.owner = fs.owner();
- stat_info.group = fs.group();
- stat_info.modification_time = fs.modification_time();
- stat_info.access_time = fs.access_time();
- stat_info.symlink = fs.symlink();
- stat_info.block_replication = fs.block_replication();
- stat_info.blocksize = fs.blocksize();
- stat_info.fileid = fs.fileid();
- stat_info.children_num = fs.childrennum();
-}
-
-void NameNodeOperations::ContentSummaryProtoToContentSummary(
- hdfs::ContentSummary & content_summary,
- const ::hadoop::hdfs::ContentSummaryProto & csp) {
- content_summary.length = csp.length();
- content_summary.filecount = csp.filecount();
- content_summary.directorycount = csp.directorycount();
- content_summary.quota = csp.quota();
- content_summary.spaceconsumed = csp.spaceconsumed();
- content_summary.spacequota = csp.spacequota();
-}
-
-void NameNodeOperations::GetFsStatsResponseProtoToFsInfo(
- hdfs::FsInfo & fs_info,
- const std::shared_ptr<::hadoop::hdfs::GetFsStatsResponseProto> & fs) {
- fs_info.capacity = fs->capacity();
- fs_info.used = fs->used();
- fs_info.remaining = fs->remaining();
- fs_info.under_replicated = fs->under_replicated();
- fs_info.corrupt_blocks = fs->corrupt_blocks();
- fs_info.missing_blocks = fs->missing_blocks();
- fs_info.missing_repl_one_blocks = fs->missing_repl_one_blocks();
- if(fs->has_blocks_in_future()){
- fs_info.blocks_in_future = fs->blocks_in_future();
- }
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.h
deleted file mode 100644
index f4caa18..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/namenode_operations.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_LIB_FS_NAMENODEOPERATIONS_H_
-#define LIBHDFSPP_LIB_FS_NAMENODEOPERATIONS_H_
-
-#include "rpc/rpc_engine.h"
-#include "hdfspp/statinfo.h"
-#include "hdfspp/fsinfo.h"
-#include "hdfspp/content_summary.h"
-#include "common/namenode_info.h"
-#include "ClientNamenodeProtocol.pb.h"
-#include "ClientNamenodeProtocol.hrpc.inl"
-
-
-namespace hdfs {
-
-/**
-* NameNodeConnection: abstracts the details of communicating with a NameNode
-* and the implementation of the communications protocol.
-*
-* Will eventually handle retry and failover.
-*
-* Threading model: thread-safe; all operations can be called concurrently
-* Lifetime: owned by a FileSystemImpl
-*/
-
-class NameNodeOperations {
-public:
- MEMCHECKED_CLASS(NameNodeOperations)
- NameNodeOperations(::asio::io_service *io_service, const Options &options,
- const std::string &client_name, const std::string &user_name,
- const char *protocol_name, int protocol_version) :
- io_service_(io_service),
- engine_(std::make_shared<RpcEngine>(io_service, options, client_name, user_name, protocol_name, protocol_version)),
- namenode_(engine_), options_(options) {}
-
-
- void Connect(const std::string &cluster_name,
- const std::vector<ResolvedNamenodeInfo> &servers,
- std::function<void(const Status &)> &&handler);
-
- bool CancelPendingConnect();
-
- void GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- std::function<void(const Status &, std::shared_ptr<const struct FileInfo>)> handler);
-
- void GetPreferredBlockSize(const std::string & path,
- std::function<void(const Status &, const uint64_t)> handler);
-
- void SetReplication(const std::string & path, int16_t replication,
- std::function<void(const Status &)> handler);
-
- void SetTimes(const std::string & path, uint64_t mtime, uint64_t atime,
- std::function<void(const Status &)> handler);
-
- void GetFileInfo(const std::string & path,
- std::function<void(const Status &, const StatInfo &)> handler);
-
- void GetContentSummary(const std::string & path,
- std::function<void(const Status &, const ContentSummary &)> handler);
-
- void GetFsStats(std::function<void(const Status &, const FsInfo &)> handler);
-
- // start_after="" for initial call
- void GetListing(const std::string & path,
- std::function<void(const Status &, const std::vector<StatInfo> &, bool)> handler,
- const std::string & start_after = "");
-
- void Mkdirs(const std::string & path, uint16_t permissions, bool createparent,
- std::function<void(const Status &)> handler);
-
- void Delete(const std::string & path, bool recursive,
- std::function<void(const Status &)> handler);
-
- void Rename(const std::string & oldPath, const std::string & newPath,
- std::function<void(const Status &)> handler);
-
- void SetPermission(const std::string & path, uint16_t permissions,
- std::function<void(const Status &)> handler);
-
- void SetOwner(const std::string & path, const std::string & username,
- const std::string & groupname, std::function<void(const Status &)> handler);
-
- void CreateSnapshot(const std::string & path, const std::string & name,
- std::function<void(const Status &)> handler);
-
- void DeleteSnapshot(const std::string & path, const std::string & name,
- std::function<void(const Status &)> handler);
-
- void RenameSnapshot(const std::string & path, const std::string & old_name, const std::string & new_name,
- std::function<void(const Status &)> handler);
-
- void AllowSnapshot(const std::string & path,
- std::function<void(const Status &)> handler);
-
- void DisallowSnapshot(const std::string & path,
- std::function<void(const Status &)> handler);
-
- void SetFsEventCallback(fs_event_callback callback);
-
-private:
- static void HdfsFileStatusProtoToStatInfo(hdfs::StatInfo & si, const ::hadoop::hdfs::HdfsFileStatusProto & fs);
- static void ContentSummaryProtoToContentSummary(hdfs::ContentSummary & content_summary, const ::hadoop::hdfs::ContentSummaryProto & csp);
- static void DirectoryListingProtoToStatInfo(std::shared_ptr<std::vector<StatInfo>> stat_infos, const ::hadoop::hdfs::DirectoryListingProto & dl);
- static void GetFsStatsResponseProtoToFsInfo(hdfs::FsInfo & fs_info, const std::shared_ptr<::hadoop::hdfs::GetFsStatsResponseProto> & fs);
-
- ::asio::io_service * io_service_;
-
- // This is the only permanent owner of the RpcEngine, however the RPC layer
- // needs to reference count it prevent races during FileSystem destruction.
- // In order to do this they hold weak_ptrs and promote them to shared_ptr
- // when calling non-blocking RpcEngine methods e.g. get_client_id().
- std::shared_ptr<RpcEngine> engine_;
-
- // Automatically generated methods for RPC calls. See protoc_gen_hrpc.cc
- ClientNamenodeProtocol namenode_;
- const Options options_;
-};
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/CMakeLists.txt
deleted file mode 100644
index 2eff301..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/CMakeLists.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-set(PROTOBUF_IMPORT_DIRS ${PROTO_HDFS_DIR} ${PROTO_HADOOP_DIR})
-
-protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS
- ${PROTO_HDFS_DIR}/datatransfer.proto
- ${PROTO_HDFS_DIR}/ClientDatanodeProtocol.proto
- ${PROTO_HDFS_DIR}/ClientNamenodeProtocol.proto
- ${PROTO_HDFS_DIR}/acl.proto
- ${PROTO_HDFS_DIR}/datatransfer.proto
- ${PROTO_HDFS_DIR}/encryption.proto
- ${PROTO_HDFS_DIR}/erasurecoding.proto
- ${PROTO_HDFS_DIR}/hdfs.proto
- ${PROTO_HDFS_DIR}/inotify.proto
- ${PROTO_HDFS_DIR}/xattr.proto
- ${PROTO_HDFS_DIR}/ReconfigurationProtocol.proto
- ${PROTO_HADOOP_DIR}/IpcConnectionContext.proto
- ${PROTO_HADOOP_DIR}/ProtobufRpcEngine.proto
- ${PROTO_HADOOP_DIR}/RpcHeader.proto
- ${PROTO_HADOOP_DIR}/Security.proto
-)
-
-add_executable(protoc-gen-hrpc protoc_gen_hrpc.cc)
-target_link_libraries(protoc-gen-hrpc ${PROTOBUF_PROTOC_LIBRARY} ${PROTOBUF_LIBRARY})
-
-function(GEN_HRPC SRCS)
- if(NOT ARGN)
- message(SEND_ERROR "Error: GEN_HRPC() called without any proto files")
- return()
- endif()
-
- if(DEFINED PROTOBUF_IMPORT_DIRS)
- foreach(DIR ${PROTOBUF_IMPORT_DIRS})
- get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
- list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
- if(${_contains_already} EQUAL -1)
- list(APPEND _protobuf_include_path -I ${ABS_PATH})
- endif()
- endforeach()
- endif()
-
- set(${SRCS})
-
- foreach(FIL ${ARGN})
- get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
- get_filename_component(FIL_WE ${FIL} NAME_WE)
-
- list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.hrpc.inl")
-
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.hrpc.inl"
- COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
- ARGS --plugin=protoc-gen-hrpc=${CMAKE_CURRENT_BINARY_DIR}/protoc-gen-hrpc --hrpc_out=${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL}
- DEPENDS ${ABS_FIL} ${PROTOBUF_PROTOC_EXECUTABLE} protoc-gen-hrpc
- COMMENT "Running HRPC protocol buffer compiler on ${FIL}"
- VERBATIM )
- endforeach()
-
- set_source_files_properties(${${SRCS}} PROPERTIES GENERATED TRUE)
- set(${SRCS} ${${SRCS}} PARENT_SCOPE)
-endfunction()
-
-gen_hrpc(HRPC_SRCS
- ${PROTO_HDFS_DIR}/ClientNamenodeProtocol.proto
-)
-
-add_library(proto_obj OBJECT ${PROTO_SRCS} ${PROTO_HDRS} ${HRPC_SRCS})
-if(HADOOP_BUILD)
- add_dependencies(proto_obj copy_hadoop_files)
-endif(HADOOP_BUILD)
-add_library(proto $<TARGET_OBJECTS:proto_obj>)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/protoc_gen_hrpc.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/protoc_gen_hrpc.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/protoc_gen_hrpc.cc
deleted file mode 100644
index e7355c0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/proto/protoc_gen_hrpc.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "protobuf/cpp_helpers.h"
-
-#include <google/protobuf/compiler/code_generator.h>
-#include <google/protobuf/compiler/plugin.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-#include <google/protobuf/stubs/common.h>
-
-#include <memory>
-
-using ::google::protobuf::FileDescriptor;
-using ::google::protobuf::MethodDescriptor;
-using ::google::protobuf::ServiceDescriptor;
-using ::google::protobuf::compiler::CodeGenerator;
-using ::google::protobuf::compiler::GeneratorContext;
-using ::google::protobuf::io::Printer;
-using ::google::protobuf::io::ZeroCopyOutputStream;
-
-class StubGenerator : public CodeGenerator {
-public:
- virtual bool Generate(const FileDescriptor *file, const std::string &,
- GeneratorContext *ctx,
- std::string *error) const override;
-
-private:
- void EmitService(const ServiceDescriptor *service, Printer *out) const;
- void EmitMethod(const MethodDescriptor *method, Printer *out) const;
-};
-
-bool StubGenerator::Generate(const FileDescriptor *file, const std::string &,
- GeneratorContext *ctx, std::string *) const {
- namespace pb = ::google::protobuf;
- std::unique_ptr<ZeroCopyOutputStream> os(
- ctx->Open(StripProto(file->name()) + ".hrpc.inl"));
- Printer out(os.get(), '$');
- for (int i = 0; i < file->service_count(); ++i) {
- const ServiceDescriptor *service = file->service(i);
- EmitService(service, &out);
- }
- return true;
-}
-
-void StubGenerator::EmitService(const ServiceDescriptor *service,
- Printer *out) const {
- out->Print("\n// GENERATED AUTOMATICALLY. DO NOT MODIFY.\n"
- "class $service$ {\n"
- "private:\n"
- " std::shared_ptr<::hdfs::RpcEngine> engine_;\n"
- "public:\n"
- " typedef std::function<void(const ::hdfs::Status &)> Callback;\n"
- " typedef ::google::protobuf::MessageLite Message;\n"
- " inline $service$(std::shared_ptr<::hdfs::RpcEngine> engine)\n"
- " : engine_(engine) {}\n",
- "service", service->name());
- for (int i = 0; i < service->method_count(); ++i) {
- const MethodDescriptor *method = service->method(i);
- EmitMethod(method, out);
- }
- out->Print("};\n");
-}
-
-void StubGenerator::EmitMethod(const MethodDescriptor *method,
- Printer *out) const {
- out->Print(
- "\n inline void $camel_method$(const Message *req, "
- "const std::shared_ptr<Message> &resp, "
- "const Callback &handler) {\n"
- " engine_->AsyncRpc(\"$method$\", req, resp, handler);\n"
- " }\n",
- "camel_method", ToCamelCase(method->name()), "method", method->name());
-}
-
-int main(int argc, char *argv[]) {
- StubGenerator generator;
- return google::protobuf::compiler::PluginMain(argc, argv, &generator);
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/CMakeLists.txt
deleted file mode 100644
index 2bcfd92..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(reader_obj OBJECT block_reader.cc datatransfer.cc readergroup.cc)
-add_dependencies(reader_obj proto)
-add_library(reader $<TARGET_OBJECTS:reader_obj>)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.cc
deleted file mode 100644
index ca7715d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.cc
+++ /dev/null
@@ -1,571 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "reader/block_reader.h"
-#include "reader/datatransfer.h"
-#include "common/continuation/continuation.h"
-#include "common/continuation/asio.h"
-#include "common/logging.h"
-#include "common/util.h"
-
-#include <future>
-
-namespace hdfs {
-
-#define FMT_CONT_AND_PARENT_ADDR "this=" << (void*)this << ", parent=" << (void*)parent_
-#define FMT_CONT_AND_READER_ADDR "this=" << (void*)this << ", reader=" << (void*)reader_
-#define FMT_THIS_ADDR "this=" << (void*)this
-
-
-// Stuff an OpReadBlockProto message with required fields.
-hadoop::hdfs::OpReadBlockProto ReadBlockProto(const std::string &client_name,
- bool verify_checksum, const hadoop::common::TokenProto *token,
- const hadoop::hdfs::ExtendedBlockProto *block, uint64_t length, uint64_t offset)
-{
- using namespace hadoop::hdfs;
- using namespace hadoop::common;
- BaseHeaderProto *base_h = new BaseHeaderProto();
- base_h->set_allocated_block(new ExtendedBlockProto(*block));
- if (token) {
- base_h->set_allocated_token(new TokenProto(*token));
- }
- ClientOperationHeaderProto *h = new ClientOperationHeaderProto();
- h->set_clientname(client_name);
- h->set_allocated_baseheader(base_h);
-
- OpReadBlockProto p;
- p.set_allocated_header(h);
- p.set_offset(offset);
- p.set_len(length);
- p.set_sendchecksums(verify_checksum);
- // TODO: p.set_allocated_cachingstrategy();
- return p;
-}
-
-//
-// Notes about the BlockReader and associated object lifecycles (9/29/16)
-// -We have a several stages in the read pipeline. Each stage represents a logical
-// step in the HDFS block transfer logic. They are implemented as continuations
-// for now, and in some cases the stage may have a nested continuation as well.
-// It's important to make sure that continuations, nested or otherwise, cannot
-// outlive the objects they depend on.
-//
-// -The BlockReader holds a shared_ptr to the DataNodeConnection that's used in each
-// pipeline stage. The connection object must never be destroyed while operations are
-// pending on the ASIO side (see HDFS-10931). In order to prevent a state where the
-// BlockReader or one of the corresponding pipelines outlives the connection each
-// pipeline stage must explicitly hold a shared pointer copied from BlockReaderImpl::dn_.
-//
-
-
-static int8_t unsecured_request_block_header[3] = {0, kDataTransferVersion, Operation::kReadBlock};
-
-void BlockReaderImpl::AsyncRequestBlock(const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block, uint64_t length,
- uint64_t offset, const std::function<void(Status)> &handler)
-{
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::AsyncRequestBlock("
- << FMT_THIS_ADDR << ", ..., length="
- << length << ", offset=" << offset << ", ...) called");
-
- // The total number of bytes that we need to transfer from the DN is
- // the amount that the user wants (bytesToRead), plus the padding at
- // the beginning in order to chunk-align. Note that the DN may elect
- // to send more than this amount if the read starts/ends mid-chunk.
- bytes_to_read_ = length;
-
- struct State {
- std::string header;
- hadoop::hdfs::OpReadBlockProto request;
- hadoop::hdfs::BlockOpResponseProto response;
- };
-
- auto m = continuation::Pipeline<State>::Create(cancel_state_);
- State *s = &m->state();
-
- s->request = ReadBlockProto(client_name, options_.verify_checksum,
- dn_->token_.get(), block, length, offset);
-
- s->header = std::string((const char*)unsecured_request_block_header, 3);
-
- bool serialize_success = true;
- s->header += SerializeDelimitedProtobufMessage(&s->request, &serialize_success);
-
- if(!serialize_success) {
- handler(Status::Error("Unable to serialize protobuf message"));
- return;
- }
-
- auto read_pb_message =
- new continuation::ReadDelimitedPBMessageContinuation<AsyncStream, 16384>(dn_, &s->response);
-
- m->Push(asio_continuation::Write(dn_, asio::buffer(s->header))).Push(read_pb_message);
-
- m->Run([this, handler, offset](const Status &status, const State &s) { Status stat = status;
- if (stat.ok()) {
- const auto &resp = s.response;
-
- if(this->event_handlers_) {
- event_response event_resp = this->event_handlers_->call(FILE_DN_READ_EVENT, "", "", 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (stat.ok() && event_resp.response_type() == event_response::kTest_Error) {
- stat = Status::Error("Test error");
- }
-#endif
- }
-
- if (stat.ok() && resp.status() == ::hadoop::hdfs::Status::SUCCESS) {
- if (resp.has_readopchecksuminfo()) {
- const auto &checksum_info = resp.readopchecksuminfo();
- chunk_padding_bytes_ = offset - checksum_info.chunkoffset();
- }
- state_ = kReadPacketHeader;
- } else {
- stat = Status::Error(s.response.message().c_str());
- }
- }
- handler(stat);
- });
-}
-
-Status BlockReaderImpl::RequestBlock(const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block,
- uint64_t length, uint64_t offset)
-{
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::RequestBlock("
- << FMT_THIS_ADDR <<"..., length="
- << length << ", offset=" << offset << ") called");
-
- auto stat = std::make_shared<std::promise<Status>>();
- std::future<Status> future(stat->get_future());
- AsyncRequestBlock(client_name, block, length, offset,
- [stat](const Status &status) { stat->set_value(status); });
- return future.get();
-}
-
-struct BlockReaderImpl::ReadPacketHeader : continuation::Continuation
-{
- ReadPacketHeader(BlockReaderImpl *parent) : parent_(parent), shared_conn_(parent->dn_) {}
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::ReadPacketHeader::Run("
- << FMT_CONT_AND_PARENT_ADDR << ") called");
-
- parent_->packet_data_read_bytes_ = 0;
- parent_->packet_len_ = 0;
- auto handler = [next, this](const asio::error_code &ec, size_t) {
- Status status;
- if (ec) {
- status = Status(ec.value(), ec.message().c_str());
- } else {
- parent_->packet_len_ = packet_length();
- parent_->header_.Clear();
- bool v = parent_->header_.ParseFromArray(&buf_[kHeaderStart],
- header_length());
- assert(v && "Failed to parse the header");
- (void)v; //avoids unused variable warning
- parent_->state_ = kReadChecksum;
- }
- if(parent_->event_handlers_) {
- event_response event_resp = parent_->event_handlers_->call(FILE_DN_READ_EVENT, "", "", 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (status.ok() && event_resp.response_type() == event_response::kTest_Error) {
- status = Status::Error("Test error");
- }
-#endif
- }
- next(status);
- };
-
- asio::async_read(*parent_->dn_, asio::buffer(buf_),
- std::bind(&ReadPacketHeader::CompletionHandler, this,
- std::placeholders::_1, std::placeholders::_2), handler);
- }
-
-private:
- static const size_t kMaxHeaderSize = 512;
- static const size_t kPayloadLenOffset = 0;
- static const size_t kPayloadLenSize = sizeof(int32_t);
- static const size_t kHeaderLenOffset = 4;
- static const size_t kHeaderLenSize = sizeof(int16_t);
- static const size_t kHeaderStart = kPayloadLenSize + kHeaderLenSize;
-
- BlockReaderImpl *parent_;
- std::array<char, kMaxHeaderSize> buf_;
-
- size_t packet_length() const {
- return ntohl(*reinterpret_cast<const unsigned *>(&buf_[kPayloadLenOffset]));
- }
-
- size_t header_length() const {
- return ntohs(*reinterpret_cast<const short *>(&buf_[kHeaderLenOffset]));
- }
-
- size_t CompletionHandler(const asio::error_code &ec, size_t transferred) {
- if (ec) {
- return 0;
- } else if (transferred < kHeaderStart) {
- return kHeaderStart - transferred;
- } else {
- return kHeaderStart + header_length() - transferred;
- }
- }
-
- // Keep the DN connection alive
- std::shared_ptr<DataNodeConnection> shared_conn_;
-};
-
-struct BlockReaderImpl::ReadChecksum : continuation::Continuation
-{
- ReadChecksum(BlockReaderImpl *parent) : parent_(parent), shared_conn_(parent->dn_) {}
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::ReadChecksum::Run("
- << FMT_CONT_AND_PARENT_ADDR << ") called");
-
- auto parent = parent_;
- if (parent->state_ != kReadChecksum) {
- next(Status::OK());
- return;
- }
-
- std::shared_ptr<DataNodeConnection> keep_conn_alive_ = shared_conn_;
-
- auto handler = [parent, next, this, keep_conn_alive_](const asio::error_code &ec, size_t)
- {
- Status status;
- if (ec) {
- status = Status(ec.value(), ec.message().c_str());
- } else {
- parent->state_ = parent->chunk_padding_bytes_ ? kReadPadding : kReadData;
- }
- if(parent->event_handlers_) {
- event_response event_resp = parent->event_handlers_->call(FILE_DN_READ_EVENT, "", "", 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (status.ok() && event_resp.response_type() == event_response::kTest_Error) {
- status = Status::Error("Test error");
- }
-#endif
- }
- next(status);
- };
-
- parent->checksum_.resize(parent->packet_len_ - sizeof(int) - parent->header_.datalen());
-
- asio::async_read(*parent->dn_, asio::buffer(parent->checksum_), handler);
- }
-
-private:
- BlockReaderImpl *parent_;
-
- // Keep the DataNodeConnection alive
- std::shared_ptr<DataNodeConnection> shared_conn_;
-};
-
-struct BlockReaderImpl::ReadData : continuation::Continuation
-{
- ReadData(BlockReaderImpl *parent, std::shared_ptr<size_t> bytes_transferred,
- const asio::mutable_buffers_1 &buf) : parent_(parent),
- bytes_transferred_(bytes_transferred), buf_(buf), shared_conn_(parent->dn_)
- {
- buf_.begin();
- }
-
- ~ReadData() {
- buf_.end();
- }
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::ReadData::Run("
- << FMT_CONT_AND_PARENT_ADDR << ") called");
- auto handler =
- [next, this](const asio::error_code &ec, size_t transferred) {
- Status status;
- if (ec) {
- status = Status(ec.value(), ec.message().c_str());
- }
-
- *bytes_transferred_ += transferred;
- parent_->bytes_to_read_ -= transferred;
- parent_->packet_data_read_bytes_ += transferred;
-
- if (parent_->packet_data_read_bytes_ >= parent_->header_.datalen()) {
- parent_->state_ = kReadPacketHeader;
- }
-
- if(parent_->event_handlers_) {
- event_response event_resp = parent_->event_handlers_->call(FILE_DN_READ_EVENT, "", "", 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (status.ok() && event_resp.response_type() == event_response::kTest_Error) {
- status = Status::Error("Test error");
- }
-#endif
- }
- next(status);
- };
-
- auto data_len = parent_->header_.datalen() - parent_->packet_data_read_bytes_;
-
- asio::async_read(*parent_->dn_, buf_, asio::transfer_exactly(data_len), handler);
- }
-
-private:
- BlockReaderImpl *parent_;
- std::shared_ptr<size_t> bytes_transferred_;
- const asio::mutable_buffers_1 buf_;
-
- // Keep DNConnection alive.
- std::shared_ptr<DataNodeConnection> shared_conn_;
-};
-
-struct BlockReaderImpl::ReadPadding : continuation::Continuation
-{
- ReadPadding(BlockReaderImpl *parent) : parent_(parent),
- padding_(parent->chunk_padding_bytes_),
- bytes_transferred_(std::make_shared<size_t>(0)),
- read_data_(new ReadData(parent, bytes_transferred_, asio::buffer(padding_))),
- shared_conn_(parent->dn_) {}
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::ReadPadding::Run("
- << FMT_CONT_AND_PARENT_ADDR << ") called");
-
- if (parent_->state_ != kReadPadding || !parent_->chunk_padding_bytes_) {
- next(Status::OK());
- return;
- }
-
- std::shared_ptr<DataNodeConnection> keep_conn_alive_ = shared_conn_;
-
- auto h = [next, this, keep_conn_alive_](const Status &stat) {
- Status status = stat;
- if (status.ok()) {
- assert(reinterpret_cast<const int &>(*bytes_transferred_) == parent_->chunk_padding_bytes_);
- parent_->chunk_padding_bytes_ = 0;
- parent_->state_ = kReadData;
- }
- if(parent_->event_handlers_) {
- event_response event_resp = parent_->event_handlers_->call(FILE_DN_READ_EVENT, "", "", 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (status.ok() && event_resp.response_type() == event_response::kTest_Error) {
- status = Status::Error("Test error");
- }
-#endif
- }
- next(status);
- };
- read_data_->Run(h);
- }
-
-private:
- BlockReaderImpl *parent_;
- std::vector<char> padding_;
- std::shared_ptr<size_t> bytes_transferred_;
- std::shared_ptr<continuation::Continuation> read_data_;
- ReadPadding(const ReadPadding &) = delete;
- ReadPadding &operator=(const ReadPadding &) = delete;
-
- // Keep DNConnection alive.
- std::shared_ptr<DataNodeConnection> shared_conn_;
-};
-
-
-struct BlockReaderImpl::AckRead : continuation::Continuation
-{
- AckRead(BlockReaderImpl *parent) : parent_(parent), shared_conn_(parent->dn_) {}
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::AckRead::Run(" << FMT_CONT_AND_PARENT_ADDR << ") called");
-
- if (parent_->bytes_to_read_ > 0) {
- next(Status::OK());
- return;
- }
-
- auto m = continuation::Pipeline<hadoop::hdfs::ClientReadStatusProto>::Create(parent_->cancel_state_);
-
- m->state().set_status(parent_->options_.verify_checksum
- ? hadoop::hdfs::Status::CHECKSUM_OK
- : hadoop::hdfs::Status::SUCCESS);
-
- m->Push(continuation::WriteDelimitedPBMessage(parent_->dn_, &m->state()));
-
- std::shared_ptr<DataNodeConnection> keep_conn_alive_ = shared_conn_;
-
- m->Run([this, next, keep_conn_alive_](const Status &stat, const hadoop::hdfs::ClientReadStatusProto &)
- {
- Status status = stat;
- if (status.ok()) {
- parent_->state_ = BlockReaderImpl::kFinished;
- }
- if(parent_->event_handlers_) {
- event_response event_resp = parent_->event_handlers_->call(FILE_DN_READ_EVENT, "", "", 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (status.ok() && event_resp.response_type() == event_response::kTest_Error) {
- status = Status::Error("Test error");
- }
-#endif
- }
- next(status);
- });
- }
-
-private:
- BlockReaderImpl *parent_;
-
- // Keep DNConnection alive.
- std::shared_ptr<DataNodeConnection> shared_conn_;
-};
-
-void BlockReaderImpl::AsyncReadPacket(const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t bytes_transferred)> &handler)
-{
- assert(state_ != kOpen && "Not connected");
-
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::AsyncReadPacket called");
-
- struct State {
- std::shared_ptr<size_t> bytes_transferred;
- };
-
- auto m = continuation::Pipeline<State>::Create(cancel_state_);
- m->state().bytes_transferred = std::make_shared<size_t>(0);
-
- // Note: some of these continuations have nested pipelines.
- m->Push(new ReadPacketHeader(this))
- .Push(new ReadChecksum(this))
- .Push(new ReadPadding(this))
- .Push(new ReadData(
- this, m->state().bytes_transferred, buffers))
- .Push(new AckRead(this));
-
- auto self = this->shared_from_this();
- m->Run([self, handler](const Status &status, const State &state) {
- handler(status, *state.bytes_transferred);
- });
-}
-
-
-size_t BlockReaderImpl::ReadPacket(const MutableBuffers &buffers, Status *status)
-{
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::ReadPacket called");
-
- size_t transferred = 0;
- auto done = std::make_shared<std::promise<void>>();
- auto future = done->get_future();
- AsyncReadPacket(buffers,
- [status, &transferred, done](const Status &stat, size_t t) {
- *status = stat;
- transferred = t;
- done->set_value();
- });
- future.wait();
- return transferred;
-}
-
-
-struct BlockReaderImpl::RequestBlockContinuation : continuation::Continuation
-{
- RequestBlockContinuation(BlockReader *reader, const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block, uint64_t length, uint64_t offset)
- : reader_(reader), client_name_(client_name), length_(length), offset_(offset)
- {
- block_.CheckTypeAndMergeFrom(*block);
- }
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::RequestBlockContinuation::Run("
- << FMT_CONT_AND_READER_ADDR << ") called");
-
- reader_->AsyncRequestBlock(client_name_, &block_, length_, offset_, next);
- }
-
-private:
- BlockReader *reader_;
- const std::string client_name_;
- hadoop::hdfs::ExtendedBlockProto block_;
- uint64_t length_;
- uint64_t offset_;
-};
-
-struct BlockReaderImpl::ReadBlockContinuation : continuation::Continuation
-{
- ReadBlockContinuation(BlockReader *reader, MutableBuffers buffer, size_t *transferred)
- : reader_(reader), buffer_(buffer), buffer_size_(asio::buffer_size(buffer)), transferred_(transferred) {}
-
- virtual void Run(const Next &next) override {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::ReadBlockContinuation::Run("
- << FMT_CONT_AND_READER_ADDR << ") called");
- *transferred_ = 0;
- next_ = next;
- OnReadData(Status::OK(), 0);
- }
-
-private:
- BlockReader *reader_;
- const MutableBuffers buffer_;
- const size_t buffer_size_;
- size_t *transferred_;
- std::function<void(const Status &)> next_;
-
- void OnReadData(const Status &status, size_t transferred) {
- using std::placeholders::_1;
- using std::placeholders::_2;
- *transferred_ += transferred;
- if (!status.ok()) {
- next_(status);
- } else if (*transferred_ >= buffer_size_) {
- next_(status);
- } else {
- reader_->AsyncReadPacket(
- asio::buffer(buffer_ + *transferred_, buffer_size_ - *transferred_),
- std::bind(&ReadBlockContinuation::OnReadData, this, _1, _2));
- }
- }
-};
-
-void BlockReaderImpl::AsyncReadBlock(
- const std::string & client_name,
- const hadoop::hdfs::LocatedBlockProto &block,
- size_t offset,
- const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t)> handler)
-{
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::AsyncReadBlock("
- << FMT_THIS_ADDR << ") called");
-
- auto m = continuation::Pipeline<size_t>::Create(cancel_state_);
- size_t * bytesTransferred = &m->state();
-
- size_t size = asio::buffer_size(buffers);
-
- m->Push(new RequestBlockContinuation(this, client_name, &block.b(), size, offset))
- .Push(new ReadBlockContinuation(this, buffers, bytesTransferred));
-
- m->Run([handler] (const Status &status, const size_t totalBytesTransferred) {
- handler(status, totalBytesTransferred);
- });
-}
-
-void BlockReaderImpl::CancelOperation() {
- LOG_TRACE(kBlockReader, << "BlockReaderImpl::CancelOperation("
- << FMT_THIS_ADDR << ") called");
- /* just forward cancel to DNConnection */
- dn_->Cancel();
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.h
deleted file mode 100644
index b5cbdf5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/block_reader.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef BLOCK_READER_H_
-#define BLOCK_READER_H_
-
-#include "hdfspp/status.h"
-#include "common/async_stream.h"
-#include "common/cancel_tracker.h"
-#include "common/new_delete.h"
-#include "datatransfer.pb.h"
-#include "connection/datanodeconnection.h"
-
-#include <memory>
-
-namespace hdfs {
-
-struct CacheStrategy {
- bool drop_behind_specified;
- bool drop_behind;
- bool read_ahead_specified;
- unsigned long long read_ahead;
- CacheStrategy()
- : drop_behind_specified(false), drop_behind(false),
- read_ahead_specified(false), read_ahead(false) {}
-};
-
-enum DropBehindStrategy {
- kUnspecified = 0,
- kEnableDropBehind = 1,
- kDisableDropBehind = 2,
-};
-
-enum EncryptionScheme {
- kNone = 0,
- kAESCTRNoPadding = 1,
-};
-
-struct BlockReaderOptions {
- bool verify_checksum;
- CacheStrategy cache_strategy;
- EncryptionScheme encryption_scheme;
-
- BlockReaderOptions()
- : verify_checksum(true), encryption_scheme(EncryptionScheme::kNone) {}
-};
-
-/**
- * Handles the operational state of request and reading a block (or portion of
- * a block) from a DataNode.
- *
- * Threading model: not thread-safe.
- * Lifecycle: should be created, used for a single read, then freed.
- */
-class BlockReader {
-public:
- MEMCHECKED_CLASS(BlockReader)
- virtual void AsyncReadBlock(
- const std::string & client_name,
- const hadoop::hdfs::LocatedBlockProto &block, size_t offset,
- const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t)> handler) = 0;
-
- virtual void AsyncReadPacket(
- const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t bytes_transferred)> &handler) = 0;
-
- virtual void AsyncRequestBlock(
- const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block,
- uint64_t length,
- uint64_t offset,
- const std::function<void(Status)> &handler) = 0;
-
- virtual void CancelOperation() = 0;
-};
-
-class BlockReaderImpl
- : public BlockReader, public std::enable_shared_from_this<BlockReaderImpl> {
-public:
- explicit BlockReaderImpl(const BlockReaderOptions &options, std::shared_ptr<DataNodeConnection> dn,
- CancelHandle cancel_state, std::shared_ptr<LibhdfsEvents> event_handlers=nullptr)
- : dn_(dn), state_(kOpen), options_(options),
- chunk_padding_bytes_(0), cancel_state_(cancel_state), event_handlers_(event_handlers.get()) {}
-
- virtual void AsyncReadPacket(
- const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t bytes_transferred)> &handler) override;
-
- virtual void AsyncRequestBlock(
- const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block,
- uint64_t length,
- uint64_t offset,
- const std::function<void(Status)> &handler) override;
-
- virtual void AsyncReadBlock(
- const std::string & client_name,
- const hadoop::hdfs::LocatedBlockProto &block, size_t offset,
- const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t)> handler) override;
-
- virtual void CancelOperation() override;
-
- size_t ReadPacket(const MutableBuffers &buffers, Status *status);
-
- Status RequestBlock(
- const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block,
- uint64_t length,
- uint64_t offset);
-
-private:
- struct RequestBlockContinuation;
- struct ReadBlockContinuation;
-
- struct ReadPacketHeader;
- struct ReadChecksum;
- struct ReadPadding;
- struct ReadData;
- struct AckRead;
- enum State {
- kOpen,
- kReadPacketHeader,
- kReadChecksum,
- kReadPadding,
- kReadData,
- kFinished,
- };
-
- std::shared_ptr<DataNodeConnection> dn_;
- hadoop::hdfs::PacketHeaderProto header_;
- State state_;
- BlockReaderOptions options_;
- size_t packet_len_;
- int packet_data_read_bytes_;
- int chunk_padding_bytes_;
- long long bytes_to_read_;
- std::vector<char> checksum_;
- CancelHandle cancel_state_;
- LibhdfsEvents* event_handlers_;
-};
-}
-
-#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[22/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/kqueue_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/kqueue_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/kqueue_reactor.hpp
deleted file mode 100644
index ddd6c8a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/kqueue_reactor.hpp
+++ /dev/null
@@ -1,219 +0,0 @@
-//
-// detail/kqueue_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze 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_DETAIL_KQUEUE_REACTOR_HPP
-#define ASIO_DETAIL_KQUEUE_REACTOR_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_HAS_KQUEUE)
-
-#include <cstddef>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/time.h>
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/object_pool.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-// Older versions of Mac OS X may not define EV_OOBAND.
-#if !defined(EV_OOBAND)
-# define EV_OOBAND EV_FLAG1
-#endif // !defined(EV_OOBAND)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class kqueue_reactor
- : public asio::detail::service_base<kqueue_reactor>
-{
-public:
- enum op_types { read_op = 0, write_op = 1,
- connect_op = 1, except_op = 2, max_ops = 3 };
-
- // Per-descriptor queues.
- struct descriptor_state
- {
- friend class kqueue_reactor;
- friend class object_pool_access;
-
- descriptor_state* next_;
- descriptor_state* prev_;
-
- mutex mutex_;
- int descriptor_;
- op_queue<reactor_op> op_queue_[max_ops];
- bool shutdown_;
- };
-
- // Per-descriptor data.
- typedef descriptor_state* per_descriptor_data;
-
- // Constructor.
- ASIO_DECL kqueue_reactor(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~kqueue_reactor();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Recreate internal descriptors following a fork.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Initialise the task.
- ASIO_DECL void init_task();
-
- // Register a socket with the reactor. Returns 0 on success, system error
- // code on failure.
- ASIO_DECL int register_descriptor(socket_type descriptor,
- per_descriptor_data& descriptor_data);
-
- // Register a descriptor with an associated single operation. Returns 0 on
- // success, system error code on failure.
- ASIO_DECL int register_internal_descriptor(
- int op_type, socket_type descriptor,
- per_descriptor_data& descriptor_data, reactor_op* op);
-
- // Move descriptor registration from one descriptor_data object to another.
- ASIO_DECL void move_descriptor(socket_type descriptor,
- per_descriptor_data& target_descriptor_data,
- per_descriptor_data& source_descriptor_data);
-
- // Post a reactor operation for immediate completion.
- void post_immediate_completion(reactor_op* op, bool is_continuation)
- {
- io_service_.post_immediate_completion(op, is_continuation);
- }
-
- // Start a new operation. The reactor operation will be performed when the
- // given descriptor is flagged as ready, or an error has occurred.
- ASIO_DECL void start_op(int op_type, socket_type descriptor,
- per_descriptor_data& descriptor_data, reactor_op* op,
- bool is_continuation, bool allow_speculative);
-
- // Cancel all operations associated with the given descriptor. The
- // handlers associated with the descriptor will be invoked with the
- // operation_aborted error.
- ASIO_DECL void cancel_ops(socket_type descriptor,
- per_descriptor_data& descriptor_data);
-
- // Cancel any operations that are running against the descriptor and remove
- // its registration from the reactor.
- ASIO_DECL void deregister_descriptor(socket_type descriptor,
- per_descriptor_data& descriptor_data, bool closing);
-
- // Remote the descriptor's registration from the reactor.
- ASIO_DECL void deregister_internal_descriptor(
- socket_type descriptor, per_descriptor_data& descriptor_data);
-
- // Add a new timer queue to the reactor.
- template <typename Time_Traits>
- void add_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Remove a timer queue from the reactor.
- template <typename Time_Traits>
- void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Schedule a new operation in the given timer queue to expire at the
- // specified absolute time.
- template <typename Time_Traits>
- void schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
- // Cancel the timer operations associated with the given token. Returns the
- // number of operations that have been posted or dispatched.
- template <typename Time_Traits>
- std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
- // Run the kqueue loop.
- ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
- // Interrupt the kqueue loop.
- ASIO_DECL void interrupt();
-
-private:
- // Create the kqueue file descriptor. Throws an exception if the descriptor
- // cannot be created.
- ASIO_DECL static int do_kqueue_create();
-
- // Allocate a new descriptor state object.
- ASIO_DECL descriptor_state* allocate_descriptor_state();
-
- // Free an existing descriptor state object.
- ASIO_DECL void free_descriptor_state(descriptor_state* s);
-
- // Helper function to add a new timer queue.
- ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
- // Helper function to remove a timer queue.
- ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
- // Get the timeout value for the kevent call.
- ASIO_DECL timespec* get_timeout(timespec& ts);
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex to protect access to internal data.
- mutex mutex_;
-
- // The kqueue file descriptor.
- int kqueue_fd_;
-
- // The interrupter is used to break a blocking kevent call.
- select_interrupter interrupter_;
-
- // The timer queues.
- timer_queue_set timer_queues_;
-
- // Whether the service has been shut down.
- bool shutdown_;
-
- // Mutex to protect access to the registered descriptors.
- mutex registered_descriptors_mutex_;
-
- // Keep track of all registered descriptors.
- object_pool<descriptor_state> registered_descriptors_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/kqueue_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/kqueue_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_KQUEUE)
-
-#endif // ASIO_DETAIL_KQUEUE_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/limits.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/limits.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/limits.hpp
deleted file mode 100644
index d32470d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/limits.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// detail/limits.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2011 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_DETAIL_LIMITS_HPP
-#define ASIO_DETAIL_LIMITS_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_HAS_BOOST_LIMITS)
-# include <boost/limits.hpp>
-#else // defined(ASIO_HAS_BOOST_LIMITS)
-# include <limits>
-#endif // defined(ASIO_HAS_BOOST_LIMITS)
-
-#endif // ASIO_DETAIL_LIMITS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/local_free_on_block_exit.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/local_free_on_block_exit.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/local_free_on_block_exit.hpp
deleted file mode 100644
index e6e899a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/local_free_on_block_exit.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// detail/local_free_on_block_exit.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_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
-#define ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_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_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class local_free_on_block_exit
- : private noncopyable
-{
-public:
- // Constructor blocks all signals for the calling thread.
- explicit local_free_on_block_exit(void* p)
- : p_(p)
- {
- }
-
- // Destructor restores the previous signal mask.
- ~local_free_on_block_exit()
- {
- ::LocalFree(p_);
- }
-
-private:
- void* p_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/macos_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/macos_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/macos_fenced_block.hpp
deleted file mode 100644
index 1614dd50..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/macos_fenced_block.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/macos_fenced_block.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_DETAIL_MACOS_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__MACH__) && defined(__APPLE__)
-
-#include <libkern/OSAtomic.h>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class macos_fenced_block
- : private noncopyable
-{
-public:
- enum half_t { half };
- enum full_t { full };
-
- // Constructor for a half fenced block.
- explicit macos_fenced_block(half_t)
- {
- }
-
- // Constructor for a full fenced block.
- explicit macos_fenced_block(full_t)
- {
- OSMemoryBarrier();
- }
-
- // Destructor.
- ~macos_fenced_block()
- {
- OSMemoryBarrier();
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__MACH__) && defined(__APPLE__)
-
-#endif // ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/mutex.hpp
deleted file mode 100644
index be10a88..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/mutex.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// detail/mutex.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_DETAIL_MUTEX_HPP
-#define ASIO_DETAIL_MUTEX_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_HAS_THREADS)
-# include "asio/detail/null_mutex.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_mutex.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_mutex.hpp"
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# include "asio/detail/std_mutex.hpp"
-#else
-# error Only Windows, POSIX and std::mutex are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_mutex mutex;
-#elif defined(ASIO_WINDOWS)
-typedef win_mutex mutex;
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_mutex mutex;
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-typedef std_mutex mutex;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/noncopyable.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/noncopyable.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/noncopyable.hpp
deleted file mode 100644
index 23e991f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/noncopyable.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// detail/noncopyable.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_DETAIL_NONCOPYABLE_HPP
-#define ASIO_DETAIL_NONCOPYABLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class noncopyable
-{
-protected:
- noncopyable() {}
- ~noncopyable() {}
-private:
- noncopyable(const noncopyable&);
- const noncopyable& operator=(const noncopyable&);
-};
-
-} // namespace detail
-
-using asio::detail::noncopyable;
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_NONCOPYABLE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_event.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_event.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_event.hpp
deleted file mode 100644
index 4470a1f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_event.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/null_event.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_DETAIL_NULL_EVENT_HPP
-#define ASIO_DETAIL_NULL_EVENT_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_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_event
- : private noncopyable
-{
-public:
- // Constructor.
- null_event()
- {
- }
-
- // Destructor.
- ~null_event()
- {
- }
-
- // Signal the event. (Retained for backward compatibility.)
- template <typename Lock>
- void signal(Lock&)
- {
- }
-
- // Signal all waiters.
- template <typename Lock>
- void signal_all(Lock&)
- {
- }
-
- // Unlock the mutex and signal one waiter.
- template <typename Lock>
- void unlock_and_signal_one(Lock&)
- {
- }
-
- // If there's a waiter, unlock the mutex and signal it.
- template <typename Lock>
- bool maybe_unlock_and_signal_one(Lock&)
- {
- return false;
- }
-
- // Reset the event.
- template <typename Lock>
- void clear(Lock&)
- {
- }
-
- // Wait for the event to become signalled.
- template <typename Lock>
- void wait(Lock&)
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_EVENT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_fenced_block.hpp
deleted file mode 100644
index c17b000..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_fenced_block.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/null_fenced_block.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_DETAIL_NULL_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_NULL_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_fenced_block
- : private noncopyable
-{
-public:
- enum half_or_full_t { half, full };
-
- // Constructor.
- explicit null_fenced_block(half_or_full_t)
- {
- }
-
- // Destructor.
- ~null_fenced_block()
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_NULL_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_mutex.hpp
deleted file mode 100644
index bd356d8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_mutex.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// detail/null_mutex.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_DETAIL_NULL_MUTEX_HPP
-#define ASIO_DETAIL_NULL_MUTEX_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_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_mutex
- : private noncopyable
-{
-public:
- typedef asio::detail::scoped_lock<null_mutex> scoped_lock;
-
- // Constructor.
- null_mutex()
- {
- }
-
- // Destructor.
- ~null_mutex()
- {
- }
-
- // Lock the mutex.
- void lock()
- {
- }
-
- // Unlock the mutex.
- void unlock()
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_reactor.hpp
deleted file mode 100644
index fa6b623..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_reactor.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// detail/null_reactor.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_DETAIL_NULL_REACTOR_HPP
-#define ASIO_DETAIL_NULL_REACTOR_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_WINDOWS_RUNTIME)
-
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_reactor
- : public asio::detail::service_base<null_reactor>
-{
-public:
- // Constructor.
- null_reactor(asio::io_service& io_service)
- : asio::detail::service_base<null_reactor>(io_service)
- {
- }
-
- // Destructor.
- ~null_reactor()
- {
- }
-
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- }
-
- // No-op because should never be called.
- void run(bool /*block*/, op_queue<operation>& /*ops*/)
- {
- }
-
- // No-op.
- void interrupt()
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_NULL_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_signal_blocker.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_signal_blocker.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_signal_blocker.hpp
deleted file mode 100644
index cd813c8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_signal_blocker.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// detail/null_signal_blocker.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_DETAIL_NULL_SIGNAL_BLOCKER_HPP
-#define ASIO_DETAIL_NULL_SIGNAL_BLOCKER_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_HAS_THREADS) \
- || defined(ASIO_WINDOWS) \
- || defined(ASIO_WINDOWS_RUNTIME) \
- || defined(__CYGWIN__) \
- || defined(__SYMBIAN32__)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_signal_blocker
- : private noncopyable
-{
-public:
- // Constructor blocks all signals for the calling thread.
- null_signal_blocker()
- {
- }
-
- // Destructor restores the previous signal mask.
- ~null_signal_blocker()
- {
- }
-
- // Block all signals for the calling thread.
- void block()
- {
- }
-
- // Restore the previous signal mask.
- void unblock()
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
- // || defined(ASIO_WINDOWS)
- // || defined(ASIO_WINDOWS_RUNTIME)
- // || defined(__CYGWIN__)
- // || defined(__SYMBIAN32__)
-
-#endif // ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_socket_service.hpp
deleted file mode 100644
index 255a26d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_socket_service.hpp
+++ /dev/null
@@ -1,497 +0,0 @@
-//
-// detail/null_socket_service.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_DETAIL_NULL_SOCKET_SERVICE_HPP
-#define ASIO_DETAIL_NULL_SOCKET_SERVICE_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_WINDOWS_RUNTIME)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/bind_handler.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class null_socket_service
-{
-public:
- // The protocol type.
- typedef Protocol protocol_type;
-
- // The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- // The native type of a socket.
- typedef int native_handle_type;
-
- // The implementation type of the socket.
- struct implementation_type
- {
- };
-
- // Constructor.
- null_socket_service(asio::io_service& io_service)
- : io_service_(io_service)
- {
- }
-
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- }
-
- // Construct a new socket implementation.
- void construct(implementation_type&)
- {
- }
-
- // Move-construct a new socket implementation.
- void move_construct(implementation_type&, implementation_type&)
- {
- }
-
- // Move-assign from another socket implementation.
- void move_assign(implementation_type&,
- null_socket_service&, implementation_type&)
- {
- }
-
- // Move-construct a new socket implementation from another protocol type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type&,
- typename null_socket_service<Protocol1>::implementation_type&)
- {
- }
-
- // Destroy a socket implementation.
- void destroy(implementation_type&)
- {
- }
-
- // Open a new socket implementation.
- asio::error_code open(implementation_type&,
- const protocol_type&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Assign a native socket to a socket implementation.
- asio::error_code assign(implementation_type&, const protocol_type&,
- const native_handle_type&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Determine whether the socket is open.
- bool is_open(const implementation_type&) const
- {
- return false;
- }
-
- // Destroy a socket implementation.
- asio::error_code close(implementation_type&,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Get the native socket representation.
- native_handle_type native_handle(implementation_type&)
- {
- return 0;
- }
-
- // Cancel all operations associated with the socket.
- asio::error_code cancel(implementation_type&,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const implementation_type&,
- asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return false;
- }
-
- // Determine the number of bytes available for reading.
- std::size_t available(const implementation_type&,
- asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Place the socket into the state where it will listen for new connections.
- asio::error_code listen(implementation_type&,
- int, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Perform an IO control command on the socket.
- template <typename IO_Control_Command>
- asio::error_code io_control(implementation_type&,
- IO_Control_Command&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Gets the non-blocking mode of the socket.
- bool non_blocking(const implementation_type&) const
- {
- return false;
- }
-
- // Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(implementation_type&,
- bool, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const implementation_type&) const
- {
- return false;
- }
-
- // Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(implementation_type&,
- bool, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Disable sends or receives on the socket.
- asio::error_code shutdown(implementation_type&,
- socket_base::shutdown_type, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Bind the socket to the specified local endpoint.
- asio::error_code bind(implementation_type&,
- const endpoint_type&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code set_option(implementation_type&,
- const Option&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code get_option(const implementation_type&,
- Option&, asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type&,
- asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return endpoint_type();
- }
-
- // Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type&,
- asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return endpoint_type();
- }
-
- // Send the given data to the peer.
- template <typename ConstBufferSequence>
- std::size_t send(implementation_type&, const ConstBufferSequence&,
- socket_base::message_flags, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Wait until data can be sent without blocking.
- std::size_t send(implementation_type&, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send(implementation_type&, const ConstBufferSequence&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send(implementation_type&, const null_buffers&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Receive some data from the peer. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- std::size_t receive(implementation_type&, const MutableBufferSequence&,
- socket_base::message_flags, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Wait until data can be received without blocking.
- std::size_t receive(implementation_type&, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive(implementation_type&, const MutableBufferSequence&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive(implementation_type&, const null_buffers&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Receive some data with associated flags. Returns the number of bytes
- // received.
- template <typename MutableBufferSequence>
- std::size_t receive_with_flags(implementation_type&,
- const MutableBufferSequence&, socket_base::message_flags,
- socket_base::message_flags&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Wait until data can be received without blocking.
- std::size_t receive_with_flags(implementation_type&,
- const null_buffers&, socket_base::message_flags,
- socket_base::message_flags&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive_with_flags(implementation_type&,
- const MutableBufferSequence&, socket_base::message_flags,
- socket_base::message_flags&, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive_with_flags(implementation_type&,
- const null_buffers&, socket_base::message_flags,
- socket_base::message_flags&, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Send a datagram to the specified endpoint. Returns the number of bytes
- // sent.
- template <typename ConstBufferSequence>
- std::size_t send_to(implementation_type&, const ConstBufferSequence&,
- const endpoint_type&, socket_base::message_flags,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Wait until data can be sent without blocking.
- std::size_t send_to(implementation_type&, const null_buffers&,
- const endpoint_type&, socket_base::message_flags,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send_to(implementation_type&, const ConstBufferSequence&,
- const endpoint_type&, socket_base::message_flags,
- Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send_to(implementation_type&, const null_buffers&,
- const endpoint_type&, socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Receive a datagram with the endpoint of the sender. Returns the number of
- // bytes received.
- template <typename MutableBufferSequence>
- std::size_t receive_from(implementation_type&, const MutableBufferSequence&,
- endpoint_type&, socket_base::message_flags,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Wait until data can be received without blocking.
- std::size_t receive_from(implementation_type&, const null_buffers&,
- endpoint_type&, socket_base::message_flags,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received and
- // the sender_endpoint object must both be valid for the lifetime of the
- // asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive_from(implementation_type&,
- const MutableBufferSequence&, endpoint_type&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive_from(implementation_type&,
- const null_buffers&, endpoint_type&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Accept a new connection.
- template <typename Socket>
- asio::error_code accept(implementation_type&,
- Socket&, endpoint_type*, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Start an asynchronous accept. The peer and peer_endpoint objects
- // must be valid until the accept's handler is invoked.
- template <typename Socket, typename Handler>
- void async_accept(implementation_type&, Socket&,
- endpoint_type*, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- io_service_.post(detail::bind_handler(handler, ec));
- }
-
- // Connect the socket to the specified endpoint.
- asio::error_code connect(implementation_type&,
- const endpoint_type&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Start an asynchronous connect.
- template <typename Handler>
- void async_connect(implementation_type&,
- const endpoint_type&, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- io_service_.post(detail::bind_handler(handler, ec));
- }
-
-private:
- asio::io_service& io_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_static_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_static_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_static_mutex.hpp
deleted file mode 100644
index d777091..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_static_mutex.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// detail/null_static_mutex.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_DETAIL_NULL_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_NULL_STATIC_MUTEX_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_HAS_THREADS)
-
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct null_static_mutex
-{
- typedef asio::detail::scoped_lock<null_static_mutex> scoped_lock;
-
- // Initialise the mutex.
- void init()
- {
- }
-
- // Lock the mutex.
- void lock()
- {
- }
-
- // Unlock the mutex.
- void unlock()
- {
- }
-
- int unused_;
-};
-
-#define ASIO_NULL_STATIC_MUTEX_INIT { 0 }
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_STATIC_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_thread.hpp
deleted file mode 100644
index 8c058ef..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_thread.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/null_thread.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_DETAIL_NULL_THREAD_HPP
-#define ASIO_DETAIL_NULL_THREAD_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_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_thread
- : private noncopyable
-{
-public:
- // Constructor.
- template <typename Function>
- null_thread(Function, unsigned int = 0)
- {
- asio::detail::throw_error(
- asio::error::operation_not_supported, "thread");
- }
-
- // Destructor.
- ~null_thread()
- {
- }
-
- // Wait for the thread to exit.
- void join()
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_THREAD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_tss_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_tss_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_tss_ptr.hpp
deleted file mode 100644
index 0c385cb..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/null_tss_ptr.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// detail/null_tss_ptr.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_DETAIL_NULL_TSS_PTR_HPP
-#define ASIO_DETAIL_NULL_TSS_PTR_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_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class null_tss_ptr
- : private noncopyable
-{
-public:
- // Constructor.
- null_tss_ptr()
- : value_(0)
- {
- }
-
- // Destructor.
- ~null_tss_ptr()
- {
- }
-
- // Get the value.
- operator T*() const
- {
- return value_;
- }
-
- // Set the value.
- void operator=(T* value)
- {
- value_ = value;
- }
-
-private:
- T* value_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_TSS_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/object_pool.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/object_pool.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/object_pool.hpp
deleted file mode 100644
index c5bf8f7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/object_pool.hpp
+++ /dev/null
@@ -1,146 +0,0 @@
-//
-// detail/object_pool.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_DETAIL_OBJECT_POOL_HPP
-#define ASIO_DETAIL_OBJECT_POOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Object>
-class object_pool;
-
-class object_pool_access
-{
-public:
- template <typename Object>
- static Object* create()
- {
- return new Object;
- }
-
- template <typename Object>
- static void destroy(Object* o)
- {
- delete o;
- }
-
- template <typename Object>
- static Object*& next(Object* o)
- {
- return o->next_;
- }
-
- template <typename Object>
- static Object*& prev(Object* o)
- {
- return o->prev_;
- }
-};
-
-template <typename Object>
-class object_pool
- : private noncopyable
-{
-public:
- // Constructor.
- object_pool()
- : live_list_(0),
- free_list_(0)
- {
- }
-
- // Destructor destroys all objects.
- ~object_pool()
- {
- destroy_list(live_list_);
- destroy_list(free_list_);
- }
-
- // Get the object at the start of the live list.
- Object* first()
- {
- return live_list_;
- }
-
- // Allocate a new object.
- Object* alloc()
- {
- Object* o = free_list_;
- if (o)
- free_list_ = object_pool_access::next(free_list_);
- else
- o = object_pool_access::create<Object>();
-
- object_pool_access::next(o) = live_list_;
- object_pool_access::prev(o) = 0;
- if (live_list_)
- object_pool_access::prev(live_list_) = o;
- live_list_ = o;
-
- return o;
- }
-
- // Free an object. Moves it to the free list. No destructors are run.
- void free(Object* o)
- {
- if (live_list_ == o)
- live_list_ = object_pool_access::next(o);
-
- if (object_pool_access::prev(o))
- {
- object_pool_access::next(object_pool_access::prev(o))
- = object_pool_access::next(o);
- }
-
- if (object_pool_access::next(o))
- {
- object_pool_access::prev(object_pool_access::next(o))
- = object_pool_access::prev(o);
- }
-
- object_pool_access::next(o) = free_list_;
- object_pool_access::prev(o) = 0;
- free_list_ = o;
- }
-
-private:
- // Helper function to destroy all elements in a list.
- void destroy_list(Object* list)
- {
- while (list)
- {
- Object* o = list;
- list = object_pool_access::next(o);
- object_pool_access::destroy(o);
- }
- }
-
- // The list of live objects.
- Object* live_list_;
-
- // The free list.
- Object* free_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_OBJECT_POOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/old_win_sdk_compat.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/old_win_sdk_compat.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/old_win_sdk_compat.hpp
deleted file mode 100644
index af673ea..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/old_win_sdk_compat.hpp
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// detail/old_win_sdk_compat.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_DETAIL_OLD_WIN_SDK_COMPAT_HPP
-#define ASIO_DETAIL_OLD_WIN_SDK_COMPAT_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_WINDOWS) || defined(__CYGWIN__)
-
-// Guess whether we are building against on old Platform SDK.
-#if !defined(IN6ADDR_ANY_INIT)
-#define ASIO_HAS_OLD_WIN_SDK 1
-#endif // !defined(IN6ADDR_ANY_INIT)
-
-#if defined(ASIO_HAS_OLD_WIN_SDK)
-
-// Emulation of types that are missing from old Platform SDKs.
-//
-// N.B. this emulation is also used if building for a Windows 2000 target with
-// a recent (i.e. Vista or later) SDK, as the SDK does not provide IPv6 support
-// in that case.
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-enum
-{
- sockaddr_storage_maxsize = 128, // Maximum size.
- sockaddr_storage_alignsize = (sizeof(__int64)), // Desired alignment.
- sockaddr_storage_pad1size = (sockaddr_storage_alignsize - sizeof(short)),
- sockaddr_storage_pad2size = (sockaddr_storage_maxsize -
- (sizeof(short) + sockaddr_storage_pad1size + sockaddr_storage_alignsize))
-};
-
-struct sockaddr_storage_emulation
-{
- short ss_family;
- char __ss_pad1[sockaddr_storage_pad1size];
- __int64 __ss_align;
- char __ss_pad2[sockaddr_storage_pad2size];
-};
-
-struct in6_addr_emulation
-{
- union
- {
- u_char Byte[16];
- u_short Word[8];
- } u;
-};
-
-#if !defined(s6_addr)
-# define _S6_un u
-# define _S6_u8 Byte
-# define s6_addr _S6_un._S6_u8
-#endif // !defined(s6_addr)
-
-struct sockaddr_in6_emulation
-{
- short sin6_family;
- u_short sin6_port;
- u_long sin6_flowinfo;
- in6_addr_emulation sin6_addr;
- u_long sin6_scope_id;
-};
-
-struct ipv6_mreq_emulation
-{
- in6_addr_emulation ipv6mr_multiaddr;
- unsigned int ipv6mr_interface;
-};
-
-struct addrinfo_emulation
-{
- int ai_flags;
- int ai_family;
- int ai_socktype;
- int ai_protocol;
- size_t ai_addrlen;
- char* ai_canonname;
- sockaddr* ai_addr;
- addrinfo_emulation* ai_next;
-};
-
-#if !defined(AI_PASSIVE)
-# define AI_PASSIVE 0x1
-#endif
-
-#if !defined(AI_CANONNAME)
-# define AI_CANONNAME 0x2
-#endif
-
-#if !defined(AI_NUMERICHOST)
-# define AI_NUMERICHOST 0x4
-#endif
-
-#if !defined(EAI_AGAIN)
-# define EAI_AGAIN WSATRY_AGAIN
-#endif
-
-#if !defined(EAI_BADFLAGS)
-# define EAI_BADFLAGS WSAEINVAL
-#endif
-
-#if !defined(EAI_FAIL)
-# define EAI_FAIL WSANO_RECOVERY
-#endif
-
-#if !defined(EAI_FAMILY)
-# define EAI_FAMILY WSAEAFNOSUPPORT
-#endif
-
-#if !defined(EAI_MEMORY)
-# define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
-#endif
-
-#if !defined(EAI_NODATA)
-# define EAI_NODATA WSANO_DATA
-#endif
-
-#if !defined(EAI_NONAME)
-# define EAI_NONAME WSAHOST_NOT_FOUND
-#endif
-
-#if !defined(EAI_SERVICE)
-# define EAI_SERVICE WSATYPE_NOT_FOUND
-#endif
-
-#if !defined(EAI_SOCKTYPE)
-# define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
-#endif
-
-#if !defined(NI_NOFQDN)
-# define NI_NOFQDN 0x01
-#endif
-
-#if !defined(NI_NUMERICHOST)
-# define NI_NUMERICHOST 0x02
-#endif
-
-#if !defined(NI_NAMEREQD)
-# define NI_NAMEREQD 0x04
-#endif
-
-#if !defined(NI_NUMERICSERV)
-# define NI_NUMERICSERV 0x08
-#endif
-
-#if !defined(NI_DGRAM)
-# define NI_DGRAM 0x10
-#endif
-
-#if !defined(IPPROTO_IPV6)
-# define IPPROTO_IPV6 41
-#endif
-
-#if !defined(IPV6_UNICAST_HOPS)
-# define IPV6_UNICAST_HOPS 4
-#endif
-
-#if !defined(IPV6_MULTICAST_IF)
-# define IPV6_MULTICAST_IF 9
-#endif
-
-#if !defined(IPV6_MULTICAST_HOPS)
-# define IPV6_MULTICAST_HOPS 10
-#endif
-
-#if !defined(IPV6_MULTICAST_LOOP)
-# define IPV6_MULTICAST_LOOP 11
-#endif
-
-#if !defined(IPV6_JOIN_GROUP)
-# define IPV6_JOIN_GROUP 12
-#endif
-
-#if !defined(IPV6_LEAVE_GROUP)
-# define IPV6_LEAVE_GROUP 13
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_OLD_WIN_SDK)
-
-// Even newer Platform SDKs that support IPv6 may not define IPV6_V6ONLY.
-#if !defined(IPV6_V6ONLY)
-# define IPV6_V6ONLY 27
-#endif
-
-// Some SDKs (e.g. Windows CE) don't define IPPROTO_ICMPV6.
-#if !defined(IPPROTO_ICMPV6)
-# define IPPROTO_ICMPV6 58
-#endif
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/op_queue.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/op_queue.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/op_queue.hpp
deleted file mode 100644
index a577896..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/op_queue.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// detail/op_queue.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_DETAIL_OP_QUEUE_HPP
-#define ASIO_DETAIL_OP_QUEUE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Operation>
-class op_queue;
-
-class op_queue_access
-{
-public:
- template <typename Operation>
- static Operation* next(Operation* o)
- {
- return static_cast<Operation*>(o->next_);
- }
-
- template <typename Operation1, typename Operation2>
- static void next(Operation1*& o1, Operation2* o2)
- {
- o1->next_ = o2;
- }
-
- template <typename Operation>
- static void destroy(Operation* o)
- {
- o->destroy();
- }
-
- template <typename Operation>
- static Operation*& front(op_queue<Operation>& q)
- {
- return q.front_;
- }
-
- template <typename Operation>
- static Operation*& back(op_queue<Operation>& q)
- {
- return q.back_;
- }
-};
-
-template <typename Operation>
-class op_queue
- : private noncopyable
-{
-public:
- // Constructor.
- op_queue()
- : front_(0),
- back_(0)
- {
- }
-
- // Destructor destroys all operations.
- ~op_queue()
- {
- while (Operation* op = front_)
- {
- pop();
- op_queue_access::destroy(op);
- }
- }
-
- // Get the operation at the front of the queue.
- Operation* front()
- {
- return front_;
- }
-
- // Pop an operation from the front of the queue.
- void pop()
- {
- if (front_)
- {
- Operation* tmp = front_;
- front_ = op_queue_access::next(front_);
- if (front_ == 0)
- back_ = 0;
- op_queue_access::next(tmp, static_cast<Operation*>(0));
- }
- }
-
- // Push an operation on to the back of the queue.
- void push(Operation* h)
- {
- op_queue_access::next(h, static_cast<Operation*>(0));
- if (back_)
- {
- op_queue_access::next(back_, h);
- back_ = h;
- }
- else
- {
- front_ = back_ = h;
- }
- }
-
- // Push all operations from another queue on to the back of the queue. The
- // source queue may contain operations of a derived type.
- template <typename OtherOperation>
- void push(op_queue<OtherOperation>& q)
- {
- if (Operation* other_front = op_queue_access::front(q))
- {
- if (back_)
- op_queue_access::next(back_, other_front);
- else
- front_ = other_front;
- back_ = op_queue_access::back(q);
- op_queue_access::front(q) = 0;
- op_queue_access::back(q) = 0;
- }
- }
-
- // Whether the queue is empty.
- bool empty() const
- {
- return front_ == 0;
- }
-
-private:
- friend class op_queue_access;
-
- // The front of the queue.
- Operation* front_;
-
- // The back of the queue.
- Operation* back_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_OP_QUEUE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/operation.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/operation.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/operation.hpp
deleted file mode 100644
index ce0d6a6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/operation.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/operation.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_DETAIL_OPERATION_HPP
-#define ASIO_DETAIL_OPERATION_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_HAS_IOCP)
-# include "asio/detail/win_iocp_operation.hpp"
-#else
-# include "asio/detail/task_io_service_operation.hpp"
-#endif
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_IOCP)
-typedef win_iocp_operation operation;
-#else
-typedef task_io_service_operation operation;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_OPERATION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pipe_select_interrupter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pipe_select_interrupter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pipe_select_interrupter.hpp
deleted file mode 100644
index d9c2242..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pipe_select_interrupter.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/pipe_select_interrupter.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_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_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_WINDOWS)
-#if !defined(ASIO_WINDOWS_RUNTIME)
-#if !defined(__CYGWIN__)
-#if !defined(__SYMBIAN32__)
-#if !defined(ASIO_HAS_EVENTFD)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class pipe_select_interrupter
-{
-public:
- // Constructor.
- ASIO_DECL pipe_select_interrupter();
-
- // Destructor.
- ASIO_DECL ~pipe_select_interrupter();
-
- // Recreate the interrupter's descriptors. Used after a fork.
- ASIO_DECL void recreate();
-
- // Interrupt the select call.
- ASIO_DECL void interrupt();
-
- // Reset the select interrupt. Returns true if the call was interrupted.
- ASIO_DECL bool reset();
-
- // Get the read descriptor to be passed to select.
- int read_descriptor() const
- {
- return read_descriptor_;
- }
-
-private:
- // Open the descriptors. Throws on error.
- ASIO_DECL void open_descriptors();
-
- // Close the descriptors.
- ASIO_DECL void close_descriptors();
-
- // The read end of a connection used to interrupt the select call. This file
- // descriptor is passed to select such that when it is time to stop, a single
- // byte will be written on the other end of the connection and this
- // descriptor will become readable.
- int read_descriptor_;
-
- // The write end of a connection used to interrupt the select call. A single
- // byte may be written to this to wake up the select which is waiting for the
- // other end to become readable.
- int write_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/pipe_select_interrupter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_HAS_EVENTFD)
-#endif // !defined(__SYMBIAN32__)
-#endif // !defined(__CYGWIN__)
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#endif // !defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pop_options.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pop_options.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pop_options.hpp
deleted file mode 100644
index acc5863..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/pop_options.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// detail/pop_options.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)
-//
-
-// No header guard
-
-#if defined(__COMO__)
-
-// Comeau C++
-
-#elif defined(__DMC__)
-
-// Digital Mars C++
-
-#elif defined(__INTEL_COMPILER) || defined(__ICL) \
- || defined(__ICC) || defined(__ECC)
-
-// Intel C++
-
-#elif defined(__GNUC__)
-
-// GNU C++
-
-# if defined(__MINGW32__) || defined(__CYGWIN__)
-# pragma pack (pop)
-# endif
-
-# if defined(__OBJC__)
-# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
-# if defined(ASIO_OBJC_WORKAROUND)
-# undef Protocol
-# undef id
-# undef ASIO_OBJC_WORKAROUND
-# endif
-# endif
-# endif
-
-#elif defined(__KCC)
-
-// Kai C++
-
-#elif defined(__sgi)
-
-// SGI MIPSpro C++
-
-#elif defined(__DECCXX)
-
-// Compaq Tru64 Unix cxx
-
-#elif defined(__ghs)
-
-// Greenhills C++
-
-#elif defined(__BORLANDC__)
-
-// Borland C++
-
-# pragma option pop
-# pragma nopushoptwarn
-# pragma nopackwarning
-
-#elif defined(__MWERKS__)
-
-// Metrowerks CodeWarrior
-
-#elif defined(__SUNPRO_CC)
-
-// Sun Workshop Compiler C++
-
-#elif defined(__HP_aCC)
-
-// HP aCC
-
-#elif defined(__MRC__) || defined(__SC__)
-
-// MPW MrCpp or SCpp
-
-#elif defined(__IBMCPP__)
-
-// IBM Visual Age
-
-#elif defined(_MSC_VER)
-
-// Microsoft Visual C++
-//
-// Must remain the last #elif since some other vendors (Metrowerks, for example)
-// also #define _MSC_VER
-
-# pragma warning (pop)
-# pragma pack (pop)
-
-# if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
-# if defined(ASIO_CLR_WORKAROUND)
-# undef generic
-# undef ASIO_CLR_WORKAROUND
-# endif
-# endif
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_event.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_event.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_event.hpp
deleted file mode 100644
index 14ec89d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_event.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// detail/posix_event.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_DETAIL_POSIX_EVENT_HPP
-#define ASIO_DETAIL_POSIX_EVENT_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_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class posix_event
- : private noncopyable
-{
-public:
- // Constructor.
- ASIO_DECL posix_event();
-
- // Destructor.
- ~posix_event()
- {
- ::pthread_cond_destroy(&cond_);
- }
-
- // Signal the event. (Retained for backward compatibility.)
- template <typename Lock>
- void signal(Lock& lock)
- {
- this->signal_all(lock);
- }
-
- // Signal all waiters.
- template <typename Lock>
- void signal_all(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- (void)lock;
- state_ |= 1;
- ::pthread_cond_broadcast(&cond_); // Ignore EINVAL.
- }
-
- // Unlock the mutex and signal one waiter.
- template <typename Lock>
- void unlock_and_signal_one(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- state_ |= 1;
- bool have_waiters = (state_ > 1);
- lock.unlock();
- if (have_waiters)
- ::pthread_cond_signal(&cond_); // Ignore EINVAL.
- }
-
- // If there's a waiter, unlock the mutex and signal it.
- template <typename Lock>
- bool maybe_unlock_and_signal_one(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- state_ |= 1;
- if (state_ > 1)
- {
- lock.unlock();
- ::pthread_cond_signal(&cond_); // Ignore EINVAL.
- return true;
- }
- return false;
- }
-
- // Reset the event.
- template <typename Lock>
- void clear(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- (void)lock;
- state_ &= ~std::size_t(1);
- }
-
- // Wait for the event to become signalled.
- template <typename Lock>
- void wait(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- while ((state_ & 1) == 0)
- {
- state_ += 2;
- ::pthread_cond_wait(&cond_, &lock.mutex().mutex_); // Ignore EINVAL.
- state_ -= 2;
- }
- }
-
-private:
- ::pthread_cond_t cond_;
- std::size_t state_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_event.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_EVENT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_fd_set_adapter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_fd_set_adapter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_fd_set_adapter.hpp
deleted file mode 100644
index e91c38d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_fd_set_adapter.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/posix_fd_set_adapter.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_DETAIL_POSIX_FD_SET_ADAPTER_HPP
-#define ASIO_DETAIL_POSIX_FD_SET_ADAPTER_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_WINDOWS) \
- && !defined(__CYGWIN__) \
- && !defined(ASIO_WINDOWS_RUNTIME)
-
-#include <cstring>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements.
-class posix_fd_set_adapter : noncopyable
-{
-public:
- posix_fd_set_adapter()
- : max_descriptor_(invalid_socket)
- {
- using namespace std; // Needed for memset on Solaris.
- FD_ZERO(&fd_set_);
- }
-
- void reset()
- {
- using namespace std; // Needed for memset on Solaris.
- FD_ZERO(&fd_set_);
- }
-
- bool set(socket_type descriptor)
- {
- if (descriptor < (socket_type)FD_SETSIZE)
- {
- if (max_descriptor_ == invalid_socket || descriptor > max_descriptor_)
- max_descriptor_ = descriptor;
- FD_SET(descriptor, &fd_set_);
- return true;
- }
- return false;
- }
-
- void set(reactor_op_queue<socket_type>& operations, op_queue<operation>& ops)
- {
- reactor_op_queue<socket_type>::iterator i = operations.begin();
- while (i != operations.end())
- {
- reactor_op_queue<socket_type>::iterator op_iter = i++;
- if (!set(op_iter->first))
- {
- asio::error_code ec(error::fd_set_failure);
- operations.cancel_operations(op_iter, ops, ec);
- }
- }
- }
-
- bool is_set(socket_type descriptor) const
- {
- return FD_ISSET(descriptor, &fd_set_) != 0;
- }
-
- operator fd_set*()
- {
- return &fd_set_;
- }
-
- socket_type max_descriptor() const
- {
- return max_descriptor_;
- }
-
- void perform(reactor_op_queue<socket_type>& operations,
- op_queue<operation>& ops) const
- {
- reactor_op_queue<socket_type>::iterator i = operations.begin();
- while (i != operations.end())
- {
- reactor_op_queue<socket_type>::iterator op_iter = i++;
- if (is_set(op_iter->first))
- operations.perform_operations(op_iter, ops);
- }
- }
-
-private:
- mutable fd_set fd_set_;
- socket_type max_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(__CYGWIN__)
- // && !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_mutex.hpp
deleted file mode 100644
index 185a207..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_mutex.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/posix_mutex.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_DETAIL_POSIX_MUTEX_HPP
-#define ASIO_DETAIL_POSIX_MUTEX_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_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class posix_event;
-
-class posix_mutex
- : private noncopyable
-{
-public:
- typedef asio::detail::scoped_lock<posix_mutex> scoped_lock;
-
- // Constructor.
- ASIO_DECL posix_mutex();
-
- // Destructor.
- ~posix_mutex()
- {
- ::pthread_mutex_destroy(&mutex_); // Ignore EBUSY.
- }
-
- // Lock the mutex.
- void lock()
- {
- (void)::pthread_mutex_lock(&mutex_); // Ignore EINVAL.
- }
-
- // Unlock the mutex.
- void unlock()
- {
- (void)::pthread_mutex_unlock(&mutex_); // Ignore EINVAL.
- }
-
-private:
- friend class posix_event;
- ::pthread_mutex_t mutex_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_mutex.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_signal_blocker.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_signal_blocker.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_signal_blocker.hpp
deleted file mode 100644
index 8556183..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_signal_blocker.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// detail/posix_signal_blocker.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_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
-#define ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_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_HAS_PTHREADS)
-
-#include <csignal>
-#include <pthread.h>
-#include <signal.h>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class posix_signal_blocker
- : private noncopyable
-{
-public:
- // Constructor blocks all signals for the calling thread.
- posix_signal_blocker()
- : blocked_(false)
- {
- sigset_t new_mask;
- sigfillset(&new_mask);
- blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0);
- }
-
- // Destructor restores the previous signal mask.
- ~posix_signal_blocker()
- {
- if (blocked_)
- pthread_sigmask(SIG_SETMASK, &old_mask_, 0);
- }
-
- // Block all signals for the calling thread.
- void block()
- {
- if (!blocked_)
- {
- sigset_t new_mask;
- sigfillset(&new_mask);
- blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0);
- }
- }
-
- // Restore the previous signal mask.
- void unblock()
- {
- if (blocked_)
- blocked_ = (pthread_sigmask(SIG_SETMASK, &old_mask_, 0) != 0);
- }
-
-private:
- // Have signals been blocked.
- bool blocked_;
-
- // The previous signal mask.
- sigset_t old_mask_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_static_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_static_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_static_mutex.hpp
deleted file mode 100644
index cfb59ca..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_static_mutex.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// detail/posix_static_mutex.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_DETAIL_POSIX_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_POSIX_STATIC_MUTEX_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_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct posix_static_mutex
-{
- typedef asio::detail::scoped_lock<posix_static_mutex> scoped_lock;
-
- // Initialise the mutex.
- void init()
- {
- // Nothing to do.
- }
-
- // Lock the mutex.
- void lock()
- {
- (void)::pthread_mutex_lock(&mutex_); // Ignore EINVAL.
- }
-
- // Unlock the mutex.
- void unlock()
- {
- (void)::pthread_mutex_unlock(&mutex_); // Ignore EINVAL.
- }
-
- ::pthread_mutex_t mutex_;
-};
-
-#define ASIO_POSIX_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER }
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_thread.hpp
deleted file mode 100644
index d09a573..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_thread.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// detail/posix_thread.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_DETAIL_POSIX_THREAD_HPP
-#define ASIO_DETAIL_POSIX_THREAD_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_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-extern "C"
-{
- ASIO_DECL void* asio_detail_posix_thread_function(void* arg);
-}
-
-class posix_thread
- : private noncopyable
-{
-public:
- // Constructor.
- template <typename Function>
- posix_thread(Function f, unsigned int = 0)
- : joined_(false)
- {
- start_thread(new func<Function>(f));
- }
-
- // Destructor.
- ASIO_DECL ~posix_thread();
-
- // Wait for the thread to exit.
- ASIO_DECL void join();
-
-private:
- friend void* asio_detail_posix_thread_function(void* arg);
-
- class func_base
- {
- public:
- virtual ~func_base() {}
- virtual void run() = 0;
- };
-
- struct auto_func_base_ptr
- {
- func_base* ptr;
- ~auto_func_base_ptr() { delete ptr; }
- };
-
- template <typename Function>
- class func
- : public func_base
- {
- public:
- func(Function f)
- : f_(f)
- {
- }
-
- virtual void run()
- {
- f_();
- }
-
- private:
- Function f_;
- };
-
- ASIO_DECL void start_thread(func_base* arg);
-
- ::pthread_t thread_;
- bool joined_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_thread.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_THREAD_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[23/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_socket_service_base.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_socket_service_base.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_socket_service_base.ipp
deleted file mode 100644
index 85d7545..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_iocp_socket_service_base.ipp
+++ /dev/null
@@ -1,728 +0,0 @@
-//
-// detail/impl/win_iocp_socket_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/win_iocp_socket_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_iocp_socket_service_base::win_iocp_socket_service_base(
- asio::io_service& io_service)
- : io_service_(io_service),
- iocp_service_(use_service<win_iocp_io_service>(io_service)),
- reactor_(0),
- connect_ex_(0),
- mutex_(),
- impl_list_(0)
-{
-}
-
-void win_iocp_socket_service_base::shutdown_service()
-{
- // Close all implementations, causing all operations to complete.
- asio::detail::mutex::scoped_lock lock(mutex_);
- base_implementation_type* impl = impl_list_;
- while (impl)
- {
- asio::error_code ignored_ec;
- close_for_destruction(*impl);
- impl = impl->next_;
- }
-}
-
-void win_iocp_socket_service_base::construct(
- win_iocp_socket_service_base::base_implementation_type& impl)
-{
- impl.socket_ = invalid_socket;
- impl.state_ = 0;
- impl.cancel_token_.reset();
-#if defined(ASIO_ENABLE_CANCELIO)
- impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
-}
-
-void win_iocp_socket_service_base::base_move_construct(
- win_iocp_socket_service_base::base_implementation_type& impl,
- win_iocp_socket_service_base::base_implementation_type& other_impl)
-{
- impl.socket_ = other_impl.socket_;
- other_impl.socket_ = invalid_socket;
-
- impl.state_ = other_impl.state_;
- other_impl.state_ = 0;
-
- impl.cancel_token_ = other_impl.cancel_token_;
- other_impl.cancel_token_.reset();
-
-#if defined(ASIO_ENABLE_CANCELIO)
- impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
- other_impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
-}
-
-void win_iocp_socket_service_base::base_move_assign(
- win_iocp_socket_service_base::base_implementation_type& impl,
- win_iocp_socket_service_base& other_service,
- win_iocp_socket_service_base::base_implementation_type& other_impl)
-{
- close_for_destruction(impl);
-
- if (this != &other_service)
- {
- // Remove implementation from linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
- }
-
- impl.socket_ = other_impl.socket_;
- other_impl.socket_ = invalid_socket;
-
- impl.state_ = other_impl.state_;
- other_impl.state_ = 0;
-
- impl.cancel_token_ = other_impl.cancel_token_;
- other_impl.cancel_token_.reset();
-
-#if defined(ASIO_ENABLE_CANCELIO)
- impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
- other_impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
- if (this != &other_service)
- {
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(other_service.mutex_);
- impl.next_ = other_service.impl_list_;
- impl.prev_ = 0;
- if (other_service.impl_list_)
- other_service.impl_list_->prev_ = &impl;
- other_service.impl_list_ = &impl;
- }
-}
-
-void win_iocp_socket_service_base::destroy(
- win_iocp_socket_service_base::base_implementation_type& impl)
-{
- close_for_destruction(impl);
-
- // Remove implementation from linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
-}
-
-asio::error_code win_iocp_socket_service_base::close(
- win_iocp_socket_service_base::base_implementation_type& impl,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
- // Check if the reactor was created, in which case we need to close the
- // socket on the reactor as well to cancel any operations that might be
- // running there.
- reactor* r = static_cast<reactor*>(
- interlocked_compare_exchange_pointer(
- reinterpret_cast<void**>(&reactor_), 0, 0));
- if (r)
- r->deregister_descriptor(impl.socket_, impl.reactor_data_, true);
- }
-
- socket_ops::close(impl.socket_, impl.state_, false, ec);
-
- impl.socket_ = invalid_socket;
- impl.state_ = 0;
- impl.cancel_token_.reset();
-#if defined(ASIO_ENABLE_CANCELIO)
- impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
- return ec;
-}
-
-asio::error_code win_iocp_socket_service_base::cancel(
- win_iocp_socket_service_base::base_implementation_type& impl,
- asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return ec;
- }
-
- ASIO_HANDLER_OPERATION(("socket", &impl, "cancel"));
-
- if (FARPROC cancel_io_ex_ptr = ::GetProcAddress(
- ::GetModuleHandleA("KERNEL32"), "CancelIoEx"))
- {
- // The version of Windows supports cancellation from any thread.
- typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED);
- cancel_io_ex_t cancel_io_ex = (cancel_io_ex_t)cancel_io_ex_ptr;
- socket_type sock = impl.socket_;
- HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock);
- if (!cancel_io_ex(sock_as_handle, 0))
- {
- DWORD last_error = ::GetLastError();
- if (last_error == ERROR_NOT_FOUND)
- {
- // ERROR_NOT_FOUND means that there were no operations to be
- // cancelled. We swallow this error to match the behaviour on other
- // platforms.
- ec = asio::error_code();
- }
- else
- {
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- }
- else
- {
- ec = asio::error_code();
- }
- }
-#if defined(ASIO_ENABLE_CANCELIO)
- else if (impl.safe_cancellation_thread_id_ == 0)
- {
- // No operations have been started, so there's nothing to cancel.
- ec = asio::error_code();
- }
- else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId())
- {
- // Asynchronous operations have been started from the current thread only,
- // so it is safe to try to cancel them using CancelIo.
- socket_type sock = impl.socket_;
- HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock);
- if (!::CancelIo(sock_as_handle))
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
- else
- {
- ec = asio::error_code();
- }
- }
- else
- {
- // Asynchronous operations have been started from more than one thread,
- // so cancellation is not safe.
- ec = asio::error::operation_not_supported;
- }
-#else // defined(ASIO_ENABLE_CANCELIO)
- else
- {
- // Cancellation is not supported as CancelIo may not be used.
- ec = asio::error::operation_not_supported;
- }
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
- // Cancel any operations started via the reactor.
- if (!ec)
- {
- reactor* r = static_cast<reactor*>(
- interlocked_compare_exchange_pointer(
- reinterpret_cast<void**>(&reactor_), 0, 0));
- if (r)
- r->cancel_ops(impl.socket_, impl.reactor_data_);
- }
-
- return ec;
-}
-
-asio::error_code win_iocp_socket_service_base::do_open(
- win_iocp_socket_service_base::base_implementation_type& impl,
- int family, int type, int protocol, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- socket_holder sock(socket_ops::socket(family, type, protocol, ec));
- if (sock.get() == invalid_socket)
- return ec;
-
- HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock.get());
- if (iocp_service_.register_handle(sock_as_handle, ec))
- return ec;
-
- impl.socket_ = sock.release();
- switch (type)
- {
- case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
- case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
- default: impl.state_ = 0; break;
- }
- impl.cancel_token_.reset(static_cast<void*>(0), socket_ops::noop_deleter());
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code win_iocp_socket_service_base::do_assign(
- win_iocp_socket_service_base::base_implementation_type& impl,
- int type, socket_type native_socket, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- HANDLE sock_as_handle = reinterpret_cast<HANDLE>(native_socket);
- if (iocp_service_.register_handle(sock_as_handle, ec))
- return ec;
-
- impl.socket_ = native_socket;
- switch (type)
- {
- case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
- case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
- default: impl.state_ = 0; break;
- }
- impl.cancel_token_.reset(static_cast<void*>(0), socket_ops::noop_deleter());
- ec = asio::error_code();
- return ec;
-}
-
-void win_iocp_socket_service_base::start_send_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count,
- socket_base::message_flags flags, bool noop, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (noop)
- iocp_service_.on_completion(op);
- else if (!is_open(impl))
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- else
- {
- DWORD bytes_transferred = 0;
- int result = ::WSASend(impl.socket_, buffers,
- static_cast<DWORD>(buffer_count), &bytes_transferred, flags, op, 0);
- DWORD last_error = ::WSAGetLastError();
- if (last_error == ERROR_PORT_UNREACHABLE)
- last_error = WSAECONNREFUSED;
- if (result != 0 && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error, bytes_transferred);
- else
- iocp_service_.on_pending(op);
- }
-}
-
-void win_iocp_socket_service_base::start_send_to_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count,
- const socket_addr_type* addr, int addrlen,
- socket_base::message_flags flags, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (!is_open(impl))
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- else
- {
- DWORD bytes_transferred = 0;
- int result = ::WSASendTo(impl.socket_, buffers,
- static_cast<DWORD>(buffer_count),
- &bytes_transferred, flags, addr, addrlen, op, 0);
- DWORD last_error = ::WSAGetLastError();
- if (last_error == ERROR_PORT_UNREACHABLE)
- last_error = WSAECONNREFUSED;
- if (result != 0 && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error, bytes_transferred);
- else
- iocp_service_.on_pending(op);
- }
-}
-
-void win_iocp_socket_service_base::start_receive_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count,
- socket_base::message_flags flags, bool noop, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (noop)
- iocp_service_.on_completion(op);
- else if (!is_open(impl))
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- else
- {
- DWORD bytes_transferred = 0;
- DWORD recv_flags = flags;
- int result = ::WSARecv(impl.socket_, buffers,
- static_cast<DWORD>(buffer_count),
- &bytes_transferred, &recv_flags, op, 0);
- DWORD last_error = ::WSAGetLastError();
- if (last_error == ERROR_NETNAME_DELETED)
- last_error = WSAECONNRESET;
- else if (last_error == ERROR_PORT_UNREACHABLE)
- last_error = WSAECONNREFUSED;
- if (result != 0 && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error, bytes_transferred);
- else
- iocp_service_.on_pending(op);
- }
-}
-
-void win_iocp_socket_service_base::start_null_buffers_receive_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- socket_base::message_flags flags, reactor_op* op)
-{
- if ((impl.state_ & socket_ops::stream_oriented) != 0)
- {
- // For stream sockets on Windows, we may issue a 0-byte overlapped
- // WSARecv to wait until there is data available on the socket.
- ::WSABUF buf = { 0, 0 };
- start_receive_op(impl, &buf, 1, flags, false, op);
- }
- else
- {
- start_reactor_op(impl,
- (flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- op);
- }
-}
-
-void win_iocp_socket_service_base::start_receive_from_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- WSABUF* buffers, std::size_t buffer_count, socket_addr_type* addr,
- socket_base::message_flags flags, int* addrlen, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (!is_open(impl))
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- else
- {
- DWORD bytes_transferred = 0;
- DWORD recv_flags = flags;
- int result = ::WSARecvFrom(impl.socket_, buffers,
- static_cast<DWORD>(buffer_count),
- &bytes_transferred, &recv_flags, addr, addrlen, op, 0);
- DWORD last_error = ::WSAGetLastError();
- if (last_error == ERROR_PORT_UNREACHABLE)
- last_error = WSAECONNREFUSED;
- if (result != 0 && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error, bytes_transferred);
- else
- iocp_service_.on_pending(op);
- }
-}
-
-void win_iocp_socket_service_base::start_accept_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- bool peer_is_open, socket_holder& new_socket, int family, int type,
- int protocol, void* output_buffer, DWORD address_length, operation* op)
-{
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- if (!is_open(impl))
- iocp_service_.on_completion(op, asio::error::bad_descriptor);
- else if (peer_is_open)
- iocp_service_.on_completion(op, asio::error::already_open);
- else
- {
- asio::error_code ec;
- new_socket.reset(socket_ops::socket(family, type, protocol, ec));
- if (new_socket.get() == invalid_socket)
- iocp_service_.on_completion(op, ec);
- else
- {
- DWORD bytes_read = 0;
- BOOL result = ::AcceptEx(impl.socket_, new_socket.get(), output_buffer,
- 0, address_length, address_length, &bytes_read, op);
- DWORD last_error = ::WSAGetLastError();
- if (!result && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error);
- else
- iocp_service_.on_pending(op);
- }
- }
-}
-
-void win_iocp_socket_service_base::restart_accept_op(
- socket_type s, socket_holder& new_socket, int family, int type,
- int protocol, void* output_buffer, DWORD address_length, operation* op)
-{
- new_socket.reset();
- iocp_service_.work_started();
-
- asio::error_code ec;
- new_socket.reset(socket_ops::socket(family, type, protocol, ec));
- if (new_socket.get() == invalid_socket)
- iocp_service_.on_completion(op, ec);
- else
- {
- DWORD bytes_read = 0;
- BOOL result = ::AcceptEx(s, new_socket.get(), output_buffer,
- 0, address_length, address_length, &bytes_read, op);
- DWORD last_error = ::WSAGetLastError();
- if (!result && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error);
- else
- iocp_service_.on_pending(op);
- }
-}
-
-void win_iocp_socket_service_base::start_reactor_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- int op_type, reactor_op* op)
-{
- reactor& r = get_reactor();
- update_cancellation_thread_id(impl);
-
- if (is_open(impl))
- {
- r.start_op(op_type, impl.socket_, impl.reactor_data_, op, false, false);
- return;
- }
- else
- op->ec_ = asio::error::bad_descriptor;
-
- iocp_service_.post_immediate_completion(op, false);
-}
-
-void win_iocp_socket_service_base::start_connect_op(
- win_iocp_socket_service_base::base_implementation_type& impl,
- int family, int type, const socket_addr_type* addr,
- std::size_t addrlen, win_iocp_socket_connect_op_base* op)
-{
- // If ConnectEx is available, use that.
- if (family == ASIO_OS_DEF(AF_INET)
- || family == ASIO_OS_DEF(AF_INET6))
- {
- if (connect_ex_fn connect_ex = get_connect_ex(impl, type))
- {
- union address_union
- {
- socket_addr_type base;
- sockaddr_in4_type v4;
- sockaddr_in6_type v6;
- } a;
-
- using namespace std; // For memset.
- memset(&a, 0, sizeof(a));
- a.base.sa_family = family;
-
- socket_ops::bind(impl.socket_, &a.base,
- family == ASIO_OS_DEF(AF_INET)
- ? sizeof(a.v4) : sizeof(a.v6), op->ec_);
- if (op->ec_ && op->ec_ != asio::error::invalid_argument)
- {
- iocp_service_.post_immediate_completion(op, false);
- return;
- }
-
- op->connect_ex_ = true;
- update_cancellation_thread_id(impl);
- iocp_service_.work_started();
-
- BOOL result = connect_ex(impl.socket_,
- addr, static_cast<int>(addrlen), 0, 0, 0, op);
- DWORD last_error = ::WSAGetLastError();
- if (!result && last_error != WSA_IO_PENDING)
- iocp_service_.on_completion(op, last_error);
- else
- iocp_service_.on_pending(op);
- return;
- }
- }
-
- // Otherwise, fall back to a reactor-based implementation.
- reactor& r = get_reactor();
- update_cancellation_thread_id(impl);
-
- if ((impl.state_ & socket_ops::non_blocking) != 0
- || socket_ops::set_internal_non_blocking(
- impl.socket_, impl.state_, true, op->ec_))
- {
- if (socket_ops::connect(impl.socket_, addr, addrlen, op->ec_) != 0)
- {
- if (op->ec_ == asio::error::in_progress
- || op->ec_ == asio::error::would_block)
- {
- op->ec_ = asio::error_code();
- r.start_op(reactor::connect_op, impl.socket_,
- impl.reactor_data_, op, false, false);
- return;
- }
- }
- }
-
- r.post_immediate_completion(op, false);
-}
-
-void win_iocp_socket_service_base::close_for_destruction(
- win_iocp_socket_service_base::base_implementation_type& impl)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
- // Check if the reactor was created, in which case we need to close the
- // socket on the reactor as well to cancel any operations that might be
- // running there.
- reactor* r = static_cast<reactor*>(
- interlocked_compare_exchange_pointer(
- reinterpret_cast<void**>(&reactor_), 0, 0));
- if (r)
- r->deregister_descriptor(impl.socket_, impl.reactor_data_, true);
- }
-
- asio::error_code ignored_ec;
- socket_ops::close(impl.socket_, impl.state_, true, ignored_ec);
- impl.socket_ = invalid_socket;
- impl.state_ = 0;
- impl.cancel_token_.reset();
-#if defined(ASIO_ENABLE_CANCELIO)
- impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-}
-
-void win_iocp_socket_service_base::update_cancellation_thread_id(
- win_iocp_socket_service_base::base_implementation_type& impl)
-{
-#if defined(ASIO_ENABLE_CANCELIO)
- if (impl.safe_cancellation_thread_id_ == 0)
- impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
- else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
- impl.safe_cancellation_thread_id_ = ~DWORD(0);
-#else // defined(ASIO_ENABLE_CANCELIO)
- (void)impl;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-}
-
-reactor& win_iocp_socket_service_base::get_reactor()
-{
- reactor* r = static_cast<reactor*>(
- interlocked_compare_exchange_pointer(
- reinterpret_cast<void**>(&reactor_), 0, 0));
- if (!r)
- {
- r = &(use_service<reactor>(io_service_));
- interlocked_exchange_pointer(reinterpret_cast<void**>(&reactor_), r);
- }
- return *r;
-}
-
-win_iocp_socket_service_base::connect_ex_fn
-win_iocp_socket_service_base::get_connect_ex(
- win_iocp_socket_service_base::base_implementation_type& impl, int type)
-{
- if (type != ASIO_OS_DEF(SOCK_STREAM)
- && type != ASIO_OS_DEF(SOCK_SEQPACKET))
- return 0;
-
- void* ptr = interlocked_compare_exchange_pointer(&connect_ex_, 0, 0);
- if (!ptr)
- {
- GUID guid = { 0x25a207b9, 0xddf3, 0x4660,
- { 0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e } };
-
- DWORD bytes = 0;
- if (::WSAIoctl(impl.socket_, SIO_GET_EXTENSION_FUNCTION_POINTER,
- &guid, sizeof(guid), &ptr, sizeof(ptr), &bytes, 0, 0) != 0)
- {
- // Set connect_ex_ to a special value to indicate that ConnectEx is
- // unavailable. That way we won't bother trying to look it up again.
- ptr = this;
- }
-
- interlocked_exchange_pointer(&connect_ex_, ptr);
- }
-
- return reinterpret_cast<connect_ex_fn>(ptr == this ? 0 : ptr);
-}
-
-void* win_iocp_socket_service_base::interlocked_compare_exchange_pointer(
- void** dest, void* exch, void* cmp)
-{
-#if defined(_M_IX86)
- return reinterpret_cast<void*>(InterlockedCompareExchange(
- reinterpret_cast<PLONG>(dest), reinterpret_cast<LONG>(exch),
- reinterpret_cast<LONG>(cmp)));
-#else
- return InterlockedCompareExchangePointer(dest, exch, cmp);
-#endif
-}
-
-void* win_iocp_socket_service_base::interlocked_exchange_pointer(
- void** dest, void* val)
-{
-#if defined(_M_IX86)
- return reinterpret_cast<void*>(InterlockedExchange(
- reinterpret_cast<PLONG>(dest), reinterpret_cast<LONG>(val)));
-#else
- return InterlockedExchangePointer(dest, val);
-#endif
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_mutex.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_mutex.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_mutex.ipp
deleted file mode 100644
index 18ce17d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_mutex.ipp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/impl/win_mutex.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_MUTEX_IPP
-#define ASIO_DETAIL_IMPL_WIN_MUTEX_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_mutex.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_mutex::win_mutex()
-{
- int error = do_init();
- asio::error_code ec(error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "mutex");
-}
-
-int win_mutex::do_init()
-{
-#if defined(__MINGW32__)
- // Not sure if MinGW supports structured exception handling, so for now
- // we'll just call the Windows API and hope.
-# if defined(UNDER_CE)
- ::InitializeCriticalSection(&crit_section_);
-# else
- if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
- return ::GetLastError();
-# endif
- return 0;
-#else
- __try
- {
-# if defined(UNDER_CE)
- ::InitializeCriticalSection(&crit_section_);
-# else
- if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
- return ::GetLastError();
-# endif
- }
- __except(GetExceptionCode() == STATUS_NO_MEMORY
- ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
- {
- return ERROR_OUTOFMEMORY;
- }
-
- return 0;
-#endif
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_MUTEX_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_object_handle_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_object_handle_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_object_handle_service.ipp
deleted file mode 100644
index 7a7d430..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_object_handle_service.ipp
+++ /dev/null
@@ -1,444 +0,0 @@
-//
-// detail/impl/win_object_handle_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// 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_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#include "asio/detail/win_object_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_object_handle_service::win_object_handle_service(
- asio::io_service& io_service)
- : io_service_(asio::use_service<io_service_impl>(io_service)),
- mutex_(),
- impl_list_(0),
- shutdown_(false)
-{
-}
-
-void win_object_handle_service::shutdown_service()
-{
- mutex::scoped_lock lock(mutex_);
-
- // Setting this flag to true prevents new objects from being registered, and
- // new asynchronous wait operations from being started. We only need to worry
- // about cleaning up the operations that are currently in progress.
- shutdown_ = true;
-
- op_queue<operation> ops;
- for (implementation_type* impl = impl_list_; impl; impl = impl->next_)
- ops.push(impl->op_queue_);
-
- lock.unlock();
-
- io_service_.abandon_operations(ops);
-}
-
-void win_object_handle_service::construct(
- win_object_handle_service::implementation_type& impl)
-{
- impl.handle_ = INVALID_HANDLE_VALUE;
- impl.wait_handle_ = INVALID_HANDLE_VALUE;
- impl.owner_ = this;
-
- // Insert implementation into linked list of all implementations.
- mutex::scoped_lock lock(mutex_);
- if (!shutdown_)
- {
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
- }
-}
-
-void win_object_handle_service::move_construct(
- win_object_handle_service::implementation_type& impl,
- win_object_handle_service::implementation_type& other_impl)
-{
- mutex::scoped_lock lock(mutex_);
-
- // Insert implementation into linked list of all implementations.
- if (!shutdown_)
- {
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
- }
-
- impl.handle_ = other_impl.handle_;
- other_impl.handle_ = INVALID_HANDLE_VALUE;
- impl.wait_handle_ = other_impl.wait_handle_;
- other_impl.wait_handle_ = INVALID_HANDLE_VALUE;
- impl.op_queue_.push(other_impl.op_queue_);
- impl.owner_ = this;
-
- // We must not hold the lock while calling UnregisterWaitEx. This is because
- // the registered callback function might be invoked while we are waiting for
- // UnregisterWaitEx to complete.
- lock.unlock();
-
- if (impl.wait_handle_ != INVALID_HANDLE_VALUE)
- ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE);
-
- if (!impl.op_queue_.empty())
- register_wait_callback(impl, lock);
-}
-
-void win_object_handle_service::move_assign(
- win_object_handle_service::implementation_type& impl,
- win_object_handle_service& other_service,
- win_object_handle_service::implementation_type& other_impl)
-{
- asio::error_code ignored_ec;
- close(impl, ignored_ec);
-
- mutex::scoped_lock lock(mutex_);
-
- if (this != &other_service)
- {
- // Remove implementation from linked list of all implementations.
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
- }
-
- impl.handle_ = other_impl.handle_;
- other_impl.handle_ = INVALID_HANDLE_VALUE;
- impl.wait_handle_ = other_impl.wait_handle_;
- other_impl.wait_handle_ = INVALID_HANDLE_VALUE;
- impl.op_queue_.push(other_impl.op_queue_);
- impl.owner_ = this;
-
- if (this != &other_service)
- {
- // Insert implementation into linked list of all implementations.
- impl.next_ = other_service.impl_list_;
- impl.prev_ = 0;
- if (other_service.impl_list_)
- other_service.impl_list_->prev_ = &impl;
- other_service.impl_list_ = &impl;
- }
-
- // We must not hold the lock while calling UnregisterWaitEx. This is because
- // the registered callback function might be invoked while we are waiting for
- // UnregisterWaitEx to complete.
- lock.unlock();
-
- if (impl.wait_handle_ != INVALID_HANDLE_VALUE)
- ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE);
-
- if (!impl.op_queue_.empty())
- register_wait_callback(impl, lock);
-}
-
-void win_object_handle_service::destroy(
- win_object_handle_service::implementation_type& impl)
-{
- mutex::scoped_lock lock(mutex_);
-
- // Remove implementation from linked list of all implementations.
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
-
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("object_handle", &impl, "close"));
-
- HANDLE wait_handle = impl.wait_handle_;
- impl.wait_handle_ = INVALID_HANDLE_VALUE;
-
- op_queue<operation> ops;
- while (wait_op* op = impl.op_queue_.front())
- {
- op->ec_ = asio::error::operation_aborted;
- impl.op_queue_.pop();
- ops.push(op);
- }
-
- // We must not hold the lock while calling UnregisterWaitEx. This is
- // because the registered callback function might be invoked while we are
- // waiting for UnregisterWaitEx to complete.
- lock.unlock();
-
- if (wait_handle != INVALID_HANDLE_VALUE)
- ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE);
-
- ::CloseHandle(impl.handle_);
- impl.handle_ = INVALID_HANDLE_VALUE;
-
- io_service_.post_deferred_completions(ops);
- }
-}
-
-asio::error_code win_object_handle_service::assign(
- win_object_handle_service::implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- impl.handle_ = handle;
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code win_object_handle_service::close(
- win_object_handle_service::implementation_type& impl,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("object_handle", &impl, "close"));
-
- mutex::scoped_lock lock(mutex_);
-
- HANDLE wait_handle = impl.wait_handle_;
- impl.wait_handle_ = INVALID_HANDLE_VALUE;
-
- op_queue<operation> completed_ops;
- while (wait_op* op = impl.op_queue_.front())
- {
- impl.op_queue_.pop();
- op->ec_ = asio::error::operation_aborted;
- completed_ops.push(op);
- }
-
- // We must not hold the lock while calling UnregisterWaitEx. This is
- // because the registered callback function might be invoked while we are
- // waiting for UnregisterWaitEx to complete.
- lock.unlock();
-
- if (wait_handle != INVALID_HANDLE_VALUE)
- ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE);
-
- if (::CloseHandle(impl.handle_))
- {
- impl.handle_ = INVALID_HANDLE_VALUE;
- ec = asio::error_code();
- }
- else
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- }
-
- io_service_.post_deferred_completions(completed_ops);
- }
- else
- {
- ec = asio::error_code();
- }
-
- return ec;
-}
-
-asio::error_code win_object_handle_service::cancel(
- win_object_handle_service::implementation_type& impl,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("object_handle", &impl, "cancel"));
-
- mutex::scoped_lock lock(mutex_);
-
- HANDLE wait_handle = impl.wait_handle_;
- impl.wait_handle_ = INVALID_HANDLE_VALUE;
-
- op_queue<operation> completed_ops;
- while (wait_op* op = impl.op_queue_.front())
- {
- op->ec_ = asio::error::operation_aborted;
- impl.op_queue_.pop();
- completed_ops.push(op);
- }
-
- // We must not hold the lock while calling UnregisterWaitEx. This is
- // because the registered callback function might be invoked while we are
- // waiting for UnregisterWaitEx to complete.
- lock.unlock();
-
- if (wait_handle != INVALID_HANDLE_VALUE)
- ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE);
-
- ec = asio::error_code();
-
- io_service_.post_deferred_completions(completed_ops);
- }
- else
- {
- ec = asio::error::bad_descriptor;
- }
-
- return ec;
-}
-
-void win_object_handle_service::wait(
- win_object_handle_service::implementation_type& impl,
- asio::error_code& ec)
-{
- switch (::WaitForSingleObject(impl.handle_, INFINITE))
- {
- case WAIT_FAILED:
- {
- DWORD last_error = ::GetLastError();
- ec = asio::error_code(last_error,
- asio::error::get_system_category());
- break;
- }
- case WAIT_OBJECT_0:
- case WAIT_ABANDONED:
- default:
- ec = asio::error_code();
- break;
- }
-}
-
-void win_object_handle_service::start_wait_op(
- win_object_handle_service::implementation_type& impl, wait_op* op)
-{
- io_service_.work_started();
-
- if (is_open(impl))
- {
- mutex::scoped_lock lock(mutex_);
-
- if (!shutdown_)
- {
- impl.op_queue_.push(op);
-
- // Only the first operation to be queued gets to register a wait callback.
- // Subsequent operations have to wait for the first to finish.
- if (impl.op_queue_.front() == op)
- register_wait_callback(impl, lock);
- }
- else
- {
- lock.unlock();
- io_service_.post_deferred_completion(op);
- }
- }
- else
- {
- op->ec_ = asio::error::bad_descriptor;
- io_service_.post_deferred_completion(op);
- }
-}
-
-void win_object_handle_service::register_wait_callback(
- win_object_handle_service::implementation_type& impl,
- mutex::scoped_lock& lock)
-{
- lock.lock();
-
- if (!RegisterWaitForSingleObject(&impl.wait_handle_,
- impl.handle_, &win_object_handle_service::wait_callback,
- &impl, INFINITE, WT_EXECUTEONLYONCE))
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
-
- op_queue<operation> completed_ops;
- while (wait_op* op = impl.op_queue_.front())
- {
- op->ec_ = ec;
- impl.op_queue_.pop();
- completed_ops.push(op);
- }
-
- lock.unlock();
- io_service_.post_deferred_completions(completed_ops);
- }
-}
-
-void win_object_handle_service::wait_callback(PVOID param, BOOLEAN)
-{
- implementation_type* impl = static_cast<implementation_type*>(param);
- mutex::scoped_lock lock(impl->owner_->mutex_);
-
- if (impl->wait_handle_ != INVALID_HANDLE_VALUE)
- {
- ::UnregisterWaitEx(impl->wait_handle_, NULL);
- impl->wait_handle_ = INVALID_HANDLE_VALUE;
- }
-
- if (wait_op* op = impl->op_queue_.front())
- {
- op_queue<operation> completed_ops;
-
- op->ec_ = asio::error_code();
- impl->op_queue_.pop();
- completed_ops.push(op);
-
- if (!impl->op_queue_.empty())
- {
- if (!RegisterWaitForSingleObject(&impl->wait_handle_,
- impl->handle_, &win_object_handle_service::wait_callback,
- param, INFINITE, WT_EXECUTEONLYONCE))
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
-
- while (wait_op* op = impl->op_queue_.front())
- {
- op->ec_ = ec;
- impl->op_queue_.pop();
- completed_ops.push(op);
- }
- }
- }
-
- lock.unlock();
- impl->owner_->io_service_.post_deferred_completions(completed_ops);
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#endif // ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_static_mutex.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_static_mutex.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_static_mutex.ipp
deleted file mode 100644
index 366d7cf..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_static_mutex.ipp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/impl/win_static_mutex.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP
-#define ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include <cstdio>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_static_mutex.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void win_static_mutex::init()
-{
- int error = do_init();
- asio::error_code ec(error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "static_mutex");
-}
-
-int win_static_mutex::do_init()
-{
- using namespace std; // For sprintf.
- wchar_t mutex_name[128];
-#if defined(ASIO_HAS_SECURE_RTL)
- swprintf_s(
-#else // defined(ASIO_HAS_SECURE_RTL)
- _snwprintf(
-#endif // defined(ASIO_HAS_SECURE_RTL)
- mutex_name, 128, L"asio-58CCDC44-6264-4842-90C2-F3C545CB8AA7-%u-%p",
- static_cast<unsigned int>(::GetCurrentProcessId()), this);
-
- HANDLE mutex = ::CreateMutexW(0, TRUE, mutex_name);
- DWORD last_error = ::GetLastError();
- if (mutex == 0)
- return ::GetLastError();
-
- if (last_error == ERROR_ALREADY_EXISTS)
- ::WaitForSingleObject(mutex, INFINITE);
-
- if (initialised_)
- {
- ::ReleaseMutex(mutex);
- ::CloseHandle(mutex);
- return 0;
- }
-
-#if defined(__MINGW32__)
- // Not sure if MinGW supports structured exception handling, so for now
- // we'll just call the Windows API and hope.
-# if defined(UNDER_CE)
- ::InitializeCriticalSection(&crit_section_);
-# else
- if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
- {
- last_error = ::GetLastError();
- ::ReleaseMutex(mutex);
- ::CloseHandle(mutex);
- return last_error;
- }
-# endif
-#else
- __try
- {
-# if defined(UNDER_CE)
- ::InitializeCriticalSection(&crit_section_);
-# else
- if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
- {
- last_error = ::GetLastError();
- ::ReleaseMutex(mutex);
- ::CloseHandle(mutex);
- return last_error;
- }
-# endif
- }
- __except(GetExceptionCode() == STATUS_NO_MEMORY
- ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
- {
- ::ReleaseMutex(mutex);
- ::CloseHandle(mutex);
- return ERROR_OUTOFMEMORY;
- }
-#endif
-
- initialised_ = true;
- ::ReleaseMutex(mutex);
- ::CloseHandle(mutex);
- return 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_thread.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_thread.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_thread.ipp
deleted file mode 100644
index 554f9f6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_thread.ipp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// detail/impl/win_thread.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_THREAD_IPP
-#define ASIO_DETAIL_IMPL_WIN_THREAD_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#include <process.h>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_thread.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_thread::~win_thread()
-{
- ::CloseHandle(thread_);
-
- // The exit_event_ handle is deliberately allowed to leak here since it
- // is an error for the owner of an internal thread not to join() it.
-}
-
-void win_thread::join()
-{
- HANDLE handles[2] = { exit_event_, thread_ };
- ::WaitForMultipleObjects(2, handles, FALSE, INFINITE);
- ::CloseHandle(exit_event_);
- if (terminate_threads())
- {
- ::TerminateThread(thread_, 0);
- }
- else
- {
- ::QueueUserAPC(apc_function, thread_, 0);
- ::WaitForSingleObject(thread_, INFINITE);
- }
-}
-
-void win_thread::start_thread(func_base* arg, unsigned int stack_size)
-{
- ::HANDLE entry_event = 0;
- arg->entry_event_ = entry_event = ::CreateEvent(0, true, false, 0);
- if (!entry_event)
- {
- DWORD last_error = ::GetLastError();
- delete arg;
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "thread.entry_event");
- }
-
- arg->exit_event_ = exit_event_ = ::CreateEvent(0, true, false, 0);
- if (!exit_event_)
- {
- DWORD last_error = ::GetLastError();
- delete arg;
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "thread.exit_event");
- }
-
- unsigned int thread_id = 0;
- thread_ = reinterpret_cast<HANDLE>(::_beginthreadex(0,
- stack_size, win_thread_function, arg, 0, &thread_id));
- if (!thread_)
- {
- DWORD last_error = ::GetLastError();
- delete arg;
- if (entry_event)
- ::CloseHandle(entry_event);
- if (exit_event_)
- ::CloseHandle(exit_event_);
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "thread");
- }
-
- if (entry_event)
- {
- ::WaitForSingleObject(entry_event, INFINITE);
- ::CloseHandle(entry_event);
- }
-}
-
-unsigned int __stdcall win_thread_function(void* arg)
-{
- win_thread::auto_func_base_ptr func = {
- static_cast<win_thread::func_base*>(arg) };
-
- ::SetEvent(func.ptr->entry_event_);
-
- func.ptr->run();
-
- // Signal that the thread has finished its work, but rather than returning go
- // to sleep to put the thread into a well known state. If the thread is being
- // joined during global object destruction then it may be killed using
- // TerminateThread (to avoid a deadlock in DllMain). Otherwise, the SleepEx
- // call will be interrupted using QueueUserAPC and the thread will shut down
- // cleanly.
- HANDLE exit_event = func.ptr->exit_event_;
- delete func.ptr;
- func.ptr = 0;
- ::SetEvent(exit_event);
- ::SleepEx(INFINITE, TRUE);
-
- return 0;
-}
-
-#if defined(WINVER) && (WINVER < 0x0500)
-void __stdcall apc_function(ULONG) {}
-#else
-void __stdcall apc_function(ULONG_PTR) {}
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_IMPL_WIN_THREAD_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_tss_ptr.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_tss_ptr.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_tss_ptr.ipp
deleted file mode 100644
index 7fa4c26..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/win_tss_ptr.ipp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// detail/impl/win_tss_ptr.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WIN_TSS_PTR_IPP
-#define ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_tss_ptr.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-DWORD win_tss_ptr_create()
-{
-#if defined(UNDER_CE)
- enum { out_of_indexes = 0xFFFFFFFF };
-#else
- enum { out_of_indexes = TLS_OUT_OF_INDEXES };
-#endif
-
- DWORD tss_key = ::TlsAlloc();
- if (tss_key == out_of_indexes)
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "tss");
- }
- return tss_key;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_ssocket_service_base.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_ssocket_service_base.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_ssocket_service_base.ipp
deleted file mode 100644
index c5aa3f4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_ssocket_service_base.ipp
+++ /dev/null
@@ -1,612 +0,0 @@
-//
-// detail/impl/winrt_ssocket_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <cstring>
-#include "asio/detail/winrt_ssocket_service_base.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/detail/winrt_utils.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-winrt_ssocket_service_base::winrt_ssocket_service_base(
- asio::io_service& io_service)
- : io_service_(use_service<io_service_impl>(io_service)),
- async_manager_(use_service<winrt_async_manager>(io_service)),
- mutex_(),
- impl_list_(0)
-{
-}
-
-void winrt_ssocket_service_base::shutdown_service()
-{
- // Close all implementations, causing all operations to complete.
- asio::detail::mutex::scoped_lock lock(mutex_);
- base_implementation_type* impl = impl_list_;
- while (impl)
- {
- asio::error_code ignored_ec;
- close(*impl, ignored_ec);
- impl = impl->next_;
- }
-}
-
-void winrt_ssocket_service_base::construct(
- winrt_ssocket_service_base::base_implementation_type& impl)
-{
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
-}
-
-void winrt_ssocket_service_base::base_move_construct(
- winrt_ssocket_service_base::base_implementation_type& impl,
- winrt_ssocket_service_base::base_implementation_type& other_impl)
-{
- impl.socket_ = other_impl.socket_;
- other_impl.socket_ = nullptr;
-
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- impl.next_ = impl_list_;
- impl.prev_ = 0;
- if (impl_list_)
- impl_list_->prev_ = &impl;
- impl_list_ = &impl;
-}
-
-void winrt_ssocket_service_base::base_move_assign(
- winrt_ssocket_service_base::base_implementation_type& impl,
- winrt_ssocket_service_base& other_service,
- winrt_ssocket_service_base::base_implementation_type& other_impl)
-{
- asio::error_code ignored_ec;
- close(impl, ignored_ec);
-
- if (this != &other_service)
- {
- // Remove implementation from linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
- }
-
- impl.socket_ = other_impl.socket_;
- other_impl.socket_ = nullptr;
-
- if (this != &other_service)
- {
- // Insert implementation into linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(other_service.mutex_);
- impl.next_ = other_service.impl_list_;
- impl.prev_ = 0;
- if (other_service.impl_list_)
- other_service.impl_list_->prev_ = &impl;
- other_service.impl_list_ = &impl;
- }
-}
-
-void winrt_ssocket_service_base::destroy(
- winrt_ssocket_service_base::base_implementation_type& impl)
-{
- asio::error_code ignored_ec;
- close(impl, ignored_ec);
-
- // Remove implementation from linked list of all implementations.
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (impl_list_ == &impl)
- impl_list_ = impl.next_;
- if (impl.prev_)
- impl.prev_->next_ = impl.next_;
- if (impl.next_)
- impl.next_->prev_= impl.prev_;
- impl.next_ = 0;
- impl.prev_ = 0;
-}
-
-asio::error_code winrt_ssocket_service_base::close(
- winrt_ssocket_service_base::base_implementation_type& impl,
- asio::error_code& ec)
-{
- if (impl.socket_)
- {
- delete impl.socket_;
- impl.socket_ = nullptr;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-std::size_t winrt_ssocket_service_base::do_get_endpoint(
- const base_implementation_type& impl, bool local,
- void* addr, std::size_t addr_len, asio::error_code& ec) const
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return addr_len;
- }
-
- try
- {
- std::string addr_string = winrt_utils::string(local
- ? impl.socket_->Information->LocalAddress->CanonicalName
- : impl.socket_->Information->RemoteAddress->CanonicalName);
- unsigned short port = winrt_utils::integer(local
- ? impl.socket_->Information->LocalPort
- : impl.socket_->Information->RemotePort);
- unsigned long scope = 0;
-
- switch (reinterpret_cast<const socket_addr_type*>(addr)->sa_family)
- {
- case ASIO_OS_DEF(AF_INET):
- if (addr_len < sizeof(sockaddr_in4_type))
- {
- ec = asio::error::invalid_argument;
- return addr_len;
- }
- else
- {
- socket_ops::inet_pton(ASIO_OS_DEF(AF_INET), addr_string.c_str(),
- &reinterpret_cast<sockaddr_in4_type*>(addr)->sin_addr, &scope, ec);
- reinterpret_cast<sockaddr_in4_type*>(addr)->sin_port
- = socket_ops::host_to_network_short(port);
- ec = asio::error_code();
- return sizeof(sockaddr_in4_type);
- }
- case ASIO_OS_DEF(AF_INET6):
- if (addr_len < sizeof(sockaddr_in6_type))
- {
- ec = asio::error::invalid_argument;
- return addr_len;
- }
- else
- {
- socket_ops::inet_pton(ASIO_OS_DEF(AF_INET6), addr_string.c_str(),
- &reinterpret_cast<sockaddr_in6_type*>(addr)->sin6_addr, &scope, ec);
- reinterpret_cast<sockaddr_in6_type*>(addr)->sin6_port
- = socket_ops::host_to_network_short(port);
- ec = asio::error_code();
- return sizeof(sockaddr_in6_type);
- }
- default:
- ec = asio::error::address_family_not_supported;
- return addr_len;
- }
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- return addr_len;
- }
-}
-
-asio::error_code winrt_ssocket_service_base::do_set_option(
- winrt_ssocket_service_base::base_implementation_type& impl,
- int level, int optname, const void* optval,
- std::size_t optlen, asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return ec;
- }
-
- try
- {
- if (level == ASIO_OS_DEF(SOL_SOCKET)
- && optname == ASIO_OS_DEF(SO_KEEPALIVE))
- {
- if (optlen == sizeof(int))
- {
- int value = 0;
- std::memcpy(&value, optval, optlen);
- impl.socket_->Control->KeepAlive = !!value;
- ec = asio::error_code();
- }
- else
- {
- ec = asio::error::invalid_argument;
- }
- }
- else if (level == ASIO_OS_DEF(IPPROTO_TCP)
- && optname == ASIO_OS_DEF(TCP_NODELAY))
- {
- if (optlen == sizeof(int))
- {
- int value = 0;
- std::memcpy(&value, optval, optlen);
- impl.socket_->Control->NoDelay = !!value;
- ec = asio::error_code();
- }
- else
- {
- ec = asio::error::invalid_argument;
- }
- }
- else
- {
- ec = asio::error::invalid_argument;
- }
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- }
-
- return ec;
-}
-
-void winrt_ssocket_service_base::do_get_option(
- const winrt_ssocket_service_base::base_implementation_type& impl,
- int level, int optname, void* optval,
- std::size_t* optlen, asio::error_code& ec) const
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return;
- }
-
- try
- {
- if (level == ASIO_OS_DEF(SOL_SOCKET)
- && optname == ASIO_OS_DEF(SO_KEEPALIVE))
- {
- if (*optlen >= sizeof(int))
- {
- int value = impl.socket_->Control->KeepAlive ? 1 : 0;
- std::memcpy(optval, &value, sizeof(int));
- *optlen = sizeof(int);
- ec = asio::error_code();
- }
- else
- {
- ec = asio::error::invalid_argument;
- }
- }
- else if (level == ASIO_OS_DEF(IPPROTO_TCP)
- && optname == ASIO_OS_DEF(TCP_NODELAY))
- {
- if (*optlen >= sizeof(int))
- {
- int value = impl.socket_->Control->NoDelay ? 1 : 0;
- std::memcpy(optval, &value, sizeof(int));
- *optlen = sizeof(int);
- ec = asio::error_code();
- }
- else
- {
- ec = asio::error::invalid_argument;
- }
- }
- else
- {
- ec = asio::error::invalid_argument;
- }
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- }
-}
-
-asio::error_code winrt_ssocket_service_base::do_connect(
- winrt_ssocket_service_base::base_implementation_type& impl,
- const void* addr, asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return ec;
- }
-
- char addr_string[max_addr_v6_str_len];
- unsigned short port;
- switch (reinterpret_cast<const socket_addr_type*>(addr)->sa_family)
- {
- case ASIO_OS_DEF(AF_INET):
- socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET),
- &reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_addr,
- addr_string, sizeof(addr_string), 0, ec);
- port = socket_ops::network_to_host_short(
- reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_port);
- break;
- case ASIO_OS_DEF(AF_INET6):
- socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET6),
- &reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_addr,
- addr_string, sizeof(addr_string), 0, ec);
- port = socket_ops::network_to_host_short(
- reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_port);
- break;
- default:
- ec = asio::error::address_family_not_supported;
- return ec;
- }
-
- if (!ec) try
- {
- async_manager_.sync(impl.socket_->ConnectAsync(
- ref new Windows::Networking::HostName(
- winrt_utils::string(addr_string)),
- winrt_utils::string(port)), ec);
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- }
-
- return ec;
-}
-
-void winrt_ssocket_service_base::start_connect_op(
- winrt_ssocket_service_base::base_implementation_type& impl,
- const void* addr, winrt_async_op<void>* op, bool is_continuation)
-{
- if (!is_open(impl))
- {
- op->ec_ = asio::error::bad_descriptor;
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- char addr_string[max_addr_v6_str_len];
- unsigned short port = 0;
- switch (reinterpret_cast<const socket_addr_type*>(addr)->sa_family)
- {
- case ASIO_OS_DEF(AF_INET):
- socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET),
- &reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_addr,
- addr_string, sizeof(addr_string), 0, op->ec_);
- port = socket_ops::network_to_host_short(
- reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_port);
- break;
- case ASIO_OS_DEF(AF_INET6):
- socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET6),
- &reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_addr,
- addr_string, sizeof(addr_string), 0, op->ec_);
- port = socket_ops::network_to_host_short(
- reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_port);
- break;
- default:
- op->ec_ = asio::error::address_family_not_supported;
- break;
- }
-
- if (op->ec_)
- {
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- try
- {
- async_manager_.async(impl.socket_->ConnectAsync(
- ref new Windows::Networking::HostName(
- winrt_utils::string(addr_string)),
- winrt_utils::string(port)), op);
- }
- catch (Platform::Exception^ e)
- {
- op->ec_ = asio::error_code(
- e->HResult, asio::system_category());
- io_service_.post_immediate_completion(op, is_continuation);
- }
-}
-
-std::size_t winrt_ssocket_service_base::do_send(
- winrt_ssocket_service_base::base_implementation_type& impl,
- const asio::const_buffer& data,
- socket_base::message_flags flags, asio::error_code& ec)
-{
- if (flags)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- try
- {
- buffer_sequence_adapter<asio::const_buffer,
- asio::const_buffers_1> bufs(asio::buffer(data));
-
- if (bufs.all_empty())
- {
- ec = asio::error_code();
- return 0;
- }
-
- return async_manager_.sync(
- impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), ec);
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- return 0;
- }
-}
-
-void winrt_ssocket_service_base::start_send_op(
- winrt_ssocket_service_base::base_implementation_type& impl,
- const asio::const_buffer& data, socket_base::message_flags flags,
- winrt_async_op<unsigned int>* op, bool is_continuation)
-{
- if (flags)
- {
- op->ec_ = asio::error::operation_not_supported;
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- if (!is_open(impl))
- {
- op->ec_ = asio::error::bad_descriptor;
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- try
- {
- buffer_sequence_adapter<asio::const_buffer,
- asio::const_buffers_1> bufs(asio::buffer(data));
-
- if (bufs.all_empty())
- {
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- async_manager_.async(
- impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), op);
- }
- catch (Platform::Exception^ e)
- {
- op->ec_ = asio::error_code(e->HResult,
- asio::system_category());
- io_service_.post_immediate_completion(op, is_continuation);
- }
-}
-
-std::size_t winrt_ssocket_service_base::do_receive(
- winrt_ssocket_service_base::base_implementation_type& impl,
- const asio::mutable_buffer& data,
- socket_base::message_flags flags, asio::error_code& ec)
-{
- if (flags)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- try
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- asio::mutable_buffers_1> bufs(asio::buffer(data));
-
- if (bufs.all_empty())
- {
- ec = asio::error_code();
- return 0;
- }
-
- async_manager_.sync(
- impl.socket_->InputStream->ReadAsync(
- bufs.buffers()[0], bufs.buffers()[0]->Capacity,
- Windows::Storage::Streams::InputStreamOptions::Partial), ec);
-
- std::size_t bytes_transferred = bufs.buffers()[0]->Length;
- if (bytes_transferred == 0 && !ec)
- {
- ec = asio::error::eof;
- }
-
- return bytes_transferred;
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- return 0;
- }
-}
-
-void winrt_ssocket_service_base::start_receive_op(
- winrt_ssocket_service_base::base_implementation_type& impl,
- const asio::mutable_buffer& data, socket_base::message_flags flags,
- winrt_async_op<Windows::Storage::Streams::IBuffer^>* op,
- bool is_continuation)
-{
- if (flags)
- {
- op->ec_ = asio::error::operation_not_supported;
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- if (!is_open(impl))
- {
- op->ec_ = asio::error::bad_descriptor;
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- try
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- asio::mutable_buffers_1> bufs(asio::buffer(data));
-
- if (bufs.all_empty())
- {
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- async_manager_.async(
- impl.socket_->InputStream->ReadAsync(
- bufs.buffers()[0], bufs.buffers()[0]->Capacity,
- Windows::Storage::Streams::InputStreamOptions::Partial), op);
- }
- catch (Platform::Exception^ e)
- {
- op->ec_ = asio::error_code(e->HResult,
- asio::system_category());
- io_service_.post_immediate_completion(op, is_continuation);
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.hpp
deleted file mode 100644
index 544758d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/impl/winrt_timer_scheduler.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_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP
-#define ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_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_WINDOWS_RUNTIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void winrt_timer_scheduler::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_add_timer_queue(queue);
-}
-
-// Remove a timer queue from the reactor.
-template <typename Time_Traits>
-void winrt_timer_scheduler::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void winrt_timer_scheduler::schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- io_service_.post_immediate_completion(op, false);
- return;
- }
-
- bool earliest = queue.enqueue_timer(time, timer, op);
- io_service_.work_started();
- if (earliest)
- event_.signal(lock);
-}
-
-template <typename Time_Traits>
-std::size_t winrt_timer_scheduler::cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- op_queue<operation> ops;
- std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
- lock.unlock();
- io_service_.post_deferred_completions(ops);
- return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.ipp
deleted file mode 100644
index c7236c7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winrt_timer_scheduler.ipp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// detail/impl/winrt_timer_scheduler.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
-#define ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/winrt_timer_scheduler.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-winrt_timer_scheduler::winrt_timer_scheduler(
- asio::io_service& io_service)
- : asio::detail::service_base<winrt_timer_scheduler>(io_service),
- io_service_(use_service<io_service_impl>(io_service)),
- mutex_(),
- event_(),
- timer_queues_(),
- thread_(0),
- stop_thread_(false),
- shutdown_(false)
-{
- thread_ = new asio::detail::thread(
- bind_handler(&winrt_timer_scheduler::call_run_thread, this));
-}
-
-winrt_timer_scheduler::~winrt_timer_scheduler()
-{
- shutdown_service();
-}
-
-void winrt_timer_scheduler::shutdown_service()
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- shutdown_ = true;
- stop_thread_ = true;
- event_.signal(lock);
- lock.unlock();
-
- if (thread_)
- {
- thread_->join();
- delete thread_;
- thread_ = 0;
- }
-
- op_queue<operation> ops;
- timer_queues_.get_all_timers(ops);
- io_service_.abandon_operations(ops);
-}
-
-void winrt_timer_scheduler::fork_service(asio::io_service::fork_event)
-{
-}
-
-void winrt_timer_scheduler::init_task()
-{
-}
-
-void winrt_timer_scheduler::run_thread()
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- while (!stop_thread_)
- {
- const long max_wait_duration = 5 * 60 * 1000000;
- long wait_duration = timer_queues_.wait_duration_usec(max_wait_duration);
- event_.wait_for_usec(lock, wait_duration);
- event_.clear(lock);
- op_queue<operation> ops;
- timer_queues_.get_ready_timers(ops);
- if (!ops.empty())
- {
- lock.unlock();
- io_service_.post_deferred_completions(ops);
- lock.lock();
- }
- }
-}
-
-void winrt_timer_scheduler::call_run_thread(winrt_timer_scheduler* scheduler)
-{
- scheduler->run_thread();
-}
-
-void winrt_timer_scheduler::do_add_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.insert(&queue);
-}
-
-void winrt_timer_scheduler::do_remove_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.erase(&queue);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winsock_init.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winsock_init.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winsock_init.ipp
deleted file mode 100644
index 9f357f5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/winsock_init.ipp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// detail/impl/winsock_init.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_WINSOCK_INIT_IPP
-#define ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void winsock_init_base::startup(data& d,
- unsigned char major, unsigned char minor)
-{
- if (::InterlockedIncrement(&d.init_count_) == 1)
- {
- WSADATA wsa_data;
- long result = ::WSAStartup(MAKEWORD(major, minor), &wsa_data);
- ::InterlockedExchange(&d.result_, result);
- }
-}
-
-void winsock_init_base::manual_startup(data& d)
-{
- if (::InterlockedIncrement(&d.init_count_) == 1)
- {
- ::InterlockedExchange(&d.result_, 0);
- }
-}
-
-void winsock_init_base::cleanup(data& d)
-{
- if (::InterlockedDecrement(&d.init_count_) == 0)
- {
- ::WSACleanup();
- }
-}
-
-void winsock_init_base::manual_cleanup(data& d)
-{
- ::InterlockedDecrement(&d.init_count_);
-}
-
-void winsock_init_base::throw_on_error(data& d)
-{
- long result = ::InterlockedExchangeAdd(&d.result_, 0);
- if (result != 0)
- {
- asio::error_code ec(result,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "winsock");
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/io_control.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/io_control.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/io_control.hpp
deleted file mode 100644
index 3f84c35..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/io_control.hpp
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// detail/io_control.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_DETAIL_IO_CONTROL_HPP
-#define ASIO_DETAIL_IO_CONTROL_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 "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace io_control {
-
-// IO control command for non-blocking I/O.
-class non_blocking_io
-{
-public:
- // Default constructor.
- non_blocking_io()
- : value_(0)
- {
- }
-
- // Construct with a specific command value.
- non_blocking_io(bool value)
- : value_(value ? 1 : 0)
- {
- }
-
- // Get the name of the IO control command.
- int name() const
- {
- return static_cast<int>(ASIO_OS_DEF(FIONBIO));
- }
-
- // Set the value of the I/O control command.
- void set(bool value)
- {
- value_ = value ? 1 : 0;
- }
-
- // Get the current value of the I/O control command.
- bool get() const
- {
- return value_ != 0;
- }
-
- // Get the address of the command data.
- detail::ioctl_arg_type* data()
- {
- return &value_;
- }
-
- // Get the address of the command data.
- const detail::ioctl_arg_type* data() const
- {
- return &value_;
- }
-
-private:
- detail::ioctl_arg_type value_;
-};
-
-// I/O control command for getting number of bytes available.
-class bytes_readable
-{
-public:
- // Default constructor.
- bytes_readable()
- : value_(0)
- {
- }
-
- // Construct with a specific command value.
- bytes_readable(std::size_t value)
- : value_(static_cast<detail::ioctl_arg_type>(value))
- {
- }
-
- // Get the name of the IO control command.
- int name() const
- {
- return static_cast<int>(ASIO_OS_DEF(FIONREAD));
- }
-
- // Set the value of the I/O control command.
- void set(std::size_t value)
- {
- value_ = static_cast<detail::ioctl_arg_type>(value);
- }
-
- // Get the current value of the I/O control command.
- std::size_t get() const
- {
- return static_cast<std::size_t>(value_);
- }
-
- // Get the address of the command data.
- detail::ioctl_arg_type* data()
- {
- return &value_;
- }
-
- // Get the address of the command data.
- const detail::ioctl_arg_type* data() const
- {
- return &value_;
- }
-
-private:
- detail::ioctl_arg_type value_;
-};
-
-} // namespace io_control
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IO_CONTROL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/keyword_tss_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/keyword_tss_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/keyword_tss_ptr.hpp
deleted file mode 100644
index c544403..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/keyword_tss_ptr.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// detail/keyword_tss_ptr.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_DETAIL_KEYWORD_TSS_PTR_HPP
-#define ASIO_DETAIL_KEYWORD_TSS_PTR_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_HAS_THREAD_KEYWORD_EXTENSION)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class keyword_tss_ptr
- : private noncopyable
-{
-public:
- // Constructor.
- keyword_tss_ptr()
- {
- }
-
- // Destructor.
- ~keyword_tss_ptr()
- {
- }
-
- // Get the value.
- operator T*() const
- {
- return value_;
- }
-
- // Set the value.
- void operator=(T* value)
- {
- value_ = value;
- }
-
-private:
- static ASIO_THREAD_KEYWORD T* value_;
-};
-
-template <typename T>
-ASIO_THREAD_KEYWORD T* keyword_tss_ptr<T>::value_;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-
-#endif // ASIO_DETAIL_KEYWORD_TSS_PTR_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[28/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/eventfd_select_interrupter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/eventfd_select_interrupter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/eventfd_select_interrupter.hpp
deleted file mode 100644
index 8beb658..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/eventfd_select_interrupter.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// detail/eventfd_select_interrupter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail 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_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_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_HAS_EVENTFD)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class eventfd_select_interrupter
-{
-public:
- // Constructor.
- ASIO_DECL eventfd_select_interrupter();
-
- // Destructor.
- ASIO_DECL ~eventfd_select_interrupter();
-
- // Recreate the interrupter's descriptors. Used after a fork.
- ASIO_DECL void recreate();
-
- // Interrupt the select call.
- ASIO_DECL void interrupt();
-
- // Reset the select interrupt. Returns true if the call was interrupted.
- ASIO_DECL bool reset();
-
- // Get the read descriptor to be passed to select.
- int read_descriptor() const
- {
- return read_descriptor_;
- }
-
-private:
- // Open the descriptors. Throws on error.
- ASIO_DECL void open_descriptors();
-
- // Close the descriptors.
- ASIO_DECL void close_descriptors();
-
- // The read end of a connection used to interrupt the select call. This file
- // descriptor is passed to select such that when it is time to stop, a single
- // 64bit value will be written on the other end of the connection and this
- // descriptor will become readable.
- int read_descriptor_;
-
- // The write end of a connection used to interrupt the select call. A single
- // 64bit non-zero value may be written to this to wake up the select which is
- // waiting for the other end to become readable. This descriptor will only
- // differ from the read descriptor when a pipe is used.
- int write_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/eventfd_select_interrupter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_EVENTFD)
-
-#endif // ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fd_set_adapter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fd_set_adapter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fd_set_adapter.hpp
deleted file mode 100644
index af85e09..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fd_set_adapter.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// detail/fd_set_adapter.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_DETAIL_FD_SET_ADAPTER_HPP
-#define ASIO_DETAIL_FD_SET_ADAPTER_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_WINDOWS_RUNTIME)
-
-#include "asio/detail/posix_fd_set_adapter.hpp"
-#include "asio/detail/win_fd_set_adapter.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef win_fd_set_adapter fd_set_adapter;
-#else
-typedef posix_fd_set_adapter fd_set_adapter;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_FD_SET_ADAPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fenced_block.hpp
deleted file mode 100644
index fab1d8c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/fenced_block.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/fenced_block.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_DETAIL_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_FENCED_BLOCK_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_HAS_THREADS) \
- || defined(ASIO_DISABLE_FENCED_BLOCK)
-# include "asio/detail/null_fenced_block.hpp"
-#elif defined(__MACH__) && defined(__APPLE__)
-# include "asio/detail/macos_fenced_block.hpp"
-#elif defined(__sun)
-# include "asio/detail/solaris_fenced_block.hpp"
-#elif defined(__GNUC__) && defined(__arm__) \
- && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
-# include "asio/detail/gcc_arm_fenced_block.hpp"
-#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-# include "asio/detail/gcc_hppa_fenced_block.hpp"
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-# include "asio/detail/gcc_x86_fenced_block.hpp"
-#elif defined(__GNUC__) \
- && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
- && !defined(__INTEL_COMPILER) && !defined(__ICL) \
- && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-# include "asio/detail/gcc_sync_fenced_block.hpp"
-#elif defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-# include "asio/detail/win_fenced_block.hpp"
-#else
-# include "asio/detail/null_fenced_block.hpp"
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS) \
- || defined(ASIO_DISABLE_FENCED_BLOCK)
-typedef null_fenced_block fenced_block;
-#elif defined(__MACH__) && defined(__APPLE__)
-typedef macos_fenced_block fenced_block;
-#elif defined(__sun)
-typedef solaris_fenced_block fenced_block;
-#elif defined(__GNUC__) && defined(__arm__) \
- && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
-typedef gcc_arm_fenced_block fenced_block;
-#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-typedef gcc_hppa_fenced_block fenced_block;
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-typedef gcc_x86_fenced_block fenced_block;
-#elif defined(__GNUC__) \
- && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
- && !defined(__INTEL_COMPILER) && !defined(__ICL) \
- && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-typedef gcc_sync_fenced_block fenced_block;
-#elif defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-typedef win_fenced_block fenced_block;
-#else
-typedef null_fenced_block fenced_block;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/function.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/function.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/function.hpp
deleted file mode 100644
index 854ef3f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/function.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/function.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_DETAIL_FUNCTION_HPP
-#define ASIO_DETAIL_FUNCTION_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_HAS_STD_FUNCTION)
-# include <functional>
-#else // defined(ASIO_HAS_STD_FUNCTION)
-# include <boost/function.hpp>
-#endif // defined(ASIO_HAS_STD_FUNCTION)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_FUNCTION)
-using std::function;
-#else // defined(ASIO_HAS_STD_FUNCTION)
-using boost::function;
-#endif // defined(ASIO_HAS_STD_FUNCTION)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_FUNCTION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_arm_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_arm_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_arm_fenced_block.hpp
deleted file mode 100644
index 5248634..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_arm_fenced_block.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/gcc_arm_fenced_block.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_DETAIL_GCC_ARM_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) && defined(__arm__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_arm_fenced_block
- : private noncopyable
-{
-public:
- enum half_t { half };
- enum full_t { full };
-
- // Constructor for a half fenced block.
- explicit gcc_arm_fenced_block(half_t)
- {
- }
-
- // Constructor for a full fenced block.
- explicit gcc_arm_fenced_block(full_t)
- {
- barrier();
- }
-
- // Destructor.
- ~gcc_arm_fenced_block()
- {
- barrier();
- }
-
-private:
- static void barrier()
- {
-#if defined(__ARM_ARCH_4__) \
- || defined(__ARM_ARCH_4T__) \
- || defined(__ARM_ARCH_5__) \
- || defined(__ARM_ARCH_5E__) \
- || defined(__ARM_ARCH_5T__) \
- || defined(__ARM_ARCH_5TE__) \
- || defined(__ARM_ARCH_5TEJ__) \
- || defined(__ARM_ARCH_6__) \
- || defined(__ARM_ARCH_6J__) \
- || defined(__ARM_ARCH_6K__) \
- || defined(__ARM_ARCH_6Z__) \
- || defined(__ARM_ARCH_6ZK__) \
- || defined(__ARM_ARCH_6T2__)
-# if defined(__thumb__)
- // This is just a placeholder and almost certainly not sufficient.
- __asm__ __volatile__ ("" : : : "memory");
-# else // defined(__thumb__)
- int a = 0, b = 0;
- __asm__ __volatile__ ("swp %0, %1, [%2]"
- : "=&r"(a) : "r"(1), "r"(&b) : "memory", "cc");
-# endif // defined(__thumb__)
-#else
- // ARMv7 and later.
- __asm__ __volatile__ ("dmb" : : : "memory");
-#endif
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__) && defined(__arm__)
-
-#endif // ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_hppa_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_hppa_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_hppa_fenced_block.hpp
deleted file mode 100644
index 27bde7e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_hppa_fenced_block.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// detail/gcc_hppa_fenced_block.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_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_hppa_fenced_block
- : private noncopyable
-{
-public:
- enum half_t { half };
- enum full_t { full };
-
- // Constructor for a half fenced block.
- explicit gcc_hppa_fenced_block(half_t)
- {
- }
-
- // Constructor for a full fenced block.
- explicit gcc_hppa_fenced_block(full_t)
- {
- barrier();
- }
-
- // Destructor.
- ~gcc_hppa_fenced_block()
- {
- barrier();
- }
-
-private:
- static void barrier()
- {
- // This is just a placeholder and almost certainly not sufficient.
- __asm__ __volatile__ ("" : : : "memory");
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-
-#endif // ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_sync_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_sync_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_sync_fenced_block.hpp
deleted file mode 100644
index 53cc8f9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_sync_fenced_block.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// detail/gcc_sync_fenced_block.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_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) \
- && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
- && !defined(__INTEL_COMPILER) && !defined(__ICL) \
- && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_sync_fenced_block
- : private noncopyable
-{
-public:
- enum half_or_full_t { half, full };
-
- // Constructor.
- explicit gcc_sync_fenced_block(half_or_full_t)
- : value_(0)
- {
- __sync_lock_test_and_set(&value_, 1);
- }
-
- // Destructor.
- ~gcc_sync_fenced_block()
- {
- __sync_lock_release(&value_);
- }
-
-private:
- int value_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__)
- // && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4))
- // && !defined(__INTEL_COMPILER) && !defined(__ICL)
- // && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-
-#endif // ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_x86_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_x86_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_x86_fenced_block.hpp
deleted file mode 100644
index fc64cd7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/gcc_x86_fenced_block.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/gcc_x86_fenced_block.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_DETAIL_GCC_X86_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_x86_fenced_block
- : private noncopyable
-{
-public:
- enum half_t { half };
- enum full_t { full };
-
- // Constructor for a half fenced block.
- explicit gcc_x86_fenced_block(half_t)
- {
- }
-
- // Constructor for a full fenced block.
- explicit gcc_x86_fenced_block(full_t)
- {
- lbarrier();
- }
-
- // Destructor.
- ~gcc_x86_fenced_block()
- {
- sbarrier();
- }
-
-private:
- static int barrier()
- {
- int r = 0, m = 1;
- __asm__ __volatile__ (
- "xchgl %0, %1" :
- "=r"(r), "=m"(m) :
- "0"(1), "m"(m) :
- "memory", "cc");
- return r;
- }
-
- static void lbarrier()
- {
-#if defined(__SSE2__)
- __asm__ __volatile__ ("lfence" ::: "memory");
-#else // defined(__SSE2__)
- barrier();
-#endif // defined(__SSE2__)
- }
-
- static void sbarrier()
- {
-#if defined(__SSE2__)
- __asm__ __volatile__ ("sfence" ::: "memory");
-#else // defined(__SSE2__)
- barrier();
-#endif // defined(__SSE2__)
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-
-#endif // ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_alloc_helpers.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_alloc_helpers.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_alloc_helpers.hpp
deleted file mode 100644
index e52640d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_alloc_helpers.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// detail/handler_alloc_helpers.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_DETAIL_HANDLER_ALLOC_HELPERS_HPP
-#define ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/handler_alloc_hook.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-// Calls to asio_handler_allocate and asio_handler_deallocate must be made from
-// a namespace that does not contain any overloads of these functions. The
-// asio_handler_alloc_helpers namespace is defined here for that purpose.
-namespace asio_handler_alloc_helpers {
-
-template <typename Handler>
-inline void* allocate(std::size_t s, Handler& h)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
- return ::operator new(s);
-#else
- using asio::asio_handler_allocate;
- return asio_handler_allocate(s, asio::detail::addressof(h));
-#endif
-}
-
-template <typename Handler>
-inline void deallocate(void* p, std::size_t s, Handler& h)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
- ::operator delete(p);
-#else
- using asio::asio_handler_deallocate;
- asio_handler_deallocate(p, s, asio::detail::addressof(h));
-#endif
-}
-
-} // namespace asio_handler_alloc_helpers
-
-#define ASIO_DEFINE_HANDLER_PTR(op) \
- struct ptr \
- { \
- Handler* h; \
- void* v; \
- op* p; \
- ~ptr() \
- { \
- reset(); \
- } \
- void reset() \
- { \
- if (p) \
- { \
- p->~op(); \
- p = 0; \
- } \
- if (v) \
- { \
- asio_handler_alloc_helpers::deallocate(v, sizeof(op), *h); \
- v = 0; \
- } \
- } \
- } \
- /**/
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_cont_helpers.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_cont_helpers.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_cont_helpers.hpp
deleted file mode 100644
index 2eabe39..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_cont_helpers.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/handler_cont_helpers.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_DETAIL_HANDLER_CONT_HELPERS_HPP
-#define ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/handler_continuation_hook.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-// Calls to asio_handler_is_continuation must be made from a namespace that
-// does not contain overloads of this function. This namespace is defined here
-// for that purpose.
-namespace asio_handler_cont_helpers {
-
-template <typename Context>
-inline bool is_continuation(Context& context)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
- return false;
-#else
- using asio::asio_handler_is_continuation;
- return asio_handler_is_continuation(
- asio::detail::addressof(context));
-#endif
-}
-
-} // namespace asio_handler_cont_helpers
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_invoke_helpers.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_invoke_helpers.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_invoke_helpers.hpp
deleted file mode 100644
index ec23b0f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_invoke_helpers.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// detail/handler_invoke_helpers.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_DETAIL_HANDLER_INVOKE_HELPERS_HPP
-#define ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/handler_invoke_hook.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-// Calls to asio_handler_invoke must be made from a namespace that does not
-// contain overloads of this function. The asio_handler_invoke_helpers
-// namespace is defined here for that purpose.
-namespace asio_handler_invoke_helpers {
-
-template <typename Function, typename Context>
-inline void invoke(Function& function, Context& context)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
- Function tmp(function);
- tmp();
-#else
- using asio::asio_handler_invoke;
- asio_handler_invoke(function, asio::detail::addressof(context));
-#endif
-}
-
-template <typename Function, typename Context>
-inline void invoke(const Function& function, Context& context)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
- Function tmp(function);
- tmp();
-#else
- using asio::asio_handler_invoke;
- asio_handler_invoke(function, asio::detail::addressof(context));
-#endif
-}
-
-} // namespace asio_handler_invoke_helpers
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_tracking.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_tracking.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_tracking.hpp
deleted file mode 100644
index eb25abe..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_tracking.hpp
+++ /dev/null
@@ -1,159 +0,0 @@
-//
-// detail/handler_tracking.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_DETAIL_HANDLER_TRACKING_HPP
-#define ASIO_DETAIL_HANDLER_TRACKING_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_HANDLER_TRACKING)
-# include "asio/error_code.hpp"
-# include "asio/detail/cstdint.hpp"
-# include "asio/detail/static_mutex.hpp"
-# include "asio/detail/tss_ptr.hpp"
-#endif // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-class handler_tracking
-{
-public:
- class completion;
-
- // Base class for objects containing tracked handlers.
- class tracked_handler
- {
- private:
- // Only the handler_tracking class will have access to the id.
- friend class handler_tracking;
- friend class completion;
- uint64_t id_;
-
- protected:
- // Constructor initialises with no id.
- tracked_handler() : id_(0) {}
-
- // Prevent deletion through this type.
- ~tracked_handler() {}
- };
-
- // Initialise the tracking system.
- ASIO_DECL static void init();
-
- // Record the creation of a tracked handler.
- ASIO_DECL static void creation(tracked_handler* h,
- const char* object_type, void* object, const char* op_name);
-
- class completion
- {
- public:
- // Constructor records that handler is to be invoked with no arguments.
- ASIO_DECL explicit completion(tracked_handler* h);
-
- // Destructor records only when an exception is thrown from the handler, or
- // if the memory is being freed without the handler having been invoked.
- ASIO_DECL ~completion();
-
- // Records that handler is to be invoked with no arguments.
- ASIO_DECL void invocation_begin();
-
- // Records that handler is to be invoked with one arguments.
- ASIO_DECL void invocation_begin(const asio::error_code& ec);
-
- // Constructor records that handler is to be invoked with two arguments.
- ASIO_DECL void invocation_begin(
- const asio::error_code& ec, std::size_t bytes_transferred);
-
- // Constructor records that handler is to be invoked with two arguments.
- ASIO_DECL void invocation_begin(
- const asio::error_code& ec, int signal_number);
-
- // Constructor records that handler is to be invoked with two arguments.
- ASIO_DECL void invocation_begin(
- const asio::error_code& ec, const char* arg);
-
- // Record that handler invocation has ended.
- ASIO_DECL void invocation_end();
-
- private:
- friend class handler_tracking;
- uint64_t id_;
- bool invoked_;
- completion* next_;
- };
-
- // Record an operation that affects pending handlers.
- ASIO_DECL static void operation(const char* object_type,
- void* object, const char* op_name);
-
- // Write a line of output.
- ASIO_DECL static void write_line(const char* format, ...);
-
-private:
- struct tracking_state;
- ASIO_DECL static tracking_state* get_state();
-};
-
-# define ASIO_INHERIT_TRACKED_HANDLER \
- : public asio::detail::handler_tracking::tracked_handler
-
-# define ASIO_ALSO_INHERIT_TRACKED_HANDLER \
- , public asio::detail::handler_tracking::tracked_handler
-
-# define ASIO_HANDLER_TRACKING_INIT \
- asio::detail::handler_tracking::init()
-
-# define ASIO_HANDLER_CREATION(args) \
- asio::detail::handler_tracking::creation args
-
-# define ASIO_HANDLER_COMPLETION(args) \
- asio::detail::handler_tracking::completion tracked_completion args
-
-# define ASIO_HANDLER_INVOCATION_BEGIN(args) \
- tracked_completion.invocation_begin args
-
-# define ASIO_HANDLER_INVOCATION_END \
- tracked_completion.invocation_end()
-
-# define ASIO_HANDLER_OPERATION(args) \
- asio::detail::handler_tracking::operation args
-
-#else // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-# define ASIO_INHERIT_TRACKED_HANDLER
-# define ASIO_ALSO_INHERIT_TRACKED_HANDLER
-# define ASIO_HANDLER_TRACKING_INIT (void)0
-# define ASIO_HANDLER_CREATION(args) (void)0
-# define ASIO_HANDLER_COMPLETION(args) (void)0
-# define ASIO_HANDLER_INVOCATION_BEGIN(args) (void)0
-# define ASIO_HANDLER_INVOCATION_END (void)0
-# define ASIO_HANDLER_OPERATION(args) (void)0
-
-#endif // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/handler_tracking.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_HANDLER_TRACKING_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_type_requirements.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_type_requirements.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_type_requirements.hpp
deleted file mode 100644
index fdf3a55..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/handler_type_requirements.hpp
+++ /dev/null
@@ -1,488 +0,0 @@
-//
-// detail/handler_type_requirements.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_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP
-#define ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-// Older versions of gcc have difficulty compiling the sizeof expressions where
-// we test the handler type requirements. We'll disable checking of handler type
-// requirements for those compilers, but otherwise enable it by default.
-#if !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
-# if !defined(__GNUC__) || (__GNUC__ >= 4)
-# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS 1
-# endif // !defined(__GNUC__) || (__GNUC__ >= 4)
-#endif // !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
-
-// With C++0x we can use a combination of enhanced SFINAE and static_assert to
-// generate better template error messages. As this technique is not yet widely
-// portable, we'll only enable it for tested compilers.
-#if !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1600)
-# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1
-# endif // (_MSC_VER >= 1600)
-# endif // defined(ASIO_MSVC)
-# if defined(__clang__)
-# if __has_feature(__cxx_static_assert__)
-# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1
-# endif // __has_feature(cxx_static_assert)
-# endif // defined(__clang__)
-#endif // !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
-
-#if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-# include "asio/handler_type.hpp"
-#endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-// Newer gcc needs special treatment to suppress unused typedef warnings.
-#if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4)
-# define ASIO_UNUSED_TYPEDEF __attribute__((__unused__))
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4)
-#endif // defined(__GNUC__)
-#if !defined(ASIO_UNUSED_TYPEDEF)
-# define ASIO_UNUSED_TYPEDEF
-#endif // !defined(ASIO_UNUSED_TYPEDEF)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-# if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-
-template <typename Handler>
-auto zero_arg_handler_test(Handler h, void*)
- -> decltype(
- sizeof(Handler(static_cast<const Handler&>(h))),
- ((h)()),
- char(0));
-
-template <typename Handler>
-char (&zero_arg_handler_test(Handler, ...))[2];
-
-template <typename Handler, typename Arg1>
-auto one_arg_handler_test(Handler h, Arg1* a1)
- -> decltype(
- sizeof(Handler(static_cast<const Handler&>(h))),
- ((h)(*a1)),
- char(0));
-
-template <typename Handler>
-char (&one_arg_handler_test(Handler h, ...))[2];
-
-template <typename Handler, typename Arg1, typename Arg2>
-auto two_arg_handler_test(Handler h, Arg1* a1, Arg2* a2)
- -> decltype(
- sizeof(Handler(static_cast<const Handler&>(h))),
- ((h)(*a1, *a2)),
- char(0));
-
-template <typename Handler>
-char (&two_arg_handler_test(Handler, ...))[2];
-
-# define ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT(expr, msg) \
- static_assert(expr, msg);
-
-# else // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-
-# define ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT(expr, msg)
-
-# endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-
-template <typename T> T& lvref();
-template <typename T> T& lvref(T);
-template <typename T> const T& clvref();
-template <typename T> const T& clvref(T);
-template <typename T> char argbyv(T);
-
-template <int>
-struct handler_type_requirements
-{
-};
-
-#define ASIO_COMPLETION_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void()) asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::zero_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), 0)) == 1, \
- "CompletionHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()(), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_READ_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code, std::size_t)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::two_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0), \
- static_cast<const std::size_t*>(0))) == 1, \
- "ReadHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>(), \
- asio::detail::lvref<const std::size_t>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-
-#define ASIO_WRITE_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code, std::size_t)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::two_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0), \
- static_cast<const std::size_t*>(0))) == 1, \
- "WriteHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>(), \
- asio::detail::lvref<const std::size_t>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_ACCEPT_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::one_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0))) == 1, \
- "AcceptHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_CONNECT_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::one_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0))) == 1, \
- "ConnectHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_COMPOSED_CONNECT_HANDLER_CHECK( \
- handler_type, handler, iter_type) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code, iter_type)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::two_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0), \
- static_cast<const iter_type*>(0))) == 1, \
- "ComposedConnectHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>(), \
- asio::detail::lvref<const iter_type>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_RESOLVE_HANDLER_CHECK( \
- handler_type, handler, iter_type) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code, iter_type)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::two_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0), \
- static_cast<const iter_type*>(0))) == 1, \
- "ResolveHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>(), \
- asio::detail::lvref<const iter_type>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_WAIT_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::one_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0))) == 1, \
- "WaitHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SIGNAL_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code, int)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::two_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0), \
- static_cast<const int*>(0))) == 1, \
- "SignalHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>(), \
- asio::detail::lvref<const int>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_HANDSHAKE_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::one_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0))) == 1, \
- "HandshakeHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code, std::size_t)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::two_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0), \
- static_cast<const std::size_t*>(0))) == 1, \
- "BufferedHandshakeHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>(), \
- asio::detail::lvref<const std::size_t>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SHUTDOWN_HANDLER_CHECK( \
- handler_type, handler) \
- \
- typedef ASIO_HANDLER_TYPE(handler_type, \
- void(asio::error_code)) \
- asio_true_handler_type; \
- \
- ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
- sizeof(asio::detail::one_arg_handler_test( \
- asio::detail::clvref< \
- asio_true_handler_type>(), \
- static_cast<const asio::error_code*>(0))) == 1, \
- "ShutdownHandler type requirements not met") \
- \
- typedef asio::detail::handler_type_requirements< \
- sizeof( \
- asio::detail::argbyv( \
- asio::detail::clvref< \
- asio_true_handler_type>())) + \
- sizeof( \
- asio::detail::lvref< \
- asio_true_handler_type>()( \
- asio::detail::lvref<const asio::error_code>()), \
- char(0))> ASIO_UNUSED_TYPEDEF
-
-#else // !defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-#define ASIO_COMPLETION_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_READ_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_WRITE_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_ACCEPT_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_CONNECT_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_COMPOSED_CONNECT_HANDLER_CHECK( \
- handler_type, handler, iter_type) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_RESOLVE_HANDLER_CHECK( \
- handler_type, handler, iter_type) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_WAIT_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SIGNAL_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_HANDSHAKE_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SHUTDOWN_HANDLER_CHECK( \
- handler_type, handler) \
- typedef int ASIO_UNUSED_TYPEDEF
-
-#endif // !defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/hash_map.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/hash_map.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/hash_map.hpp
deleted file mode 100644
index 4e54976..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/hash_map.hpp
+++ /dev/null
@@ -1,331 +0,0 @@
-//
-// detail/hash_map.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_DETAIL_HASH_MAP_HPP
-#define ASIO_DETAIL_HASH_MAP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <list>
-#include <utility>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# include "asio/detail/socket_types.hpp"
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-inline std::size_t calculate_hash_value(int i)
-{
- return static_cast<std::size_t>(i);
-}
-
-inline std::size_t calculate_hash_value(void* p)
-{
- return reinterpret_cast<std::size_t>(p)
- + (reinterpret_cast<std::size_t>(p) >> 3);
-}
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-inline std::size_t calculate_hash_value(SOCKET s)
-{
- return static_cast<std::size_t>(s);
-}
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Note: assumes K and V are POD types.
-template <typename K, typename V>
-class hash_map
- : private noncopyable
-{
-public:
- // The type of a value in the map.
- typedef std::pair<K, V> value_type;
-
- // The type of a non-const iterator over the hash map.
- typedef typename std::list<value_type>::iterator iterator;
-
- // The type of a const iterator over the hash map.
- typedef typename std::list<value_type>::const_iterator const_iterator;
-
- // Constructor.
- hash_map()
- : size_(0),
- buckets_(0),
- num_buckets_(0)
- {
- }
-
- // Destructor.
- ~hash_map()
- {
- delete[] buckets_;
- }
-
- // Get an iterator for the beginning of the map.
- iterator begin()
- {
- return values_.begin();
- }
-
- // Get an iterator for the beginning of the map.
- const_iterator begin() const
- {
- return values_.begin();
- }
-
- // Get an iterator for the end of the map.
- iterator end()
- {
- return values_.end();
- }
-
- // Get an iterator for the end of the map.
- const_iterator end() const
- {
- return values_.end();
- }
-
- // Check whether the map is empty.
- bool empty() const
- {
- return values_.empty();
- }
-
- // Find an entry in the map.
- iterator find(const K& k)
- {
- if (num_buckets_)
- {
- size_t bucket = calculate_hash_value(k) % num_buckets_;
- iterator it = buckets_[bucket].first;
- if (it == values_.end())
- return values_.end();
- iterator end_it = buckets_[bucket].last;
- ++end_it;
- while (it != end_it)
- {
- if (it->first == k)
- return it;
- ++it;
- }
- }
- return values_.end();
- }
-
- // Find an entry in the map.
- const_iterator find(const K& k) const
- {
- if (num_buckets_)
- {
- size_t bucket = calculate_hash_value(k) % num_buckets_;
- const_iterator it = buckets_[bucket].first;
- if (it == values_.end())
- return it;
- const_iterator end_it = buckets_[bucket].last;
- ++end_it;
- while (it != end_it)
- {
- if (it->first == k)
- return it;
- ++it;
- }
- }
- return values_.end();
- }
-
- // Insert a new entry into the map.
- std::pair<iterator, bool> insert(const value_type& v)
- {
- if (size_ + 1 >= num_buckets_)
- rehash(hash_size(size_ + 1));
- size_t bucket = calculate_hash_value(v.first) % num_buckets_;
- iterator it = buckets_[bucket].first;
- if (it == values_.end())
- {
- buckets_[bucket].first = buckets_[bucket].last =
- values_insert(values_.end(), v);
- ++size_;
- return std::pair<iterator, bool>(buckets_[bucket].last, true);
- }
- iterator end_it = buckets_[bucket].last;
- ++end_it;
- while (it != end_it)
- {
- if (it->first == v.first)
- return std::pair<iterator, bool>(it, false);
- ++it;
- }
- buckets_[bucket].last = values_insert(end_it, v);
- ++size_;
- return std::pair<iterator, bool>(buckets_[bucket].last, true);
- }
-
- // Erase an entry from the map.
- void erase(iterator it)
- {
- ASIO_ASSERT(it != values_.end());
- ASIO_ASSERT(num_buckets_ != 0);
-
- size_t bucket = calculate_hash_value(it->first) % num_buckets_;
- bool is_first = (it == buckets_[bucket].first);
- bool is_last = (it == buckets_[bucket].last);
- if (is_first && is_last)
- buckets_[bucket].first = buckets_[bucket].last = values_.end();
- else if (is_first)
- ++buckets_[bucket].first;
- else if (is_last)
- --buckets_[bucket].last;
-
- values_erase(it);
- --size_;
- }
-
- // Erase a key from the map.
- void erase(const K& k)
- {
- iterator it = find(k);
- if (it != values_.end())
- erase(it);
- }
-
- // Remove all entries from the map.
- void clear()
- {
- // Clear the values.
- values_.clear();
- size_ = 0;
-
- // Initialise all buckets to empty.
- iterator end_it = values_.end();
- for (size_t i = 0; i < num_buckets_; ++i)
- buckets_[i].first = buckets_[i].last = end_it;
- }
-
-private:
- // Calculate the hash size for the specified number of elements.
- static std::size_t hash_size(std::size_t num_elems)
- {
- static std::size_t sizes[] =
- {
-#if defined(ASIO_HASH_MAP_BUCKETS)
- ASIO_HASH_MAP_BUCKETS
-#else // ASIO_HASH_MAP_BUCKETS
- 3, 13, 23, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593,
- 49157, 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469,
- 12582917, 25165843
-#endif // ASIO_HASH_MAP_BUCKETS
- };
- const std::size_t nth_size = sizeof(sizes) / sizeof(std::size_t) - 1;
- for (std::size_t i = 0; i < nth_size; ++i)
- if (num_elems < sizes[i])
- return sizes[i];
- return sizes[nth_size];
- }
-
- // Re-initialise the hash from the values already contained in the list.
- void rehash(std::size_t num_buckets)
- {
- if (num_buckets == num_buckets_)
- return;
- num_buckets_ = num_buckets;
- ASIO_ASSERT(num_buckets_ != 0);
-
- iterator end_iter = values_.end();
-
- // Update number of buckets and initialise all buckets to empty.
- bucket_type* tmp = new bucket_type[num_buckets_];
- delete[] buckets_;
- buckets_ = tmp;
- for (std::size_t i = 0; i < num_buckets_; ++i)
- buckets_[i].first = buckets_[i].last = end_iter;
-
- // Put all values back into the hash.
- iterator iter = values_.begin();
- while (iter != end_iter)
- {
- std::size_t bucket = calculate_hash_value(iter->first) % num_buckets_;
- if (buckets_[bucket].last == end_iter)
- {
- buckets_[bucket].first = buckets_[bucket].last = iter++;
- }
- else if (++buckets_[bucket].last == iter)
- {
- ++iter;
- }
- else
- {
- values_.splice(buckets_[bucket].last, values_, iter++);
- --buckets_[bucket].last;
- }
- }
- }
-
- // Insert an element into the values list by splicing from the spares list,
- // if a spare is available, and otherwise by inserting a new element.
- iterator values_insert(iterator it, const value_type& v)
- {
- if (spares_.empty())
- {
- return values_.insert(it, v);
- }
- else
- {
- spares_.front() = v;
- values_.splice(it, spares_, spares_.begin());
- return --it;
- }
- }
-
- // Erase an element from the values list by splicing it to the spares list.
- void values_erase(iterator it)
- {
- *it = value_type();
- spares_.splice(spares_.begin(), values_, it);
- }
-
- // The number of elements in the hash.
- std::size_t size_;
-
- // The list of all values in the hash map.
- std::list<value_type> values_;
-
- // The list of spare nodes waiting to be recycled. Assumes that POD types only
- // are stored in the hash map.
- std::list<value_type> spares_;
-
- // The type for a bucket in the hash table.
- struct bucket_type
- {
- iterator first;
- iterator last;
- };
-
- // The buckets in the hash.
- bucket_type* buckets_;
-
- // The number of buckets in the hash.
- std::size_t num_buckets_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HASH_MAP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/buffer_sequence_adapter.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/buffer_sequence_adapter.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/buffer_sequence_adapter.ipp
deleted file mode 100644
index 7a57a137..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/buffer_sequence_adapter.ipp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/impl/buffer_sequence_adapter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP
-#define ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <robuffer.h>
-#include <windows.storage.streams.h>
-#include <wrl/implements.h>
-#include "asio/detail/buffer_sequence_adapter.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_buffer_impl :
- public Microsoft::WRL::RuntimeClass<
- Microsoft::WRL::RuntimeClassFlags<
- Microsoft::WRL::RuntimeClassType::WinRtClassicComMix>,
- ABI::Windows::Storage::Streams::IBuffer,
- Windows::Storage::Streams::IBufferByteAccess>
-{
-public:
- explicit winrt_buffer_impl(const asio::const_buffer& b)
- {
- bytes_ = const_cast<byte*>(asio::buffer_cast<const byte*>(b));
- length_ = asio::buffer_size(b);
- capacity_ = asio::buffer_size(b);
- }
-
- explicit winrt_buffer_impl(const asio::mutable_buffer& b)
- {
- bytes_ = const_cast<byte*>(asio::buffer_cast<const byte*>(b));
- length_ = 0;
- capacity_ = asio::buffer_size(b);
- }
-
- ~winrt_buffer_impl()
- {
- }
-
- STDMETHODIMP Buffer(byte** value)
- {
- *value = bytes_;
- return S_OK;
- }
-
- STDMETHODIMP get_Capacity(UINT32* value)
- {
- *value = capacity_;
- return S_OK;
- }
-
- STDMETHODIMP get_Length(UINT32 *value)
- {
- *value = length_;
- return S_OK;
- }
-
- STDMETHODIMP put_Length(UINT32 value)
- {
- if (value > capacity_)
- return E_INVALIDARG;
- length_ = value;
- return S_OK;
- }
-
-private:
- byte* bytes_;
- UINT32 length_;
- UINT32 capacity_;
-};
-
-void buffer_sequence_adapter_base::init_native_buffer(
- buffer_sequence_adapter_base::native_buffer_type& buf,
- const asio::mutable_buffer& buffer)
-{
- std::memset(&buf, 0, sizeof(native_buffer_type));
- Microsoft::WRL::ComPtr<IInspectable> insp
- = Microsoft::WRL::Make<winrt_buffer_impl>(buffer);
- buf = reinterpret_cast<Windows::Storage::Streams::IBuffer^>(insp.Get());
-}
-
-void buffer_sequence_adapter_base::init_native_buffer(
- buffer_sequence_adapter_base::native_buffer_type& buf,
- const asio::const_buffer& buffer)
-{
- std::memset(&buf, 0, sizeof(native_buffer_type));
- Microsoft::WRL::ComPtr<IInspectable> insp
- = Microsoft::WRL::Make<winrt_buffer_impl>(buffer);
- Platform::Object^ buf_obj = reinterpret_cast<Platform::Object^>(insp.Get());
- buf = reinterpret_cast<Windows::Storage::Streams::IBuffer^>(insp.Get());
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/descriptor_ops.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/descriptor_ops.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/descriptor_ops.ipp
deleted file mode 100644
index b260841..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/descriptor_ops.ipp
+++ /dev/null
@@ -1,451 +0,0 @@
-//
-// detail/impl/descriptor_ops.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
-#define ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cerrno>
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/error.hpp"
-
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace descriptor_ops {
-
-int open(const char* path, int flags, asio::error_code& ec)
-{
- errno = 0;
- int result = error_wrapper(::open(path, flags), ec);
- if (result >= 0)
- ec = asio::error_code();
- return result;
-}
-
-int close(int d, state_type& state, asio::error_code& ec)
-{
- int result = 0;
- if (d != -1)
- {
- errno = 0;
- result = error_wrapper(::close(d), ec);
-
- if (result != 0
- && (ec == asio::error::would_block
- || ec == asio::error::try_again))
- {
- // According to UNIX Network Programming Vol. 1, it is possible for
- // close() to fail with EWOULDBLOCK under certain circumstances. What
- // isn't clear is the state of the descriptor after this error. The one
- // current OS where this behaviour is seen, Windows, says that the socket
- // remains open. Therefore we'll put the descriptor back into blocking
- // mode and have another attempt at closing it.
-#if defined(__SYMBIAN32__)
- int flags = ::fcntl(d, F_GETFL, 0);
- if (flags >= 0)
- ::fcntl(d, F_SETFL, flags & ~O_NONBLOCK);
-#else // defined(__SYMBIAN32__)
- ioctl_arg_type arg = 0;
- ::ioctl(d, FIONBIO, &arg);
-#endif // defined(__SYMBIAN32__)
- state &= ~non_blocking;
-
- errno = 0;
- result = error_wrapper(::close(d), ec);
- }
- }
-
- if (result == 0)
- ec = asio::error_code();
- return result;
-}
-
-bool set_user_non_blocking(int d, state_type& state,
- bool value, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return false;
- }
-
- errno = 0;
-#if defined(__SYMBIAN32__)
- int result = error_wrapper(::fcntl(d, F_GETFL, 0), ec);
- if (result >= 0)
- {
- errno = 0;
- int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
- result = error_wrapper(::fcntl(d, F_SETFL, flag), ec);
- }
-#else // defined(__SYMBIAN32__)
- ioctl_arg_type arg = (value ? 1 : 0);
- int result = error_wrapper(::ioctl(d, FIONBIO, &arg), ec);
-#endif // defined(__SYMBIAN32__)
-
- if (result >= 0)
- {
- ec = asio::error_code();
- if (value)
- state |= user_set_non_blocking;
- else
- {
- // Clearing the user-set non-blocking mode always overrides any
- // internally-set non-blocking flag. Any subsequent asynchronous
- // operations will need to re-enable non-blocking I/O.
- state &= ~(user_set_non_blocking | internal_non_blocking);
- }
- return true;
- }
-
- return false;
-}
-
-bool set_internal_non_blocking(int d, state_type& state,
- bool value, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return false;
- }
-
- if (!value && (state & user_set_non_blocking))
- {
- // It does not make sense to clear the internal non-blocking flag if the
- // user still wants non-blocking behaviour. Return an error and let the
- // caller figure out whether to update the user-set non-blocking flag.
- ec = asio::error::invalid_argument;
- return false;
- }
-
- errno = 0;
-#if defined(__SYMBIAN32__)
- int result = error_wrapper(::fcntl(d, F_GETFL, 0), ec);
- if (result >= 0)
- {
- errno = 0;
- int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
- result = error_wrapper(::fcntl(d, F_SETFL, flag), ec);
- }
-#else // defined(__SYMBIAN32__)
- ioctl_arg_type arg = (value ? 1 : 0);
- int result = error_wrapper(::ioctl(d, FIONBIO, &arg), ec);
-#endif // defined(__SYMBIAN32__)
-
- if (result >= 0)
- {
- ec = asio::error_code();
- if (value)
- state |= internal_non_blocking;
- else
- state &= ~internal_non_blocking;
- return true;
- }
-
- return false;
-}
-
-std::size_t sync_read(int d, state_type state, buf* bufs,
- std::size_t count, bool all_empty, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // A request to read 0 bytes on a stream is a no-op.
- if (all_empty)
- {
- ec = asio::error_code();
- return 0;
- }
-
- // Read some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- errno = 0;
- signed_size_type bytes = error_wrapper(::readv(
- d, bufs, static_cast<int>(count)), ec);
-
- // Check if operation succeeded.
- if (bytes > 0)
- return bytes;
-
- // Check for EOF.
- if (bytes == 0)
- {
- ec = asio::error::eof;
- return 0;
- }
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for descriptor to become ready.
- if (descriptor_ops::poll_read(d, 0, ec) < 0)
- return 0;
- }
-}
-
-bool non_blocking_read(int d, buf* bufs, std::size_t count,
- asio::error_code& ec, std::size_t& bytes_transferred)
-{
- for (;;)
- {
- // Read some data.
- errno = 0;
- signed_size_type bytes = error_wrapper(::readv(
- d, bufs, static_cast<int>(count)), ec);
-
- // Check for end of stream.
- if (bytes == 0)
- {
- ec = asio::error::eof;
- return true;
- }
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes > 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-std::size_t sync_write(int d, state_type state, const buf* bufs,
- std::size_t count, bool all_empty, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return 0;
- }
-
- // A request to write 0 bytes on a stream is a no-op.
- if (all_empty)
- {
- ec = asio::error_code();
- return 0;
- }
-
- // Write some data.
- for (;;)
- {
- // Try to complete the operation without blocking.
- errno = 0;
- signed_size_type bytes = error_wrapper(::writev(
- d, bufs, static_cast<int>(count)), ec);
-
- // Check if operation succeeded.
- if (bytes > 0)
- return bytes;
-
- // Operation failed.
- if ((state & user_set_non_blocking)
- || (ec != asio::error::would_block
- && ec != asio::error::try_again))
- return 0;
-
- // Wait for descriptor to become ready.
- if (descriptor_ops::poll_write(d, 0, ec) < 0)
- return 0;
- }
-}
-
-bool non_blocking_write(int d, const buf* bufs, std::size_t count,
- asio::error_code& ec, std::size_t& bytes_transferred)
-{
- for (;;)
- {
- // Write some data.
- errno = 0;
- signed_size_type bytes = error_wrapper(::writev(
- d, bufs, static_cast<int>(count)), ec);
-
- // Retry operation if interrupted by signal.
- if (ec == asio::error::interrupted)
- continue;
-
- // Check if we need to run the operation again.
- if (ec == asio::error::would_block
- || ec == asio::error::try_again)
- return false;
-
- // Operation is complete.
- if (bytes >= 0)
- {
- ec = asio::error_code();
- bytes_transferred = bytes;
- }
- else
- bytes_transferred = 0;
-
- return true;
- }
-}
-
-int ioctl(int d, state_type& state, long cmd,
- ioctl_arg_type* arg, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return -1;
- }
-
- errno = 0;
- int result = error_wrapper(::ioctl(d, cmd, arg), ec);
-
- if (result >= 0)
- {
- ec = asio::error_code();
-
- // When updating the non-blocking mode we always perform the ioctl syscall,
- // even if the flags would otherwise indicate that the descriptor is
- // already in the correct state. This ensures that the underlying
- // descriptor is put into the state that has been requested by the user. If
- // the ioctl syscall was successful then we need to update the flags to
- // match.
- if (cmd == static_cast<long>(FIONBIO))
- {
- if (*arg)
- {
- state |= user_set_non_blocking;
- }
- else
- {
- // Clearing the non-blocking mode always overrides any internally-set
- // non-blocking flag. Any subsequent asynchronous operations will need
- // to re-enable non-blocking I/O.
- state &= ~(user_set_non_blocking | internal_non_blocking);
- }
- }
- }
-
- return result;
-}
-
-int fcntl(int d, int cmd, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return -1;
- }
-
- errno = 0;
- int result = error_wrapper(::fcntl(d, cmd), ec);
- if (result != -1)
- ec = asio::error_code();
- return result;
-}
-
-int fcntl(int d, int cmd, long arg, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return -1;
- }
-
- errno = 0;
- int result = error_wrapper(::fcntl(d, cmd, arg), ec);
- if (result != -1)
- ec = asio::error_code();
- return result;
-}
-
-int poll_read(int d, state_type state, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return -1;
- }
-
- pollfd fds;
- fds.fd = d;
- fds.events = POLLIN;
- fds.revents = 0;
- int timeout = (state & user_set_non_blocking) ? 0 : -1;
- errno = 0;
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
- if (result == 0)
- ec = (state & user_set_non_blocking)
- ? asio::error::would_block : asio::error_code();
- else if (result > 0)
- ec = asio::error_code();
- return result;
-}
-
-int poll_write(int d, state_type state, asio::error_code& ec)
-{
- if (d == -1)
- {
- ec = asio::error::bad_descriptor;
- return -1;
- }
-
- pollfd fds;
- fds.fd = d;
- fds.events = POLLOUT;
- fds.revents = 0;
- int timeout = (state & user_set_non_blocking) ? 0 : -1;
- errno = 0;
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
- if (result == 0)
- ec = (state & user_set_non_blocking)
- ? asio::error::would_block : asio::error_code();
- else if (result > 0)
- ec = asio::error_code();
- return result;
-}
-
-} // namespace descriptor_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.hpp
deleted file mode 100644
index f43cab2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/impl/dev_poll_reactor.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_DETAIL_IMPL_DEV_POLL_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_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_HAS_DEV_POLL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void dev_poll_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_add_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void dev_poll_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void dev_poll_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- io_service_.post_immediate_completion(op, false);
- return;
- }
-
- bool earliest = queue.enqueue_timer(time, timer, op);
- io_service_.work_started();
- if (earliest)
- interrupter_.interrupt();
-}
-
-template <typename Time_Traits>
-std::size_t dev_poll_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- op_queue<operation> ops;
- std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
- lock.unlock();
- io_service_.post_deferred_completions(ops);
- return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_DEV_POLL)
-
-#endif // ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[11/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/io_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/io_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/io_service.hpp
deleted file mode 100644
index 28f2434..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/io_service.hpp
+++ /dev/null
@@ -1,770 +0,0 @@
-//
-// io_service.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_IO_SERVICE_HPP
-#define ASIO_IO_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 <stdexcept>
-#include <typeinfo>
-#include "asio/async_result.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/wrapped_handler.hpp"
-#include "asio/error_code.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# include "asio/detail/winsock_init.hpp"
-#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
- || defined(__osf__)
-# include "asio/detail/signal_init.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-class io_service;
-template <typename Service> Service& use_service(io_service& ios);
-template <typename Service> void add_service(io_service& ios, Service* svc);
-template <typename Service> bool has_service(io_service& ios);
-
-namespace detail {
-#if defined(ASIO_HAS_IOCP)
- typedef class win_iocp_io_service io_service_impl;
- class win_iocp_overlapped_ptr;
-#else
- typedef class task_io_service io_service_impl;
-#endif
- class service_registry;
-} // namespace detail
-
-/// Provides core I/O functionality.
-/**
- * The io_service class provides the core I/O functionality for users of the
- * asynchronous I/O objects, including:
- *
- * @li asio::ip::tcp::socket
- * @li asio::ip::tcp::acceptor
- * @li asio::ip::udp::socket
- * @li asio::deadline_timer.
- *
- * The io_service class also includes facilities intended for developers of
- * custom asynchronous services.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe, with the specific exceptions of the reset() and
- * notify_fork() functions. Calling reset() while there are unfinished run(),
- * run_one(), poll() or poll_one() calls results in undefined behaviour. The
- * notify_fork() function should not be called while any io_service function,
- * or any function on an I/O object that is associated with the io_service, is
- * being called in another thread.
- *
- * @par Concepts:
- * Dispatcher.
- *
- * @par Synchronous and asynchronous operations
- *
- * Synchronous operations on I/O objects implicitly run the io_service object
- * for an individual operation. The io_service functions run(), run_one(),
- * poll() or poll_one() must be called for the io_service to perform
- * asynchronous operations on behalf of a C++ program. Notification that an
- * asynchronous operation has completed is delivered by invocation of the
- * associated handler. Handlers are invoked only by a thread that is currently
- * calling any overload of run(), run_one(), poll() or poll_one() for the
- * io_service.
- *
- * @par Effect of exceptions thrown from handlers
- *
- * If an exception is thrown from a handler, the exception is allowed to
- * propagate through the throwing thread's invocation of run(), run_one(),
- * poll() or poll_one(). No other threads that are calling any of these
- * functions are affected. It is then the responsibility of the application to
- * catch the exception.
- *
- * After the exception has been caught, the run(), run_one(), poll() or
- * poll_one() call may be restarted @em without the need for an intervening
- * call to reset(). This allows the thread to rejoin the io_service object's
- * thread pool without impacting any other threads in the pool.
- *
- * For example:
- *
- * @code
- * asio::io_service io_service;
- * ...
- * for (;;)
- * {
- * try
- * {
- * io_service.run();
- * break; // run() exited normally
- * }
- * catch (my_exception& e)
- * {
- * // Deal with exception as appropriate.
- * }
- * }
- * @endcode
- *
- * @par Stopping the io_service from running out of work
- *
- * Some applications may need to prevent an io_service object's run() call from
- * returning when there is no more work to do. For example, the io_service may
- * be being run in a background thread that is launched prior to the
- * application's asynchronous operations. The run() call may be kept running by
- * creating an object of type asio::io_service::work:
- *
- * @code asio::io_service io_service;
- * asio::io_service::work work(io_service);
- * ... @endcode
- *
- * To effect a shutdown, the application will then need to call the io_service
- * object's stop() member function. This will cause the io_service run() call
- * to return as soon as possible, abandoning unfinished operations and without
- * permitting ready handlers to be dispatched.
- *
- * Alternatively, if the application requires that all operations and handlers
- * be allowed to finish normally, the work object may be explicitly destroyed.
- *
- * @code asio::io_service io_service;
- * auto_ptr<asio::io_service::work> work(
- * new asio::io_service::work(io_service));
- * ...
- * work.reset(); // Allow run() to exit. @endcode
- *
- * @par The io_service class and I/O services
- *
- * Class io_service implements an extensible, type-safe, polymorphic set of I/O
- * services, indexed by service type. An object of class io_service must be
- * initialised before I/O objects such as sockets, resolvers and timers can be
- * used. These I/O objects are distinguished by having constructors that accept
- * an @c io_service& parameter.
- *
- * I/O services exist to manage the logical interface to the operating system on
- * behalf of the I/O objects. In particular, there are resources that are shared
- * across a class of I/O objects. For example, timers may be implemented in
- * terms of a single timer queue. The I/O services manage these shared
- * resources.
- *
- * Access to the services of an io_service is via three function templates,
- * use_service(), add_service() and has_service().
- *
- * In a call to @c use_service<Service>(), the type argument chooses a service,
- * making available all members of the named type. If @c Service is not present
- * in an io_service, an object of type @c Service is created and added to the
- * io_service. A C++ program can check if an io_service implements a
- * particular service with the function template @c has_service<Service>().
- *
- * Service objects may be explicitly added to an io_service using the function
- * template @c add_service<Service>(). If the @c Service is already present, the
- * service_already_exists exception is thrown. If the owner of the service is
- * not the same object as the io_service parameter, the invalid_service_owner
- * exception is thrown.
- *
- * Once a service reference is obtained from an io_service object by calling
- * use_service(), that reference remains usable as long as the owning io_service
- * object exists.
- *
- * All I/O service implementations have io_service::service as a public base
- * class. Custom I/O services may be implemented by deriving from this class and
- * then added to an io_service using the facilities described above.
- */
-class io_service
- : private noncopyable
-{
-private:
- typedef detail::io_service_impl impl_type;
-#if defined(ASIO_HAS_IOCP)
- friend class detail::win_iocp_overlapped_ptr;
-#endif
-
-public:
- class work;
- friend class work;
-
- class id;
-
- class service;
-
- class strand;
-
- /// Constructor.
- ASIO_DECL io_service();
-
- /// Constructor.
- /**
- * Construct with a hint about the required level of concurrency.
- *
- * @param concurrency_hint A suggestion to the implementation on how many
- * threads it should allow to run simultaneously.
- */
- ASIO_DECL explicit io_service(std::size_t concurrency_hint);
-
- /// Destructor.
- /**
- * On destruction, the io_service performs the following sequence of
- * operations:
- *
- * @li For each service object @c svc in the io_service set, in reverse order
- * of the beginning of service object lifetime, performs
- * @c svc->shutdown_service().
- *
- * @li Uninvoked handler objects that were scheduled for deferred invocation
- * on the io_service, or any associated strand, are destroyed.
- *
- * @li For each service object @c svc in the io_service set, in reverse order
- * of the beginning of service object lifetime, performs
- * <tt>delete static_cast<io_service::service*>(svc)</tt>.
- *
- * @note The destruction sequence described above permits programs to
- * simplify their resource management by using @c shared_ptr<>. Where an
- * object's lifetime is tied to the lifetime of a connection (or some other
- * sequence of asynchronous operations), a @c shared_ptr to the object would
- * be bound into the handlers for all asynchronous operations associated with
- * it. This works as follows:
- *
- * @li When a single connection ends, all associated asynchronous operations
- * complete. The corresponding handler objects are destroyed, and all
- * @c shared_ptr references to the objects are destroyed.
- *
- * @li To shut down the whole program, the io_service function stop() is
- * called to terminate any run() calls as soon as possible. The io_service
- * destructor defined above destroys all handlers, causing all @c shared_ptr
- * references to all connection objects to be destroyed.
- */
- ASIO_DECL ~io_service();
-
- /// Run the io_service object's event processing loop.
- /**
- * The run() function blocks until all work has finished and there are no
- * more handlers to be dispatched, or until the io_service has been stopped.
- *
- * Multiple threads may call the run() function to set up a pool of threads
- * from which the io_service may execute handlers. All threads that are
- * waiting in the pool are equivalent and the io_service may choose any one
- * of them to invoke a handler.
- *
- * A normal exit from the run() function implies that the io_service object
- * is stopped (the stopped() function returns @c true). Subsequent calls to
- * run(), run_one(), poll() or poll_one() will return immediately unless there
- * is a prior call to reset().
- *
- * @return The number of handlers that were executed.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The run() function must not be called from a thread that is currently
- * calling one of run(), run_one(), poll() or poll_one() on the same
- * io_service object.
- *
- * The poll() function may also be used to dispatch ready handlers, but
- * without blocking.
- */
- ASIO_DECL std::size_t run();
-
- /// Run the io_service object's event processing loop.
- /**
- * The run() function blocks until all work has finished and there are no
- * more handlers to be dispatched, or until the io_service has been stopped.
- *
- * Multiple threads may call the run() function to set up a pool of threads
- * from which the io_service may execute handlers. All threads that are
- * waiting in the pool are equivalent and the io_service may choose any one
- * of them to invoke a handler.
- *
- * A normal exit from the run() function implies that the io_service object
- * is stopped (the stopped() function returns @c true). Subsequent calls to
- * run(), run_one(), poll() or poll_one() will return immediately unless there
- * is a prior call to reset().
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of handlers that were executed.
- *
- * @note The run() function must not be called from a thread that is currently
- * calling one of run(), run_one(), poll() or poll_one() on the same
- * io_service object.
- *
- * The poll() function may also be used to dispatch ready handlers, but
- * without blocking.
- */
- ASIO_DECL std::size_t run(asio::error_code& ec);
-
- /// Run the io_service object's event processing loop to execute at most one
- /// handler.
- /**
- * The run_one() function blocks until one handler has been dispatched, or
- * until the io_service has been stopped.
- *
- * @return The number of handlers that were executed. A zero return value
- * implies that the io_service object is stopped (the stopped() function
- * returns @c true). Subsequent calls to run(), run_one(), poll() or
- * poll_one() will return immediately unless there is a prior call to
- * reset().
- *
- * @throws asio::system_error Thrown on failure.
- */
- ASIO_DECL std::size_t run_one();
-
- /// Run the io_service object's event processing loop to execute at most one
- /// handler.
- /**
- * The run_one() function blocks until one handler has been dispatched, or
- * until the io_service has been stopped.
- *
- * @return The number of handlers that were executed. A zero return value
- * implies that the io_service object is stopped (the stopped() function
- * returns @c true). Subsequent calls to run(), run_one(), poll() or
- * poll_one() will return immediately unless there is a prior call to
- * reset().
- *
- * @return The number of handlers that were executed.
- */
- ASIO_DECL std::size_t run_one(asio::error_code& ec);
-
- /// Run the io_service object's event processing loop to execute ready
- /// handlers.
- /**
- * The poll() function runs handlers that are ready to run, without blocking,
- * until the io_service has been stopped or there are no more ready handlers.
- *
- * @return The number of handlers that were executed.
- *
- * @throws asio::system_error Thrown on failure.
- */
- ASIO_DECL std::size_t poll();
-
- /// Run the io_service object's event processing loop to execute ready
- /// handlers.
- /**
- * The poll() function runs handlers that are ready to run, without blocking,
- * until the io_service has been stopped or there are no more ready handlers.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of handlers that were executed.
- */
- ASIO_DECL std::size_t poll(asio::error_code& ec);
-
- /// Run the io_service object's event processing loop to execute one ready
- /// handler.
- /**
- * The poll_one() function runs at most one handler that is ready to run,
- * without blocking.
- *
- * @return The number of handlers that were executed.
- *
- * @throws asio::system_error Thrown on failure.
- */
- ASIO_DECL std::size_t poll_one();
-
- /// Run the io_service object's event processing loop to execute one ready
- /// handler.
- /**
- * The poll_one() function runs at most one handler that is ready to run,
- * without blocking.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of handlers that were executed.
- */
- ASIO_DECL std::size_t poll_one(asio::error_code& ec);
-
- /// Stop the io_service object's event processing loop.
- /**
- * This function does not block, but instead simply signals the io_service to
- * stop. All invocations of its run() or run_one() member functions should
- * return as soon as possible. Subsequent calls to run(), run_one(), poll()
- * or poll_one() will return immediately until reset() is called.
- */
- ASIO_DECL void stop();
-
- /// Determine whether the io_service object has been stopped.
- /**
- * This function is used to determine whether an io_service object has been
- * stopped, either through an explicit call to stop(), or due to running out
- * of work. When an io_service object is stopped, calls to run(), run_one(),
- * poll() or poll_one() will return immediately without invoking any
- * handlers.
- *
- * @return @c true if the io_service object is stopped, otherwise @c false.
- */
- ASIO_DECL bool stopped() const;
-
- /// Reset the io_service in preparation for a subsequent run() invocation.
- /**
- * This function must be called prior to any second or later set of
- * invocations of the run(), run_one(), poll() or poll_one() functions when a
- * previous invocation of these functions returned due to the io_service
- * being stopped or running out of work. After a call to reset(), the
- * io_service object's stopped() function will return @c false.
- *
- * This function must not be called while there are any unfinished calls to
- * the run(), run_one(), poll() or poll_one() functions.
- */
- ASIO_DECL void reset();
-
- /// Request the io_service to invoke the given handler.
- /**
- * This function is used to ask the io_service to execute the given handler.
- *
- * The io_service guarantees that the handler will only be called in a thread
- * in which the run(), run_one(), poll() or poll_one() member functions is
- * currently being invoked. The handler may be executed inside this function
- * if the guarantee can be met.
- *
- * @param handler The handler to be called. The io_service will make
- * a copy of the handler object as required. The function signature of the
- * handler must be: @code void handler(); @endcode
- *
- * @note This function throws an exception only if:
- *
- * @li the handler's @c asio_handler_allocate function; or
- *
- * @li the handler's copy constructor
- *
- * throws an exception.
- */
- template <typename CompletionHandler>
- ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
- dispatch(ASIO_MOVE_ARG(CompletionHandler) handler);
-
- /// Request the io_service to invoke the given handler and return immediately.
- /**
- * This function is used to ask the io_service to execute the given handler,
- * but without allowing the io_service to call the handler from inside this
- * function.
- *
- * The io_service guarantees that the handler will only be called in a thread
- * in which the run(), run_one(), poll() or poll_one() member functions is
- * currently being invoked.
- *
- * @param handler The handler to be called. The io_service will make
- * a copy of the handler object as required. The function signature of the
- * handler must be: @code void handler(); @endcode
- *
- * @note This function throws an exception only if:
- *
- * @li the handler's @c asio_handler_allocate function; or
- *
- * @li the handler's copy constructor
- *
- * throws an exception.
- */
- template <typename CompletionHandler>
- ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
- post(ASIO_MOVE_ARG(CompletionHandler) handler);
-
- /// Create a new handler that automatically dispatches the wrapped handler
- /// on the io_service.
- /**
- * This function is used to create a new handler function object that, when
- * invoked, will automatically pass the wrapped handler to the io_service
- * object's dispatch function.
- *
- * @param handler The handler to be wrapped. The io_service will make a copy
- * of the handler object as required. The function signature of the handler
- * must be: @code void handler(A1 a1, ... An an); @endcode
- *
- * @return A function object that, when invoked, passes the wrapped handler to
- * the io_service object's dispatch function. Given a function object with the
- * signature:
- * @code R f(A1 a1, ... An an); @endcode
- * If this function object is passed to the wrap function like so:
- * @code io_service.wrap(f); @endcode
- * then the return value is a function object with the signature
- * @code void g(A1 a1, ... An an); @endcode
- * that, when invoked, executes code equivalent to:
- * @code io_service.dispatch(boost::bind(f, a1, ... an)); @endcode
- */
- template <typename Handler>
-#if defined(GENERATING_DOCUMENTATION)
- unspecified
-#else
- detail::wrapped_handler<io_service&, Handler>
-#endif
- wrap(Handler handler);
-
- /// Fork-related event notifications.
- enum fork_event
- {
- /// Notify the io_service that the process is about to fork.
- fork_prepare,
-
- /// Notify the io_service that the process has forked and is the parent.
- fork_parent,
-
- /// Notify the io_service that the process has forked and is the child.
- fork_child
- };
-
- /// Notify the io_service of a fork-related event.
- /**
- * This function is used to inform the io_service that the process is about
- * to fork, or has just forked. This allows the io_service, and the services
- * it contains, to perform any necessary housekeeping to ensure correct
- * operation following a fork.
- *
- * This function must not be called while any other io_service function, or
- * any function on an I/O object associated with the io_service, is being
- * called in another thread. It is, however, safe to call this function from
- * within a completion handler, provided no other thread is accessing the
- * io_service.
- *
- * @param event A fork-related event.
- *
- * @throws asio::system_error Thrown on failure. If the notification
- * fails the io_service object should no longer be used and should be
- * destroyed.
- *
- * @par Example
- * The following code illustrates how to incorporate the notify_fork()
- * function:
- * @code my_io_service.notify_fork(asio::io_service::fork_prepare);
- * if (fork() == 0)
- * {
- * // This is the child process.
- * my_io_service.notify_fork(asio::io_service::fork_child);
- * }
- * else
- * {
- * // This is the parent process.
- * my_io_service.notify_fork(asio::io_service::fork_parent);
- * } @endcode
- *
- * @note For each service object @c svc in the io_service set, performs
- * <tt>svc->fork_service();</tt>. When processing the fork_prepare event,
- * services are visited in reverse order of the beginning of service object
- * lifetime. Otherwise, services are visited in order of the beginning of
- * service object lifetime.
- */
- ASIO_DECL void notify_fork(asio::io_service::fork_event event);
-
- /// Obtain the service object corresponding to the given type.
- /**
- * This function is used to locate a service object that corresponds to
- * the given service type. If there is no existing implementation of the
- * service, then the io_service will create a new instance of the service.
- *
- * @param ios The io_service object that owns the service.
- *
- * @return The service interface implementing the specified service type.
- * Ownership of the service interface is not transferred to the caller.
- */
- template <typename Service>
- friend Service& use_service(io_service& ios);
-
- /// Add a service object to the io_service.
- /**
- * This function is used to add a service to the io_service.
- *
- * @param ios The io_service object that owns the service.
- *
- * @param svc The service object. On success, ownership of the service object
- * is transferred to the io_service. When the io_service object is destroyed,
- * it will destroy the service object by performing:
- * @code delete static_cast<io_service::service*>(svc) @endcode
- *
- * @throws asio::service_already_exists Thrown if a service of the
- * given type is already present in the io_service.
- *
- * @throws asio::invalid_service_owner Thrown if the service's owning
- * io_service is not the io_service object specified by the ios parameter.
- */
- template <typename Service>
- friend void add_service(io_service& ios, Service* svc);
-
- /// Determine if an io_service contains a specified service type.
- /**
- * This function is used to determine whether the io_service contains a
- * service object corresponding to the given service type.
- *
- * @param ios The io_service object that owns the service.
- *
- * @return A boolean indicating whether the io_service contains the service.
- */
- template <typename Service>
- friend bool has_service(io_service& ios);
-
-private:
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- detail::winsock_init<> init_;
-#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
- || defined(__osf__)
- detail::signal_init<> init_;
-#endif
-
- // The service registry.
- asio::detail::service_registry* service_registry_;
-
- // The implementation.
- impl_type& impl_;
-};
-
-/// Class to inform the io_service when it has work to do.
-/**
- * The work class is used to inform the io_service when work starts and
- * finishes. This ensures that the io_service object's run() function will not
- * exit while work is underway, and that it does exit when there is no
- * unfinished work remaining.
- *
- * The work class is copy-constructible so that it may be used as a data member
- * in a handler class. It is not assignable.
- */
-class io_service::work
-{
-public:
- /// Constructor notifies the io_service that work is starting.
- /**
- * The constructor is used to inform the io_service that some work has begun.
- * This ensures that the io_service object's run() function will not exit
- * while the work is underway.
- */
- explicit work(asio::io_service& io_service);
-
- /// Copy constructor notifies the io_service that work is starting.
- /**
- * The constructor is used to inform the io_service that some work has begun.
- * This ensures that the io_service object's run() function will not exit
- * while the work is underway.
- */
- work(const work& other);
-
- /// Destructor notifies the io_service that the work is complete.
- /**
- * The destructor is used to inform the io_service that some work has
- * finished. Once the count of unfinished work reaches zero, the io_service
- * object's run() function is permitted to exit.
- */
- ~work();
-
- /// Get the io_service associated with the work.
- asio::io_service& get_io_service();
-
-private:
- // Prevent assignment.
- void operator=(const work& other);
-
- // The io_service implementation.
- detail::io_service_impl& io_service_impl_;
-};
-
-/// Class used to uniquely identify a service.
-class io_service::id
- : private noncopyable
-{
-public:
- /// Constructor.
- id() {}
-};
-
-/// Base class for all io_service services.
-class io_service::service
- : private noncopyable
-{
-public:
- /// Get the io_service object that owns the service.
- asio::io_service& get_io_service();
-
-protected:
- /// Constructor.
- /**
- * @param owner The io_service object that owns the service.
- */
- ASIO_DECL service(asio::io_service& owner);
-
- /// Destructor.
- ASIO_DECL virtual ~service();
-
-private:
- /// Destroy all user-defined handler objects owned by the service.
- virtual void shutdown_service() = 0;
-
- /// Handle notification of a fork-related event to perform any necessary
- /// housekeeping.
- /**
- * This function is not a pure virtual so that services only have to
- * implement it if necessary. The default implementation does nothing.
- */
- ASIO_DECL virtual void fork_service(
- asio::io_service::fork_event event);
-
- friend class asio::detail::service_registry;
- struct key
- {
- key() : type_info_(0), id_(0) {}
- const std::type_info* type_info_;
- const asio::io_service::id* id_;
- } key_;
-
- asio::io_service& owner_;
- service* next_;
-};
-
-/// Exception thrown when trying to add a duplicate service to an io_service.
-class service_already_exists
- : public std::logic_error
-{
-public:
- ASIO_DECL service_already_exists();
-};
-
-/// Exception thrown when trying to add a service object to an io_service where
-/// the service has a different owner.
-class invalid_service_owner
- : public std::logic_error
-{
-public:
- ASIO_DECL invalid_service_owner();
-};
-
-namespace detail {
-
-// Special derived service id type to keep classes header-file only.
-template <typename Type>
-class service_id
- : public asio::io_service::id
-{
-};
-
-// Special service base class to keep classes header-file only.
-template <typename Type>
-class service_base
- : public asio::io_service::service
-{
-public:
- static asio::detail::service_id<Type> id;
-
- // Constructor.
- service_base(asio::io_service& io_service)
- : asio::io_service::service(io_service)
- {
- }
-};
-
-template <typename Type>
-asio::detail::service_id<Type> service_base<Type>::id;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/io_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/io_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IO_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address.hpp
deleted file mode 100644
index 952a954..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address.hpp
+++ /dev/null
@@ -1,200 +0,0 @@
-//
-// ip/address.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_IP_ADDRESS_HPP
-#define ASIO_IP_ADDRESS_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 "asio/error_code.hpp"
-#include "asio/ip/address_v4.hpp"
-#include "asio/ip/address_v6.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Implements version-independent IP addresses.
-/**
- * The asio::ip::address class provides the ability to use either IP
- * version 4 or version 6 addresses.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class address
-{
-public:
- /// Default constructor.
- ASIO_DECL address();
-
- /// Construct an address from an IPv4 address.
- ASIO_DECL address(const asio::ip::address_v4& ipv4_address);
-
- /// Construct an address from an IPv6 address.
- ASIO_DECL address(const asio::ip::address_v6& ipv6_address);
-
- /// Copy constructor.
- ASIO_DECL address(const address& other);
-
-#if defined(ASIO_HAS_MOVE)
- /// Move constructor.
- ASIO_DECL address(address&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from another address.
- ASIO_DECL address& operator=(const address& other);
-
-#if defined(ASIO_HAS_MOVE)
- /// Move-assign from another address.
- ASIO_DECL address& operator=(address&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from an IPv4 address.
- ASIO_DECL address& operator=(
- const asio::ip::address_v4& ipv4_address);
-
- /// Assign from an IPv6 address.
- ASIO_DECL address& operator=(
- const asio::ip::address_v6& ipv6_address);
-
- /// Get whether the address is an IP version 4 address.
- bool is_v4() const
- {
- return type_ == ipv4;
- }
-
- /// Get whether the address is an IP version 6 address.
- bool is_v6() const
- {
- return type_ == ipv6;
- }
-
- /// Get the address as an IP version 4 address.
- ASIO_DECL asio::ip::address_v4 to_v4() const;
-
- /// Get the address as an IP version 6 address.
- ASIO_DECL asio::ip::address_v6 to_v6() const;
-
- /// Get the address as a string in dotted decimal format.
- ASIO_DECL std::string to_string() const;
-
- /// Get the address as a string in dotted decimal format.
- ASIO_DECL std::string to_string(asio::error_code& ec) const;
-
- /// Create an address from an IPv4 address string in dotted decimal form,
- /// or from an IPv6 address in hexadecimal notation.
- ASIO_DECL static address from_string(const char* str);
-
- /// Create an address from an IPv4 address string in dotted decimal form,
- /// or from an IPv6 address in hexadecimal notation.
- ASIO_DECL static address from_string(
- const char* str, asio::error_code& ec);
-
- /// Create an address from an IPv4 address string in dotted decimal form,
- /// or from an IPv6 address in hexadecimal notation.
- ASIO_DECL static address from_string(const std::string& str);
-
- /// Create an address from an IPv4 address string in dotted decimal form,
- /// or from an IPv6 address in hexadecimal notation.
- ASIO_DECL static address from_string(
- const std::string& str, asio::error_code& ec);
-
- /// Determine whether the address is a loopback address.
- ASIO_DECL bool is_loopback() const;
-
- /// Determine whether the address is unspecified.
- ASIO_DECL bool is_unspecified() const;
-
- /// Determine whether the address is a multicast address.
- ASIO_DECL bool is_multicast() const;
-
- /// Compare two addresses for equality.
- ASIO_DECL friend bool operator==(const address& a1, const address& a2);
-
- /// Compare two addresses for inequality.
- friend bool operator!=(const address& a1, const address& a2)
- {
- return !(a1 == a2);
- }
-
- /// Compare addresses for ordering.
- ASIO_DECL friend bool operator<(const address& a1, const address& a2);
-
- /// Compare addresses for ordering.
- friend bool operator>(const address& a1, const address& a2)
- {
- return a2 < a1;
- }
-
- /// Compare addresses for ordering.
- friend bool operator<=(const address& a1, const address& a2)
- {
- return !(a2 < a1);
- }
-
- /// Compare addresses for ordering.
- friend bool operator>=(const address& a1, const address& a2)
- {
- return !(a1 < a2);
- }
-
-private:
- // The type of the address.
- enum { ipv4, ipv6 } type_;
-
- // The underlying IPv4 address.
- asio::ip::address_v4 ipv4_address_;
-
- // The underlying IPv6 address.
- asio::ip::address_v6 ipv6_address_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an address as a string.
-/**
- * Used to output a human-readable string for a specified address.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param addr The address to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::address
- */
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const address& addr);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/address.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/address.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_ADDRESS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v4.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v4.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v4.hpp
deleted file mode 100644
index d6c81af..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v4.hpp
+++ /dev/null
@@ -1,241 +0,0 @@
-//
-// ip/address_v4.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_IP_ADDRESS_V4_HPP
-#define ASIO_IP_ADDRESS_V4_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 "asio/detail/array.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/error_code.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Implements IP version 4 style addresses.
-/**
- * The asio::ip::address_v4 class provides the ability to use and
- * manipulate IP version 4 addresses.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class address_v4
-{
-public:
- /// The type used to represent an address as an array of bytes.
- /**
- * @note This type is defined in terms of the C++0x template @c std::array
- * when it is available. Otherwise, it uses @c boost:array.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef array<unsigned char, 4> bytes_type;
-#else
- typedef asio::detail::array<unsigned char, 4> bytes_type;
-#endif
-
- /// Default constructor.
- address_v4()
- {
- addr_.s_addr = 0;
- }
-
- /// Construct an address from raw bytes.
- ASIO_DECL explicit address_v4(const bytes_type& bytes);
-
- /// Construct an address from a unsigned long in host byte order.
- ASIO_DECL explicit address_v4(unsigned long addr);
-
- /// Copy constructor.
- address_v4(const address_v4& other)
- : addr_(other.addr_)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move constructor.
- address_v4(address_v4&& other)
- : addr_(other.addr_)
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from another address.
- address_v4& operator=(const address_v4& other)
- {
- addr_ = other.addr_;
- return *this;
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move-assign from another address.
- address_v4& operator=(address_v4&& other)
- {
- addr_ = other.addr_;
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Get the address in bytes, in network byte order.
- ASIO_DECL bytes_type to_bytes() const;
-
- /// Get the address as an unsigned long in host byte order
- ASIO_DECL unsigned long to_ulong() const;
-
- /// Get the address as a string in dotted decimal format.
- ASIO_DECL std::string to_string() const;
-
- /// Get the address as a string in dotted decimal format.
- ASIO_DECL std::string to_string(asio::error_code& ec) const;
-
- /// Create an address from an IP address string in dotted decimal form.
- ASIO_DECL static address_v4 from_string(const char* str);
-
- /// Create an address from an IP address string in dotted decimal form.
- ASIO_DECL static address_v4 from_string(
- const char* str, asio::error_code& ec);
-
- /// Create an address from an IP address string in dotted decimal form.
- ASIO_DECL static address_v4 from_string(const std::string& str);
-
- /// Create an address from an IP address string in dotted decimal form.
- ASIO_DECL static address_v4 from_string(
- const std::string& str, asio::error_code& ec);
-
- /// Determine whether the address is a loopback address.
- ASIO_DECL bool is_loopback() const;
-
- /// Determine whether the address is unspecified.
- ASIO_DECL bool is_unspecified() const;
-
- /// Determine whether the address is a class A address.
- ASIO_DECL bool is_class_a() const;
-
- /// Determine whether the address is a class B address.
- ASIO_DECL bool is_class_b() const;
-
- /// Determine whether the address is a class C address.
- ASIO_DECL bool is_class_c() const;
-
- /// Determine whether the address is a multicast address.
- ASIO_DECL bool is_multicast() const;
-
- /// Compare two addresses for equality.
- friend bool operator==(const address_v4& a1, const address_v4& a2)
- {
- return a1.addr_.s_addr == a2.addr_.s_addr;
- }
-
- /// Compare two addresses for inequality.
- friend bool operator!=(const address_v4& a1, const address_v4& a2)
- {
- return a1.addr_.s_addr != a2.addr_.s_addr;
- }
-
- /// Compare addresses for ordering.
- friend bool operator<(const address_v4& a1, const address_v4& a2)
- {
- return a1.to_ulong() < a2.to_ulong();
- }
-
- /// Compare addresses for ordering.
- friend bool operator>(const address_v4& a1, const address_v4& a2)
- {
- return a1.to_ulong() > a2.to_ulong();
- }
-
- /// Compare addresses for ordering.
- friend bool operator<=(const address_v4& a1, const address_v4& a2)
- {
- return a1.to_ulong() <= a2.to_ulong();
- }
-
- /// Compare addresses for ordering.
- friend bool operator>=(const address_v4& a1, const address_v4& a2)
- {
- return a1.to_ulong() >= a2.to_ulong();
- }
-
- /// Obtain an address object that represents any address.
- static address_v4 any()
- {
- return address_v4();
- }
-
- /// Obtain an address object that represents the loopback address.
- static address_v4 loopback()
- {
- return address_v4(0x7F000001);
- }
-
- /// Obtain an address object that represents the broadcast address.
- static address_v4 broadcast()
- {
- return address_v4(0xFFFFFFFF);
- }
-
- /// Obtain an address object that represents the broadcast address that
- /// corresponds to the specified address and netmask.
- ASIO_DECL static address_v4 broadcast(
- const address_v4& addr, const address_v4& mask);
-
- /// Obtain the netmask that corresponds to the address, based on its address
- /// class.
- ASIO_DECL static address_v4 netmask(const address_v4& addr);
-
-private:
- // The underlying IPv4 address.
- asio::detail::in4_addr_type addr_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an address as a string.
-/**
- * Used to output a human-readable string for a specified address.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param addr The address to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::address_v4
- */
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const address_v4& addr);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/address_v4.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/address_v4.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_ADDRESS_V4_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v6.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v6.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v6.hpp
deleted file mode 100644
index 712386a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/address_v6.hpp
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-// ip/address_v6.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_IP_ADDRESS_V6_HPP
-#define ASIO_IP_ADDRESS_V6_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 "asio/detail/array.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/error_code.hpp"
-#include "asio/ip/address_v4.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Implements IP version 6 style addresses.
-/**
- * The asio::ip::address_v6 class provides the ability to use and
- * manipulate IP version 6 addresses.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class address_v6
-{
-public:
- /// The type used to represent an address as an array of bytes.
- /**
- * @note This type is defined in terms of the C++0x template @c std::array
- * when it is available. Otherwise, it uses @c boost:array.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef array<unsigned char, 16> bytes_type;
-#else
- typedef asio::detail::array<unsigned char, 16> bytes_type;
-#endif
-
- /// Default constructor.
- ASIO_DECL address_v6();
-
- /// Construct an address from raw bytes and scope ID.
- ASIO_DECL explicit address_v6(const bytes_type& bytes,
- unsigned long scope_id = 0);
-
- /// Copy constructor.
- ASIO_DECL address_v6(const address_v6& other);
-
-#if defined(ASIO_HAS_MOVE)
- /// Move constructor.
- ASIO_DECL address_v6(address_v6&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from another address.
- ASIO_DECL address_v6& operator=(const address_v6& other);
-
-#if defined(ASIO_HAS_MOVE)
- /// Move-assign from another address.
- ASIO_DECL address_v6& operator=(address_v6&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
- /// The scope ID of the address.
- /**
- * Returns the scope ID associated with the IPv6 address.
- */
- unsigned long scope_id() const
- {
- return scope_id_;
- }
-
- /// The scope ID of the address.
- /**
- * Modifies the scope ID associated with the IPv6 address.
- */
- void scope_id(unsigned long id)
- {
- scope_id_ = id;
- }
-
- /// Get the address in bytes, in network byte order.
- ASIO_DECL bytes_type to_bytes() const;
-
- /// Get the address as a string.
- ASIO_DECL std::string to_string() const;
-
- /// Get the address as a string.
- ASIO_DECL std::string to_string(asio::error_code& ec) const;
-
- /// Create an address from an IP address string.
- ASIO_DECL static address_v6 from_string(const char* str);
-
- /// Create an address from an IP address string.
- ASIO_DECL static address_v6 from_string(
- const char* str, asio::error_code& ec);
-
- /// Create an address from an IP address string.
- ASIO_DECL static address_v6 from_string(const std::string& str);
-
- /// Create an address from an IP address string.
- ASIO_DECL static address_v6 from_string(
- const std::string& str, asio::error_code& ec);
-
- /// Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
- ASIO_DECL address_v4 to_v4() const;
-
- /// Determine whether the address is a loopback address.
- ASIO_DECL bool is_loopback() const;
-
- /// Determine whether the address is unspecified.
- ASIO_DECL bool is_unspecified() const;
-
- /// Determine whether the address is link local.
- ASIO_DECL bool is_link_local() const;
-
- /// Determine whether the address is site local.
- ASIO_DECL bool is_site_local() const;
-
- /// Determine whether the address is a mapped IPv4 address.
- ASIO_DECL bool is_v4_mapped() const;
-
- /// Determine whether the address is an IPv4-compatible address.
- ASIO_DECL bool is_v4_compatible() const;
-
- /// Determine whether the address is a multicast address.
- ASIO_DECL bool is_multicast() const;
-
- /// Determine whether the address is a global multicast address.
- ASIO_DECL bool is_multicast_global() const;
-
- /// Determine whether the address is a link-local multicast address.
- ASIO_DECL bool is_multicast_link_local() const;
-
- /// Determine whether the address is a node-local multicast address.
- ASIO_DECL bool is_multicast_node_local() const;
-
- /// Determine whether the address is a org-local multicast address.
- ASIO_DECL bool is_multicast_org_local() const;
-
- /// Determine whether the address is a site-local multicast address.
- ASIO_DECL bool is_multicast_site_local() const;
-
- /// Compare two addresses for equality.
- ASIO_DECL friend bool operator==(
- const address_v6& a1, const address_v6& a2);
-
- /// Compare two addresses for inequality.
- friend bool operator!=(const address_v6& a1, const address_v6& a2)
- {
- return !(a1 == a2);
- }
-
- /// Compare addresses for ordering.
- ASIO_DECL friend bool operator<(
- const address_v6& a1, const address_v6& a2);
-
- /// Compare addresses for ordering.
- friend bool operator>(const address_v6& a1, const address_v6& a2)
- {
- return a2 < a1;
- }
-
- /// Compare addresses for ordering.
- friend bool operator<=(const address_v6& a1, const address_v6& a2)
- {
- return !(a2 < a1);
- }
-
- /// Compare addresses for ordering.
- friend bool operator>=(const address_v6& a1, const address_v6& a2)
- {
- return !(a1 < a2);
- }
-
- /// Obtain an address object that represents any address.
- static address_v6 any()
- {
- return address_v6();
- }
-
- /// Obtain an address object that represents the loopback address.
- ASIO_DECL static address_v6 loopback();
-
- /// Create an IPv4-mapped IPv6 address.
- ASIO_DECL static address_v6 v4_mapped(const address_v4& addr);
-
- /// Create an IPv4-compatible IPv6 address.
- ASIO_DECL static address_v6 v4_compatible(const address_v4& addr);
-
-private:
- // The underlying IPv6 address.
- asio::detail::in6_addr_type addr_;
-
- // The scope ID associated with the address.
- unsigned long scope_id_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an address as a string.
-/**
- * Used to output a human-readable string for a specified address.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param addr The address to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::address_v6
- */
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const address_v6& addr);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/address_v6.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/address_v6.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_ADDRESS_V6_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_endpoint.hpp
deleted file mode 100644
index 60dcbfa..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_endpoint.hpp
+++ /dev/null
@@ -1,263 +0,0 @@
-//
-// ip/basic_endpoint.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_IP_BASIC_ENDPOINT_HPP
-#define ASIO_IP_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ip/address.hpp"
-#include "asio/ip/detail/endpoint.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Describes an endpoint for a version-independent IP socket.
-/**
- * The asio::ip::basic_endpoint class template describes an endpoint that
- * may be associated with a particular socket.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * Endpoint.
- */
-template <typename InternetProtocol>
-class basic_endpoint
-{
-public:
- /// The protocol type associated with the endpoint.
- typedef InternetProtocol protocol_type;
-
- /// The type of the endpoint structure. This type is dependent on the
- /// underlying implementation of the socket layer.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined data_type;
-#else
- typedef asio::detail::socket_addr_type data_type;
-#endif
-
- /// Default constructor.
- basic_endpoint()
- : impl_()
- {
- }
-
- /// Construct an endpoint using a port number, specified in the host's byte
- /// order. The IP address will be the any address (i.e. INADDR_ANY or
- /// in6addr_any). This constructor would typically be used for accepting new
- /// connections.
- /**
- * @par Examples
- * To initialise an IPv4 TCP endpoint for port 1234, use:
- * @code
- * asio::ip::tcp::endpoint ep(asio::ip::tcp::v4(), 1234);
- * @endcode
- *
- * To specify an IPv6 UDP endpoint for port 9876, use:
- * @code
- * asio::ip::udp::endpoint ep(asio::ip::udp::v6(), 9876);
- * @endcode
- */
- basic_endpoint(const InternetProtocol& internet_protocol,
- unsigned short port_num)
- : impl_(internet_protocol.family(), port_num)
- {
- }
-
- /// Construct an endpoint using a port number and an IP address. This
- /// constructor may be used for accepting connections on a specific interface
- /// or for making a connection to a remote endpoint.
- basic_endpoint(const asio::ip::address& addr, unsigned short port_num)
- : impl_(addr, port_num)
- {
- }
-
- /// Copy constructor.
- basic_endpoint(const basic_endpoint& other)
- : impl_(other.impl_)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move constructor.
- basic_endpoint(basic_endpoint&& other)
- : impl_(other.impl_)
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from another endpoint.
- basic_endpoint& operator=(const basic_endpoint& other)
- {
- impl_ = other.impl_;
- return *this;
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move-assign from another endpoint.
- basic_endpoint& operator=(basic_endpoint&& other)
- {
- impl_ = other.impl_;
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// The protocol associated with the endpoint.
- protocol_type protocol() const
- {
- if (impl_.is_v4())
- return InternetProtocol::v4();
- return InternetProtocol::v6();
- }
-
- /// Get the underlying endpoint in the native type.
- data_type* data()
- {
- return impl_.data();
- }
-
- /// Get the underlying endpoint in the native type.
- const data_type* data() const
- {
- return impl_.data();
- }
-
- /// Get the underlying size of the endpoint in the native type.
- std::size_t size() const
- {
- return impl_.size();
- }
-
- /// Set the underlying size of the endpoint in the native type.
- void resize(std::size_t new_size)
- {
- impl_.resize(new_size);
- }
-
- /// Get the capacity of the endpoint in the native type.
- std::size_t capacity() const
- {
- return impl_.capacity();
- }
-
- /// Get the port associated with the endpoint. The port number is always in
- /// the host's byte order.
- unsigned short port() const
- {
- return impl_.port();
- }
-
- /// Set the port associated with the endpoint. The port number is always in
- /// the host's byte order.
- void port(unsigned short port_num)
- {
- impl_.port(port_num);
- }
-
- /// Get the IP address associated with the endpoint.
- asio::ip::address address() const
- {
- return impl_.address();
- }
-
- /// Set the IP address associated with the endpoint.
- void address(const asio::ip::address& addr)
- {
- impl_.address(addr);
- }
-
- /// Compare two endpoints for equality.
- friend bool operator==(const basic_endpoint<InternetProtocol>& e1,
- const basic_endpoint<InternetProtocol>& e2)
- {
- return e1.impl_ == e2.impl_;
- }
-
- /// Compare two endpoints for inequality.
- friend bool operator!=(const basic_endpoint<InternetProtocol>& e1,
- const basic_endpoint<InternetProtocol>& e2)
- {
- return !(e1 == e2);
- }
-
- /// Compare endpoints for ordering.
- friend bool operator<(const basic_endpoint<InternetProtocol>& e1,
- const basic_endpoint<InternetProtocol>& e2)
- {
- return e1.impl_ < e2.impl_;
- }
-
- /// Compare endpoints for ordering.
- friend bool operator>(const basic_endpoint<InternetProtocol>& e1,
- const basic_endpoint<InternetProtocol>& e2)
- {
- return e2.impl_ < e1.impl_;
- }
-
- /// Compare endpoints for ordering.
- friend bool operator<=(const basic_endpoint<InternetProtocol>& e1,
- const basic_endpoint<InternetProtocol>& e2)
- {
- return !(e2 < e1);
- }
-
- /// Compare endpoints for ordering.
- friend bool operator>=(const basic_endpoint<InternetProtocol>& e1,
- const basic_endpoint<InternetProtocol>& e2)
- {
- return !(e1 < e2);
- }
-
-private:
- // The underlying IP endpoint.
- asio::ip::detail::endpoint impl_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an endpoint as a string.
-/**
- * Used to output a human-readable string for a specified endpoint.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param endpoint The endpoint to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::basic_endpoint
- */
-template <typename Elem, typename Traits, typename InternetProtocol>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os,
- const basic_endpoint<InternetProtocol>& endpoint);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/basic_endpoint.hpp"
-
-#endif // ASIO_IP_BASIC_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver.hpp
deleted file mode 100644
index 7d75d58..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver.hpp
+++ /dev/null
@@ -1,268 +0,0 @@
-//
-// ip/basic_resolver.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_IP_BASIC_RESOLVER_HPP
-#define ASIO_IP_BASIC_RESOLVER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/ip/resolver_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Provides endpoint resolution functionality.
-/**
- * The basic_resolver class template provides the ability to resolve a query
- * to a list of endpoints.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol,
- typename ResolverService = resolver_service<InternetProtocol> >
-class basic_resolver
- : public basic_io_object<ResolverService>
-{
-public:
- /// The protocol type.
- typedef InternetProtocol protocol_type;
-
- /// The endpoint type.
- typedef typename InternetProtocol::endpoint endpoint_type;
-
- /// The query type.
- typedef basic_resolver_query<InternetProtocol> query;
-
- /// The iterator type.
- typedef basic_resolver_iterator<InternetProtocol> iterator;
-
- /// Constructor.
- /**
- * This constructor creates a basic_resolver.
- *
- * @param io_service The io_service object that the resolver will use to
- * dispatch handlers for any asynchronous operations performed on the timer.
- */
- explicit basic_resolver(asio::io_service& io_service)
- : basic_io_object<ResolverService>(io_service)
- {
- }
-
- /// Cancel any asynchronous operations that are waiting on the resolver.
- /**
- * This function forces the completion of any pending asynchronous
- * operations on the host resolver. The handler for each cancelled operation
- * will be invoked with the asio::error::operation_aborted error code.
- */
- void cancel()
- {
- return this->service.cancel(this->implementation);
- }
-
- /// Perform forward resolution of a query to a list of entries.
- /**
- * This function is used to resolve a query into a list of endpoint entries.
- *
- * @param q A query object that determines what endpoints will be returned.
- *
- * @returns A forward-only iterator that can be used to traverse the list
- * of endpoint entries.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note A default constructed iterator represents the end of the list.
- *
- * A successful call to this function is guaranteed to return at least one
- * entry.
- */
- iterator resolve(const query& q)
- {
- asio::error_code ec;
- iterator i = this->service.resolve(this->implementation, q, ec);
- asio::detail::throw_error(ec, "resolve");
- return i;
- }
-
- /// Perform forward resolution of a query to a list of entries.
- /**
- * This function is used to resolve a query into a list of endpoint entries.
- *
- * @param q A query object that determines what endpoints will be returned.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns A forward-only iterator that can be used to traverse the list
- * of endpoint entries. Returns a default constructed iterator if an error
- * occurs.
- *
- * @note A default constructed iterator represents the end of the list.
- *
- * A successful call to this function is guaranteed to return at least one
- * entry.
- */
- iterator resolve(const query& q, asio::error_code& ec)
- {
- return this->service.resolve(this->implementation, q, ec);
- }
-
- /// Asynchronously perform forward resolution of a query to a list of entries.
- /**
- * This function is used to asynchronously resolve a query into a list of
- * endpoint entries.
- *
- * @param q A query object that determines what endpoints will be returned.
- *
- * @param handler The handler to be called when the resolve operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * const asio::error_code& error, // Result of operation.
- * resolver::iterator iterator // Forward-only iterator that can
- * // be used to traverse the list
- * // of endpoint entries.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note A default constructed iterator represents the end of the list.
- *
- * A successful resolve operation is guaranteed to pass at least one entry to
- * the handler.
- */
- template <typename ResolveHandler>
- ASIO_INITFN_RESULT_TYPE(ResolveHandler,
- void (asio::error_code, iterator))
- async_resolve(const query& q,
- ASIO_MOVE_ARG(ResolveHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ResolveHandler.
- ASIO_RESOLVE_HANDLER_CHECK(
- ResolveHandler, handler, iterator) type_check;
-
- return this->service.async_resolve(this->implementation, q,
- ASIO_MOVE_CAST(ResolveHandler)(handler));
- }
-
- /// Perform reverse resolution of an endpoint to a list of entries.
- /**
- * This function is used to resolve an endpoint into a list of endpoint
- * entries.
- *
- * @param e An endpoint object that determines what endpoints will be
- * returned.
- *
- * @returns A forward-only iterator that can be used to traverse the list
- * of endpoint entries.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note A default constructed iterator represents the end of the list.
- *
- * A successful call to this function is guaranteed to return at least one
- * entry.
- */
- iterator resolve(const endpoint_type& e)
- {
- asio::error_code ec;
- iterator i = this->service.resolve(this->implementation, e, ec);
- asio::detail::throw_error(ec, "resolve");
- return i;
- }
-
- /// Perform reverse resolution of an endpoint to a list of entries.
- /**
- * This function is used to resolve an endpoint into a list of endpoint
- * entries.
- *
- * @param e An endpoint object that determines what endpoints will be
- * returned.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns A forward-only iterator that can be used to traverse the list
- * of endpoint entries. Returns a default constructed iterator if an error
- * occurs.
- *
- * @note A default constructed iterator represents the end of the list.
- *
- * A successful call to this function is guaranteed to return at least one
- * entry.
- */
- iterator resolve(const endpoint_type& e, asio::error_code& ec)
- {
- return this->service.resolve(this->implementation, e, ec);
- }
-
- /// Asynchronously perform reverse resolution of an endpoint to a list of
- /// entries.
- /**
- * This function is used to asynchronously resolve an endpoint into a list of
- * endpoint entries.
- *
- * @param e An endpoint object that determines what endpoints will be
- * returned.
- *
- * @param handler The handler to be called when the resolve operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * const asio::error_code& error, // Result of operation.
- * resolver::iterator iterator // Forward-only iterator that can
- * // be used to traverse the list
- * // of endpoint entries.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note A default constructed iterator represents the end of the list.
- *
- * A successful resolve operation is guaranteed to pass at least one entry to
- * the handler.
- */
- template <typename ResolveHandler>
- ASIO_INITFN_RESULT_TYPE(ResolveHandler,
- void (asio::error_code, iterator))
- async_resolve(const endpoint_type& e,
- ASIO_MOVE_ARG(ResolveHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ResolveHandler.
- ASIO_RESOLVE_HANDLER_CHECK(
- ResolveHandler, handler, iterator) type_check;
-
- return this->service.async_resolve(this->implementation, e,
- ASIO_MOVE_CAST(ResolveHandler)(handler));
- }
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_entry.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_entry.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_entry.hpp
deleted file mode 100644
index 13644f3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_entry.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// ip/basic_resolver_entry.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_IP_BASIC_RESOLVER_ENTRY_HPP
-#define ASIO_IP_BASIC_RESOLVER_ENTRY_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 "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// An entry produced by a resolver.
-/**
- * The asio::ip::basic_resolver_entry class template describes an entry
- * as returned by a resolver.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol>
-class basic_resolver_entry
-{
-public:
- /// The protocol type associated with the endpoint entry.
- typedef InternetProtocol protocol_type;
-
- /// The endpoint type associated with the endpoint entry.
- typedef typename InternetProtocol::endpoint endpoint_type;
-
- /// Default constructor.
- basic_resolver_entry()
- {
- }
-
- /// Construct with specified endpoint, host name and service name.
- basic_resolver_entry(const endpoint_type& ep,
- const std::string& host, const std::string& service)
- : endpoint_(ep),
- host_name_(host),
- service_name_(service)
- {
- }
-
- /// Get the endpoint associated with the entry.
- endpoint_type endpoint() const
- {
- return endpoint_;
- }
-
- /// Convert to the endpoint associated with the entry.
- operator endpoint_type() const
- {
- return endpoint_;
- }
-
- /// Get the host name associated with the entry.
- std::string host_name() const
- {
- return host_name_;
- }
-
- /// Get the service name associated with the entry.
- std::string service_name() const
- {
- return service_name_;
- }
-
-private:
- endpoint_type endpoint_;
- std::string host_name_;
- std::string service_name_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_iterator.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_iterator.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_iterator.hpp
deleted file mode 100644
index 4c8b0d9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_iterator.hpp
+++ /dev/null
@@ -1,260 +0,0 @@
-//
-// ip/basic_resolver_iterator.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_IP_BASIC_RESOLVER_ITERATOR_HPP
-#define ASIO_IP_BASIC_RESOLVER_ITERATOR_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 <cstring>
-#include <iterator>
-#include <string>
-#include <vector>
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/ip/basic_resolver_entry.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_utils.hpp"
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// An iterator over the entries produced by a resolver.
-/**
- * The asio::ip::basic_resolver_iterator class template is used to define
- * iterators over the results returned by a resolver.
- *
- * The iterator's value_type, obtained when the iterator is dereferenced, is:
- * @code const basic_resolver_entry<InternetProtocol> @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol>
-class basic_resolver_iterator
-{
-public:
- /// The type used for the distance between two iterators.
- typedef std::ptrdiff_t difference_type;
-
- /// The type of the value pointed to by the iterator.
- typedef basic_resolver_entry<InternetProtocol> value_type;
-
- /// The type of the result of applying operator->() to the iterator.
- typedef const basic_resolver_entry<InternetProtocol>* pointer;
-
- /// The type of the result of applying operator*() to the iterator.
- typedef const basic_resolver_entry<InternetProtocol>& reference;
-
- /// The iterator category.
- typedef std::forward_iterator_tag iterator_category;
-
- /// Default constructor creates an end iterator.
- basic_resolver_iterator()
- : index_(0)
- {
- }
-
- /// Create an iterator from an addrinfo list returned by getaddrinfo.
- static basic_resolver_iterator create(
- asio::detail::addrinfo_type* address_info,
- const std::string& host_name, const std::string& service_name)
- {
- basic_resolver_iterator iter;
- if (!address_info)
- return iter;
-
- std::string actual_host_name = host_name;
- if (address_info->ai_canonname)
- actual_host_name = address_info->ai_canonname;
-
- iter.values_.reset(new values_type);
-
- while (address_info)
- {
- if (address_info->ai_family == ASIO_OS_DEF(AF_INET)
- || address_info->ai_family == ASIO_OS_DEF(AF_INET6))
- {
- using namespace std; // For memcpy.
- typename InternetProtocol::endpoint endpoint;
- endpoint.resize(static_cast<std::size_t>(address_info->ai_addrlen));
- memcpy(endpoint.data(), address_info->ai_addr,
- address_info->ai_addrlen);
- iter.values_->push_back(
- basic_resolver_entry<InternetProtocol>(endpoint,
- actual_host_name, service_name));
- }
- address_info = address_info->ai_next;
- }
-
- return iter;
- }
-
- /// Create an iterator from an endpoint, host name and service name.
- static basic_resolver_iterator create(
- const typename InternetProtocol::endpoint& endpoint,
- const std::string& host_name, const std::string& service_name)
- {
- basic_resolver_iterator iter;
- iter.values_.reset(new values_type);
- iter.values_->push_back(
- basic_resolver_entry<InternetProtocol>(
- endpoint, host_name, service_name));
- return iter;
- }
-
- /// Create an iterator from a sequence of endpoints, host and service name.
- template <typename EndpointIterator>
- static basic_resolver_iterator create(
- EndpointIterator begin, EndpointIterator end,
- const std::string& host_name, const std::string& service_name)
- {
- basic_resolver_iterator iter;
- if (begin != end)
- {
- iter.values_.reset(new values_type);
- for (EndpointIterator ep_iter = begin; ep_iter != end; ++ep_iter)
- {
- iter.values_->push_back(
- basic_resolver_entry<InternetProtocol>(
- *ep_iter, host_name, service_name));
- }
- }
- return iter;
- }
-
-#if defined(ASIO_WINDOWS_RUNTIME)
- /// Create an iterator from a Windows Runtime list of EndpointPair objects.
- static basic_resolver_iterator create(
- Windows::Foundation::Collections::IVectorView<
- Windows::Networking::EndpointPair^>^ endpoints,
- const asio::detail::addrinfo_type& hints,
- const std::string& host_name, const std::string& service_name)
- {
- basic_resolver_iterator iter;
- if (endpoints->Size)
- {
- iter.values_.reset(new values_type);
- for (unsigned int i = 0; i < endpoints->Size; ++i)
- {
- auto pair = endpoints->GetAt(i);
-
- if (hints.ai_family == ASIO_OS_DEF(AF_INET)
- && pair->RemoteHostName->Type
- != Windows::Networking::HostNameType::Ipv4)
- continue;
-
- if (hints.ai_family == ASIO_OS_DEF(AF_INET6)
- && pair->RemoteHostName->Type
- != Windows::Networking::HostNameType::Ipv6)
- continue;
-
- iter.values_->push_back(
- basic_resolver_entry<InternetProtocol>(
- typename InternetProtocol::endpoint(
- ip::address::from_string(
- asio::detail::winrt_utils::string(
- pair->RemoteHostName->CanonicalName)),
- asio::detail::winrt_utils::integer(
- pair->RemoteServiceName)),
- host_name, service_name));
- }
- }
- return iter;
- }
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
- /// Dereference an iterator.
- const basic_resolver_entry<InternetProtocol>& operator*() const
- {
- return dereference();
- }
-
- /// Dereference an iterator.
- const basic_resolver_entry<InternetProtocol>* operator->() const
- {
- return &dereference();
- }
-
- /// Increment operator (prefix).
- basic_resolver_iterator& operator++()
- {
- increment();
- return *this;
- }
-
- /// Increment operator (postfix).
- basic_resolver_iterator operator++(int)
- {
- basic_resolver_iterator tmp(*this);
- ++*this;
- return tmp;
- }
-
- /// Test two iterators for equality.
- friend bool operator==(const basic_resolver_iterator& a,
- const basic_resolver_iterator& b)
- {
- return a.equal(b);
- }
-
- /// Test two iterators for inequality.
- friend bool operator!=(const basic_resolver_iterator& a,
- const basic_resolver_iterator& b)
- {
- return !a.equal(b);
- }
-
-private:
- void increment()
- {
- if (++index_ == values_->size())
- {
- // Reset state to match a default constructed end iterator.
- values_.reset();
- index_ = 0;
- }
- }
-
- bool equal(const basic_resolver_iterator& other) const
- {
- if (!values_ && !other.values_)
- return true;
- if (values_ != other.values_)
- return false;
- return index_ == other.index_;
- }
-
- const basic_resolver_entry<InternetProtocol>& dereference() const
- {
- return (*values_)[index_];
- }
-
- typedef std::vector<basic_resolver_entry<InternetProtocol> > values_type;
- asio::detail::shared_ptr<values_type> values_;
- std::size_t index_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[10/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_query.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_query.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_query.hpp
deleted file mode 100644
index ce9e437..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/basic_resolver_query.hpp
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// ip/basic_resolver_query.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_IP_BASIC_RESOLVER_QUERY_HPP
-#define ASIO_IP_BASIC_RESOLVER_QUERY_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 "asio/detail/socket_ops.hpp"
-#include "asio/ip/resolver_query_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// An query to be passed to a resolver.
-/**
- * The asio::ip::basic_resolver_query class template describes a query
- * that can be passed to a resolver.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol>
-class basic_resolver_query
- : public resolver_query_base
-{
-public:
- /// The protocol type associated with the endpoint query.
- typedef InternetProtocol protocol_type;
-
- /// Construct with specified service name for any protocol.
- /**
- * This constructor is typically used to perform name resolution for local
- * service binding.
- *
- * @param service A string identifying the requested service. This may be a
- * descriptive name or a numeric string corresponding to a port number.
- *
- * @param resolve_flags A set of flags that determine how name resolution
- * should be performed. The default flags are suitable for local service
- * binding.
- *
- * @note On POSIX systems, service names are typically defined in the file
- * <tt>/etc/services</tt>. On Windows, service names may be found in the file
- * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
- * may use additional locations when resolving service names.
- */
- basic_resolver_query(const std::string& service,
- resolver_query_base::flags resolve_flags = passive | address_configured)
- : hints_(),
- host_name_(),
- service_name_(service)
- {
- typename InternetProtocol::endpoint endpoint;
- hints_.ai_flags = static_cast<int>(resolve_flags);
- hints_.ai_family = PF_UNSPEC;
- hints_.ai_socktype = endpoint.protocol().type();
- hints_.ai_protocol = endpoint.protocol().protocol();
- hints_.ai_addrlen = 0;
- hints_.ai_canonname = 0;
- hints_.ai_addr = 0;
- hints_.ai_next = 0;
- }
-
- /// Construct with specified service name for a given protocol.
- /**
- * This constructor is typically used to perform name resolution for local
- * service binding with a specific protocol version.
- *
- * @param protocol A protocol object, normally representing either the IPv4 or
- * IPv6 version of an internet protocol.
- *
- * @param service A string identifying the requested service. This may be a
- * descriptive name or a numeric string corresponding to a port number.
- *
- * @param resolve_flags A set of flags that determine how name resolution
- * should be performed. The default flags are suitable for local service
- * binding.
- *
- * @note On POSIX systems, service names are typically defined in the file
- * <tt>/etc/services</tt>. On Windows, service names may be found in the file
- * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
- * may use additional locations when resolving service names.
- */
- basic_resolver_query(const protocol_type& protocol,
- const std::string& service,
- resolver_query_base::flags resolve_flags = passive | address_configured)
- : hints_(),
- host_name_(),
- service_name_(service)
- {
- hints_.ai_flags = static_cast<int>(resolve_flags);
- hints_.ai_family = protocol.family();
- hints_.ai_socktype = protocol.type();
- hints_.ai_protocol = protocol.protocol();
- hints_.ai_addrlen = 0;
- hints_.ai_canonname = 0;
- hints_.ai_addr = 0;
- hints_.ai_next = 0;
- }
-
- /// Construct with specified host name and service name for any protocol.
- /**
- * This constructor is typically used to perform name resolution for
- * communication with remote hosts.
- *
- * @param host A string identifying a location. May be a descriptive name or
- * a numeric address string. If an empty string and the passive flag has been
- * specified, the resolved endpoints are suitable for local service binding.
- * If an empty string and passive is not specified, the resolved endpoints
- * will use the loopback address.
- *
- * @param service A string identifying the requested service. This may be a
- * descriptive name or a numeric string corresponding to a port number. May
- * be an empty string, in which case all resolved endpoints will have a port
- * number of 0.
- *
- * @param resolve_flags A set of flags that determine how name resolution
- * should be performed. The default flags are suitable for communication with
- * remote hosts.
- *
- * @note On POSIX systems, host names may be locally defined in the file
- * <tt>/etc/hosts</tt>. On Windows, host names may be defined in the file
- * <tt>c:\\windows\\system32\\drivers\\etc\\hosts</tt>. Remote host name
- * resolution is performed using DNS. Operating systems may use additional
- * locations when resolving host names (such as NETBIOS names on Windows).
- *
- * On POSIX systems, service names are typically defined in the file
- * <tt>/etc/services</tt>. On Windows, service names may be found in the file
- * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
- * may use additional locations when resolving service names.
- */
- basic_resolver_query(const std::string& host, const std::string& service,
- resolver_query_base::flags resolve_flags = address_configured)
- : hints_(),
- host_name_(host),
- service_name_(service)
- {
- typename InternetProtocol::endpoint endpoint;
- hints_.ai_flags = static_cast<int>(resolve_flags);
- hints_.ai_family = ASIO_OS_DEF(AF_UNSPEC);
- hints_.ai_socktype = endpoint.protocol().type();
- hints_.ai_protocol = endpoint.protocol().protocol();
- hints_.ai_addrlen = 0;
- hints_.ai_canonname = 0;
- hints_.ai_addr = 0;
- hints_.ai_next = 0;
- }
-
- /// Construct with specified host name and service name for a given protocol.
- /**
- * This constructor is typically used to perform name resolution for
- * communication with remote hosts.
- *
- * @param protocol A protocol object, normally representing either the IPv4 or
- * IPv6 version of an internet protocol.
- *
- * @param host A string identifying a location. May be a descriptive name or
- * a numeric address string. If an empty string and the passive flag has been
- * specified, the resolved endpoints are suitable for local service binding.
- * If an empty string and passive is not specified, the resolved endpoints
- * will use the loopback address.
- *
- * @param service A string identifying the requested service. This may be a
- * descriptive name or a numeric string corresponding to a port number. May
- * be an empty string, in which case all resolved endpoints will have a port
- * number of 0.
- *
- * @param resolve_flags A set of flags that determine how name resolution
- * should be performed. The default flags are suitable for communication with
- * remote hosts.
- *
- * @note On POSIX systems, host names may be locally defined in the file
- * <tt>/etc/hosts</tt>. On Windows, host names may be defined in the file
- * <tt>c:\\windows\\system32\\drivers\\etc\\hosts</tt>. Remote host name
- * resolution is performed using DNS. Operating systems may use additional
- * locations when resolving host names (such as NETBIOS names on Windows).
- *
- * On POSIX systems, service names are typically defined in the file
- * <tt>/etc/services</tt>. On Windows, service names may be found in the file
- * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
- * may use additional locations when resolving service names.
- */
- basic_resolver_query(const protocol_type& protocol,
- const std::string& host, const std::string& service,
- resolver_query_base::flags resolve_flags = address_configured)
- : hints_(),
- host_name_(host),
- service_name_(service)
- {
- hints_.ai_flags = static_cast<int>(resolve_flags);
- hints_.ai_family = protocol.family();
- hints_.ai_socktype = protocol.type();
- hints_.ai_protocol = protocol.protocol();
- hints_.ai_addrlen = 0;
- hints_.ai_canonname = 0;
- hints_.ai_addr = 0;
- hints_.ai_next = 0;
- }
-
- /// Get the hints associated with the query.
- const asio::detail::addrinfo_type& hints() const
- {
- return hints_;
- }
-
- /// Get the host name associated with the query.
- std::string host_name() const
- {
- return host_name_;
- }
-
- /// Get the service name associated with the query.
- std::string service_name() const
- {
- return service_name_;
- }
-
-private:
- asio::detail::addrinfo_type hints_;
- std::string host_name_;
- std::string service_name_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_QUERY_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/endpoint.hpp
deleted file mode 100644
index 630908f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/endpoint.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// ip/detail/endpoint.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_IP_DETAIL_ENDPOINT_HPP
-#define ASIO_IP_DETAIL_ENDPOINT_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 "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/error_code.hpp"
-#include "asio/ip/address.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace detail {
-
-// Helper class for implementating an IP endpoint.
-class endpoint
-{
-public:
- // Default constructor.
- ASIO_DECL endpoint();
-
- // Construct an endpoint using a family and port number.
- ASIO_DECL endpoint(int family, unsigned short port_num);
-
- // Construct an endpoint using an address and port number.
- ASIO_DECL endpoint(const asio::ip::address& addr,
- unsigned short port_num);
-
- // Copy constructor.
- endpoint(const endpoint& other)
- : data_(other.data_)
- {
- }
-
- // Assign from another endpoint.
- endpoint& operator=(const endpoint& other)
- {
- data_ = other.data_;
- return *this;
- }
-
- // Get the underlying endpoint in the native type.
- asio::detail::socket_addr_type* data()
- {
- return &data_.base;
- }
-
- // Get the underlying endpoint in the native type.
- const asio::detail::socket_addr_type* data() const
- {
- return &data_.base;
- }
-
- // Get the underlying size of the endpoint in the native type.
- std::size_t size() const
- {
- if (is_v4())
- return sizeof(asio::detail::sockaddr_in4_type);
- else
- return sizeof(asio::detail::sockaddr_in6_type);
- }
-
- // Set the underlying size of the endpoint in the native type.
- ASIO_DECL void resize(std::size_t new_size);
-
- // Get the capacity of the endpoint in the native type.
- std::size_t capacity() const
- {
- return sizeof(data_);
- }
-
- // Get the port associated with the endpoint.
- ASIO_DECL unsigned short port() const;
-
- // Set the port associated with the endpoint.
- ASIO_DECL void port(unsigned short port_num);
-
- // Get the IP address associated with the endpoint.
- ASIO_DECL asio::ip::address address() const;
-
- // Set the IP address associated with the endpoint.
- ASIO_DECL void address(const asio::ip::address& addr);
-
- // Compare two endpoints for equality.
- ASIO_DECL friend bool operator==(
- const endpoint& e1, const endpoint& e2);
-
- // Compare endpoints for ordering.
- ASIO_DECL friend bool operator<(
- const endpoint& e1, const endpoint& e2);
-
- // Determine whether the endpoint is IPv4.
- bool is_v4() const
- {
- return data_.base.sa_family == ASIO_OS_DEF(AF_INET);
- }
-
-#if !defined(ASIO_NO_IOSTREAM)
- // Convert to a string.
- ASIO_DECL std::string to_string(asio::error_code& ec) const;
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-private:
- // The underlying IP socket address.
- union data_union
- {
- asio::detail::socket_addr_type base;
- asio::detail::sockaddr_in4_type v4;
- asio::detail::sockaddr_in6_type v6;
- } data_;
-};
-
-} // namespace detail
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/detail/impl/endpoint.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_DETAIL_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/impl/endpoint.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/impl/endpoint.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/impl/endpoint.ipp
deleted file mode 100644
index d18d5e0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/impl/endpoint.ipp
+++ /dev/null
@@ -1,204 +0,0 @@
-//
-// ip/detail/impl/endpoint.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IP_DETAIL_IMPL_ENDPOINT_IPP
-#define ASIO_IP_DETAIL_IMPL_ENDPOINT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstring>
-#if !defined(ASIO_NO_IOSTREAM)
-# include <sstream>
-#endif // !defined(ASIO_NO_IOSTREAM)
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace detail {
-
-endpoint::endpoint()
- : data_()
-{
- data_.v4.sin_family = ASIO_OS_DEF(AF_INET);
- data_.v4.sin_port = 0;
- data_.v4.sin_addr.s_addr = ASIO_OS_DEF(INADDR_ANY);
-}
-
-endpoint::endpoint(int family, unsigned short port_num)
- : data_()
-{
- using namespace std; // For memcpy.
- if (family == ASIO_OS_DEF(AF_INET))
- {
- data_.v4.sin_family = ASIO_OS_DEF(AF_INET);
- data_.v4.sin_port =
- asio::detail::socket_ops::host_to_network_short(port_num);
- data_.v4.sin_addr.s_addr = ASIO_OS_DEF(INADDR_ANY);
- }
- else
- {
- data_.v6.sin6_family = ASIO_OS_DEF(AF_INET6);
- data_.v6.sin6_port =
- asio::detail::socket_ops::host_to_network_short(port_num);
- data_.v6.sin6_flowinfo = 0;
- data_.v6.sin6_addr.s6_addr[0] = 0; data_.v6.sin6_addr.s6_addr[1] = 0;
- data_.v6.sin6_addr.s6_addr[2] = 0, data_.v6.sin6_addr.s6_addr[3] = 0;
- data_.v6.sin6_addr.s6_addr[4] = 0, data_.v6.sin6_addr.s6_addr[5] = 0;
- data_.v6.sin6_addr.s6_addr[6] = 0, data_.v6.sin6_addr.s6_addr[7] = 0;
- data_.v6.sin6_addr.s6_addr[8] = 0, data_.v6.sin6_addr.s6_addr[9] = 0;
- data_.v6.sin6_addr.s6_addr[10] = 0, data_.v6.sin6_addr.s6_addr[11] = 0;
- data_.v6.sin6_addr.s6_addr[12] = 0, data_.v6.sin6_addr.s6_addr[13] = 0;
- data_.v6.sin6_addr.s6_addr[14] = 0, data_.v6.sin6_addr.s6_addr[15] = 0;
- data_.v6.sin6_scope_id = 0;
- }
-}
-
-endpoint::endpoint(const asio::ip::address& addr,
- unsigned short port_num)
- : data_()
-{
- using namespace std; // For memcpy.
- if (addr.is_v4())
- {
- data_.v4.sin_family = ASIO_OS_DEF(AF_INET);
- data_.v4.sin_port =
- asio::detail::socket_ops::host_to_network_short(port_num);
- data_.v4.sin_addr.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- static_cast<asio::detail::u_long_type>(
- addr.to_v4().to_ulong()));
- }
- else
- {
- data_.v6.sin6_family = ASIO_OS_DEF(AF_INET6);
- data_.v6.sin6_port =
- asio::detail::socket_ops::host_to_network_short(port_num);
- data_.v6.sin6_flowinfo = 0;
- asio::ip::address_v6 v6_addr = addr.to_v6();
- asio::ip::address_v6::bytes_type bytes = v6_addr.to_bytes();
- memcpy(data_.v6.sin6_addr.s6_addr, bytes.data(), 16);
- data_.v6.sin6_scope_id =
- static_cast<asio::detail::u_long_type>(
- v6_addr.scope_id());
- }
-}
-
-void endpoint::resize(std::size_t new_size)
-{
- if (new_size > sizeof(asio::detail::sockaddr_storage_type))
- {
- asio::error_code ec(asio::error::invalid_argument);
- asio::detail::throw_error(ec);
- }
-}
-
-unsigned short endpoint::port() const
-{
- if (is_v4())
- {
- return asio::detail::socket_ops::network_to_host_short(
- data_.v4.sin_port);
- }
- else
- {
- return asio::detail::socket_ops::network_to_host_short(
- data_.v6.sin6_port);
- }
-}
-
-void endpoint::port(unsigned short port_num)
-{
- if (is_v4())
- {
- data_.v4.sin_port
- = asio::detail::socket_ops::host_to_network_short(port_num);
- }
- else
- {
- data_.v6.sin6_port
- = asio::detail::socket_ops::host_to_network_short(port_num);
- }
-}
-
-asio::ip::address endpoint::address() const
-{
- using namespace std; // For memcpy.
- if (is_v4())
- {
- return asio::ip::address_v4(
- asio::detail::socket_ops::network_to_host_long(
- data_.v4.sin_addr.s_addr));
- }
- else
- {
- asio::ip::address_v6::bytes_type bytes;
-#if defined(ASIO_HAS_STD_ARRAY)
- memcpy(bytes.data(), data_.v6.sin6_addr.s6_addr, 16);
-#else // defined(ASIO_HAS_STD_ARRAY)
- memcpy(bytes.elems, data_.v6.sin6_addr.s6_addr, 16);
-#endif // defined(ASIO_HAS_STD_ARRAY)
- return asio::ip::address_v6(bytes, data_.v6.sin6_scope_id);
- }
-}
-
-void endpoint::address(const asio::ip::address& addr)
-{
- endpoint tmp_endpoint(addr, port());
- data_ = tmp_endpoint.data_;
-}
-
-bool operator==(const endpoint& e1, const endpoint& e2)
-{
- return e1.address() == e2.address() && e1.port() == e2.port();
-}
-
-bool operator<(const endpoint& e1, const endpoint& e2)
-{
- if (e1.address() < e2.address())
- return true;
- if (e1.address() != e2.address())
- return false;
- return e1.port() < e2.port();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-std::string endpoint::to_string(asio::error_code& ec) const
-{
- std::string a = address().to_string(ec);
- if (ec)
- return std::string();
-
- std::ostringstream tmp_os;
- tmp_os.imbue(std::locale::classic());
- if (is_v4())
- tmp_os << a;
- else
- tmp_os << '[' << a << ']';
- tmp_os << ':' << port();
-
- return tmp_os.str();
-}
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace detail
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_DETAIL_IMPL_ENDPOINT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/socket_option.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/socket_option.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/socket_option.hpp
deleted file mode 100644
index 1619ff2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/detail/socket_option.hpp
+++ /dev/null
@@ -1,569 +0,0 @@
-//
-// detail/socket_option.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_IP_DETAIL_SOCKET_OPTION_HPP
-#define ASIO_IP_DETAIL_SOCKET_OPTION_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 <cstring>
-#include <stdexcept>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/ip/address.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace detail {
-namespace socket_option {
-
-// Helper template for implementing multicast enable loopback options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class multicast_enable_loopback
-{
-public:
-#if defined(__sun) || defined(__osf__)
- typedef unsigned char ipv4_value_type;
- typedef unsigned char ipv6_value_type;
-#elif defined(_AIX) || defined(__hpux) || defined(__QNXNTO__)
- typedef unsigned char ipv4_value_type;
- typedef unsigned int ipv6_value_type;
-#else
- typedef int ipv4_value_type;
- typedef int ipv6_value_type;
-#endif
-
- // Default constructor.
- multicast_enable_loopback()
- : ipv4_value_(0),
- ipv6_value_(0)
- {
- }
-
- // Construct with a specific option value.
- explicit multicast_enable_loopback(bool v)
- : ipv4_value_(v ? 1 : 0),
- ipv6_value_(v ? 1 : 0)
- {
- }
-
- // Set the value of the boolean.
- multicast_enable_loopback& operator=(bool v)
- {
- ipv4_value_ = v ? 1 : 0;
- ipv6_value_ = v ? 1 : 0;
- return *this;
- }
-
- // Get the current value of the boolean.
- bool value() const
- {
- return !!ipv4_value_;
- }
-
- // Convert to bool.
- operator bool() const
- {
- return !!ipv4_value_;
- }
-
- // Test for false.
- bool operator!() const
- {
- return !ipv4_value_;
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Level;
- return IPv4_Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Name;
- return IPv4_Name;
- }
-
- // Get the address of the boolean data.
- template <typename Protocol>
- void* data(const Protocol& protocol)
- {
- if (protocol.family() == PF_INET6)
- return &ipv6_value_;
- return &ipv4_value_;
- }
-
- // Get the address of the boolean data.
- template <typename Protocol>
- const void* data(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return &ipv6_value_;
- return &ipv4_value_;
- }
-
- // Get the size of the boolean data.
- template <typename Protocol>
- std::size_t size(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return sizeof(ipv6_value_);
- return sizeof(ipv4_value_);
- }
-
- // Set the size of the boolean data.
- template <typename Protocol>
- void resize(const Protocol& protocol, std::size_t s)
- {
- if (protocol.family() == PF_INET6)
- {
- if (s != sizeof(ipv6_value_))
- {
- std::length_error ex("multicast_enable_loopback socket option resize");
- asio::detail::throw_exception(ex);
- }
- ipv4_value_ = ipv6_value_ ? 1 : 0;
- }
- else
- {
- if (s != sizeof(ipv4_value_))
- {
- std::length_error ex("multicast_enable_loopback socket option resize");
- asio::detail::throw_exception(ex);
- }
- ipv6_value_ = ipv4_value_ ? 1 : 0;
- }
- }
-
-private:
- ipv4_value_type ipv4_value_;
- ipv6_value_type ipv6_value_;
-};
-
-// Helper template for implementing unicast hops options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class unicast_hops
-{
-public:
- // Default constructor.
- unicast_hops()
- : value_(0)
- {
- }
-
- // Construct with a specific option value.
- explicit unicast_hops(int v)
- : value_(v)
- {
- }
-
- // Set the value of the option.
- unicast_hops& operator=(int v)
- {
- value_ = v;
- return *this;
- }
-
- // Get the current value of the option.
- int value() const
- {
- return value_;
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Level;
- return IPv4_Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Name;
- return IPv4_Name;
- }
-
- // Get the address of the data.
- template <typename Protocol>
- int* data(const Protocol&)
- {
- return &value_;
- }
-
- // Get the address of the data.
- template <typename Protocol>
- const int* data(const Protocol&) const
- {
- return &value_;
- }
-
- // Get the size of the data.
- template <typename Protocol>
- std::size_t size(const Protocol&) const
- {
- return sizeof(value_);
- }
-
- // Set the size of the data.
- template <typename Protocol>
- void resize(const Protocol&, std::size_t s)
- {
- if (s != sizeof(value_))
- {
- std::length_error ex("unicast hops socket option resize");
- asio::detail::throw_exception(ex);
- }
-#if defined(__hpux)
- if (value_ < 0)
- value_ = value_ & 0xFF;
-#endif
- }
-
-private:
- int value_;
-};
-
-// Helper template for implementing multicast hops options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class multicast_hops
-{
-public:
-#if defined(ASIO_WINDOWS) && defined(UNDER_CE)
- typedef int ipv4_value_type;
-#else
- typedef unsigned char ipv4_value_type;
-#endif
- typedef int ipv6_value_type;
-
- // Default constructor.
- multicast_hops()
- : ipv4_value_(0),
- ipv6_value_(0)
- {
- }
-
- // Construct with a specific option value.
- explicit multicast_hops(int v)
- {
- if (v < 0 || v > 255)
- {
- std::out_of_range ex("multicast hops value out of range");
- asio::detail::throw_exception(ex);
- }
- ipv4_value_ = (ipv4_value_type)v;
- ipv6_value_ = v;
- }
-
- // Set the value of the option.
- multicast_hops& operator=(int v)
- {
- if (v < 0 || v > 255)
- {
- std::out_of_range ex("multicast hops value out of range");
- asio::detail::throw_exception(ex);
- }
- ipv4_value_ = (ipv4_value_type)v;
- ipv6_value_ = v;
- return *this;
- }
-
- // Get the current value of the option.
- int value() const
- {
- return ipv6_value_;
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Level;
- return IPv4_Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Name;
- return IPv4_Name;
- }
-
- // Get the address of the data.
- template <typename Protocol>
- void* data(const Protocol& protocol)
- {
- if (protocol.family() == PF_INET6)
- return &ipv6_value_;
- return &ipv4_value_;
- }
-
- // Get the address of the data.
- template <typename Protocol>
- const void* data(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return &ipv6_value_;
- return &ipv4_value_;
- }
-
- // Get the size of the data.
- template <typename Protocol>
- std::size_t size(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return sizeof(ipv6_value_);
- return sizeof(ipv4_value_);
- }
-
- // Set the size of the data.
- template <typename Protocol>
- void resize(const Protocol& protocol, std::size_t s)
- {
- if (protocol.family() == PF_INET6)
- {
- if (s != sizeof(ipv6_value_))
- {
- std::length_error ex("multicast hops socket option resize");
- asio::detail::throw_exception(ex);
- }
- if (ipv6_value_ < 0)
- ipv4_value_ = 0;
- else if (ipv6_value_ > 255)
- ipv4_value_ = 255;
- else
- ipv4_value_ = (ipv4_value_type)ipv6_value_;
- }
- else
- {
- if (s != sizeof(ipv4_value_))
- {
- std::length_error ex("multicast hops socket option resize");
- asio::detail::throw_exception(ex);
- }
- ipv6_value_ = ipv4_value_;
- }
- }
-
-private:
- ipv4_value_type ipv4_value_;
- ipv6_value_type ipv6_value_;
-};
-
-// Helper template for implementing ip_mreq-based options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class multicast_request
-{
-public:
- // Default constructor.
- multicast_request()
- : ipv4_value_(), // Zero-initialisation gives the "any" address.
- ipv6_value_() // Zero-initialisation gives the "any" address.
- {
- }
-
- // Construct with multicast address only.
- explicit multicast_request(const asio::ip::address& multicast_address)
- : ipv4_value_(), // Zero-initialisation gives the "any" address.
- ipv6_value_() // Zero-initialisation gives the "any" address.
- {
- if (multicast_address.is_v6())
- {
- using namespace std; // For memcpy.
- asio::ip::address_v6 ipv6_address = multicast_address.to_v6();
- asio::ip::address_v6::bytes_type bytes = ipv6_address.to_bytes();
- memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16);
- ipv6_value_.ipv6mr_interface = ipv6_address.scope_id();
- }
- else
- {
- ipv4_value_.imr_multiaddr.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- multicast_address.to_v4().to_ulong());
- ipv4_value_.imr_interface.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- asio::ip::address_v4::any().to_ulong());
- }
- }
-
- // Construct with multicast address and IPv4 address specifying an interface.
- explicit multicast_request(
- const asio::ip::address_v4& multicast_address,
- const asio::ip::address_v4& network_interface
- = asio::ip::address_v4::any())
- : ipv6_value_() // Zero-initialisation gives the "any" address.
- {
- ipv4_value_.imr_multiaddr.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- multicast_address.to_ulong());
- ipv4_value_.imr_interface.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- network_interface.to_ulong());
- }
-
- // Construct with multicast address and IPv6 network interface index.
- explicit multicast_request(
- const asio::ip::address_v6& multicast_address,
- unsigned long network_interface = 0)
- : ipv4_value_() // Zero-initialisation gives the "any" address.
- {
- using namespace std; // For memcpy.
- asio::ip::address_v6::bytes_type bytes =
- multicast_address.to_bytes();
- memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16);
- if (network_interface)
- ipv6_value_.ipv6mr_interface = network_interface;
- else
- ipv6_value_.ipv6mr_interface = multicast_address.scope_id();
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Level;
- return IPv4_Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Name;
- return IPv4_Name;
- }
-
- // Get the address of the option data.
- template <typename Protocol>
- const void* data(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return &ipv6_value_;
- return &ipv4_value_;
- }
-
- // Get the size of the option data.
- template <typename Protocol>
- std::size_t size(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return sizeof(ipv6_value_);
- return sizeof(ipv4_value_);
- }
-
-private:
- asio::detail::in4_mreq_type ipv4_value_;
- asio::detail::in6_mreq_type ipv6_value_;
-};
-
-// Helper template for implementing options that specify a network interface.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class network_interface
-{
-public:
- // Default constructor.
- network_interface()
- {
- ipv4_value_.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- asio::ip::address_v4::any().to_ulong());
- ipv6_value_ = 0;
- }
-
- // Construct with IPv4 interface.
- explicit network_interface(const asio::ip::address_v4& ipv4_interface)
- {
- ipv4_value_.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- ipv4_interface.to_ulong());
- ipv6_value_ = 0;
- }
-
- // Construct with IPv6 interface.
- explicit network_interface(unsigned int ipv6_interface)
- {
- ipv4_value_.s_addr =
- asio::detail::socket_ops::host_to_network_long(
- asio::ip::address_v4::any().to_ulong());
- ipv6_value_ = ipv6_interface;
- }
-
- // Get the level of the socket option.
- template <typename Protocol>
- int level(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Level;
- return IPv4_Level;
- }
-
- // Get the name of the socket option.
- template <typename Protocol>
- int name(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return IPv6_Name;
- return IPv4_Name;
- }
-
- // Get the address of the option data.
- template <typename Protocol>
- const void* data(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return &ipv6_value_;
- return &ipv4_value_;
- }
-
- // Get the size of the option data.
- template <typename Protocol>
- std::size_t size(const Protocol& protocol) const
- {
- if (protocol.family() == PF_INET6)
- return sizeof(ipv6_value_);
- return sizeof(ipv4_value_);
- }
-
-private:
- asio::detail::in4_addr_type ipv4_value_;
- unsigned int ipv6_value_;
-};
-
-} // namespace socket_option
-} // namespace detail
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_DETAIL_SOCKET_OPTION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/host_name.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/host_name.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/host_name.hpp
deleted file mode 100644
index db38b37..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/host_name.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// ip/host_name.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_IP_HOST_NAME_HPP
-#define ASIO_IP_HOST_NAME_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 "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Get the current host name.
-ASIO_DECL std::string host_name();
-
-/// Get the current host name.
-ASIO_DECL std::string host_name(asio::error_code& ec);
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/host_name.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_HOST_NAME_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/icmp.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/icmp.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/icmp.hpp
deleted file mode 100644
index 530affc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/icmp.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// ip/icmp.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_IP_ICMP_HPP
-#define ASIO_IP_ICMP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/basic_raw_socket.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Encapsulates the flags needed for ICMP.
-/**
- * The asio::ip::icmp class contains flags necessary for ICMP sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol, InternetProtocol.
- */
-class icmp
-{
-public:
- /// The type of a ICMP endpoint.
- typedef basic_endpoint<icmp> endpoint;
-
- /// Construct to represent the IPv4 ICMP protocol.
- static icmp v4()
- {
- return icmp(ASIO_OS_DEF(IPPROTO_ICMP),
- ASIO_OS_DEF(AF_INET));
- }
-
- /// Construct to represent the IPv6 ICMP protocol.
- static icmp v6()
- {
- return icmp(ASIO_OS_DEF(IPPROTO_ICMPV6),
- ASIO_OS_DEF(AF_INET6));
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_RAW);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return protocol_;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// The ICMP socket type.
- typedef basic_raw_socket<icmp> socket;
-
- /// The ICMP resolver type.
- typedef basic_resolver<icmp> resolver;
-
- /// Compare two protocols for equality.
- friend bool operator==(const icmp& p1, const icmp& p2)
- {
- return p1.protocol_ == p2.protocol_ && p1.family_ == p2.family_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const icmp& p1, const icmp& p2)
- {
- return p1.protocol_ != p2.protocol_ || p1.family_ != p2.family_;
- }
-
-private:
- // Construct with a specific family.
- explicit icmp(int protocol_id, int protocol_family)
- : protocol_(protocol_id),
- family_(protocol_family)
- {
- }
-
- int protocol_;
- int family_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_ICMP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.hpp
deleted file mode 100644
index b560016..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ip/impl/address.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_IP_IMPL_ADDRESS_HPP
-#define ASIO_IP_IMPL_ADDRESS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const address& addr)
-{
- asio::error_code ec;
- std::string s = addr.to_string(ec);
- if (ec)
- {
- if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
- asio::detail::throw_error(ec);
- else
- os.setstate(std::basic_ostream<Elem, Traits>::failbit);
- }
- else
- for (std::string::iterator i = s.begin(); i != s.end(); ++i)
- os << os.widen(*i);
- return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_ADDRESS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.ipp
deleted file mode 100644
index a67b1b6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address.ipp
+++ /dev/null
@@ -1,226 +0,0 @@
-//
-// ip/impl/address.ipp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// 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_IP_IMPL_ADDRESS_IPP
-#define ASIO_IP_IMPL_ADDRESS_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <typeinfo>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/address.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-address::address()
- : type_(ipv4),
- ipv4_address_(),
- ipv6_address_()
-{
-}
-
-address::address(const asio::ip::address_v4& ipv4_address)
- : type_(ipv4),
- ipv4_address_(ipv4_address),
- ipv6_address_()
-{
-}
-
-address::address(const asio::ip::address_v6& ipv6_address)
- : type_(ipv6),
- ipv4_address_(),
- ipv6_address_(ipv6_address)
-{
-}
-
-address::address(const address& other)
- : type_(other.type_),
- ipv4_address_(other.ipv4_address_),
- ipv6_address_(other.ipv6_address_)
-{
-}
-
-#if defined(ASIO_HAS_MOVE)
-address::address(address&& other)
- : type_(other.type_),
- ipv4_address_(other.ipv4_address_),
- ipv6_address_(other.ipv6_address_)
-{
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address& address::operator=(const address& other)
-{
- type_ = other.type_;
- ipv4_address_ = other.ipv4_address_;
- ipv6_address_ = other.ipv6_address_;
- return *this;
-}
-
-#if defined(ASIO_HAS_MOVE)
-address& address::operator=(address&& other)
-{
- type_ = other.type_;
- ipv4_address_ = other.ipv4_address_;
- ipv6_address_ = other.ipv6_address_;
- return *this;
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address& address::operator=(const asio::ip::address_v4& ipv4_address)
-{
- type_ = ipv4;
- ipv4_address_ = ipv4_address;
- ipv6_address_ = asio::ip::address_v6();
- return *this;
-}
-
-address& address::operator=(const asio::ip::address_v6& ipv6_address)
-{
- type_ = ipv6;
- ipv4_address_ = asio::ip::address_v4();
- ipv6_address_ = ipv6_address;
- return *this;
-}
-
-asio::ip::address_v4 address::to_v4() const
-{
- if (type_ != ipv4)
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
- return ipv4_address_;
-}
-
-asio::ip::address_v6 address::to_v6() const
-{
- if (type_ != ipv6)
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
- return ipv6_address_;
-}
-
-std::string address::to_string() const
-{
- if (type_ == ipv6)
- return ipv6_address_.to_string();
- return ipv4_address_.to_string();
-}
-
-std::string address::to_string(asio::error_code& ec) const
-{
- if (type_ == ipv6)
- return ipv6_address_.to_string(ec);
- return ipv4_address_.to_string(ec);
-}
-
-address address::from_string(const char* str)
-{
- asio::error_code ec;
- address addr = from_string(str, ec);
- asio::detail::throw_error(ec);
- return addr;
-}
-
-address address::from_string(const char* str, asio::error_code& ec)
-{
- asio::ip::address_v6 ipv6_address =
- asio::ip::address_v6::from_string(str, ec);
- if (!ec)
- {
- address tmp;
- tmp.type_ = ipv6;
- tmp.ipv6_address_ = ipv6_address;
- return tmp;
- }
-
- asio::ip::address_v4 ipv4_address =
- asio::ip::address_v4::from_string(str, ec);
- if (!ec)
- {
- address tmp;
- tmp.type_ = ipv4;
- tmp.ipv4_address_ = ipv4_address;
- return tmp;
- }
-
- return address();
-}
-
-address address::from_string(const std::string& str)
-{
- return from_string(str.c_str());
-}
-
-address address::from_string(const std::string& str,
- asio::error_code& ec)
-{
- return from_string(str.c_str(), ec);
-}
-
-bool address::is_loopback() const
-{
- return (type_ == ipv4)
- ? ipv4_address_.is_loopback()
- : ipv6_address_.is_loopback();
-}
-
-bool address::is_unspecified() const
-{
- return (type_ == ipv4)
- ? ipv4_address_.is_unspecified()
- : ipv6_address_.is_unspecified();
-}
-
-bool address::is_multicast() const
-{
- return (type_ == ipv4)
- ? ipv4_address_.is_multicast()
- : ipv6_address_.is_multicast();
-}
-
-bool operator==(const address& a1, const address& a2)
-{
- if (a1.type_ != a2.type_)
- return false;
- if (a1.type_ == address::ipv6)
- return a1.ipv6_address_ == a2.ipv6_address_;
- return a1.ipv4_address_ == a2.ipv4_address_;
-}
-
-bool operator<(const address& a1, const address& a2)
-{
- if (a1.type_ < a2.type_)
- return true;
- if (a1.type_ > a2.type_)
- return false;
- if (a1.type_ == address::ipv6)
- return a1.ipv6_address_ < a2.ipv6_address_;
- return a1.ipv4_address_ < a2.ipv4_address_;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_ADDRESS_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.hpp
deleted file mode 100644
index d82bb59..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ip/impl/address_v4.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_IP_IMPL_ADDRESS_V4_HPP
-#define ASIO_IP_IMPL_ADDRESS_V4_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const address_v4& addr)
-{
- asio::error_code ec;
- std::string s = addr.to_string(ec);
- if (ec)
- {
- if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
- asio::detail::throw_error(ec);
- else
- os.setstate(std::basic_ostream<Elem, Traits>::failbit);
- }
- else
- for (std::string::iterator i = s.begin(); i != s.end(); ++i)
- os << os.widen(*i);
- return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_ADDRESS_V4_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.ipp
deleted file mode 100644
index 112ecbd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v4.ipp
+++ /dev/null
@@ -1,178 +0,0 @@
-//
-// ip/impl/address_v4.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IP_IMPL_ADDRESS_V4_IPP
-#define ASIO_IP_IMPL_ADDRESS_V4_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <climits>
-#include <stdexcept>
-#include "asio/error.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/ip/address_v4.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-address_v4::address_v4(const address_v4::bytes_type& bytes)
-{
-#if UCHAR_MAX > 0xFF
- if (bytes[0] > 0xFF || bytes[1] > 0xFF
- || bytes[2] > 0xFF || bytes[3] > 0xFF)
- {
- std::out_of_range ex("address_v4 from bytes_type");
- asio::detail::throw_exception(ex);
- }
-#endif // UCHAR_MAX > 0xFF
-
- using namespace std; // For memcpy.
- memcpy(&addr_.s_addr, bytes.data(), 4);
-}
-
-address_v4::address_v4(unsigned long addr)
-{
-#if ULONG_MAX > 0xFFFFFFFF
- if (addr > 0xFFFFFFFF)
- {
- std::out_of_range ex("address_v4 from unsigned long");
- asio::detail::throw_exception(ex);
- }
-#endif // ULONG_MAX > 0xFFFFFFFF
-
- addr_.s_addr = asio::detail::socket_ops::host_to_network_long(
- static_cast<asio::detail::u_long_type>(addr));
-}
-
-address_v4::bytes_type address_v4::to_bytes() const
-{
- using namespace std; // For memcpy.
- bytes_type bytes;
-#if defined(ASIO_HAS_STD_ARRAY)
- memcpy(bytes.data(), &addr_.s_addr, 4);
-#else // defined(ASIO_HAS_STD_ARRAY)
- memcpy(bytes.elems, &addr_.s_addr, 4);
-#endif // defined(ASIO_HAS_STD_ARRAY)
- return bytes;
-}
-
-unsigned long address_v4::to_ulong() const
-{
- return asio::detail::socket_ops::network_to_host_long(addr_.s_addr);
-}
-
-std::string address_v4::to_string() const
-{
- asio::error_code ec;
- std::string addr = to_string(ec);
- asio::detail::throw_error(ec);
- return addr;
-}
-
-std::string address_v4::to_string(asio::error_code& ec) const
-{
- char addr_str[asio::detail::max_addr_v4_str_len];
- const char* addr =
- asio::detail::socket_ops::inet_ntop(
- ASIO_OS_DEF(AF_INET), &addr_, addr_str,
- asio::detail::max_addr_v4_str_len, 0, ec);
- if (addr == 0)
- return std::string();
- return addr;
-}
-
-address_v4 address_v4::from_string(const char* str)
-{
- asio::error_code ec;
- address_v4 addr = from_string(str, ec);
- asio::detail::throw_error(ec);
- return addr;
-}
-
-address_v4 address_v4::from_string(
- const char* str, asio::error_code& ec)
-{
- address_v4 tmp;
- if (asio::detail::socket_ops::inet_pton(
- ASIO_OS_DEF(AF_INET), str, &tmp.addr_, 0, ec) <= 0)
- return address_v4();
- return tmp;
-}
-
-address_v4 address_v4::from_string(const std::string& str)
-{
- return from_string(str.c_str());
-}
-
-address_v4 address_v4::from_string(
- const std::string& str, asio::error_code& ec)
-{
- return from_string(str.c_str(), ec);
-}
-
-bool address_v4::is_loopback() const
-{
- return (to_ulong() & 0xFF000000) == 0x7F000000;
-}
-
-bool address_v4::is_unspecified() const
-{
- return to_ulong() == 0;
-}
-
-bool address_v4::is_class_a() const
-{
- return (to_ulong() & 0x80000000) == 0;
-}
-
-bool address_v4::is_class_b() const
-{
- return (to_ulong() & 0xC0000000) == 0x80000000;
-}
-
-bool address_v4::is_class_c() const
-{
- return (to_ulong() & 0xE0000000) == 0xC0000000;
-}
-
-bool address_v4::is_multicast() const
-{
- return (to_ulong() & 0xF0000000) == 0xE0000000;
-}
-
-address_v4 address_v4::broadcast(const address_v4& addr, const address_v4& mask)
-{
- return address_v4(addr.to_ulong() | (mask.to_ulong() ^ 0xFFFFFFFF));
-}
-
-address_v4 address_v4::netmask(const address_v4& addr)
-{
- if (addr.is_class_a())
- return address_v4(0xFF000000);
- if (addr.is_class_b())
- return address_v4(0xFFFF0000);
- if (addr.is_class_c())
- return address_v4(0xFFFFFF00);
- return address_v4(0xFFFFFFFF);
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_ADDRESS_V4_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.hpp
deleted file mode 100644
index 21455af..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ip/impl/address_v6.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_IP_IMPL_ADDRESS_V6_HPP
-#define ASIO_IP_IMPL_ADDRESS_V6_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const address_v6& addr)
-{
- asio::error_code ec;
- std::string s = addr.to_string(ec);
- if (ec)
- {
- if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
- asio::detail::throw_error(ec);
- else
- os.setstate(std::basic_ostream<Elem, Traits>::failbit);
- }
- else
- for (std::string::iterator i = s.begin(); i != s.end(); ++i)
- os << os.widen(*i);
- return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_ADDRESS_V6_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.ipp
deleted file mode 100644
index 996420a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/address_v6.ipp
+++ /dev/null
@@ -1,298 +0,0 @@
-//
-// ip/impl/address_v6.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IP_IMPL_ADDRESS_V6_IPP
-#define ASIO_IP_IMPL_ADDRESS_V6_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstring>
-#include <stdexcept>
-#include <typeinfo>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/address_v6.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-address_v6::address_v6()
- : addr_(),
- scope_id_(0)
-{
-}
-
-address_v6::address_v6(const address_v6::bytes_type& bytes,
- unsigned long scope)
- : scope_id_(scope)
-{
-#if UCHAR_MAX > 0xFF
- for (std::size_t i = 0; i < bytes.size(); ++i)
- {
- if (bytes[i] > 0xFF)
- {
- std::out_of_range ex("address_v6 from bytes_type");
- asio::detail::throw_exception(ex);
- }
- }
-#endif // UCHAR_MAX > 0xFF
-
- using namespace std; // For memcpy.
- memcpy(addr_.s6_addr, bytes.data(), 16);
-}
-
-address_v6::address_v6(const address_v6& other)
- : addr_(other.addr_),
- scope_id_(other.scope_id_)
-{
-}
-
-#if defined(ASIO_HAS_MOVE)
-address_v6::address_v6(address_v6&& other)
- : addr_(other.addr_),
- scope_id_(other.scope_id_)
-{
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address_v6& address_v6::operator=(const address_v6& other)
-{
- addr_ = other.addr_;
- scope_id_ = other.scope_id_;
- return *this;
-}
-
-#if defined(ASIO_HAS_MOVE)
-address_v6& address_v6::operator=(address_v6&& other)
-{
- addr_ = other.addr_;
- scope_id_ = other.scope_id_;
- return *this;
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address_v6::bytes_type address_v6::to_bytes() const
-{
- using namespace std; // For memcpy.
- bytes_type bytes;
-#if defined(ASIO_HAS_STD_ARRAY)
- memcpy(bytes.data(), addr_.s6_addr, 16);
-#else // defined(ASIO_HAS_STD_ARRAY)
- memcpy(bytes.elems, addr_.s6_addr, 16);
-#endif // defined(ASIO_HAS_STD_ARRAY)
- return bytes;
-}
-
-std::string address_v6::to_string() const
-{
- asio::error_code ec;
- std::string addr = to_string(ec);
- asio::detail::throw_error(ec);
- return addr;
-}
-
-std::string address_v6::to_string(asio::error_code& ec) const
-{
- char addr_str[asio::detail::max_addr_v6_str_len];
- const char* addr =
- asio::detail::socket_ops::inet_ntop(
- ASIO_OS_DEF(AF_INET6), &addr_, addr_str,
- asio::detail::max_addr_v6_str_len, scope_id_, ec);
- if (addr == 0)
- return std::string();
- return addr;
-}
-
-address_v6 address_v6::from_string(const char* str)
-{
- asio::error_code ec;
- address_v6 addr = from_string(str, ec);
- asio::detail::throw_error(ec);
- return addr;
-}
-
-address_v6 address_v6::from_string(
- const char* str, asio::error_code& ec)
-{
- address_v6 tmp;
- if (asio::detail::socket_ops::inet_pton(
- ASIO_OS_DEF(AF_INET6), str, &tmp.addr_, &tmp.scope_id_, ec) <= 0)
- return address_v6();
- return tmp;
-}
-
-address_v6 address_v6::from_string(const std::string& str)
-{
- return from_string(str.c_str());
-}
-
-address_v6 address_v6::from_string(
- const std::string& str, asio::error_code& ec)
-{
- return from_string(str.c_str(), ec);
-}
-
-address_v4 address_v6::to_v4() const
-{
- if (!is_v4_mapped() && !is_v4_compatible())
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
-
- address_v4::bytes_type v4_bytes = { { addr_.s6_addr[12],
- addr_.s6_addr[13], addr_.s6_addr[14], addr_.s6_addr[15] } };
- return address_v4(v4_bytes);
-}
-
-bool address_v6::is_loopback() const
-{
- return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
- && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
- && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
- && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
- && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
- && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
- && (addr_.s6_addr[12] == 0) && (addr_.s6_addr[13] == 0)
- && (addr_.s6_addr[14] == 0) && (addr_.s6_addr[15] == 1));
-}
-
-bool address_v6::is_unspecified() const
-{
- return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
- && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
- && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
- && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
- && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
- && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
- && (addr_.s6_addr[12] == 0) && (addr_.s6_addr[13] == 0)
- && (addr_.s6_addr[14] == 0) && (addr_.s6_addr[15] == 0));
-}
-
-bool address_v6::is_link_local() const
-{
- return ((addr_.s6_addr[0] == 0xfe) && ((addr_.s6_addr[1] & 0xc0) == 0x80));
-}
-
-bool address_v6::is_site_local() const
-{
- return ((addr_.s6_addr[0] == 0xfe) && ((addr_.s6_addr[1] & 0xc0) == 0xc0));
-}
-
-bool address_v6::is_v4_mapped() const
-{
- return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
- && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
- && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
- && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
- && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
- && (addr_.s6_addr[10] == 0xff) && (addr_.s6_addr[11] == 0xff));
-}
-
-bool address_v6::is_v4_compatible() const
-{
- return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
- && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
- && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
- && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
- && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
- && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
- && !((addr_.s6_addr[12] == 0)
- && (addr_.s6_addr[13] == 0)
- && (addr_.s6_addr[14] == 0)
- && ((addr_.s6_addr[15] == 0) || (addr_.s6_addr[15] == 1))));
-}
-
-bool address_v6::is_multicast() const
-{
- return (addr_.s6_addr[0] == 0xff);
-}
-
-bool address_v6::is_multicast_global() const
-{
- return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x0e));
-}
-
-bool address_v6::is_multicast_link_local() const
-{
- return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x02));
-}
-
-bool address_v6::is_multicast_node_local() const
-{
- return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x01));
-}
-
-bool address_v6::is_multicast_org_local() const
-{
- return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x08));
-}
-
-bool address_v6::is_multicast_site_local() const
-{
- return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x05));
-}
-
-bool operator==(const address_v6& a1, const address_v6& a2)
-{
- using namespace std; // For memcmp.
- return memcmp(&a1.addr_, &a2.addr_,
- sizeof(asio::detail::in6_addr_type)) == 0
- && a1.scope_id_ == a2.scope_id_;
-}
-
-bool operator<(const address_v6& a1, const address_v6& a2)
-{
- using namespace std; // For memcmp.
- int memcmp_result = memcmp(&a1.addr_, &a2.addr_,
- sizeof(asio::detail::in6_addr_type));
- if (memcmp_result < 0)
- return true;
- if (memcmp_result > 0)
- return false;
- return a1.scope_id_ < a2.scope_id_;
-}
-
-address_v6 address_v6::loopback()
-{
- address_v6 tmp;
- tmp.addr_.s6_addr[15] = 1;
- return tmp;
-}
-
-address_v6 address_v6::v4_mapped(const address_v4& addr)
-{
- address_v4::bytes_type v4_bytes = addr.to_bytes();
- bytes_type v6_bytes = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF,
- v4_bytes[0], v4_bytes[1], v4_bytes[2], v4_bytes[3] } };
- return address_v6(v6_bytes);
-}
-
-address_v6 address_v6::v4_compatible(const address_v4& addr)
-{
- address_v4::bytes_type v4_bytes = addr.to_bytes();
- bytes_type v6_bytes = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- v4_bytes[0], v4_bytes[1], v4_bytes[2], v4_bytes[3] } };
- return address_v6(v6_bytes);
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_ADDRESS_V6_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/basic_endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/basic_endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/basic_endpoint.hpp
deleted file mode 100644
index 569ce3f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/basic_endpoint.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// ip/impl/basic_endpoint.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_IP_IMPL_BASIC_ENDPOINT_HPP
-#define ASIO_IP_IMPL_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits, typename InternetProtocol>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os,
- const basic_endpoint<InternetProtocol>& endpoint)
-{
- asio::ip::detail::endpoint tmp_ep(endpoint.address(), endpoint.port());
- asio::error_code ec;
- std::string s = tmp_ep.to_string(ec);
- if (ec)
- {
- if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
- asio::detail::throw_error(ec);
- else
- os.setstate(std::basic_ostream<Elem, Traits>::failbit);
- }
- else
- for (std::string::iterator i = s.begin(); i != s.end(); ++i)
- os << os.widen(*i);
- return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_BASIC_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/host_name.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/host_name.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/host_name.ipp
deleted file mode 100644
index ab2c445..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/impl/host_name.ipp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// ip/impl/host_name.ipp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IP_IMPL_HOST_NAME_IPP
-#define ASIO_IP_IMPL_HOST_NAME_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/ip/host_name.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-std::string host_name()
-{
- char name[1024];
- asio::error_code ec;
- if (asio::detail::socket_ops::gethostname(name, sizeof(name), ec) != 0)
- {
- asio::detail::throw_error(ec);
- return std::string();
- }
- return std::string(name);
-}
-
-std::string host_name(asio::error_code& ec)
-{
- char name[1024];
- if (asio::detail::socket_ops::gethostname(name, sizeof(name), ec) != 0)
- return std::string();
- return std::string(name);
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_HOST_NAME_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/multicast.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/multicast.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/multicast.hpp
deleted file mode 100644
index 512ce9b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/multicast.hpp
+++ /dev/null
@@ -1,191 +0,0 @@
-//
-// ip/multicast.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_IP_MULTICAST_HPP
-#define ASIO_IP_MULTICAST_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 "asio/ip/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace multicast {
-
-/// Socket option to join a multicast group on a specified interface.
-/**
- * Implements the IPPROTO_IP/IP_ADD_MEMBERSHIP socket option.
- *
- * @par Examples
- * Setting the option to join a multicast group:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::address multicast_address =
- * asio::ip::address::from_string("225.0.0.1");
- * asio::ip::multicast::join_group option(multicast_address);
- * socket.set_option(option);
- * @endcode
- *
- * @par Concepts:
- * SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined join_group;
-#else
-typedef asio::ip::detail::socket_option::multicast_request<
- ASIO_OS_DEF(IPPROTO_IP),
- ASIO_OS_DEF(IP_ADD_MEMBERSHIP),
- ASIO_OS_DEF(IPPROTO_IPV6),
- ASIO_OS_DEF(IPV6_JOIN_GROUP)> join_group;
-#endif
-
-/// Socket option to leave a multicast group on a specified interface.
-/**
- * Implements the IPPROTO_IP/IP_DROP_MEMBERSHIP socket option.
- *
- * @par Examples
- * Setting the option to leave a multicast group:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::address multicast_address =
- * asio::ip::address::from_string("225.0.0.1");
- * asio::ip::multicast::leave_group option(multicast_address);
- * socket.set_option(option);
- * @endcode
- *
- * @par Concepts:
- * SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined leave_group;
-#else
-typedef asio::ip::detail::socket_option::multicast_request<
- ASIO_OS_DEF(IPPROTO_IP),
- ASIO_OS_DEF(IP_DROP_MEMBERSHIP),
- ASIO_OS_DEF(IPPROTO_IPV6),
- ASIO_OS_DEF(IPV6_LEAVE_GROUP)> leave_group;
-#endif
-
-/// Socket option for local interface to use for outgoing multicast packets.
-/**
- * Implements the IPPROTO_IP/IP_MULTICAST_IF socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::address_v4 local_interface =
- * asio::ip::address_v4::from_string("1.2.3.4");
- * asio::ip::multicast::outbound_interface option(local_interface);
- * socket.set_option(option);
- * @endcode
- *
- * @par Concepts:
- * SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined outbound_interface;
-#else
-typedef asio::ip::detail::socket_option::network_interface<
- ASIO_OS_DEF(IPPROTO_IP),
- ASIO_OS_DEF(IP_MULTICAST_IF),
- ASIO_OS_DEF(IPPROTO_IPV6),
- ASIO_OS_DEF(IPV6_MULTICAST_IF)> outbound_interface;
-#endif
-
-/// Socket option for time-to-live associated with outgoing multicast packets.
-/**
- * Implements the IPPROTO_IP/IP_MULTICAST_TTL socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::multicast::hops option(4);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::multicast::hops option;
- * socket.get_option(option);
- * int ttl = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined hops;
-#else
-typedef asio::ip::detail::socket_option::multicast_hops<
- ASIO_OS_DEF(IPPROTO_IP),
- ASIO_OS_DEF(IP_MULTICAST_TTL),
- ASIO_OS_DEF(IPPROTO_IPV6),
- ASIO_OS_DEF(IPV6_MULTICAST_HOPS)> hops;
-#endif
-
-/// Socket option determining whether outgoing multicast packets will be
-/// received on the same socket if it is a member of the multicast group.
-/**
- * Implements the IPPROTO_IP/IP_MULTICAST_LOOP socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::multicast::enable_loopback option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::multicast::enable_loopback option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined enable_loopback;
-#else
-typedef asio::ip::detail::socket_option::multicast_enable_loopback<
- ASIO_OS_DEF(IPPROTO_IP),
- ASIO_OS_DEF(IP_MULTICAST_LOOP),
- ASIO_OS_DEF(IPPROTO_IPV6),
- ASIO_OS_DEF(IPV6_MULTICAST_LOOP)> enable_loopback;
-#endif
-
-} // namespace multicast
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_MULTICAST_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_query_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_query_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_query_base.hpp
deleted file mode 100644
index 6b96928..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_query_base.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// ip/resolver_query_base.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_IP_RESOLVER_QUERY_BASE_HPP
-#define ASIO_IP_RESOLVER_QUERY_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// The resolver_query_base class is used as a base for the
-/// basic_resolver_query class templates to provide a common place to define
-/// the flag constants.
-class resolver_query_base
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// A bitmask type (C++ Std [lib.bitmask.types]).
- typedef unspecified flags;
-
- /// Determine the canonical name of the host specified in the query.
- static const flags canonical_name = implementation_defined;
-
- /// Indicate that returned endpoint is intended for use as a locally bound
- /// socket endpoint.
- static const flags passive = implementation_defined;
-
- /// Host name should be treated as a numeric string defining an IPv4 or IPv6
- /// address and no name resolution should be attempted.
- static const flags numeric_host = implementation_defined;
-
- /// Service name should be treated as a numeric string defining a port number
- /// and no name resolution should be attempted.
- static const flags numeric_service = implementation_defined;
-
- /// If the query protocol family is specified as IPv6, return IPv4-mapped
- /// IPv6 addresses on finding no IPv6 addresses.
- static const flags v4_mapped = implementation_defined;
-
- /// If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
- static const flags all_matching = implementation_defined;
-
- /// Only return IPv4 addresses if a non-loopback IPv4 address is configured
- /// for the system. Only return IPv6 addresses if a non-loopback IPv6 address
- /// is configured for the system.
- static const flags address_configured = implementation_defined;
-#else
- enum flags
- {
- canonical_name = ASIO_OS_DEF(AI_CANONNAME),
- passive = ASIO_OS_DEF(AI_PASSIVE),
- numeric_host = ASIO_OS_DEF(AI_NUMERICHOST),
- numeric_service = ASIO_OS_DEF(AI_NUMERICSERV),
- v4_mapped = ASIO_OS_DEF(AI_V4MAPPED),
- all_matching = ASIO_OS_DEF(AI_ALL),
- address_configured = ASIO_OS_DEF(AI_ADDRCONFIG)
- };
-
- // Implement bitmask operations as shown in C++ Std [lib.bitmask.types].
-
- friend flags operator&(flags x, flags y)
- {
- return static_cast<flags>(
- static_cast<unsigned int>(x) & static_cast<unsigned int>(y));
- }
-
- friend flags operator|(flags x, flags y)
- {
- return static_cast<flags>(
- static_cast<unsigned int>(x) | static_cast<unsigned int>(y));
- }
-
- friend flags operator^(flags x, flags y)
- {
- return static_cast<flags>(
- static_cast<unsigned int>(x) ^ static_cast<unsigned int>(y));
- }
-
- friend flags operator~(flags x)
- {
- return static_cast<flags>(~static_cast<unsigned int>(x));
- }
-
- friend flags& operator&=(flags& x, flags y)
- {
- x = x & y;
- return x;
- }
-
- friend flags& operator|=(flags& x, flags y)
- {
- x = x | y;
- return x;
- }
-
- friend flags& operator^=(flags& x, flags y)
- {
- x = x ^ y;
- return x;
- }
-#endif
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~resolver_query_base()
- {
- }
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_RESOLVER_QUERY_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_service.hpp
deleted file mode 100644
index 32682f6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/resolver_service.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// ip/resolver_service.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_IP_RESOLVER_SERVICE_HPP
-#define ASIO_IP_RESOLVER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/error_code.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_resolver_service.hpp"
-#else
-# include "asio/detail/resolver_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Default service implementation for a resolver.
-template <typename InternetProtocol>
-class resolver_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<
- resolver_service<InternetProtocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The protocol type.
- typedef InternetProtocol protocol_type;
-
- /// The endpoint type.
- typedef typename InternetProtocol::endpoint endpoint_type;
-
- /// The query type.
- typedef basic_resolver_query<InternetProtocol> query_type;
-
- /// The iterator type.
- typedef basic_resolver_iterator<InternetProtocol> iterator_type;
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
- typedef asio::detail::winrt_resolver_service<InternetProtocol>
- service_impl_type;
-#else
- typedef asio::detail::resolver_service<InternetProtocol>
- service_impl_type;
-#endif
-
-public:
- /// The type of a resolver implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// Construct a new resolver service for the specified io_service.
- explicit resolver_service(asio::io_service& io_service)
- : asio::detail::service_base<
- resolver_service<InternetProtocol> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new resolver implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
- /// Destroy a resolver implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Cancel pending asynchronous operations.
- void cancel(implementation_type& impl)
- {
- service_impl_.cancel(impl);
- }
-
- /// Resolve a query to a list of entries.
- iterator_type resolve(implementation_type& impl, const query_type& query,
- asio::error_code& ec)
- {
- return service_impl_.resolve(impl, query, ec);
- }
-
- /// Asynchronously resolve a query to a list of entries.
- template <typename ResolveHandler>
- ASIO_INITFN_RESULT_TYPE(ResolveHandler,
- void (asio::error_code, iterator_type))
- async_resolve(implementation_type& impl, const query_type& query,
- ASIO_MOVE_ARG(ResolveHandler) handler)
- {
- asio::detail::async_result_init<
- ResolveHandler, void (asio::error_code, iterator_type)> init(
- ASIO_MOVE_CAST(ResolveHandler)(handler));
-
- service_impl_.async_resolve(impl, query, init.handler);
-
- return init.result.get();
- }
-
- /// Resolve an endpoint to a list of entries.
- iterator_type resolve(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- return service_impl_.resolve(impl, endpoint, ec);
- }
-
- /// Asynchronously resolve an endpoint to a list of entries.
- template <typename ResolveHandler>
- ASIO_INITFN_RESULT_TYPE(ResolveHandler,
- void (asio::error_code, iterator_type))
- async_resolve(implementation_type& impl, const endpoint_type& endpoint,
- ASIO_MOVE_ARG(ResolveHandler) handler)
- {
- asio::detail::async_result_init<
- ResolveHandler, void (asio::error_code, iterator_type)> init(
- ASIO_MOVE_CAST(ResolveHandler)(handler));
-
- service_impl_.async_resolve(impl, endpoint, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // Perform any fork-related housekeeping.
- void fork_service(asio::io_service::fork_event event)
- {
- service_impl_.fork_service(event);
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_RESOLVER_SERVICE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[12/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/spawn.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/spawn.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/spawn.hpp
deleted file mode 100644
index f5a504e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/spawn.hpp
+++ /dev/null
@@ -1,336 +0,0 @@
-//
-// impl/spawn.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_IMPL_SPAWN_HPP
-#define ASIO_IMPL_SPAWN_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/handler_type.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
- template <typename Handler, typename T>
- class coro_handler
- {
- public:
- coro_handler(basic_yield_context<Handler> ctx)
- : coro_(ctx.coro_.lock()),
- ca_(ctx.ca_),
- handler_(ctx.handler_),
- ec_(ctx.ec_),
- value_(0)
- {
- }
-
- void operator()(T value)
- {
- *ec_ = asio::error_code();
- *value_ = value;
- (*coro_)();
- }
-
- void operator()(asio::error_code ec, T value)
- {
- *ec_ = ec;
- *value_ = value;
- (*coro_)();
- }
-
- //private:
- shared_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
- typename basic_yield_context<Handler>::caller_type& ca_;
- Handler& handler_;
- asio::error_code* ec_;
- T* value_;
- };
-
- template <typename Handler>
- class coro_handler<Handler, void>
- {
- public:
- coro_handler(basic_yield_context<Handler> ctx)
- : coro_(ctx.coro_.lock()),
- ca_(ctx.ca_),
- handler_(ctx.handler_),
- ec_(ctx.ec_)
- {
- }
-
- void operator()()
- {
- *ec_ = asio::error_code();
- (*coro_)();
- }
-
- void operator()(asio::error_code ec)
- {
- *ec_ = ec;
- (*coro_)();
- }
-
- //private:
- shared_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
- typename basic_yield_context<Handler>::caller_type& ca_;
- Handler& handler_;
- asio::error_code* ec_;
- };
-
- template <typename Handler, typename T>
- inline void* asio_handler_allocate(std::size_t size,
- coro_handler<Handler, T>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename Handler, typename T>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- coro_handler<Handler, T>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename Handler, typename T>
- inline bool asio_handler_is_continuation(coro_handler<Handler, T>*)
- {
- return true;
- }
-
- template <typename Function, typename Handler, typename T>
- inline void asio_handler_invoke(Function& function,
- coro_handler<Handler, T>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename Handler, typename T>
- inline void asio_handler_invoke(const Function& function,
- coro_handler<Handler, T>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
-} // namespace detail
-
-#if !defined(GENERATING_DOCUMENTATION)
-
-template <typename Handler, typename ReturnType>
-struct handler_type<basic_yield_context<Handler>, ReturnType()>
-{
- typedef detail::coro_handler<Handler, void> type;
-};
-
-template <typename Handler, typename ReturnType, typename Arg1>
-struct handler_type<basic_yield_context<Handler>, ReturnType(Arg1)>
-{
- typedef detail::coro_handler<Handler, Arg1> type;
-};
-
-template <typename Handler, typename ReturnType>
-struct handler_type<basic_yield_context<Handler>,
- ReturnType(asio::error_code)>
-{
- typedef detail::coro_handler<Handler, void> type;
-};
-
-template <typename Handler, typename ReturnType, typename Arg2>
-struct handler_type<basic_yield_context<Handler>,
- ReturnType(asio::error_code, Arg2)>
-{
- typedef detail::coro_handler<Handler, Arg2> type;
-};
-
-template <typename Handler, typename T>
-class async_result<detail::coro_handler<Handler, T> >
-{
-public:
- typedef T type;
-
- explicit async_result(detail::coro_handler<Handler, T>& h)
- : handler_(h),
- ca_(h.ca_)
- {
- out_ec_ = h.ec_;
- if (!out_ec_) h.ec_ = &ec_;
- h.value_ = &value_;
- }
-
- type get()
- {
- handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended.
- ca_();
- if (!out_ec_ && ec_) throw asio::system_error(ec_);
- return value_;
- }
-
-private:
- detail::coro_handler<Handler, T>& handler_;
- typename basic_yield_context<Handler>::caller_type& ca_;
- asio::error_code* out_ec_;
- asio::error_code ec_;
- type value_;
-};
-
-template <typename Handler>
-class async_result<detail::coro_handler<Handler, void> >
-{
-public:
- typedef void type;
-
- explicit async_result(detail::coro_handler<Handler, void>& h)
- : handler_(h),
- ca_(h.ca_)
- {
- out_ec_ = h.ec_;
- if (!out_ec_) h.ec_ = &ec_;
- }
-
- void get()
- {
- handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended.
- ca_();
- if (!out_ec_ && ec_) throw asio::system_error(ec_);
- }
-
-private:
- detail::coro_handler<Handler, void>& handler_;
- typename basic_yield_context<Handler>::caller_type& ca_;
- asio::error_code* out_ec_;
- asio::error_code ec_;
-};
-
-namespace detail {
-
- template <typename Handler, typename Function>
- struct spawn_data : private noncopyable
- {
- spawn_data(ASIO_MOVE_ARG(Handler) handler,
- bool call_handler, ASIO_MOVE_ARG(Function) function)
- : handler_(ASIO_MOVE_CAST(Handler)(handler)),
- call_handler_(call_handler),
- function_(ASIO_MOVE_CAST(Function)(function))
- {
- }
-
- weak_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
- Handler handler_;
- bool call_handler_;
- Function function_;
- };
-
- template <typename Handler, typename Function>
- struct coro_entry_point
- {
- void operator()(typename basic_yield_context<Handler>::caller_type& ca)
- {
- shared_ptr<spawn_data<Handler, Function> > data(data_);
-#if !defined(BOOST_COROUTINES_UNIDIRECT) && !defined(BOOST_COROUTINES_V2)
- ca(); // Yield until coroutine pointer has been initialised.
-#endif // !defined(BOOST_COROUTINES_UNIDIRECT) && !defined(BOOST_COROUTINES_V2)
- const basic_yield_context<Handler> yield(
- data->coro_, ca, data->handler_);
- (data->function_)(yield);
- if (data->call_handler_)
- (data->handler_)();
- }
-
- shared_ptr<spawn_data<Handler, Function> > data_;
- };
-
- template <typename Handler, typename Function>
- struct spawn_helper
- {
- void operator()()
- {
- typedef typename basic_yield_context<Handler>::callee_type callee_type;
- coro_entry_point<Handler, Function> entry_point = { data_ };
- shared_ptr<callee_type> coro(new callee_type(entry_point, attributes_));
- data_->coro_ = coro;
- (*coro)();
- }
-
- shared_ptr<spawn_data<Handler, Function> > data_;
- boost::coroutines::attributes attributes_;
- };
-
- inline void default_spawn_handler() {}
-
-} // namespace detail
-
-template <typename Handler, typename Function>
-void spawn(ASIO_MOVE_ARG(Handler) handler,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes)
-{
- detail::spawn_helper<Handler, Function> helper;
- helper.data_.reset(
- new detail::spawn_data<Handler, Function>(
- ASIO_MOVE_CAST(Handler)(handler), true,
- ASIO_MOVE_CAST(Function)(function)));
- helper.attributes_ = attributes;
- asio_handler_invoke_helpers::invoke(helper, helper.data_->handler_);
-}
-
-template <typename Handler, typename Function>
-void spawn(basic_yield_context<Handler> ctx,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes)
-{
- Handler handler(ctx.handler_); // Explicit copy that might be moved from.
- detail::spawn_helper<Handler, Function> helper;
- helper.data_.reset(
- new detail::spawn_data<Handler, Function>(
- ASIO_MOVE_CAST(Handler)(handler), false,
- ASIO_MOVE_CAST(Function)(function)));
- helper.attributes_ = attributes;
- asio_handler_invoke_helpers::invoke(helper, helper.data_->handler_);
-}
-
-template <typename Function>
-void spawn(asio::io_service::strand strand,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes)
-{
- asio::spawn(strand.wrap(&detail::default_spawn_handler),
- ASIO_MOVE_CAST(Function)(function), attributes);
-}
-
-template <typename Function>
-void spawn(asio::io_service& io_service,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes)
-{
- asio::spawn(asio::io_service::strand(io_service),
- ASIO_MOVE_CAST(Function)(function), attributes);
-}
-
-#endif // !defined(GENERATING_DOCUMENTATION)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_SPAWN_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.cpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.cpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.cpp
deleted file mode 100644
index a1e2643..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// impl/src.cpp
-// ~~~~~~~~~~~~
-//
-// 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)
-//
-
-#if defined(_MSC_VER) \
- || defined(__BORLANDC__) \
- || defined(__DMC__)
-# pragma message ( \
- "This file is deprecated. " \
- "Please #include <asio/impl/src.hpp> instead.")
-#elif defined(__GNUC__) \
- || defined(__HP_aCC) \
- || defined(__SUNPRO_CC) \
- || defined(__IBMCPP__)
-# warning "This file is deprecated."
-# warning "Please #include <asio/impl/src.hpp> instead."
-#endif
-
-#include "asio/impl/src.hpp"
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.hpp
deleted file mode 100644
index 58b2a88..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/src.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// impl/src.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_IMPL_SRC_HPP
-#define ASIO_IMPL_SRC_HPP
-
-#define ASIO_SOURCE
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# error Do not compile Asio library source with ASIO_HEADER_ONLY defined
-#endif
-
-#include "asio/impl/error.ipp"
-#include "asio/impl/error_code.ipp"
-#include "asio/impl/handler_alloc_hook.ipp"
-#include "asio/impl/io_service.ipp"
-#include "asio/impl/serial_port_base.ipp"
-#include "asio/detail/impl/buffer_sequence_adapter.ipp"
-#include "asio/detail/impl/descriptor_ops.ipp"
-#include "asio/detail/impl/dev_poll_reactor.ipp"
-#include "asio/detail/impl/epoll_reactor.ipp"
-#include "asio/detail/impl/eventfd_select_interrupter.ipp"
-#include "asio/detail/impl/handler_tracking.ipp"
-#include "asio/detail/impl/kqueue_reactor.ipp"
-#include "asio/detail/impl/pipe_select_interrupter.ipp"
-#include "asio/detail/impl/posix_event.ipp"
-#include "asio/detail/impl/posix_mutex.ipp"
-#include "asio/detail/impl/posix_thread.ipp"
-#include "asio/detail/impl/posix_tss_ptr.ipp"
-#include "asio/detail/impl/reactive_descriptor_service.ipp"
-#include "asio/detail/impl/reactive_serial_port_service.ipp"
-#include "asio/detail/impl/reactive_socket_service_base.ipp"
-#include "asio/detail/impl/resolver_service_base.ipp"
-#include "asio/detail/impl/select_reactor.ipp"
-#include "asio/detail/impl/service_registry.ipp"
-#include "asio/detail/impl/signal_set_service.ipp"
-#include "asio/detail/impl/socket_ops.ipp"
-#include "asio/detail/impl/socket_select_interrupter.ipp"
-#include "asio/detail/impl/strand_service.ipp"
-#include "asio/detail/impl/task_io_service.ipp"
-#include "asio/detail/impl/throw_error.ipp"
-#include "asio/detail/impl/timer_queue_ptime.ipp"
-#include "asio/detail/impl/timer_queue_set.ipp"
-#include "asio/detail/impl/win_iocp_handle_service.ipp"
-#include "asio/detail/impl/win_iocp_io_service.ipp"
-#include "asio/detail/impl/win_iocp_serial_port_service.ipp"
-#include "asio/detail/impl/win_iocp_socket_service_base.ipp"
-#include "asio/detail/impl/win_event.ipp"
-#include "asio/detail/impl/win_mutex.ipp"
-#include "asio/detail/impl/win_object_handle_service.ipp"
-#include "asio/detail/impl/win_static_mutex.ipp"
-#include "asio/detail/impl/win_thread.ipp"
-#include "asio/detail/impl/win_tss_ptr.ipp"
-#include "asio/detail/impl/winrt_ssocket_service_base.ipp"
-#include "asio/detail/impl/winrt_timer_scheduler.ipp"
-#include "asio/detail/impl/winsock_init.ipp"
-#include "asio/generic/detail/impl/endpoint.ipp"
-#include "asio/ip/impl/address.ipp"
-#include "asio/ip/impl/address_v4.ipp"
-#include "asio/ip/impl/address_v6.ipp"
-#include "asio/ip/impl/host_name.ipp"
-#include "asio/ip/detail/impl/endpoint.ipp"
-#include "asio/local/detail/impl/endpoint.ipp"
-
-#endif // ASIO_IMPL_SRC_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/use_future.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/use_future.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/use_future.hpp
deleted file mode 100644
index 5202df6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/use_future.hpp
+++ /dev/null
@@ -1,172 +0,0 @@
-//
-// impl/use_future.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_IMPL_USE_FUTURE_HPP
-#define ASIO_IMPL_USE_FUTURE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <future>
-#include "asio/async_result.hpp"
-#include "asio/error_code.hpp"
-#include "asio/handler_type.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
- // Completion handler to adapt a promise as a completion handler.
- template <typename T>
- class promise_handler
- {
- public:
- // Construct from use_future special value.
- template <typename Allocator>
- promise_handler(use_future_t<Allocator> uf)
- : promise_(std::allocate_shared<std::promise<T> >(
- uf.get_allocator(), std::allocator_arg, uf.get_allocator()))
- {
- }
-
- void operator()(T t)
- {
- promise_->set_value(t);
- }
-
- void operator()(const asio::error_code& ec, T t)
- {
- if (ec)
- promise_->set_exception(
- std::make_exception_ptr(
- asio::system_error(ec)));
- else
- promise_->set_value(t);
- }
-
- //private:
- std::shared_ptr<std::promise<T> > promise_;
- };
-
- // Completion handler to adapt a void promise as a completion handler.
- template <>
- class promise_handler<void>
- {
- public:
- // Construct from use_future special value. Used during rebinding.
- template <typename Allocator>
- promise_handler(use_future_t<Allocator> uf)
- : promise_(std::allocate_shared<std::promise<void> >(
- uf.get_allocator(), std::allocator_arg, uf.get_allocator()))
- {
- }
-
- void operator()()
- {
- promise_->set_value();
- }
-
- void operator()(const asio::error_code& ec)
- {
- if (ec)
- promise_->set_exception(
- std::make_exception_ptr(
- asio::system_error(ec)));
- else
- promise_->set_value();
- }
-
- //private:
- std::shared_ptr<std::promise<void> > promise_;
- };
-
- // Ensure any exceptions thrown from the handler are propagated back to the
- // caller via the future.
- template <typename Function, typename T>
- void asio_handler_invoke(Function f, promise_handler<T>* h)
- {
- std::shared_ptr<std::promise<T> > p(h->promise_);
- try
- {
- f();
- }
- catch (...)
- {
- p->set_exception(std::current_exception());
- }
- }
-
-} // namespace detail
-
-#if !defined(GENERATING_DOCUMENTATION)
-
-// Handler traits specialisation for promise_handler.
-template <typename T>
-class async_result<detail::promise_handler<T> >
-{
-public:
- // The initiating function will return a future.
- typedef std::future<T> type;
-
- // Constructor creates a new promise for the async operation, and obtains the
- // corresponding future.
- explicit async_result(detail::promise_handler<T>& h)
- {
- value_ = h.promise_->get_future();
- }
-
- // Obtain the future to be returned from the initiating function.
- type get() { return std::move(value_); }
-
-private:
- type value_;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType>
-struct handler_type<use_future_t<Allocator>, ReturnType()>
-{
- typedef detail::promise_handler<void> type;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType, typename Arg1>
-struct handler_type<use_future_t<Allocator>, ReturnType(Arg1)>
-{
- typedef detail::promise_handler<Arg1> type;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType>
-struct handler_type<use_future_t<Allocator>,
- ReturnType(asio::error_code)>
-{
- typedef detail::promise_handler<void> type;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType, typename Arg2>
-struct handler_type<use_future_t<Allocator>,
- ReturnType(asio::error_code, Arg2)>
-{
- typedef detail::promise_handler<Arg2> type;
-};
-
-#endif // !defined(GENERATING_DOCUMENTATION)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_USE_FUTURE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write.hpp
deleted file mode 100644
index 77ddebe..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write.hpp
+++ /dev/null
@@ -1,765 +0,0 @@
-//
-// impl/write.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_IMPL_WRITE_HPP
-#define ASIO_IMPL_WRITE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- ec = asio::error_code();
- asio::detail::consuming_buffers<
- const_buffer, ConstBufferSequence> tmp(buffers);
- std::size_t total_transferred = 0;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- while (tmp.begin() != tmp.end())
- {
- std::size_t bytes_transferred = s.write_some(tmp, ec);
- tmp.consume(bytes_transferred);
- total_transferred += bytes_transferred;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- }
- return total_transferred;
-}
-
-template <typename SyncWriteStream, typename ConstBufferSequence>
-inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write(s, buffers, transfer_all(), ec);
- asio::detail::throw_error(ec, "write");
- return bytes_transferred;
-}
-
-template <typename SyncWriteStream, typename ConstBufferSequence>
-inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
- asio::error_code& ec)
-{
- return write(s, buffers, transfer_all(), ec);
-}
-
-template <typename SyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition>
-inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write(s, buffers, completion_condition, ec);
- asio::detail::throw_error(ec, "write");
- return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncWriteStream, typename Allocator,
- typename CompletionCondition>
-std::size_t write(SyncWriteStream& s,
- asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- std::size_t bytes_transferred = write(s, b.data(), completion_condition, ec);
- b.consume(bytes_transferred);
- return bytes_transferred;
-}
-
-template <typename SyncWriteStream, typename Allocator>
-inline std::size_t write(SyncWriteStream& s,
- asio::basic_streambuf<Allocator>& b)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write(s, b, transfer_all(), ec);
- asio::detail::throw_error(ec, "write");
- return bytes_transferred;
-}
-
-template <typename SyncWriteStream, typename Allocator>
-inline std::size_t write(SyncWriteStream& s,
- asio::basic_streambuf<Allocator>& b,
- asio::error_code& ec)
-{
- return write(s, b, transfer_all(), ec);
-}
-
-template <typename SyncWriteStream, typename Allocator,
- typename CompletionCondition>
-inline std::size_t write(SyncWriteStream& s,
- asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write(s, b, completion_condition, ec);
- asio::detail::throw_error(ec, "write");
- return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- class write_op
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_op(AsyncWriteStream& stream, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition, WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_op(const write_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_op(write_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- switch (start_ = start)
- {
- case 1:
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- for (;;)
- {
- stream_.async_write_some(buffers_,
- ASIO_MOVE_CAST(write_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- buffers_.consume(bytes_transferred);
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- if ((!ec && bytes_transferred == 0)
- || buffers_.begin() == buffers_.end())
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncWriteStream& stream_;
- asio::detail::consuming_buffers<
- const_buffer, ConstBufferSequence> buffers_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
- template <typename AsyncWriteStream,
- typename CompletionCondition, typename WriteHandler>
- class write_op<AsyncWriteStream, asio::mutable_buffers_1,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_op(AsyncWriteStream& stream,
- const asio::mutable_buffers_1& buffers,
- CompletionCondition completion_condition,
- WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffer_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_op(const write_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_op(write_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- stream_.async_write_some(
- asio::buffer(buffer_ + total_transferred_, n),
- ASIO_MOVE_CAST(write_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == asio::buffer_size(buffer_))
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncWriteStream& stream_;
- asio::mutable_buffer buffer_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
- template <typename AsyncWriteStream,
- typename CompletionCondition, typename WriteHandler>
- class write_op<AsyncWriteStream, asio::const_buffers_1,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_op(AsyncWriteStream& stream,
- const asio::const_buffers_1& buffers,
- CompletionCondition completion_condition,
- WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffer_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_op(const write_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_op(write_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- stream_.async_write_some(
- asio::buffer(buffer_ + total_transferred_, n),
- ASIO_MOVE_CAST(write_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == asio::buffer_size(buffer_))
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncWriteStream& stream_;
- asio::const_buffer buffer_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
- template <typename AsyncWriteStream, typename Elem,
- typename CompletionCondition, typename WriteHandler>
- class write_op<AsyncWriteStream, boost::array<Elem, 2>,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_op(AsyncWriteStream& stream, const boost::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_op(const write_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_op(write_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- boost::array<asio::const_buffer, 2> >::type bufs = {{
- asio::const_buffer(buffers_[0]),
- asio::const_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- stream_.async_write_some(bufs, ASIO_MOVE_CAST(write_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncWriteStream& stream_;
- boost::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncWriteStream, typename Elem,
- typename CompletionCondition, typename WriteHandler>
- class write_op<AsyncWriteStream, std::array<Elem, 2>,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_op(AsyncWriteStream& stream, const std::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- stream_(stream),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_op(const write_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_op(write_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- stream_(other.stream_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- std::array<asio::const_buffer, 2> >::type bufs = {{
- asio::const_buffer(buffers_[0]),
- asio::const_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- stream_.async_write_some(bufs, ASIO_MOVE_CAST(write_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncWriteStream& stream_;
- std::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline void* asio_handler_allocate(std::size_t size,
- write_op<AsyncWriteStream, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- write_op<AsyncWriteStream, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline bool asio_handler_is_continuation(
- write_op<AsyncWriteStream, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncWriteStream,
- typename ConstBufferSequence, typename CompletionCondition,
- typename WriteHandler>
- inline void asio_handler_invoke(Function& function,
- write_op<AsyncWriteStream, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncWriteStream,
- typename ConstBufferSequence, typename CompletionCondition,
- typename WriteHandler>
- inline void asio_handler_invoke(const Function& function,
- write_op<AsyncWriteStream, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- detail::write_op<AsyncWriteStream, ConstBufferSequence,
- CompletionCondition, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- s, buffers, completion_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-template <typename AsyncWriteStream, typename ConstBufferSequence,
- typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- detail::write_op<AsyncWriteStream, ConstBufferSequence,
- detail::transfer_all_t, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- s, buffers, transfer_all(), init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename Allocator, typename WriteHandler>
- class write_streambuf_handler
- {
- public:
- write_streambuf_handler(asio::basic_streambuf<Allocator>& streambuf,
- WriteHandler& handler)
- : streambuf_(streambuf),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_streambuf_handler(const write_streambuf_handler& other)
- : streambuf_(other.streambuf_),
- handler_(other.handler_)
- {
- }
-
- write_streambuf_handler(write_streambuf_handler&& other)
- : streambuf_(other.streambuf_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- const std::size_t bytes_transferred)
- {
- streambuf_.consume(bytes_transferred);
- handler_(ec, bytes_transferred);
- }
-
- //private:
- asio::basic_streambuf<Allocator>& streambuf_;
- WriteHandler handler_;
- };
-
- template <typename Allocator, typename WriteHandler>
- inline void* asio_handler_allocate(std::size_t size,
- write_streambuf_handler<Allocator, WriteHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename Allocator, typename WriteHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- write_streambuf_handler<Allocator, WriteHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename Allocator, typename WriteHandler>
- inline bool asio_handler_is_continuation(
- write_streambuf_handler<Allocator, WriteHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename Allocator, typename WriteHandler>
- inline void asio_handler_invoke(Function& function,
- write_streambuf_handler<Allocator, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename Allocator, typename WriteHandler>
- inline void asio_handler_invoke(const Function& function,
- write_streambuf_handler<Allocator, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncWriteStream, typename Allocator,
- typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s,
- asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- async_write(s, b.data(), completion_condition,
- detail::write_streambuf_handler<Allocator, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- b, init.handler));
-
- return init.result.get();
-}
-
-template <typename AsyncWriteStream, typename Allocator, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s,
- asio::basic_streambuf<Allocator>& b,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- async_write(s, b.data(), transfer_all(),
- detail::write_streambuf_handler<Allocator, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- b, init.handler));
-
- return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_WRITE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write_at.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write_at.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write_at.hpp
deleted file mode 100644
index 6c9e405..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/write_at.hpp
+++ /dev/null
@@ -1,825 +0,0 @@
-//
-// impl/write_at.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_IMPL_WRITE_AT_HPP
-#define ASIO_IMPL_WRITE_AT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- ec = asio::error_code();
- asio::detail::consuming_buffers<
- const_buffer, ConstBufferSequence> tmp(buffers);
- std::size_t total_transferred = 0;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- while (tmp.begin() != tmp.end())
- {
- std::size_t bytes_transferred = d.write_some_at(
- offset + total_transferred, tmp, ec);
- tmp.consume(bytes_transferred);
- total_transferred += bytes_transferred;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- }
- return total_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write_at(
- d, offset, buffers, transfer_all(), ec);
- asio::detail::throw_error(ec, "write_at");
- return bytes_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers,
- asio::error_code& ec)
-{
- return write_at(d, offset, buffers, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write_at(
- d, offset, buffers, completion_condition, ec);
- asio::detail::throw_error(ec, "write_at");
- return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator,
- typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- std::size_t bytes_transferred = write_at(
- d, offset, b.data(), completion_condition, ec);
- b.consume(bytes_transferred);
- return bytes_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write_at(d, offset, b, transfer_all(), ec);
- asio::detail::throw_error(ec, "write_at");
- return bytes_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- asio::error_code& ec)
-{
- return write_at(d, offset, b, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator,
- typename CompletionCondition>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = write_at(
- d, offset, b, completion_condition, ec);
- asio::detail::throw_error(ec, "write_at");
- return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- class write_at_op
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_at_op(AsyncRandomAccessWriteDevice& device,
- uint64_t offset, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition, WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_at_op(const write_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_at_op(write_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- switch (start_ = start)
- {
- case 1:
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- for (;;)
- {
- device_.async_write_some_at(
- offset_ + total_transferred_, buffers_,
- ASIO_MOVE_CAST(write_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- buffers_.consume(bytes_transferred);
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- if ((!ec && bytes_transferred == 0)
- || buffers_.begin() == buffers_.end())
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessWriteDevice& device_;
- uint64_t offset_;
- asio::detail::consuming_buffers<
- const_buffer, ConstBufferSequence> buffers_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
- template <typename AsyncRandomAccessWriteDevice,
- typename CompletionCondition, typename WriteHandler>
- class write_at_op<AsyncRandomAccessWriteDevice,
- asio::mutable_buffers_1, CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_at_op(AsyncRandomAccessWriteDevice& device,
- uint64_t offset, const asio::mutable_buffers_1& buffers,
- CompletionCondition completion_condition,
- WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffer_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_at_op(const write_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_at_op(write_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- device_.async_write_some_at(offset_ + total_transferred_,
- asio::buffer(buffer_ + total_transferred_, n),
- ASIO_MOVE_CAST(write_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == asio::buffer_size(buffer_))
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessWriteDevice& device_;
- uint64_t offset_;
- asio::mutable_buffer buffer_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
- template <typename AsyncRandomAccessWriteDevice,
- typename CompletionCondition, typename WriteHandler>
- class write_at_op<AsyncRandomAccessWriteDevice, asio::const_buffers_1,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_at_op(AsyncRandomAccessWriteDevice& device,
- uint64_t offset, const asio::const_buffers_1& buffers,
- CompletionCondition completion_condition,
- WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffer_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_at_op(const write_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_at_op(write_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- device_.async_write_some_at(offset_ + total_transferred_,
- asio::buffer(buffer_ + total_transferred_, n),
- ASIO_MOVE_CAST(write_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == asio::buffer_size(buffer_))
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessWriteDevice& device_;
- uint64_t offset_;
- asio::const_buffer buffer_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
- template <typename AsyncRandomAccessWriteDevice, typename Elem,
- typename CompletionCondition, typename WriteHandler>
- class write_at_op<AsyncRandomAccessWriteDevice, boost::array<Elem, 2>,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_at_op(AsyncRandomAccessWriteDevice& device,
- uint64_t offset, const boost::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_at_op(const write_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_at_op(write_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- boost::array<asio::const_buffer, 2> >::type bufs = {{
- asio::const_buffer(buffers_[0]),
- asio::const_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- device_.async_write_some_at(offset_ + total_transferred_,
- bufs, ASIO_MOVE_CAST(write_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessWriteDevice& device_;
- uint64_t offset_;
- boost::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncRandomAccessWriteDevice, typename Elem,
- typename CompletionCondition, typename WriteHandler>
- class write_at_op<AsyncRandomAccessWriteDevice, std::array<Elem, 2>,
- CompletionCondition, WriteHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- write_at_op(AsyncRandomAccessWriteDevice& device,
- uint64_t offset, const std::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, WriteHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_at_op(const write_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- write_at_op(write_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- std::array<asio::const_buffer, 2> >::type bufs = {{
- asio::const_buffer(buffers_[0]),
- asio::const_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- device_.async_write_some_at(offset_ + total_transferred_,
- bufs, ASIO_MOVE_CAST(write_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessWriteDevice& device_;
- uint64_t offset_;
- std::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- WriteHandler handler_;
- };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline void* asio_handler_allocate(std::size_t size,
- write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline bool asio_handler_is_continuation(
- write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncRandomAccessWriteDevice,
- typename ConstBufferSequence, typename CompletionCondition,
- typename WriteHandler>
- inline void asio_handler_invoke(Function& function,
- write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncRandomAccessWriteDevice,
- typename ConstBufferSequence, typename CompletionCondition,
- typename WriteHandler>
- inline void asio_handler_invoke(const Function& function,
- write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- CompletionCondition, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
- inline write_at_op<AsyncRandomAccessWriteDevice,
- ConstBufferSequence, CompletionCondition, WriteHandler>
- make_write_at_op(AsyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition, WriteHandler handler)
- {
- return write_at_op<AsyncRandomAccessWriteDevice,
- ConstBufferSequence, CompletionCondition, WriteHandler>(
- d, offset, buffers, completion_condition, handler);
- }
-} // namespace detail
-
-template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- detail::write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- CompletionCondition, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- d, offset, buffers, completion_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
- typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
- uint64_t offset, const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- detail::write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
- detail::transfer_all_t, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- d, offset, buffers, transfer_all(), init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename Allocator, typename WriteHandler>
- class write_at_streambuf_op
- {
- public:
- write_at_streambuf_op(
- asio::basic_streambuf<Allocator>& streambuf,
- WriteHandler& handler)
- : streambuf_(streambuf),
- handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- write_at_streambuf_op(const write_at_streambuf_op& other)
- : streambuf_(other.streambuf_),
- handler_(other.handler_)
- {
- }
-
- write_at_streambuf_op(write_at_streambuf_op&& other)
- : streambuf_(other.streambuf_),
- handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- const std::size_t bytes_transferred)
- {
- streambuf_.consume(bytes_transferred);
- handler_(ec, bytes_transferred);
- }
-
- //private:
- asio::basic_streambuf<Allocator>& streambuf_;
- WriteHandler handler_;
- };
-
- template <typename Allocator, typename WriteHandler>
- inline void* asio_handler_allocate(std::size_t size,
- write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename Allocator, typename WriteHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename Allocator, typename WriteHandler>
- inline bool asio_handler_is_continuation(
- write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename Allocator, typename WriteHandler>
- inline void asio_handler_invoke(Function& function,
- write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename Allocator, typename WriteHandler>
- inline void asio_handler_invoke(const Function& function,
- write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Allocator, typename WriteHandler>
- inline write_at_streambuf_op<Allocator, WriteHandler>
- make_write_at_streambuf_op(
- asio::basic_streambuf<Allocator>& b, WriteHandler handler)
- {
- return write_at_streambuf_op<Allocator, WriteHandler>(b, handler);
- }
-} // namespace detail
-
-template <typename AsyncRandomAccessWriteDevice, typename Allocator,
- typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- async_write_at(d, offset, b.data(), completion_condition,
- detail::write_at_streambuf_op<Allocator, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- b, init.handler));
-
- return init.result.get();
-}
-
-template <typename AsyncRandomAccessWriteDevice, typename Allocator,
- typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- ASIO_MOVE_ARG(WriteHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- async_write_at(d, offset, b.data(), transfer_all(),
- detail::write_at_streambuf_op<Allocator, ASIO_HANDLER_TYPE(
- WriteHandler, void (asio::error_code, std::size_t))>(
- b, init.handler));
-
- return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_WRITE_AT_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[15/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wrapped_handler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wrapped_handler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wrapped_handler.hpp
deleted file mode 100644
index 5cefcf4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wrapped_handler.hpp
+++ /dev/null
@@ -1,291 +0,0 @@
-//
-// detail/wrapped_handler.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_DETAIL_WRAPPED_HANDLER_HPP
-#define ASIO_DETAIL_WRAPPED_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct is_continuation_delegated
-{
- template <typename Dispatcher, typename Handler>
- bool operator()(Dispatcher&, Handler& handler) const
- {
- return asio_handler_cont_helpers::is_continuation(handler);
- }
-};
-
-struct is_continuation_if_running
-{
- template <typename Dispatcher, typename Handler>
- bool operator()(Dispatcher& dispatcher, Handler&) const
- {
- return dispatcher.running_in_this_thread();
- }
-};
-
-template <typename Dispatcher, typename Handler,
- typename IsContinuation = is_continuation_delegated>
-class wrapped_handler
-{
-public:
- typedef void result_type;
-
- wrapped_handler(Dispatcher dispatcher, Handler& handler)
- : dispatcher_(dispatcher),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- wrapped_handler(const wrapped_handler& other)
- : dispatcher_(other.dispatcher_),
- handler_(other.handler_)
- {
- }
-
- wrapped_handler(wrapped_handler&& other)
- : dispatcher_(other.dispatcher_),
- handler_(ASIO_MOVE_CAST(Handler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()()
- {
- dispatcher_.dispatch(ASIO_MOVE_CAST(Handler)(handler_));
- }
-
- void operator()() const
- {
- dispatcher_.dispatch(handler_);
- }
-
- template <typename Arg1>
- void operator()(const Arg1& arg1)
- {
- dispatcher_.dispatch(detail::bind_handler(handler_, arg1));
- }
-
- template <typename Arg1>
- void operator()(const Arg1& arg1) const
- {
- dispatcher_.dispatch(detail::bind_handler(handler_, arg1));
- }
-
- template <typename Arg1, typename Arg2>
- void operator()(const Arg1& arg1, const Arg2& arg2)
- {
- dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2));
- }
-
- template <typename Arg1, typename Arg2>
- void operator()(const Arg1& arg1, const Arg2& arg2) const
- {
- dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2));
- }
-
- template <typename Arg1, typename Arg2, typename Arg3>
- void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3)
- {
- dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3));
- }
-
- template <typename Arg1, typename Arg2, typename Arg3>
- void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3) const
- {
- dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3));
- }
-
- template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
- void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
- const Arg4& arg4)
- {
- dispatcher_.dispatch(
- detail::bind_handler(handler_, arg1, arg2, arg3, arg4));
- }
-
- template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
- void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
- const Arg4& arg4) const
- {
- dispatcher_.dispatch(
- detail::bind_handler(handler_, arg1, arg2, arg3, arg4));
- }
-
- template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
- typename Arg5>
- void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
- const Arg4& arg4, const Arg5& arg5)
- {
- dispatcher_.dispatch(
- detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5));
- }
-
- template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
- typename Arg5>
- void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
- const Arg4& arg4, const Arg5& arg5) const
- {
- dispatcher_.dispatch(
- detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5));
- }
-
-//private:
- Dispatcher dispatcher_;
- Handler handler_;
-};
-
-template <typename Handler, typename Context>
-class rewrapped_handler
-{
-public:
- explicit rewrapped_handler(Handler& handler, const Context& context)
- : context_(context),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- explicit rewrapped_handler(const Handler& handler, const Context& context)
- : context_(context),
- handler_(handler)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- rewrapped_handler(const rewrapped_handler& other)
- : context_(other.context_),
- handler_(other.handler_)
- {
- }
-
- rewrapped_handler(rewrapped_handler&& other)
- : context_(ASIO_MOVE_CAST(Context)(other.context_)),
- handler_(ASIO_MOVE_CAST(Handler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()()
- {
- handler_();
- }
-
- void operator()() const
- {
- handler_();
- }
-
-//private:
- Context context_;
- Handler handler_;
-};
-
-template <typename Dispatcher, typename Handler, typename IsContinuation>
-inline void* asio_handler_allocate(std::size_t size,
- wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Dispatcher, typename Handler, typename IsContinuation>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Dispatcher, typename Handler, typename IsContinuation>
-inline bool asio_handler_is_continuation(
- wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
- return IsContinuation()(this_handler->dispatcher_, this_handler->handler_);
-}
-
-template <typename Function, typename Dispatcher,
- typename Handler, typename IsContinuation>
-inline void asio_handler_invoke(Function& function,
- wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
- this_handler->dispatcher_.dispatch(
- rewrapped_handler<Function, Handler>(
- function, this_handler->handler_));
-}
-
-template <typename Function, typename Dispatcher,
- typename Handler, typename IsContinuation>
-inline void asio_handler_invoke(const Function& function,
- wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
- this_handler->dispatcher_.dispatch(
- rewrapped_handler<Function, Handler>(
- function, this_handler->handler_));
-}
-
-template <typename Handler, typename Context>
-inline void* asio_handler_allocate(std::size_t size,
- rewrapped_handler<Handler, Context>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->context_);
-}
-
-template <typename Handler, typename Context>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- rewrapped_handler<Handler, Context>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->context_);
-}
-
-template <typename Dispatcher, typename Context>
-inline bool asio_handler_is_continuation(
- rewrapped_handler<Dispatcher, Context>* this_handler)
-{
- return asio_handler_cont_helpers::is_continuation(
- this_handler->context_);
-}
-
-template <typename Function, typename Handler, typename Context>
-inline void asio_handler_invoke(Function& function,
- rewrapped_handler<Handler, Context>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->context_);
-}
-
-template <typename Function, typename Handler, typename Context>
-inline void asio_handler_invoke(const Function& function,
- rewrapped_handler<Handler, Context>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->context_);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WRAPPED_HANDLER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error.hpp
deleted file mode 100644
index 6a0af9e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error.hpp
+++ /dev/null
@@ -1,331 +0,0 @@
-//
-// error.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_ERROR_HPP
-#define ASIO_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error_code.hpp"
-#include "asio/system_error.hpp"
-#if defined(ASIO_WINDOWS) \
- || defined(__CYGWIN__) \
- || defined(ASIO_WINDOWS_RUNTIME)
-# include <winerror.h>
-#else
-# include <cerrno>
-# include <netdb.h>
-#endif
-
-#if defined(GENERATING_DOCUMENTATION)
-/// INTERNAL ONLY.
-# define ASIO_NATIVE_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_SOCKET_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_NETDB_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_GETADDRINFO_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) implementation_defined
-#elif defined(ASIO_WINDOWS_RUNTIME)
-# define ASIO_NATIVE_ERROR(e) __HRESULT_FROM_WIN32(e)
-# define ASIO_SOCKET_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
-# define ASIO_NETDB_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
-# define ASIO_GETADDRINFO_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_win
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# define ASIO_NATIVE_ERROR(e) e
-# define ASIO_SOCKET_ERROR(e) WSA ## e
-# define ASIO_NETDB_ERROR(e) WSA ## e
-# define ASIO_GETADDRINFO_ERROR(e) WSA ## e
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_win
-#else
-# define ASIO_NATIVE_ERROR(e) e
-# define ASIO_SOCKET_ERROR(e) e
-# define ASIO_NETDB_ERROR(e) e
-# define ASIO_GETADDRINFO_ERROR(e) e
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_posix
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-enum basic_errors
-{
- /// Permission denied.
- access_denied = ASIO_SOCKET_ERROR(EACCES),
-
- /// Address family not supported by protocol.
- address_family_not_supported = ASIO_SOCKET_ERROR(EAFNOSUPPORT),
-
- /// Address already in use.
- address_in_use = ASIO_SOCKET_ERROR(EADDRINUSE),
-
- /// Transport endpoint is already connected.
- already_connected = ASIO_SOCKET_ERROR(EISCONN),
-
- /// Operation already in progress.
- already_started = ASIO_SOCKET_ERROR(EALREADY),
-
- /// Broken pipe.
- broken_pipe = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE),
- ASIO_NATIVE_ERROR(EPIPE)),
-
- /// A connection has been aborted.
- connection_aborted = ASIO_SOCKET_ERROR(ECONNABORTED),
-
- /// Connection refused.
- connection_refused = ASIO_SOCKET_ERROR(ECONNREFUSED),
-
- /// Connection reset by peer.
- connection_reset = ASIO_SOCKET_ERROR(ECONNRESET),
-
- /// Bad file descriptor.
- bad_descriptor = ASIO_SOCKET_ERROR(EBADF),
-
- /// Bad address.
- fault = ASIO_SOCKET_ERROR(EFAULT),
-
- /// No route to host.
- host_unreachable = ASIO_SOCKET_ERROR(EHOSTUNREACH),
-
- /// Operation now in progress.
- in_progress = ASIO_SOCKET_ERROR(EINPROGRESS),
-
- /// Interrupted system call.
- interrupted = ASIO_SOCKET_ERROR(EINTR),
-
- /// Invalid argument.
- invalid_argument = ASIO_SOCKET_ERROR(EINVAL),
-
- /// Message too long.
- message_size = ASIO_SOCKET_ERROR(EMSGSIZE),
-
- /// The name was too long.
- name_too_long = ASIO_SOCKET_ERROR(ENAMETOOLONG),
-
- /// Network is down.
- network_down = ASIO_SOCKET_ERROR(ENETDOWN),
-
- /// Network dropped connection on reset.
- network_reset = ASIO_SOCKET_ERROR(ENETRESET),
-
- /// Network is unreachable.
- network_unreachable = ASIO_SOCKET_ERROR(ENETUNREACH),
-
- /// Too many open files.
- no_descriptors = ASIO_SOCKET_ERROR(EMFILE),
-
- /// No buffer space available.
- no_buffer_space = ASIO_SOCKET_ERROR(ENOBUFS),
-
- /// Cannot allocate memory.
- no_memory = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(ERROR_OUTOFMEMORY),
- ASIO_NATIVE_ERROR(ENOMEM)),
-
- /// Operation not permitted.
- no_permission = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(ERROR_ACCESS_DENIED),
- ASIO_NATIVE_ERROR(EPERM)),
-
- /// Protocol not available.
- no_protocol_option = ASIO_SOCKET_ERROR(ENOPROTOOPT),
-
- /// Transport endpoint is not connected.
- not_connected = ASIO_SOCKET_ERROR(ENOTCONN),
-
- /// Socket operation on non-socket.
- not_socket = ASIO_SOCKET_ERROR(ENOTSOCK),
-
- /// Operation cancelled.
- operation_aborted = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(ERROR_OPERATION_ABORTED),
- ASIO_NATIVE_ERROR(ECANCELED)),
-
- /// Operation not supported.
- operation_not_supported = ASIO_SOCKET_ERROR(EOPNOTSUPP),
-
- /// Cannot send after transport endpoint shutdown.
- shut_down = ASIO_SOCKET_ERROR(ESHUTDOWN),
-
- /// Connection timed out.
- timed_out = ASIO_SOCKET_ERROR(ETIMEDOUT),
-
- /// Resource temporarily unavailable.
- try_again = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(ERROR_RETRY),
- ASIO_NATIVE_ERROR(EAGAIN)),
-
- /// The socket is marked non-blocking and the requested operation would block.
- would_block = ASIO_SOCKET_ERROR(EWOULDBLOCK)
-};
-
-enum netdb_errors
-{
- /// Host not found (authoritative).
- host_not_found = ASIO_NETDB_ERROR(HOST_NOT_FOUND),
-
- /// Host not found (non-authoritative).
- host_not_found_try_again = ASIO_NETDB_ERROR(TRY_AGAIN),
-
- /// The query is valid but does not have associated address data.
- no_data = ASIO_NETDB_ERROR(NO_DATA),
-
- /// A non-recoverable error occurred.
- no_recovery = ASIO_NETDB_ERROR(NO_RECOVERY)
-};
-
-enum addrinfo_errors
-{
- /// The service is not supported for the given socket type.
- service_not_found = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(WSATYPE_NOT_FOUND),
- ASIO_GETADDRINFO_ERROR(EAI_SERVICE)),
-
- /// The socket type is not supported.
- socket_type_not_supported = ASIO_WIN_OR_POSIX(
- ASIO_NATIVE_ERROR(WSAESOCKTNOSUPPORT),
- ASIO_GETADDRINFO_ERROR(EAI_SOCKTYPE))
-};
-
-enum misc_errors
-{
- /// Already open.
- already_open = 1,
-
- /// End of file or stream.
- eof,
-
- /// Element not found.
- not_found,
-
- /// The descriptor cannot fit into the select system call's fd_set.
- fd_set_failure
-};
-
-inline const asio::error_category& get_system_category()
-{
- return asio::system_category();
-}
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-extern ASIO_DECL
-const asio::error_category& get_netdb_category();
-
-extern ASIO_DECL
-const asio::error_category& get_addrinfo_category();
-
-#else // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-inline const asio::error_category& get_netdb_category()
-{
- return get_system_category();
-}
-
-inline const asio::error_category& get_addrinfo_category()
-{
- return get_system_category();
-}
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-extern ASIO_DECL
-const asio::error_category& get_misc_category();
-
-static const asio::error_category& system_category
- = asio::error::get_system_category();
-static const asio::error_category& netdb_category
- = asio::error::get_netdb_category();
-static const asio::error_category& addrinfo_category
- = asio::error::get_addrinfo_category();
-static const asio::error_category& misc_category
- = asio::error::get_misc_category();
-
-} // namespace error
-} // namespace asio
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-namespace std {
-
-template<> struct is_error_code_enum<asio::error::basic_errors>
-{
- static const bool value = true;
-};
-
-template<> struct is_error_code_enum<asio::error::netdb_errors>
-{
- static const bool value = true;
-};
-
-template<> struct is_error_code_enum<asio::error::addrinfo_errors>
-{
- static const bool value = true;
-};
-
-template<> struct is_error_code_enum<asio::error::misc_errors>
-{
- static const bool value = true;
-};
-
-} // namespace std
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-namespace asio {
-namespace error {
-
-inline asio::error_code make_error_code(basic_errors e)
-{
- return asio::error_code(
- static_cast<int>(e), get_system_category());
-}
-
-inline asio::error_code make_error_code(netdb_errors e)
-{
- return asio::error_code(
- static_cast<int>(e), get_netdb_category());
-}
-
-inline asio::error_code make_error_code(addrinfo_errors e)
-{
- return asio::error_code(
- static_cast<int>(e), get_addrinfo_category());
-}
-
-inline asio::error_code make_error_code(misc_errors e)
-{
- return asio::error_code(
- static_cast<int>(e), get_misc_category());
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#undef ASIO_NATIVE_ERROR
-#undef ASIO_SOCKET_ERROR
-#undef ASIO_NETDB_ERROR
-#undef ASIO_GETADDRINFO_ERROR
-#undef ASIO_WIN_OR_POSIX
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/error.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_ERROR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error_code.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error_code.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error_code.hpp
deleted file mode 100644
index 182c182..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/error_code.hpp
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// error_code.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_ERROR_CODE_HPP
-#define ASIO_ERROR_CODE_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_HAS_STD_SYSTEM_ERROR)
-# include <system_error>
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# include <string>
-# include "asio/detail/noncopyable.hpp"
-# if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-# endif // !defined(ASIO_NO_IOSTREAM)
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-typedef std::error_category error_category;
-
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// Base class for all error categories.
-class error_category : private noncopyable
-{
-public:
- /// Destructor.
- virtual ~error_category()
- {
- }
-
- /// Returns a string naming the error gategory.
- virtual const char* name() const = 0;
-
- /// Returns a string describing the error denoted by @c value.
- virtual std::string message(int value) const = 0;
-
- /// Equality operator to compare two error categories.
- bool operator==(const error_category& rhs) const
- {
- return this == &rhs;
- }
-
- /// Inequality operator to compare two error categories.
- bool operator!=(const error_category& rhs) const
- {
- return !(*this == rhs);
- }
-};
-
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// Returns the error category used for the system errors produced by asio.
-extern ASIO_DECL const error_category& system_category();
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-typedef std::error_code error_code;
-
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// Class to represent an error code value.
-class error_code
-{
-public:
- /// Default constructor.
- error_code()
- : value_(0),
- category_(&system_category())
- {
- }
-
- /// Construct with specific error code and category.
- error_code(int v, const error_category& c)
- : value_(v),
- category_(&c)
- {
- }
-
- /// Construct from an error code enum.
- template <typename ErrorEnum>
- error_code(ErrorEnum e)
- {
- *this = make_error_code(e);
- }
-
- /// Get the error value.
- int value() const
- {
- return value_;
- }
-
- /// Get the error category.
- const error_category& category() const
- {
- return *category_;
- }
-
- /// Get the message associated with the error.
- std::string message() const
- {
- return category_->message(value_);
- }
-
- struct unspecified_bool_type_t
- {
- };
-
- typedef void (*unspecified_bool_type)(unspecified_bool_type_t);
-
- static void unspecified_bool_true(unspecified_bool_type_t) {}
-
- /// Operator returns non-null if there is a non-success error code.
- operator unspecified_bool_type() const
- {
- if (value_ == 0)
- return 0;
- else
- return &error_code::unspecified_bool_true;
- }
-
- /// Operator to test if the error represents success.
- bool operator!() const
- {
- return value_ == 0;
- }
-
- /// Equality operator to compare two error objects.
- friend bool operator==(const error_code& e1, const error_code& e2)
- {
- return e1.value_ == e2.value_ && e1.category_ == e2.category_;
- }
-
- /// Inequality operator to compare two error objects.
- friend bool operator!=(const error_code& e1, const error_code& e2)
- {
- return e1.value_ != e2.value_ || e1.category_ != e2.category_;
- }
-
-private:
- // The value associated with the error code.
- int value_;
-
- // The category associated with the error code.
- const error_category* category_;
-};
-
-# if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an error code.
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os, const error_code& ec)
-{
- os << ec.category().name() << ':' << ec.value();
- return os;
-}
-
-# endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/error_code.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_ERROR_CODE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/basic_endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/basic_endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/basic_endpoint.hpp
deleted file mode 100644
index 81ab820..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/basic_endpoint.hpp
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// generic/basic_endpoint.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_GENERIC_BASIC_ENDPOINT_HPP
-#define ASIO_GENERIC_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/generic/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Describes an endpoint for any socket type.
-/**
- * The asio::generic::basic_endpoint class template describes an endpoint
- * that may be associated with any socket type.
- *
- * @note The socket types sockaddr type must be able to fit into a
- * @c sockaddr_storage structure.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * Endpoint.
- */
-template <typename Protocol>
-class basic_endpoint
-{
-public:
- /// The protocol type associated with the endpoint.
- typedef Protocol protocol_type;
-
- /// The type of the endpoint structure. This type is dependent on the
- /// underlying implementation of the socket layer.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined data_type;
-#else
- typedef asio::detail::socket_addr_type data_type;
-#endif
-
- /// Default constructor.
- basic_endpoint()
- {
- }
-
- /// Construct an endpoint from the specified socket address.
- basic_endpoint(const void* socket_address,
- std::size_t socket_address_size, int socket_protocol = 0)
- : impl_(socket_address, socket_address_size, socket_protocol)
- {
- }
-
- /// Construct an endpoint from the specific endpoint type.
- template <typename Endpoint>
- basic_endpoint(const Endpoint& endpoint)
- : impl_(endpoint.data(), endpoint.size(), endpoint.protocol().protocol())
- {
- }
-
- /// Copy constructor.
- basic_endpoint(const basic_endpoint& other)
- : impl_(other.impl_)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move constructor.
- basic_endpoint(basic_endpoint&& other)
- : impl_(other.impl_)
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from another endpoint.
- basic_endpoint& operator=(const basic_endpoint& other)
- {
- impl_ = other.impl_;
- return *this;
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move-assign from another endpoint.
- basic_endpoint& operator=(basic_endpoint&& other)
- {
- impl_ = other.impl_;
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// The protocol associated with the endpoint.
- protocol_type protocol() const
- {
- return protocol_type(impl_.family(), impl_.protocol());
- }
-
- /// Get the underlying endpoint in the native type.
- data_type* data()
- {
- return impl_.data();
- }
-
- /// Get the underlying endpoint in the native type.
- const data_type* data() const
- {
- return impl_.data();
- }
-
- /// Get the underlying size of the endpoint in the native type.
- std::size_t size() const
- {
- return impl_.size();
- }
-
- /// Set the underlying size of the endpoint in the native type.
- void resize(std::size_t new_size)
- {
- impl_.resize(new_size);
- }
-
- /// Get the capacity of the endpoint in the native type.
- std::size_t capacity() const
- {
- return impl_.capacity();
- }
-
- /// Compare two endpoints for equality.
- friend bool operator==(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return e1.impl_ == e2.impl_;
- }
-
- /// Compare two endpoints for inequality.
- friend bool operator!=(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return !(e1.impl_ == e2.impl_);
- }
-
- /// Compare endpoints for ordering.
- friend bool operator<(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return e1.impl_ < e2.impl_;
- }
-
- /// Compare endpoints for ordering.
- friend bool operator>(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return e2.impl_ < e1.impl_;
- }
-
- /// Compare endpoints for ordering.
- friend bool operator<=(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return !(e2 < e1);
- }
-
- /// Compare endpoints for ordering.
- friend bool operator>=(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return !(e1 < e2);
- }
-
-private:
- // The underlying generic endpoint.
- asio::generic::detail::endpoint impl_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_BASIC_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/datagram_protocol.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/datagram_protocol.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/datagram_protocol.hpp
deleted file mode 100644
index 2c49156..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/datagram_protocol.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// generic/datagram_protocol.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_GENERIC_DATAGRAM_PROTOCOL_HPP
-#define ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic datagram-oriented socket.
-/**
- * The asio::generic::datagram_protocol class contains flags necessary
- * for datagram-oriented sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code datagram_protocol p(AF_INET, IPPROTO_UDP); @endcode
- * Constructing from a specific protocol type:
- * @code datagram_protocol p(asio::ip::udp::v4()); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class datagram_protocol
-{
-public:
- /// Construct a protocol object for a specific address family and protocol.
- datagram_protocol(int address_family, int socket_protocol)
- : family_(address_family),
- protocol_(socket_protocol)
- {
- }
-
- /// Construct a generic protocol object from a specific protocol.
- /**
- * @throws @c bad_cast Thrown if the source protocol is not datagram-oriented.
- */
- template <typename Protocol>
- datagram_protocol(const Protocol& source_protocol)
- : family_(source_protocol.family()),
- protocol_(source_protocol.protocol())
- {
- if (source_protocol.type() != type())
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_DGRAM);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return protocol_;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// Compare two protocols for equality.
- friend bool operator==(const datagram_protocol& p1,
- const datagram_protocol& p2)
- {
- return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const datagram_protocol& p1,
- const datagram_protocol& p2)
- {
- return !(p1 == p2);
- }
-
- /// The type of an endpoint.
- typedef basic_endpoint<datagram_protocol> endpoint;
-
- /// The generic socket type.
- typedef basic_datagram_socket<datagram_protocol> socket;
-
-private:
- int family_;
- int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/endpoint.hpp
deleted file mode 100644
index 830067c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/endpoint.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// generic/detail/endpoint.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_GENERIC_DETAIL_ENDPOINT_HPP
-#define ASIO_GENERIC_DETAIL_ENDPOINT_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 "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-namespace detail {
-
-// Helper class for implementing a generic socket endpoint.
-class endpoint
-{
-public:
- // Default constructor.
- ASIO_DECL endpoint();
-
- // Construct an endpoint from the specified raw bytes.
- ASIO_DECL endpoint(const void* sock_addr,
- std::size_t sock_addr_size, int sock_protocol);
-
- // Copy constructor.
- endpoint(const endpoint& other)
- : data_(other.data_),
- size_(other.size_),
- protocol_(other.protocol_)
- {
- }
-
- // Assign from another endpoint.
- endpoint& operator=(const endpoint& other)
- {
- data_ = other.data_;
- size_ = other.size_;
- protocol_ = other.protocol_;
- return *this;
- }
-
- // Get the address family associated with the endpoint.
- int family() const
- {
- return data_.base.sa_family;
- }
-
- // Get the socket protocol associated with the endpoint.
- int protocol() const
- {
- return protocol_;
- }
-
- // Get the underlying endpoint in the native type.
- asio::detail::socket_addr_type* data()
- {
- return &data_.base;
- }
-
- // Get the underlying endpoint in the native type.
- const asio::detail::socket_addr_type* data() const
- {
- return &data_.base;
- }
-
- // Get the underlying size of the endpoint in the native type.
- std::size_t size() const
- {
- return size_;
- }
-
- // Set the underlying size of the endpoint in the native type.
- ASIO_DECL void resize(std::size_t size);
-
- // Get the capacity of the endpoint in the native type.
- std::size_t capacity() const
- {
- return sizeof(asio::detail::sockaddr_storage_type);
- }
-
- // Compare two endpoints for equality.
- ASIO_DECL friend bool operator==(
- const endpoint& e1, const endpoint& e2);
-
- // Compare endpoints for ordering.
- ASIO_DECL friend bool operator<(
- const endpoint& e1, const endpoint& e2);
-
-private:
- // The underlying socket address.
- union data_union
- {
- asio::detail::socket_addr_type base;
- asio::detail::sockaddr_storage_type generic;
- } data_;
-
- // The length of the socket address stored in the endpoint.
- std::size_t size_;
-
- // The socket protocol associated with the endpoint.
- int protocol_;
-
- // Initialise with a specified memory.
- ASIO_DECL void init(const void* sock_addr,
- std::size_t sock_addr_size, int sock_protocol);
-};
-
-} // namespace detail
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/generic/detail/impl/endpoint.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_GENERIC_DETAIL_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/impl/endpoint.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/impl/endpoint.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/impl/endpoint.ipp
deleted file mode 100644
index 828764f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/detail/impl/endpoint.ipp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// generic/detail/impl/endpoint.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_GENERIC_DETAIL_IMPL_ENDPOINT_IPP
-#define ASIO_GENERIC_DETAIL_IMPL_ENDPOINT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cstring>
-#include <typeinfo>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/error.hpp"
-#include "asio/generic/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-namespace detail {
-
-endpoint::endpoint()
-{
- init(0, 0, 0);
-}
-
-endpoint::endpoint(const void* sock_addr,
- std::size_t sock_addr_size, int sock_protocol)
-{
- init(sock_addr, sock_addr_size, sock_protocol);
-}
-
-void endpoint::resize(std::size_t new_size)
-{
- if (new_size > sizeof(asio::detail::sockaddr_storage_type))
- {
- asio::error_code ec(asio::error::invalid_argument);
- asio::detail::throw_error(ec);
- }
- else
- {
- size_ = new_size;
- protocol_ = 0;
- }
-}
-
-bool operator==(const endpoint& e1, const endpoint& e2)
-{
- using namespace std; // For memcmp.
- return e1.size() == e2.size() && memcmp(e1.data(), e2.data(), e1.size()) == 0;
-}
-
-bool operator<(const endpoint& e1, const endpoint& e2)
-{
- if (e1.protocol() < e2.protocol())
- return true;
-
- if (e1.protocol() > e2.protocol())
- return false;
-
- using namespace std; // For memcmp.
- std::size_t compare_size = e1.size() < e2.size() ? e1.size() : e2.size();
- int compare_result = memcmp(e1.data(), e2.data(), compare_size);
-
- if (compare_result < 0)
- return true;
-
- if (compare_result > 0)
- return false;
-
- return e1.size() < e2.size();
-}
-
-void endpoint::init(const void* sock_addr,
- std::size_t sock_addr_size, int sock_protocol)
-{
- if (sock_addr_size > sizeof(asio::detail::sockaddr_storage_type))
- {
- asio::error_code ec(asio::error::invalid_argument);
- asio::detail::throw_error(ec);
- }
-
- using namespace std; // For memset and memcpy.
- memset(&data_.generic, 0, sizeof(asio::detail::sockaddr_storage_type));
- memcpy(&data_.generic, sock_addr, sock_addr_size);
-
- size_ = sock_addr_size;
- protocol_ = sock_protocol;
-}
-
-} // namespace detail
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_DETAIL_IMPL_ENDPOINT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/raw_protocol.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/raw_protocol.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/raw_protocol.hpp
deleted file mode 100644
index 974f361..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/raw_protocol.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// generic/raw_protocol.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_GENERIC_RAW_PROTOCOL_HPP
-#define ASIO_GENERIC_RAW_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_raw_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic raw socket.
-/**
- * The asio::generic::raw_protocol class contains flags necessary for
- * raw sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code raw_protocol p(AF_INET, IPPROTO_ICMP); @endcode
- * Constructing from a specific protocol type:
- * @code raw_protocol p(asio::ip::icmp::v4()); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class raw_protocol
-{
-public:
- /// Construct a protocol object for a specific address family and protocol.
- raw_protocol(int address_family, int socket_protocol)
- : family_(address_family),
- protocol_(socket_protocol)
- {
- }
-
- /// Construct a generic protocol object from a specific protocol.
- /**
- * @throws @c bad_cast Thrown if the source protocol is not raw-oriented.
- */
- template <typename Protocol>
- raw_protocol(const Protocol& source_protocol)
- : family_(source_protocol.family()),
- protocol_(source_protocol.protocol())
- {
- if (source_protocol.type() != type())
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_RAW);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return protocol_;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// Compare two protocols for equality.
- friend bool operator==(const raw_protocol& p1, const raw_protocol& p2)
- {
- return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const raw_protocol& p1, const raw_protocol& p2)
- {
- return !(p1 == p2);
- }
-
- /// The type of an endpoint.
- typedef basic_endpoint<raw_protocol> endpoint;
-
- /// The generic socket type.
- typedef basic_raw_socket<raw_protocol> socket;
-
-private:
- int family_;
- int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_RAW_PROTOCOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/seq_packet_protocol.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/seq_packet_protocol.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/seq_packet_protocol.hpp
deleted file mode 100644
index 10186d5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/seq_packet_protocol.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// generic/seq_packet_protocol.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_GENERIC_SEQ_PACKET_PROTOCOL_HPP
-#define ASIO_GENERIC_SEQ_PACKET_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_seq_packet_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic sequenced packet socket.
-/**
- * The asio::generic::seq_packet_protocol class contains flags necessary
- * for seq_packet-oriented sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code seq_packet_protocol p(AF_INET, IPPROTO_SCTP); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class seq_packet_protocol
-{
-public:
- /// Construct a protocol object for a specific address family and protocol.
- seq_packet_protocol(int address_family, int socket_protocol)
- : family_(address_family),
- protocol_(socket_protocol)
- {
- }
-
- /// Construct a generic protocol object from a specific protocol.
- /**
- * @throws @c bad_cast Thrown if the source protocol is not based around
- * sequenced packets.
- */
- template <typename Protocol>
- seq_packet_protocol(const Protocol& source_protocol)
- : family_(source_protocol.family()),
- protocol_(source_protocol.protocol())
- {
- if (source_protocol.type() != type())
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_SEQPACKET);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return protocol_;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// Compare two protocols for equality.
- friend bool operator==(const seq_packet_protocol& p1,
- const seq_packet_protocol& p2)
- {
- return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const seq_packet_protocol& p1,
- const seq_packet_protocol& p2)
- {
- return !(p1 == p2);
- }
-
- /// The type of an endpoint.
- typedef basic_endpoint<seq_packet_protocol> endpoint;
-
- /// The generic socket type.
- typedef basic_seq_packet_socket<seq_packet_protocol> socket;
-
-private:
- int family_;
- int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_SEQ_PACKET_PROTOCOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/stream_protocol.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/stream_protocol.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/stream_protocol.hpp
deleted file mode 100644
index 25ff681..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/generic/stream_protocol.hpp
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// generic/stream_protocol.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_GENERIC_STREAM_PROTOCOL_HPP
-#define ASIO_GENERIC_STREAM_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic stream-oriented socket.
-/**
- * The asio::generic::stream_protocol class contains flags necessary for
- * stream-oriented sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code stream_protocol p(AF_INET, IPPROTO_TCP); @endcode
- * Constructing from a specific protocol type:
- * @code stream_protocol p(asio::ip::tcp::v4()); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class stream_protocol
-{
-public:
- /// Construct a protocol object for a specific address family and protocol.
- stream_protocol(int address_family, int socket_protocol)
- : family_(address_family),
- protocol_(socket_protocol)
- {
- }
-
- /// Construct a generic protocol object from a specific protocol.
- /**
- * @throws @c bad_cast Thrown if the source protocol is not stream-oriented.
- */
- template <typename Protocol>
- stream_protocol(const Protocol& source_protocol)
- : family_(source_protocol.family()),
- protocol_(source_protocol.protocol())
- {
- if (source_protocol.type() != type())
- {
- std::bad_cast ex;
- asio::detail::throw_exception(ex);
- }
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_STREAM);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return protocol_;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// Compare two protocols for equality.
- friend bool operator==(const stream_protocol& p1, const stream_protocol& p2)
- {
- return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const stream_protocol& p1, const stream_protocol& p2)
- {
- return !(p1 == p2);
- }
-
- /// The type of an endpoint.
- typedef basic_endpoint<stream_protocol> endpoint;
-
- /// The generic socket type.
- typedef basic_stream_socket<stream_protocol> socket;
-
-#if !defined(ASIO_NO_IOSTREAM)
- /// The generic socket iostream type.
- typedef basic_socket_iostream<stream_protocol> iostream;
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-private:
- int family_;
- int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_STREAM_PROTOCOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_alloc_hook.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_alloc_hook.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_alloc_hook.hpp
deleted file mode 100644
index 3e10141..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_alloc_hook.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// handler_alloc_hook.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_HANDLER_ALLOC_HOOK_HPP
-#define ASIO_HANDLER_ALLOC_HOOK_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 "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default allocation function for handlers.
-/**
- * Asynchronous operations may need to allocate temporary objects. Since
- * asynchronous operations have a handler function object, these temporary
- * objects can be said to be associated with the handler.
- *
- * Implement asio_handler_allocate and asio_handler_deallocate for your own
- * handlers to provide custom allocation for these temporary objects.
- *
- * The default implementation of these allocation hooks uses <tt>::operator
- * new</tt> and <tt>::operator delete</tt>.
- *
- * @note All temporary objects associated with a handler will be deallocated
- * before the upcall to the handler is performed. This allows the same memory to
- * be reused for a subsequent asynchronous operation initiated by the handler.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * void* asio_handler_allocate(std::size_t size, my_handler* context)
- * {
- * return ::operator new(size);
- * }
- *
- * void asio_handler_deallocate(void* pointer, std::size_t size,
- * my_handler* context)
- * {
- * ::operator delete(pointer);
- * }
- * @endcode
- */
-ASIO_DECL void* asio_handler_allocate(
- std::size_t size, ...);
-
-/// Default deallocation function for handlers.
-/**
- * Implement asio_handler_allocate and asio_handler_deallocate for your own
- * handlers to provide custom allocation for the associated temporary objects.
- *
- * The default implementation of these allocation hooks uses <tt>::operator
- * new</tt> and <tt>::operator delete</tt>.
- *
- * @sa asio_handler_allocate.
- */
-ASIO_DECL void asio_handler_deallocate(
- void* pointer, std::size_t size, ...);
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/handler_alloc_hook.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_HANDLER_ALLOC_HOOK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_continuation_hook.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_continuation_hook.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_continuation_hook.hpp
deleted file mode 100644
index e194432..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_continuation_hook.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// handler_continuation_hook.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_HANDLER_CONTINUATION_HOOK_HPP
-#define ASIO_HANDLER_CONTINUATION_HOOK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default continuation function for handlers.
-/**
- * Asynchronous operations may represent a continuation of the asynchronous
- * control flow associated with the current handler. The implementation can use
- * this knowledge to optimise scheduling of the handler.
- *
- * Implement asio_handler_is_continuation for your own handlers to indicate
- * when a handler represents a continuation.
- *
- * The default implementation of the continuation hook returns <tt>false</tt>.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * bool asio_handler_is_continuation(my_handler* context)
- * {
- * return true;
- * }
- * @endcode
- */
-inline bool asio_handler_is_continuation(...)
-{
- return false;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_HANDLER_CONTINUATION_HOOK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_invoke_hook.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_invoke_hook.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_invoke_hook.hpp
deleted file mode 100644
index 435fa22..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_invoke_hook.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// handler_invoke_hook.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_HANDLER_INVOKE_HOOK_HPP
-#define ASIO_HANDLER_INVOKE_HOOK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/** @defgroup asio_handler_invoke asio::asio_handler_invoke
- *
- * @brief Default invoke function for handlers.
- *
- * Completion handlers for asynchronous operations are invoked by the
- * io_service associated with the corresponding object (e.g. a socket or
- * deadline_timer). Certain guarantees are made on when the handler may be
- * invoked, in particular that a handler can only be invoked from a thread that
- * is currently calling @c run() on the corresponding io_service object.
- * Handlers may subsequently be invoked through other objects (such as
- * io_service::strand objects) that provide additional guarantees.
- *
- * When asynchronous operations are composed from other asynchronous
- * operations, all intermediate handlers should be invoked using the same
- * method as the final handler. This is required to ensure that user-defined
- * objects are not accessed in a way that may violate the guarantees. This
- * hooking function ensures that the invoked method used for the final handler
- * is accessible at each intermediate step.
- *
- * Implement asio_handler_invoke for your own handlers to specify a custom
- * invocation strategy.
- *
- * This default implementation invokes the function object like so:
- * @code function(); @endcode
- * If necessary, the default implementation makes a copy of the function object
- * so that the non-const operator() can be used.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * template <typename Function>
- * void asio_handler_invoke(Function function, my_handler* context)
- * {
- * context->strand_.dispatch(function);
- * }
- * @endcode
- */
-/*@{*/
-
-/// Default handler invocation hook used for non-const function objects.
-template <typename Function>
-inline void asio_handler_invoke(Function& function, ...)
-{
- function();
-}
-
-/// Default handler invocation hook used for const function objects.
-template <typename Function>
-inline void asio_handler_invoke(const Function& function, ...)
-{
- Function tmp(function);
- tmp();
-}
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_HANDLER_INVOKE_HOOK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_type.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_type.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_type.hpp
deleted file mode 100644
index b70d7ec..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/handler_type.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-// handler_type.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_HANDLER_TYPE_HPP
-#define ASIO_HANDLER_TYPE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default handler type traits provided for all handlers.
-/**
- * The handler_type traits class is used for determining the concrete handler
- * type to be used for an asynchronous operation. It allows the handler type to
- * be determined at the point where the specific completion handler signature
- * is known.
- *
- * This template may be specialised for user-defined handler types.
- */
-template <typename Handler, typename Signature>
-struct handler_type
-{
- /// The handler type for the specific signature.
- typedef Handler type;
-};
-
-#if !defined(GENERATING_DOCUMENTATION)
-
-template <typename Handler, typename Signature>
-struct handler_type<const Handler, Signature>
- : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<volatile Handler, Signature>
- : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<const volatile Handler, Signature>
- : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<const Handler&, Signature>
- : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<volatile Handler&, Signature>
- : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<const volatile Handler&, Signature>
- : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<Handler&, Signature>
- : handler_type<Handler, Signature> {};
-
-#if defined(ASIO_HAS_MOVE)
-template <typename Handler, typename Signature>
-struct handler_type<Handler&&, Signature>
- : handler_type<Handler, Signature> {};
-#endif // defined(ASIO_HAS_MOVE)
-
-template <typename ReturnType, typename Signature>
-struct handler_type<ReturnType(), Signature>
- : handler_type<ReturnType(*)(), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Signature>
-struct handler_type<ReturnType(Arg1), Signature>
- : handler_type<ReturnType(*)(Arg1), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2), Signature>
- : handler_type<ReturnType(*)(Arg1, Arg2), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
- typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2, Arg3), Signature>
- : handler_type<ReturnType(*)(Arg1, Arg2, Arg3), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4), Signature>
- : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Arg5, typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature>
- : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4, Arg5), Signature> {};
-
-#endif // !defined(GENERATING_DOCUMENTATION)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#define ASIO_HANDLER_TYPE(h, sig) \
- typename handler_type<h, sig>::type
-
-#endif // ASIO_HANDLER_TYPE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/high_resolution_timer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/high_resolution_timer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/high_resolution_timer.hpp
deleted file mode 100644
index 62b0148..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/high_resolution_timer.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// high_resolution_timer.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_HIGH_RESOLUTION_TIMER_HPP
-#define ASIO_HIGH_RESOLUTION_TIMER_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_HAS_STD_CHRONO) \
- || defined(ASIO_HAS_BOOST_CHRONO) \
- || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-#endif
-
-#include "asio/basic_waitable_timer.hpp"
-
-namespace asio {
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Typedef for a timer based on the high resolution clock.
-/**
- * This typedef uses the C++11 @c <chrono> standard library facility, if
- * available. Otherwise, it may use the Boost.Chrono library. To explicitly
- * utilise Boost.Chrono, use the basic_waitable_timer template directly:
- * @code
- * typedef basic_waitable_timer<boost::chrono::high_resolution_clock> timer;
- * @endcode
- */
-typedef basic_waitable_timer<
- chrono::high_resolution_clock>
- high_resolution_timer;
-#elif defined(ASIO_HAS_STD_CHRONO)
-typedef basic_waitable_timer<
- std::chrono::high_resolution_clock>
- high_resolution_timer;
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-typedef basic_waitable_timer<
- boost::chrono::high_resolution_clock>
- high_resolution_timer;
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_STD_CHRONO)
- // || defined(ASIO_HAS_BOOST_CHRONO)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_HIGH_RESOLUTION_TIMER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_read_stream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_read_stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_read_stream.hpp
deleted file mode 100644
index 3c02b4f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/buffered_read_stream.hpp
+++ /dev/null
@@ -1,358 +0,0 @@
-//
-// impl/buffered_read_stream.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_IMPL_BUFFERED_READ_STREAM_HPP
-#define ASIO_IMPL_BUFFERED_READ_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename Stream>
-std::size_t buffered_read_stream<Stream>::fill()
-{
- detail::buffer_resize_guard<detail::buffered_stream_storage>
- resize_guard(storage_);
- std::size_t previous_size = storage_.size();
- storage_.resize(storage_.capacity());
- storage_.resize(previous_size + next_layer_.read_some(buffer(
- storage_.data() + previous_size,
- storage_.size() - previous_size)));
- resize_guard.commit();
- return storage_.size() - previous_size;
-}
-
-template <typename Stream>
-std::size_t buffered_read_stream<Stream>::fill(asio::error_code& ec)
-{
- detail::buffer_resize_guard<detail::buffered_stream_storage>
- resize_guard(storage_);
- std::size_t previous_size = storage_.size();
- storage_.resize(storage_.capacity());
- storage_.resize(previous_size + next_layer_.read_some(buffer(
- storage_.data() + previous_size,
- storage_.size() - previous_size),
- ec));
- resize_guard.commit();
- return storage_.size() - previous_size;
-}
-
-namespace detail
-{
- template <typename ReadHandler>
- class buffered_fill_handler
- {
- public:
- buffered_fill_handler(detail::buffered_stream_storage& storage,
- std::size_t previous_size, ReadHandler& handler)
- : storage_(storage),
- previous_size_(previous_size),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- buffered_fill_handler(const buffered_fill_handler& other)
- : storage_(other.storage_),
- previous_size_(other.previous_size_),
- handler_(other.handler_)
- {
- }
-
- buffered_fill_handler(buffered_fill_handler&& other)
- : storage_(other.storage_),
- previous_size_(other.previous_size_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- const std::size_t bytes_transferred)
- {
- storage_.resize(previous_size_ + bytes_transferred);
- handler_(ec, bytes_transferred);
- }
-
- //private:
- detail::buffered_stream_storage& storage_;
- std::size_t previous_size_;
- ReadHandler handler_;
- };
-
- template <typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- buffered_fill_handler<ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- buffered_fill_handler<ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename ReadHandler>
- inline bool asio_handler_is_continuation(
- buffered_fill_handler<ReadHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- buffered_fill_handler<ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- buffered_fill_handler<ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename Stream>
-template <typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-buffered_read_stream<Stream>::async_fill(
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- std::size_t previous_size = storage_.size();
- storage_.resize(storage_.capacity());
- next_layer_.async_read_some(
- buffer(
- storage_.data() + previous_size,
- storage_.size() - previous_size),
- detail::buffered_fill_handler<ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- storage_, previous_size, init.handler));
-
- return init.result.get();
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::read_some(
- const MutableBufferSequence& buffers)
-{
- if (asio::buffer_size(buffers) == 0)
- return 0;
-
- if (storage_.empty())
- this->fill();
-
- return this->copy(buffers);
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::read_some(
- const MutableBufferSequence& buffers, asio::error_code& ec)
-{
- ec = asio::error_code();
-
- if (asio::buffer_size(buffers) == 0)
- return 0;
-
- if (storage_.empty() && !this->fill(ec))
- return 0;
-
- return this->copy(buffers);
-}
-
-namespace detail
-{
- template <typename MutableBufferSequence, typename ReadHandler>
- class buffered_read_some_handler
- {
- public:
- buffered_read_some_handler(detail::buffered_stream_storage& storage,
- const MutableBufferSequence& buffers, ReadHandler& handler)
- : storage_(storage),
- buffers_(buffers),
- handler_(handler)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- buffered_read_some_handler(const buffered_read_some_handler& other)
- : storage_(other.storage_),
- buffers_(other.buffers_),
- handler_(other.handler_)
- {
- }
-
- buffered_read_some_handler(buffered_read_some_handler&& other)
- : storage_(other.storage_),
- buffers_(other.buffers_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec, std::size_t)
- {
- if (ec || storage_.empty())
- {
- const std::size_t length = 0;
- handler_(ec, length);
- }
- else
- {
- const std::size_t bytes_copied = asio::buffer_copy(
- buffers_, storage_.data(), storage_.size());
- storage_.consume(bytes_copied);
- handler_(ec, bytes_copied);
- }
- }
-
- //private:
- detail::buffered_stream_storage& storage_;
- MutableBufferSequence buffers_;
- ReadHandler handler_;
- };
-
- template <typename MutableBufferSequence, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- buffered_read_some_handler<
- MutableBufferSequence, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename MutableBufferSequence, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- buffered_read_some_handler<
- MutableBufferSequence, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename MutableBufferSequence, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- buffered_read_some_handler<
- MutableBufferSequence, ReadHandler>* this_handler)
- {
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename MutableBufferSequence,
- typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- buffered_read_some_handler<
- MutableBufferSequence, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename MutableBufferSequence,
- typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- buffered_read_some_handler<
- MutableBufferSequence, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename Stream>
-template <typename MutableBufferSequence, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-buffered_read_stream<Stream>::async_read_some(
- const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- if (asio::buffer_size(buffers) == 0 || !storage_.empty())
- {
- next_layer_.async_read_some(asio::mutable_buffers_1(0, 0),
- detail::buffered_read_some_handler<
- MutableBufferSequence, ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- storage_, buffers, init.handler));
- }
- else
- {
- this->async_fill(detail::buffered_read_some_handler<
- MutableBufferSequence, ASIO_HANDLER_TYPE(
- ReadHandler, void (asio::error_code, std::size_t))>(
- storage_, buffers, init.handler));
- }
-
- return init.result.get();
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::peek(
- const MutableBufferSequence& buffers)
-{
- if (storage_.empty())
- this->fill();
- return this->peek_copy(buffers);
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::peek(
- const MutableBufferSequence& buffers, asio::error_code& ec)
-{
- ec = asio::error_code();
- if (storage_.empty() && !this->fill(ec))
- return 0;
- return this->peek_copy(buffers);
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_BUFFERED_READ_STREAM_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[21/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_tss_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_tss_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_tss_ptr.hpp
deleted file mode 100644
index 23f93ae..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/posix_tss_ptr.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/posix_tss_ptr.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_DETAIL_POSIX_TSS_PTR_HPP
-#define ASIO_DETAIL_POSIX_TSS_PTR_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_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper function to create thread-specific storage.
-ASIO_DECL void posix_tss_ptr_create(pthread_key_t& key);
-
-template <typename T>
-class posix_tss_ptr
- : private noncopyable
-{
-public:
- // Constructor.
- posix_tss_ptr()
- {
- posix_tss_ptr_create(tss_key_);
- }
-
- // Destructor.
- ~posix_tss_ptr()
- {
- ::pthread_key_delete(tss_key_);
- }
-
- // Get the value.
- operator T*() const
- {
- return static_cast<T*>(::pthread_getspecific(tss_key_));
- }
-
- // Set the value.
- void operator=(T* value)
- {
- ::pthread_setspecific(tss_key_, value);
- }
-
-private:
- // Thread-specific storage to allow unlocked access to determine whether a
- // thread is a member of the pool.
- pthread_key_t tss_key_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_tss_ptr.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_TSS_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/push_options.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/push_options.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/push_options.hpp
deleted file mode 100644
index c5ccd47..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/push_options.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// detail/push_options.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)
-//
-
-// No header guard
-
-#if defined(__COMO__)
-
-// Comeau C++
-
-#elif defined(__DMC__)
-
-// Digital Mars C++
-
-#elif defined(__INTEL_COMPILER) || defined(__ICL) \
- || defined(__ICC) || defined(__ECC)
-
-// Intel C++
-
-#elif defined(__GNUC__)
-
-// GNU C++
-
-# if defined(__MINGW32__) || defined(__CYGWIN__)
-# pragma pack (push, 8)
-# endif
-
-# if defined(__OBJC__)
-# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
-# if !defined(ASIO_DISABLE_OBJC_WORKAROUND)
-# if !defined(Protocol) && !defined(id)
-# define Protocol cpp_Protocol
-# define id cpp_id
-# define ASIO_OBJC_WORKAROUND
-# endif
-# endif
-# endif
-# endif
-
-#elif defined(__KCC)
-
-// Kai C++
-
-#elif defined(__sgi)
-
-// SGI MIPSpro C++
-
-#elif defined(__DECCXX)
-
-// Compaq Tru64 Unix cxx
-
-#elif defined(__ghs)
-
-// Greenhills C++
-
-#elif defined(__BORLANDC__)
-
-// Borland C++
-
-# pragma option push -a8 -b -Ve- -Vx- -w-inl -vi-
-# pragma nopushoptwarn
-# pragma nopackwarning
-# if !defined(__MT__)
-# error Multithreaded RTL must be selected.
-# endif // !defined(__MT__)
-
-#elif defined(__MWERKS__)
-
-// Metrowerks CodeWarrior
-
-#elif defined(__SUNPRO_CC)
-
-// Sun Workshop Compiler C++
-
-#elif defined(__HP_aCC)
-
-// HP aCC
-
-#elif defined(__MRC__) || defined(__SC__)
-
-// MPW MrCpp or SCpp
-
-#elif defined(__IBMCPP__)
-
-// IBM Visual Age
-
-#elif defined(_MSC_VER)
-
-// Microsoft Visual C++
-//
-// Must remain the last #elif since some other vendors (Metrowerks, for example)
-// also #define _MSC_VER
-
-# pragma warning (disable:4103)
-# pragma warning (push)
-# pragma warning (disable:4127)
-# pragma warning (disable:4180)
-# pragma warning (disable:4244)
-# pragma warning (disable:4355)
-# pragma warning (disable:4510)
-# pragma warning (disable:4512)
-# pragma warning (disable:4610)
-# pragma warning (disable:4675)
-# if defined(_M_IX86) && defined(_Wp64)
-// The /Wp64 option is broken. If you want to check 64 bit portability, use a
-// 64 bit compiler!
-# pragma warning (disable:4311)
-# pragma warning (disable:4312)
-# endif // defined(_M_IX86) && defined(_Wp64)
-# pragma pack (push, 8)
-// Note that if the /Og optimisation flag is enabled with MSVC6, the compiler
-// has a tendency to incorrectly optimise away some calls to member template
-// functions, even though those functions contain code that should not be
-// optimised away! Therefore we will always disable this optimisation option
-// for the MSVC6 compiler.
-# if (_MSC_VER < 1300)
-# pragma optimize ("g", off)
-# endif
-# if !defined(_MT)
-# error Multithreaded RTL must be selected.
-# endif // !defined(_MT)
-
-# if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
-# if !defined(ASIO_DISABLE_CLR_WORKAROUND)
-# if !defined(generic)
-# define generic cpp_generic
-# define ASIO_CLR_WORKAROUND
-# endif
-# endif
-# endif
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_descriptor_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_descriptor_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_descriptor_service.hpp
deleted file mode 100644
index d5c0ea9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_descriptor_service.hpp
+++ /dev/null
@@ -1,322 +0,0 @@
-//
-// detail/reactive_descriptor_service.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_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
-#define ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_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_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-
-#include "asio/buffer.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/descriptor_read_op.hpp"
-#include "asio/detail/descriptor_write_op.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactive_null_buffers_op.hpp"
-#include "asio/detail/reactor.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactive_descriptor_service
-{
-public:
- // The native type of a descriptor.
- typedef int native_handle_type;
-
- // The implementation type of the descriptor.
- class implementation_type
- : private asio::detail::noncopyable
- {
- public:
- // Default constructor.
- implementation_type()
- : descriptor_(-1),
- state_(0)
- {
- }
-
- private:
- // Only this service will have access to the internal values.
- friend class reactive_descriptor_service;
-
- // The native descriptor representation.
- int descriptor_;
-
- // The current state of the descriptor.
- descriptor_ops::state_type state_;
-
- // Per-descriptor data used by the reactor.
- reactor::per_descriptor_data reactor_data_;
- };
-
- // Constructor.
- ASIO_DECL reactive_descriptor_service(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new descriptor implementation.
- ASIO_DECL void construct(implementation_type& impl);
-
- // Move-construct a new descriptor implementation.
- ASIO_DECL void move_construct(implementation_type& impl,
- implementation_type& other_impl);
-
- // Move-assign from another descriptor implementation.
- ASIO_DECL void move_assign(implementation_type& impl,
- reactive_descriptor_service& other_service,
- implementation_type& other_impl);
-
- // Destroy a descriptor implementation.
- ASIO_DECL void destroy(implementation_type& impl);
-
- // Assign a native descriptor to a descriptor implementation.
- ASIO_DECL asio::error_code assign(implementation_type& impl,
- const native_handle_type& native_descriptor,
- asio::error_code& ec);
-
- // Determine whether the descriptor is open.
- bool is_open(const implementation_type& impl) const
- {
- return impl.descriptor_ != -1;
- }
-
- // Destroy a descriptor implementation.
- ASIO_DECL asio::error_code close(implementation_type& impl,
- asio::error_code& ec);
-
- // Get the native descriptor representation.
- native_handle_type native_handle(const implementation_type& impl) const
- {
- return impl.descriptor_;
- }
-
- // Release ownership of the native descriptor representation.
- ASIO_DECL native_handle_type release(implementation_type& impl);
-
- // Cancel all operations associated with the descriptor.
- ASIO_DECL asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec);
-
- // Perform an IO control command on the descriptor.
- template <typename IO_Control_Command>
- asio::error_code io_control(implementation_type& impl,
- IO_Control_Command& command, asio::error_code& ec)
- {
- descriptor_ops::ioctl(impl.descriptor_, impl.state_,
- command.name(), static_cast<ioctl_arg_type*>(command.data()), ec);
- return ec;
- }
-
- // Gets the non-blocking mode of the descriptor.
- bool non_blocking(const implementation_type& impl) const
- {
- return (impl.state_ & descriptor_ops::user_set_non_blocking) != 0;
- }
-
- // Sets the non-blocking mode of the descriptor.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- descriptor_ops::set_user_non_blocking(
- impl.descriptor_, impl.state_, mode, ec);
- return ec;
- }
-
- // Gets the non-blocking mode of the native descriptor implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return (impl.state_ & descriptor_ops::internal_non_blocking) != 0;
- }
-
- // Sets the non-blocking mode of the native descriptor implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- descriptor_ops::set_internal_non_blocking(
- impl.descriptor_, impl.state_, mode, ec);
- return ec;
- }
-
- // Write some data to the descriptor.
- template <typename ConstBufferSequence>
- size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- return descriptor_ops::sync_write(impl.descriptor_, impl.state_,
- bufs.buffers(), bufs.count(), bufs.all_empty(), ec);
- }
-
- // Wait until data can be written without blocking.
- size_t write_some(implementation_type& impl,
- const null_buffers&, asio::error_code& ec)
- {
- // Wait for descriptor to become ready.
- descriptor_ops::poll_write(impl.descriptor_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous write. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef descriptor_write_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.descriptor_, buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "descriptor", &impl, "async_write_some"));
-
- start_op(impl, reactor::write_op, p.p, is_continuation, true,
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::all_empty(buffers));
- p.v = p.p = 0;
- }
-
- // Start an asynchronous wait until data can be written without blocking.
- template <typename Handler>
- void async_write_some(implementation_type& impl,
- const null_buffers&, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "descriptor",
- &impl, "async_write_some(null_buffers)"));
-
- start_op(impl, reactor::write_op, p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
- // Read some data from the stream. Returns the number of bytes read.
- template <typename MutableBufferSequence>
- size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- return descriptor_ops::sync_read(impl.descriptor_, impl.state_,
- bufs.buffers(), bufs.count(), bufs.all_empty(), ec);
- }
-
- // Wait until data can be read without blocking.
- size_t read_some(implementation_type& impl,
- const null_buffers&, asio::error_code& ec)
- {
- // Wait for descriptor to become ready.
- descriptor_ops::poll_read(impl.descriptor_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous read. The buffer for the data being read must be
- // valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef descriptor_read_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.descriptor_, buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "descriptor", &impl, "async_read_some"));
-
- start_op(impl, reactor::read_op, p.p, is_continuation, true,
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::all_empty(buffers));
- p.v = p.p = 0;
- }
-
- // Wait until data can be read without blocking.
- template <typename Handler>
- void async_read_some(implementation_type& impl,
- const null_buffers&, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "descriptor",
- &impl, "async_read_some(null_buffers)"));
-
- start_op(impl, reactor::read_op, p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
-private:
- // Start the asynchronous operation.
- ASIO_DECL void start_op(implementation_type& impl, int op_type,
- reactor_op* op, bool is_continuation, bool is_non_blocking, bool noop);
-
- // The selector that performs event demultiplexing for the service.
- reactor& reactor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/reactive_descriptor_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_null_buffers_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_null_buffers_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_null_buffers_op.hpp
deleted file mode 100644
index c4c4213..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_null_buffers_op.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/reactive_null_buffers_op.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_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP
-#define ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/reactor_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class reactive_null_buffers_op : public reactor_op
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_null_buffers_op);
-
- reactive_null_buffers_op(Handler& handler)
- : reactor_op(&reactive_null_buffers_op::do_perform,
- &reactive_null_buffers_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static bool do_perform(reactor_op*)
- {
- return true;
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_null_buffers_op* o(static_cast<reactive_null_buffers_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_serial_port_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_serial_port_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_serial_port_service.hpp
deleted file mode 100644
index 5361c48..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_serial_port_service.hpp
+++ /dev/null
@@ -1,234 +0,0 @@
-//
-// detail/reactive_serial_port_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
-#define ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_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_HAS_SERIAL_PORT)
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include <string>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/reactive_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Extend reactive_descriptor_service to provide serial port support.
-class reactive_serial_port_service
-{
-public:
- // The native type of a serial port.
- typedef reactive_descriptor_service::native_handle_type native_handle_type;
-
- // The implementation type of the serial port.
- typedef reactive_descriptor_service::implementation_type implementation_type;
-
- ASIO_DECL reactive_serial_port_service(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new serial port implementation.
- void construct(implementation_type& impl)
- {
- descriptor_service_.construct(impl);
- }
-
- // Move-construct a new serial port implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- descriptor_service_.move_construct(impl, other_impl);
- }
-
- // Move-assign from another serial port implementation.
- void move_assign(implementation_type& impl,
- reactive_serial_port_service& other_service,
- implementation_type& other_impl)
- {
- descriptor_service_.move_assign(impl,
- other_service.descriptor_service_, other_impl);
- }
-
- // Destroy a serial port implementation.
- void destroy(implementation_type& impl)
- {
- descriptor_service_.destroy(impl);
- }
-
- // Open the serial port using the specified device name.
- ASIO_DECL asio::error_code open(implementation_type& impl,
- const std::string& device, asio::error_code& ec);
-
- // Assign a native descriptor to a serial port implementation.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& native_descriptor,
- asio::error_code& ec)
- {
- return descriptor_service_.assign(impl, native_descriptor, ec);
- }
-
- // Determine whether the serial port is open.
- bool is_open(const implementation_type& impl) const
- {
- return descriptor_service_.is_open(impl);
- }
-
- // Destroy a serial port implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return descriptor_service_.close(impl, ec);
- }
-
- // Get the native serial port representation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return descriptor_service_.native_handle(impl);
- }
-
- // Cancel all operations associated with the serial port.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return descriptor_service_.cancel(impl, ec);
- }
-
- // Set an option on the serial port.
- template <typename SettableSerialPortOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSerialPortOption& option, asio::error_code& ec)
- {
- return do_set_option(impl,
- &reactive_serial_port_service::store_option<SettableSerialPortOption>,
- &option, ec);
- }
-
- // Get an option from the serial port.
- template <typename GettableSerialPortOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSerialPortOption& option, asio::error_code& ec) const
- {
- return do_get_option(impl,
- &reactive_serial_port_service::load_option<GettableSerialPortOption>,
- &option, ec);
- }
-
- // Send a break sequence to the serial port.
- asio::error_code send_break(implementation_type& impl,
- asio::error_code& ec)
- {
- errno = 0;
- descriptor_ops::error_wrapper(::tcsendbreak(
- descriptor_service_.native_handle(impl), 0), ec);
- return ec;
- }
-
- // Write the given data. Returns the number of bytes sent.
- template <typename ConstBufferSequence>
- size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return descriptor_service_.write_some(impl, buffers, ec);
- }
-
- // Start an asynchronous write. The data being written must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, Handler& handler)
- {
- descriptor_service_.async_write_some(impl, buffers, handler);
- }
-
- // Read some data. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return descriptor_service_.read_some(impl, buffers, ec);
- }
-
- // Start an asynchronous read. The buffer for the data being received must be
- // valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, Handler& handler)
- {
- descriptor_service_.async_read_some(impl, buffers, handler);
- }
-
-private:
- // Function pointer type for storing a serial port option.
- typedef asio::error_code (*store_function_type)(
- const void*, termios&, asio::error_code&);
-
- // Helper function template to store a serial port option.
- template <typename SettableSerialPortOption>
- static asio::error_code store_option(const void* option,
- termios& storage, asio::error_code& ec)
- {
- return static_cast<const SettableSerialPortOption*>(option)->store(
- storage, ec);
- }
-
- // Helper function to set a serial port option.
- ASIO_DECL asio::error_code do_set_option(
- implementation_type& impl, store_function_type store,
- const void* option, asio::error_code& ec);
-
- // Function pointer type for loading a serial port option.
- typedef asio::error_code (*load_function_type)(
- void*, const termios&, asio::error_code&);
-
- // Helper function template to load a serial port option.
- template <typename GettableSerialPortOption>
- static asio::error_code load_option(void* option,
- const termios& storage, asio::error_code& ec)
- {
- return static_cast<GettableSerialPortOption*>(option)->load(storage, ec);
- }
-
- // Helper function to get a serial port option.
- ASIO_DECL asio::error_code do_get_option(
- const implementation_type& impl, load_function_type load,
- void* option, asio::error_code& ec) const;
-
- // The implementation used for initiating asynchronous operations.
- reactive_descriptor_service descriptor_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/reactive_serial_port_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_accept_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_accept_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_accept_op.hpp
deleted file mode 100644
index 35e83c6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_accept_op.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// detail/reactive_socket_accept_op.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_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Socket, typename Protocol>
-class reactive_socket_accept_op_base : public reactor_op
-{
-public:
- reactive_socket_accept_op_base(socket_type socket,
- socket_ops::state_type state, Socket& peer, const Protocol& protocol,
- typename Protocol::endpoint* peer_endpoint, func_type complete_func)
- : reactor_op(&reactive_socket_accept_op_base::do_perform, complete_func),
- socket_(socket),
- state_(state),
- peer_(peer),
- protocol_(protocol),
- peer_endpoint_(peer_endpoint)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_accept_op_base* o(
- static_cast<reactive_socket_accept_op_base*>(base));
-
- std::size_t addrlen = o->peer_endpoint_ ? o->peer_endpoint_->capacity() : 0;
- socket_type new_socket = invalid_socket;
- bool result = socket_ops::non_blocking_accept(o->socket_,
- o->state_, o->peer_endpoint_ ? o->peer_endpoint_->data() : 0,
- o->peer_endpoint_ ? &addrlen : 0, o->ec_, new_socket);
-
- // On success, assign new connection to peer socket object.
- if (new_socket != invalid_socket)
- {
- socket_holder new_socket_holder(new_socket);
- if (o->peer_endpoint_)
- o->peer_endpoint_->resize(addrlen);
- if (!o->peer_.assign(o->protocol_, new_socket, o->ec_))
- new_socket_holder.release();
- }
-
- return result;
- }
-
-private:
- socket_type socket_;
- socket_ops::state_type state_;
- Socket& peer_;
- Protocol protocol_;
- typename Protocol::endpoint* peer_endpoint_;
-};
-
-template <typename Socket, typename Protocol, typename Handler>
-class reactive_socket_accept_op :
- public reactive_socket_accept_op_base<Socket, Protocol>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_accept_op);
-
- reactive_socket_accept_op(socket_type socket,
- socket_ops::state_type state, Socket& peer, const Protocol& protocol,
- typename Protocol::endpoint* peer_endpoint, Handler& handler)
- : reactive_socket_accept_op_base<Socket, Protocol>(socket, state, peer,
- protocol, peer_endpoint, &reactive_socket_accept_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_accept_op* o(static_cast<reactive_socket_accept_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder1<Handler, asio::error_code>
- handler(o->handler_, o->ec_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_connect_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_connect_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_connect_op.hpp
deleted file mode 100644
index 5f15221..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_connect_op.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// detail/reactive_socket_connect_op.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_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactive_socket_connect_op_base : public reactor_op
-{
-public:
- reactive_socket_connect_op_base(socket_type socket, func_type complete_func)
- : reactor_op(&reactive_socket_connect_op_base::do_perform, complete_func),
- socket_(socket)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_connect_op_base* o(
- static_cast<reactive_socket_connect_op_base*>(base));
-
- return socket_ops::non_blocking_connect(o->socket_, o->ec_);
- }
-
-private:
- socket_type socket_;
-};
-
-template <typename Handler>
-class reactive_socket_connect_op : public reactive_socket_connect_op_base
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_connect_op);
-
- reactive_socket_connect_op(socket_type socket, Handler& handler)
- : reactive_socket_connect_op_base(socket,
- &reactive_socket_connect_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_connect_op* o
- (static_cast<reactive_socket_connect_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder1<Handler, asio::error_code>
- handler(o->handler_, o->ec_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
- asio_handler_invoke_helpers::invoke(handler, handler);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recv_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recv_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recv_op.hpp
deleted file mode 100644
index 1e8b8d0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recv_op.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// detail/reactive_socket_recv_op.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_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence>
-class reactive_socket_recv_op_base : public reactor_op
-{
-public:
- reactive_socket_recv_op_base(socket_type socket,
- socket_ops::state_type state, const MutableBufferSequence& buffers,
- socket_base::message_flags flags, func_type complete_func)
- : reactor_op(&reactive_socket_recv_op_base::do_perform, complete_func),
- socket_(socket),
- state_(state),
- buffers_(buffers),
- flags_(flags)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_recv_op_base* o(
- static_cast<reactive_socket_recv_op_base*>(base));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(o->buffers_);
-
- return socket_ops::non_blocking_recv(o->socket_,
- bufs.buffers(), bufs.count(), o->flags_,
- (o->state_ & socket_ops::stream_oriented) != 0,
- o->ec_, o->bytes_transferred_);
- }
-
-private:
- socket_type socket_;
- socket_ops::state_type state_;
- MutableBufferSequence buffers_;
- socket_base::message_flags flags_;
-};
-
-template <typename MutableBufferSequence, typename Handler>
-class reactive_socket_recv_op :
- public reactive_socket_recv_op_base<MutableBufferSequence>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_recv_op);
-
- reactive_socket_recv_op(socket_type socket,
- socket_ops::state_type state, const MutableBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- : reactive_socket_recv_op_base<MutableBufferSequence>(socket, state,
- buffers, flags, &reactive_socket_recv_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_recv_op* o(static_cast<reactive_socket_recv_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvfrom_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvfrom_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvfrom_op.hpp
deleted file mode 100644
index 32da2b3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvfrom_op.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// detail/reactive_socket_recvfrom_op.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_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Endpoint>
-class reactive_socket_recvfrom_op_base : public reactor_op
-{
-public:
- reactive_socket_recvfrom_op_base(socket_type socket, int protocol_type,
- const MutableBufferSequence& buffers, Endpoint& endpoint,
- socket_base::message_flags flags, func_type complete_func)
- : reactor_op(&reactive_socket_recvfrom_op_base::do_perform, complete_func),
- socket_(socket),
- protocol_type_(protocol_type),
- buffers_(buffers),
- sender_endpoint_(endpoint),
- flags_(flags)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_recvfrom_op_base* o(
- static_cast<reactive_socket_recvfrom_op_base*>(base));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(o->buffers_);
-
- std::size_t addr_len = o->sender_endpoint_.capacity();
- bool result = socket_ops::non_blocking_recvfrom(o->socket_,
- bufs.buffers(), bufs.count(), o->flags_,
- o->sender_endpoint_.data(), &addr_len,
- o->ec_, o->bytes_transferred_);
-
- if (result && !o->ec_)
- o->sender_endpoint_.resize(addr_len);
-
- return result;
- }
-
-private:
- socket_type socket_;
- int protocol_type_;
- MutableBufferSequence buffers_;
- Endpoint& sender_endpoint_;
- socket_base::message_flags flags_;
-};
-
-template <typename MutableBufferSequence, typename Endpoint, typename Handler>
-class reactive_socket_recvfrom_op :
- public reactive_socket_recvfrom_op_base<MutableBufferSequence, Endpoint>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_recvfrom_op);
-
- reactive_socket_recvfrom_op(socket_type socket, int protocol_type,
- const MutableBufferSequence& buffers, Endpoint& endpoint,
- socket_base::message_flags flags, Handler& handler)
- : reactive_socket_recvfrom_op_base<MutableBufferSequence, Endpoint>(
- socket, protocol_type, buffers, endpoint, flags,
- &reactive_socket_recvfrom_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_recvfrom_op* o(
- static_cast<reactive_socket_recvfrom_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvmsg_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvmsg_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvmsg_op.hpp
deleted file mode 100644
index 13f3f8c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_recvmsg_op.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// detail/reactive_socket_recvmsg_op.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_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence>
-class reactive_socket_recvmsg_op_base : public reactor_op
-{
-public:
- reactive_socket_recvmsg_op_base(socket_type socket,
- const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, func_type complete_func)
- : reactor_op(&reactive_socket_recvmsg_op_base::do_perform, complete_func),
- socket_(socket),
- buffers_(buffers),
- in_flags_(in_flags),
- out_flags_(out_flags)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_recvmsg_op_base* o(
- static_cast<reactive_socket_recvmsg_op_base*>(base));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(o->buffers_);
-
- return socket_ops::non_blocking_recvmsg(o->socket_,
- bufs.buffers(), bufs.count(),
- o->in_flags_, o->out_flags_,
- o->ec_, o->bytes_transferred_);
- }
-
-private:
- socket_type socket_;
- MutableBufferSequence buffers_;
- socket_base::message_flags in_flags_;
- socket_base::message_flags& out_flags_;
-};
-
-template <typename MutableBufferSequence, typename Handler>
-class reactive_socket_recvmsg_op :
- public reactive_socket_recvmsg_op_base<MutableBufferSequence>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_recvmsg_op);
-
- reactive_socket_recvmsg_op(socket_type socket,
- const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, Handler& handler)
- : reactive_socket_recvmsg_op_base<MutableBufferSequence>(socket, buffers,
- in_flags, out_flags, &reactive_socket_recvmsg_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_recvmsg_op* o(
- static_cast<reactive_socket_recvmsg_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_send_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_send_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_send_op.hpp
deleted file mode 100644
index 3862a7f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_send_op.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// detail/reactive_socket_send_op.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_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence>
-class reactive_socket_send_op_base : public reactor_op
-{
-public:
- reactive_socket_send_op_base(socket_type socket,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, func_type complete_func)
- : reactor_op(&reactive_socket_send_op_base::do_perform, complete_func),
- socket_(socket),
- buffers_(buffers),
- flags_(flags)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_send_op_base* o(
- static_cast<reactive_socket_send_op_base*>(base));
-
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(o->buffers_);
-
- return socket_ops::non_blocking_send(o->socket_,
- bufs.buffers(), bufs.count(), o->flags_,
- o->ec_, o->bytes_transferred_);
- }
-
-private:
- socket_type socket_;
- ConstBufferSequence buffers_;
- socket_base::message_flags flags_;
-};
-
-template <typename ConstBufferSequence, typename Handler>
-class reactive_socket_send_op :
- public reactive_socket_send_op_base<ConstBufferSequence>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_send_op);
-
- reactive_socket_send_op(socket_type socket,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- : reactive_socket_send_op_base<ConstBufferSequence>(socket,
- buffers, flags, &reactive_socket_send_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_send_op* o(static_cast<reactive_socket_send_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_sendto_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_sendto_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_sendto_op.hpp
deleted file mode 100644
index fa2ac45..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_sendto_op.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// detail/reactive_socket_sendto_op.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_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Endpoint>
-class reactive_socket_sendto_op_base : public reactor_op
-{
-public:
- reactive_socket_sendto_op_base(socket_type socket,
- const ConstBufferSequence& buffers, const Endpoint& endpoint,
- socket_base::message_flags flags, func_type complete_func)
- : reactor_op(&reactive_socket_sendto_op_base::do_perform, complete_func),
- socket_(socket),
- buffers_(buffers),
- destination_(endpoint),
- flags_(flags)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- reactive_socket_sendto_op_base* o(
- static_cast<reactive_socket_sendto_op_base*>(base));
-
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(o->buffers_);
-
- return socket_ops::non_blocking_sendto(o->socket_,
- bufs.buffers(), bufs.count(), o->flags_,
- o->destination_.data(), o->destination_.size(),
- o->ec_, o->bytes_transferred_);
- }
-
-private:
- socket_type socket_;
- ConstBufferSequence buffers_;
- Endpoint destination_;
- socket_base::message_flags flags_;
-};
-
-template <typename ConstBufferSequence, typename Endpoint, typename Handler>
-class reactive_socket_sendto_op :
- public reactive_socket_sendto_op_base<ConstBufferSequence, Endpoint>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(reactive_socket_sendto_op);
-
- reactive_socket_sendto_op(socket_type socket,
- const ConstBufferSequence& buffers, const Endpoint& endpoint,
- socket_base::message_flags flags, Handler& handler)
- : reactive_socket_sendto_op_base<ConstBufferSequence, Endpoint>(socket,
- buffers, endpoint, flags, &reactive_socket_sendto_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- reactive_socket_sendto_op* o(static_cast<reactive_socket_sendto_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service.hpp
deleted file mode 100644
index c7f77b1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service.hpp
+++ /dev/null
@@ -1,457 +0,0 @@
-//
-// detail/reactive_socket_service.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_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_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_HAS_IOCP)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactive_null_buffers_op.hpp"
-#include "asio/detail/reactive_socket_accept_op.hpp"
-#include "asio/detail/reactive_socket_connect_op.hpp"
-#include "asio/detail/reactive_socket_recvfrom_op.hpp"
-#include "asio/detail/reactive_socket_sendto_op.hpp"
-#include "asio/detail/reactive_socket_service_base.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class reactive_socket_service :
- public reactive_socket_service_base
-{
-public:
- // The protocol type.
- typedef Protocol protocol_type;
-
- // The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- // The native type of a socket.
- typedef socket_type native_handle_type;
-
- // The implementation type of the socket.
- struct implementation_type :
- reactive_socket_service_base::base_implementation_type
- {
- // Default constructor.
- implementation_type()
- : protocol_(endpoint_type().protocol())
- {
- }
-
- // The protocol associated with the socket.
- protocol_type protocol_;
- };
-
- // Constructor.
- reactive_socket_service(asio::io_service& io_service)
- : reactive_socket_service_base(io_service)
- {
- }
-
- // Move-construct a new socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- this->base_move_construct(impl, other_impl);
-
- impl.protocol_ = other_impl.protocol_;
- other_impl.protocol_ = endpoint_type().protocol();
- }
-
- // Move-assign from another socket implementation.
- void move_assign(implementation_type& impl,
- reactive_socket_service_base& other_service,
- implementation_type& other_impl)
- {
- this->base_move_assign(impl, other_service, other_impl);
-
- impl.protocol_ = other_impl.protocol_;
- other_impl.protocol_ = endpoint_type().protocol();
- }
-
- // Move-construct a new socket implementation from another protocol type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename reactive_socket_service<
- Protocol1>::implementation_type& other_impl)
- {
- this->base_move_construct(impl, other_impl);
-
- impl.protocol_ = protocol_type(other_impl.protocol_);
- other_impl.protocol_ = typename Protocol1::endpoint().protocol();
- }
-
- // Open a new socket implementation.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (!do_open(impl, protocol.family(),
- protocol.type(), protocol.protocol(), ec))
- impl.protocol_ = protocol;
- return ec;
- }
-
- // Assign a native socket to a socket implementation.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- if (!do_assign(impl, protocol.type(), native_socket, ec))
- impl.protocol_ = protocol;
- return ec;
- }
-
- // Get the native socket representation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return impl.socket_;
- }
-
- // Bind the socket to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec);
- return ec;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code set_option(implementation_type& impl,
- const Option& option, asio::error_code& ec)
- {
- socket_ops::setsockopt(impl.socket_, impl.state_,
- option.level(impl.protocol_), option.name(impl.protocol_),
- option.data(impl.protocol_), option.size(impl.protocol_), ec);
- return ec;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code get_option(const implementation_type& impl,
- Option& option, asio::error_code& ec) const
- {
- std::size_t size = option.size(impl.protocol_);
- socket_ops::getsockopt(impl.socket_, impl.state_,
- option.level(impl.protocol_), option.name(impl.protocol_),
- option.data(impl.protocol_), &size, ec);
- if (!ec)
- option.resize(impl.protocol_, size);
- return ec;
- }
-
- // Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- endpoint_type endpoint;
- std::size_t addr_len = endpoint.capacity();
- if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec))
- return endpoint_type();
- endpoint.resize(addr_len);
- return endpoint;
- }
-
- // Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- endpoint_type endpoint;
- std::size_t addr_len = endpoint.capacity();
- if (socket_ops::getpeername(impl.socket_,
- endpoint.data(), &addr_len, false, ec))
- return endpoint_type();
- endpoint.resize(addr_len);
- return endpoint;
- }
-
- // Send a datagram to the specified endpoint. Returns the number of bytes
- // sent.
- template <typename ConstBufferSequence>
- size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- return socket_ops::sync_sendto(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), flags,
- destination.data(), destination.size(), ec);
- }
-
- // Wait until data can be sent without blocking.
- size_t send_to(implementation_type& impl, const null_buffers&,
- const endpoint_type&, socket_base::message_flags,
- asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send_to(implementation_type& impl,
- const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_sendto_op<ConstBufferSequence,
- endpoint_type, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, buffers, destination, flags, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send_to"));
-
- start_op(impl, reactor::write_op, p.p, is_continuation, true, false);
- p.v = p.p = 0;
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send_to(implementation_type& impl, const null_buffers&,
- const endpoint_type&, socket_base::message_flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_send_to(null_buffers)"));
-
- start_op(impl, reactor::write_op, p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
- // Receive a datagram with the endpoint of the sender. Returns the number of
- // bytes received.
- template <typename MutableBufferSequence>
- size_t receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- std::size_t addr_len = sender_endpoint.capacity();
- std::size_t bytes_recvd = socket_ops::sync_recvfrom(
- impl.socket_, impl.state_, bufs.buffers(), bufs.count(),
- flags, sender_endpoint.data(), &addr_len, ec);
-
- if (!ec)
- sender_endpoint.resize(addr_len);
-
- return bytes_recvd;
- }
-
- // Wait until data can be received without blocking.
- size_t receive_from(implementation_type& impl, const null_buffers&,
- endpoint_type& sender_endpoint, socket_base::message_flags,
- asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
- // Reset endpoint since it can be given no sensible value at this time.
- sender_endpoint = endpoint_type();
-
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received and
- // the sender_endpoint object must both be valid for the lifetime of the
- // asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_recvfrom_op<MutableBufferSequence,
- endpoint_type, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- int protocol = impl.protocol_.type();
- p.p = new (p.v) op(impl.socket_, protocol,
- buffers, sender_endpoint, flags, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_receive_from"));
-
- start_op(impl,
- (flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- p.p, is_continuation, true, false);
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive_from(implementation_type& impl,
- const null_buffers&, endpoint_type& sender_endpoint,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_receive_from(null_buffers)"));
-
- // Reset endpoint since it can be given no sensible value at this time.
- sender_endpoint = endpoint_type();
-
- start_op(impl,
- (flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
- // Accept a new connection.
- template <typename Socket>
- asio::error_code accept(implementation_type& impl,
- Socket& peer, endpoint_type* peer_endpoint, asio::error_code& ec)
- {
- // We cannot accept a socket that is already open.
- if (peer.is_open())
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- std::size_t addr_len = peer_endpoint ? peer_endpoint->capacity() : 0;
- socket_holder new_socket(socket_ops::sync_accept(impl.socket_,
- impl.state_, peer_endpoint ? peer_endpoint->data() : 0,
- peer_endpoint ? &addr_len : 0, ec));
-
- // On success, assign new connection to peer socket object.
- if (new_socket.get() != invalid_socket)
- {
- if (peer_endpoint)
- peer_endpoint->resize(addr_len);
- if (!peer.assign(impl.protocol_, new_socket.get(), ec))
- new_socket.release();
- }
-
- return ec;
- }
-
- // Start an asynchronous accept. The peer and peer_endpoint objects
- // must be valid until the accept's handler is invoked.
- template <typename Socket, typename Handler>
- void async_accept(implementation_type& impl, Socket& peer,
- endpoint_type* peer_endpoint, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_accept_op<Socket, Protocol, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, impl.state_, peer,
- impl.protocol_, peer_endpoint, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_accept"));
-
- start_accept_op(impl, p.p, is_continuation, peer.is_open());
- p.v = p.p = 0;
- }
-
- // Connect the socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- socket_ops::sync_connect(impl.socket_,
- peer_endpoint.data(), peer_endpoint.size(), ec);
- return ec;
- }
-
- // Start an asynchronous connect.
- template <typename Handler>
- void async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_connect_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect"));
-
- start_connect_op(impl, p.p, is_continuation,
- peer_endpoint.data(), peer_endpoint.size());
- p.v = p.p = 0;
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[39/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ext_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ext_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ext_test.cc
deleted file mode 100644
index 19d95b4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ext_test.cc
+++ /dev/null
@@ -1,771 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp_mini_dfs.h"
-#include "hdfspp/hdfs_ext.h"
-
-#include <cstring>
-#include <chrono>
-#include <exception>
-
-namespace hdfs {
-
-class HdfsExtTest: public ::testing::Test {
-public:
- MiniCluster cluster;
-};
-
-// Make sure we can set up a mini-cluster and connect to it
-TEST_F(HdfsExtTest, TestGetBlockLocations) {
- HdfsHandle connection = cluster.connect_c();
- EXPECT_NE(nullptr, connection.handle());
-
- hdfsBlockLocations * blocks = nullptr;
-
- // Free a null pointer
- int result = hdfsFreeBlockLocations(blocks);
- EXPECT_EQ(0, result);
-
- // Test non-extant files
- EXPECT_EQ(-1, hdfsGetBlockLocations(connection, "non_extant_file", &blocks)); // Should be an error
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
-
- // Test an extant file
- std::string filename = connection.newFile(1024);
- result = hdfsGetBlockLocations(connection, filename.c_str(), &blocks);
- EXPECT_EQ(0, result);
-
- EXPECT_EQ(1024, blocks->fileLength);
- EXPECT_EQ(1, blocks->num_blocks);
- EXPECT_EQ(0, blocks->isUnderConstruction);
- EXPECT_NE(0, blocks->isLastBlockComplete);
- EXPECT_EQ(1024, blocks->blocks->num_bytes);
- EXPECT_EQ(0, blocks->blocks->start_offset);
- EXPECT_EQ(1, blocks->blocks->num_locations);
- EXPECT_NE(nullptr, blocks->blocks->locations->hostname);
- EXPECT_NE(nullptr, blocks->blocks->locations->ip_address);
- EXPECT_NE(nullptr, blocks->blocks->locations->network_location);
- EXPECT_NE(0, blocks->blocks->locations->xfer_port);
-
- result = hdfsFreeBlockLocations(blocks);
- EXPECT_EQ(0, result);
-
-}
-
-
-// Writing a file to the filesystem and checking the used space
-TEST_F(HdfsExtTest, TestGetUsed) {
- using namespace std::chrono;
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- // File system's used space before writing
- tOffset used_before_write;
- EXPECT_GE(used_before_write = hdfsGetUsed(fs), 0);
-
- // Write to a file
- tOffset fileSize = 1024;
- std::string filename = connection.newFile(fileSize);
-
- //Need to run hdfsGetUsed() in a loop until the refreshInterval
- //is passed on the filesystem and the used space is updated
- //Time-out is 3 minutes
- tOffset used_after_write;
- tOffset difference;
- minutes beginTime = duration_cast<minutes>(
- system_clock::now().time_since_epoch());
- minutes currentTime;
- do{
- EXPECT_GE(used_after_write = hdfsGetUsed(fs), 0);
- difference = used_after_write - used_before_write;
- currentTime = duration_cast<minutes>(
- system_clock::now().time_since_epoch());
- } while (difference == 0 && currentTime.count() - beginTime.count() < 3);
-
- //There should be at least fileSize bytes added to the used space
- EXPECT_GT(difference, fileSize);
- //There could be additional metadata added to the used space,
- //but no more than double the fileSize
- EXPECT_LT(difference, fileSize * 2);
-
-}
-
-
-//Testing allow, disallow, create, and delete snapshot
-TEST_F(HdfsExtTest, TestSnapshotOperations) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //argument 'path' is NULL
- EXPECT_EQ(-1, hdfsAllowSnapshot(fs, nullptr));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsCreateSnapshot(fs, nullptr, "Bad"));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsDeleteSnapshot(fs, nullptr, "Bad"));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsRenameSnapshot(fs, nullptr, "Bad", "Bad"));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsDisallowSnapshot(fs, nullptr));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
-
- //argument 'name' is NULL for deletion
- EXPECT_EQ(-1, hdfsDeleteSnapshot(fs, "/dir/", nullptr));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
-
- //Path not found
- std::string path = "/wrong/dir/";
- EXPECT_EQ(-1, hdfsAllowSnapshot(fs, path.c_str()));
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
- EXPECT_EQ(-1, hdfsCreateSnapshot(fs, path.c_str(), "Bad"));
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
- EXPECT_EQ(-1, hdfsDeleteSnapshot(fs, path.c_str(), "Bad"));
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
- EXPECT_EQ(-1, hdfsRenameSnapshot(fs, path.c_str(), "Bad", "Bad"));
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
- EXPECT_EQ(-1, hdfsDisallowSnapshot(fs, path.c_str()));
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
-
- //Not a directory
- path = connection.newFile(1024); //1024 byte file
- EXPECT_EQ(-1, hdfsAllowSnapshot(fs, path.c_str()));
- EXPECT_EQ((int) std::errc::not_a_directory, errno);
- EXPECT_EQ(-1, hdfsCreateSnapshot(fs, path.c_str(), "Bad"));
- EXPECT_EQ((int) std::errc::not_a_directory, errno);
- EXPECT_EQ(-1, hdfsDeleteSnapshot(fs, path.c_str(), "Bad"));
- EXPECT_EQ((int) std::errc::not_a_directory, errno);
- EXPECT_EQ(-1, hdfsRenameSnapshot(fs, path.c_str(), "Bad", "Bad"));
- EXPECT_EQ((int) std::errc::not_a_directory, errno);
- EXPECT_EQ(-1, hdfsDisallowSnapshot(fs, path.c_str()));
- EXPECT_EQ((int) std::errc::not_a_directory, errno);
-
- //Not snapshottable directory
- std::string dirName = connection.newDir();
- EXPECT_EQ(0, hdfsDisallowSnapshot(fs, dirName.c_str()));
- EXPECT_EQ(-1, hdfsCreateSnapshot(fs, dirName.c_str(), "Bad"));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
-
- //Verify snapshot created
- EXPECT_EQ(0, hdfsAllowSnapshot(fs, dirName.c_str()));
- EXPECT_EQ(0, hdfsCreateSnapshot(fs, dirName.c_str(), "Good"));
- std::string snapDir = dirName + ".snapshot/";
- int size;
- hdfsFileInfo *file_infos;
- EXPECT_NE(nullptr, file_infos = hdfsListDirectory(fs, snapDir.c_str(), &size));
- EXPECT_EQ(1, size);
- EXPECT_STREQ("Good", file_infos[0].mName);
- hdfsFreeFileInfo(file_infos, 1);
-
- //Verify snapshot renamed
- EXPECT_EQ(0, hdfsRenameSnapshot(fs, dirName.c_str(), "Good", "Best"));
-
- //Verify snapshot deleted
- EXPECT_EQ(0, hdfsDeleteSnapshot(fs, dirName.c_str(), "Best"));
- EXPECT_EQ(nullptr, file_infos = hdfsListDirectory(fs, snapDir.c_str(), &size));
- EXPECT_EQ(0, size);
- hdfsFreeFileInfo(file_infos, 0);
-}
-
-//Testing creating directories
-TEST_F(HdfsExtTest, TestMkdirs) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //Correct operation
- EXPECT_EQ(0, hdfsCreateDirectory(fs, "/myDir123"));
-
- //TODO Should return error if directory already exists?
- //EXPECT_EQ(-1, hdfsCreateDirectory(fs, "/myDir123"));
- //EXPECT_EQ((int) std::errc::file_exists, errno);
-
- //Creating directory on a path of the existing file
- std::string path = connection.newFile(1024); //1024 byte file
- EXPECT_EQ(-1, hdfsCreateDirectory(fs, path.c_str()));
- EXPECT_EQ((int) std::errc::file_exists, errno);
-}
-
-//Testing deleting files and directories
-TEST_F(HdfsExtTest, TestDelete) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //Path not found
- EXPECT_EQ(-1, hdfsDelete(fs, "/wrong_path", 1));
- EXPECT_EQ((int) std::errc::no_such_file_or_directory, errno);
-
- EXPECT_EQ(0, hdfsCreateDirectory(fs, "/myDir"));
- std::string path = connection.newFile("/myDir", 1024); //1024 byte file
-
- //Non-recursive delete should fail on a non-empty directory
- //error ENOTEMPTY(39) for libhdfspp or 255 for libhdfs
- EXPECT_EQ(-1, hdfsDelete(fs, "/myDir", 0));
- EXPECT_EQ((int) std::errc::directory_not_empty, errno);
-
- //Correct operation
- EXPECT_EQ(0, hdfsDelete(fs, "/myDir", 1));
-}
-
-//Testing renaming files and directories
-TEST_F(HdfsExtTest, TestRename) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //Creating directory with two files
- EXPECT_EQ(0, hdfsCreateDirectory(fs, "/myDir"));
- std::string file1 = connection.newFile("/myDir", 1024); //1024 byte file
- std::string file2 = connection.newFile("/myDir", 1024); //1024 byte file
- std::string file3 = connection.newFile(1024); //1024 byte file
-
- //Path not found
- EXPECT_EQ(-1, hdfsRename(fs, "/wrong_path", "/new_name"));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
-
- //No parent directory in new path
- EXPECT_EQ(-1, hdfsRename(fs, file1.c_str(), "/wrong_parent/new_name"));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
-
- //New name already exists in the folder
- EXPECT_EQ(-1, hdfsRename(fs, file1.c_str(), file2.c_str()));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
-
- //Correct operation
- EXPECT_EQ(0, hdfsRename(fs, file1.c_str(), "/myDir/new_awesome_name"));
- EXPECT_EQ(0, hdfsRename(fs, file3.c_str(), "/myDir/another_file"));
- EXPECT_EQ(0, hdfsRename(fs, "/myDir", "/new_awesome_dir"));
-
- //Verification
- int numEntries;
- hdfsFileInfo * dirList = hdfsListDirectory(fs, "/new_awesome_dir", &numEntries);
- EXPECT_NE(nullptr, dirList);
- EXPECT_EQ(3, numEntries);
- hdfsFreeFileInfo(dirList, 3);
-}
-
-//Testing Chmod and Chown
-TEST_F(HdfsExtTest, TestChmodChown) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //Path not found
- std::string path = "/wrong/dir/";
- EXPECT_EQ(-1, hdfsChmod(fs, path.c_str(), 0777));
- EXPECT_EQ((int ) std::errc::no_such_file_or_directory, errno);
- EXPECT_EQ(-1, hdfsChown(fs, path.c_str(), "foo", "bar"));
- EXPECT_EQ((int ) std::errc::no_such_file_or_directory, errno);
-
- //Wrong arguments
- path = connection.newFile(1024); //1024 byte file
- EXPECT_EQ(-1, hdfsChmod(fs, nullptr, 0777));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsChmod(fs, path.c_str(), 07777));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsChmod(fs, path.c_str(), -1));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsChown(fs, nullptr, "foo", "bar"));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
-
- //Permission denied
- HdfsHandle connection2 = cluster.connect_c("OtherGuy");
- hdfsFS fs2 = connection2.handle();
- EXPECT_EQ(-1, hdfsChmod(fs2, path.c_str(), 0123));
- EXPECT_EQ((int ) std::errc::permission_denied, errno);
- EXPECT_EQ(-1, hdfsChown(fs2, path.c_str(), "cool", "nice"));
- EXPECT_EQ((int ) std::errc::permission_denied, errno);
-
- //Verify Chmod and Chown worked
- EXPECT_EQ(0, hdfsChmod(fs, path.c_str(), 0123));
- EXPECT_EQ(0, hdfsChown(fs, path.c_str(), "cool", "nice"));
- hdfsFileInfo *file_info;
- EXPECT_NE(nullptr, file_info = hdfsGetPathInfo(fs, path.c_str()));
- EXPECT_EQ(0123, file_info->mPermissions);
- EXPECT_STREQ("cool", file_info->mOwner);
- EXPECT_STREQ("nice", file_info->mGroup);
- hdfsFreeFileInfo(file_info, 1);
-}
-
-//Testing EOF
-TEST_F(HdfsExtTest, TestEOF) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- //Write to a file
- errno = 0;
- int size = 256;
- std::string path = "/eofTest";
- hdfsFile file = hdfsOpenFile(fs, path.c_str(), O_WRONLY, 0, 0, 0);
- EXPECT_NE(nullptr, file);
- void * buf = malloc(size);
- memset(buf, ' ', size);
- EXPECT_EQ(size, hdfsWrite(fs, file, buf, size));
- free(buf);
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
- //libhdfs file operations work, but sometimes sets errno ENOENT : 2
-
- //Test normal reading (no EOF)
- char buffer[300];
- file = hdfsOpenFile(fs, path.c_str(), O_RDONLY, 0, 0, 0);
- EXPECT_EQ(size, hdfsPread(fs, file, 0, buffer, sizeof(buffer)));
- //Read executes correctly, but causes a warning (captured in HDFS-10595)
- //and sets errno to EINPROGRESS 115 : Operation now in progress
-
- //Test reading at offset past the EOF
- EXPECT_EQ(-1, hdfsPread(fs, file, sizeof(buffer), buffer, sizeof(buffer)));
- EXPECT_EQ(Status::kInvalidOffset, errno);
-
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-}
-
-//Testing hdfsExists
-TEST_F(HdfsExtTest, TestExists) {
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- //Path not found
- EXPECT_EQ(-1, hdfsExists(fs, "/wrong/dir/"));
- EXPECT_EQ((int ) std::errc::no_such_file_or_directory, errno);
-
- //Correct operation
- std::string pathDir = "/testExistsDir";
- EXPECT_EQ(0, hdfsCreateDirectory(fs, pathDir.c_str()));
- EXPECT_EQ(0, hdfsExists(fs, pathDir.c_str()));
- std::string pathFile = connection.newFile(pathDir.c_str(), 1024);
- EXPECT_EQ(0, hdfsExists(fs, pathFile.c_str()));
-
- //Permission denied
- EXPECT_EQ(0, hdfsChmod(fs, pathDir.c_str(), 0700));
- HdfsHandle connection2 = cluster.connect_c("OtherGuy");
- hdfsFS fs2 = connection2.handle();
- EXPECT_EQ(-1, hdfsExists(fs2, pathFile.c_str()));
- EXPECT_EQ((int ) std::errc::permission_denied, errno);
-}
-
-//Testing Replication and Time modifications
-TEST_F(HdfsExtTest, TestReplAndTime) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- std::string path = "/wrong/dir/";
-
- //Path not found
- EXPECT_EQ(-1, hdfsSetReplication(fs, path.c_str(), 3));
- EXPECT_EQ((int ) std::errc::no_such_file_or_directory, errno);
- EXPECT_EQ(-1, hdfsUtime(fs, path.c_str(), 1000000, 1000000));
- EXPECT_EQ((int ) std::errc::no_such_file_or_directory, errno);
-
- //Correct operation
- path = connection.newFile(1024);
- EXPECT_EQ(0, hdfsSetReplication(fs, path.c_str(), 7));
- EXPECT_EQ(0, hdfsUtime(fs, path.c_str(), 123456789, 987654321));
- hdfsFileInfo *file_info;
- EXPECT_NE(nullptr, file_info = hdfsGetPathInfo(fs, path.c_str()));
- EXPECT_EQ(7, file_info->mReplication);
- EXPECT_EQ(123456789, file_info->mLastMod);
- EXPECT_EQ(987654321, file_info->mLastAccess);
- hdfsFreeFileInfo(file_info, 1);
-
- //Wrong arguments
- EXPECT_EQ(-1, hdfsSetReplication(fs, path.c_str(), 0));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
- EXPECT_EQ(-1, hdfsSetReplication(fs, path.c_str(), 513));
- EXPECT_EQ((int ) std::errc::invalid_argument, errno);
-
- //Permission denied
- EXPECT_EQ(0, hdfsChmod(fs, path.c_str(), 0700));
- HdfsHandle connection2 = cluster.connect_c("OtherGuy");
- hdfsFS fs2 = connection2.handle();
- EXPECT_EQ(-1, hdfsSetReplication(fs2, path.c_str(), 3));
- EXPECT_EQ((int ) std::errc::permission_denied, errno);
- EXPECT_EQ(-1, hdfsUtime(fs2, path.c_str(), 111111111, 222222222));
- EXPECT_EQ((int ) std::errc::permission_denied, errno);
-}
-
-//Testing getting default block size at path
-TEST_F(HdfsExtTest, TestDefaultBlockSize) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //Correct operation (existing path)
- std::string path = connection.newFile(1024);
- long block_size = hdfsGetDefaultBlockSizeAtPath(fs, path.c_str());
- EXPECT_GT(block_size, 0);
- hdfsFileInfo *file_info;
- EXPECT_NE(nullptr, file_info = hdfsGetPathInfo(fs, path.c_str()));
- EXPECT_EQ(block_size, file_info->mBlockSize);
- hdfsFreeFileInfo(file_info, 1);
-
- //Non-existing path
- path = "/wrong/dir/";
- EXPECT_GT(hdfsGetDefaultBlockSizeAtPath(fs, path.c_str()), 0);
-
- //No path specified
- EXPECT_GT(hdfsGetDefaultBlockSize(fs), 0);
-}
-
-//Testing getting hosts
-TEST_F(HdfsExtTest, TestHosts) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- char *** hosts = nullptr;
-
- // Free a null pointer
- hdfsFreeHosts(hosts);
- EXPECT_EQ(0, errno);
-
- // Test non-existent files
- EXPECT_EQ(nullptr, hdfsGetHosts(fs, "/wrong/file/", 0, std::numeric_limits<int64_t>::max()));
- EXPECT_EQ((int ) std::errc::no_such_file_or_directory, errno);
-
- // Test an existent file
- std::string filename = connection.newFile(1024);
- EXPECT_NE(nullptr, hosts = hdfsGetHosts(fs, filename.c_str(), 0, std::numeric_limits<int64_t>::max()));
-
- //Make sure there is at least one host
- EXPECT_NE(nullptr, *hosts);
- EXPECT_NE(nullptr, **hosts);
-
- hdfsFreeHosts(hosts);
- EXPECT_EQ(0, errno);
-
- //Test invalid arguments
- EXPECT_EQ(nullptr, hdfsGetHosts(fs, filename.c_str(), 0, std::numeric_limits<int64_t>::max()+1));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
-
- //Test invalid arguments
- EXPECT_EQ(nullptr, hdfsGetHosts(fs, filename.c_str(), std::numeric_limits<int64_t>::max()+1, std::numeric_limits<int64_t>::max()));
- EXPECT_EQ((int) std::errc::invalid_argument, errno);
-}
-
-//Testing read statistics
-TEST_F(HdfsExtTest, TestReadStats) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- struct hdfsReadStatistics *stats;
-
- //Write to a file
- int size = 256;
- std::string path = "/readStatTest";
- hdfsFile file = hdfsOpenFile(fs, path.c_str(), O_WRONLY, 0, 0, 0);
- EXPECT_NE(nullptr, file);
- void * buf = malloc(size);
- bzero(buf, size);
- EXPECT_EQ(size, hdfsWrite(fs, file, buf, size));
- free(buf);
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-
- //test before reading
- file = hdfsOpenFile(fs, path.c_str(), O_RDONLY, 0, 0, 0);
- EXPECT_EQ(0, hdfsFileGetReadStatistics(file, &stats));
- EXPECT_EQ(0, stats->totalBytesRead);
- hdfsFileFreeReadStatistics(stats);
-
- //test after reading
- char buffer[123];
- //Read executes correctly, but causes a warning (captured in HDFS-10595)
- EXPECT_EQ(sizeof(buffer), hdfsRead(fs, file, buffer, sizeof(buffer)));
- EXPECT_EQ(0, hdfsFileGetReadStatistics(file, &stats));
- EXPECT_EQ(sizeof(buffer), stats->totalBytesRead);
- EXPECT_EQ(sizeof(buffer), stats->totalLocalBytesRead);
- EXPECT_EQ(0, hdfsReadStatisticsGetRemoteBytesRead(stats));
- hdfsFileFreeReadStatistics(stats);
-
- //test after clearing
- EXPECT_EQ(0, hdfsFileClearReadStatistics(file));
- EXPECT_EQ(0, hdfsFileGetReadStatistics(file, &stats));
- EXPECT_EQ(0, stats->totalBytesRead);
- hdfsFileFreeReadStatistics(stats);
-
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
- EXPECT_EQ(0, errno);
-}
-
-//Testing working directory
-TEST_F(HdfsExtTest, TestWorkingDirectory) {
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
-
- //Correct operation of setter and getter
- std::string pathDir = "/testWorkDir/";
- EXPECT_EQ(0, hdfsCreateDirectory(fs, pathDir.c_str()));
- std::string pathFile = connection.newFile(pathDir.c_str(), 1024);
- EXPECT_EQ(0, hdfsSetWorkingDirectory(fs, pathDir.c_str()));
- char array[100];
- EXPECT_STREQ(pathDir.c_str(), hdfsGetWorkingDirectory(fs, array, 100));
-
- //Get relative path
- std::size_t slashPos = pathFile.find_last_of("/");
- std::string fileName = pathFile.substr(slashPos + 1);
-
- //Testing various functions with relative path:
-
- //hdfsGetDefaultBlockSizeAtPath
- EXPECT_GT(hdfsGetDefaultBlockSizeAtPath(fs, fileName.c_str()), 0);
-
- //hdfsSetReplication
- EXPECT_EQ(0, hdfsSetReplication(fs, fileName.c_str(), 7));
-
- //hdfsUtime
- EXPECT_EQ(0, hdfsUtime(fs, fileName.c_str(), 123456789, 987654321));
-
- //hdfsExists
- EXPECT_EQ(0, hdfsExists(fs, fileName.c_str()));
-
- //hdfsGetPathInfo
- hdfsFileInfo *file_info;
- EXPECT_NE(nullptr, file_info = hdfsGetPathInfo(fs, fileName.c_str()));
- hdfsFreeFileInfo(file_info, 1);
-
- //hdfsOpenFile
- hdfsFile file;
- file = hdfsOpenFile(fs, fileName.c_str(), O_RDONLY, 0, 0, 0);
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-
- //hdfsCreateDirectory
- EXPECT_EQ(0, hdfsCreateDirectory(fs, "newDir"));
-
- //add another file
- std::string fileName2 = connection.newFile(pathDir + "/newDir", 1024);
-
- //hdfsListDirectory
- int numEntries;
- hdfsFileInfo * dirList;
- EXPECT_NE(nullptr, dirList = hdfsListDirectory(fs, "newDir", &numEntries));
- EXPECT_EQ(1, numEntries);
- hdfsFreeFileInfo(dirList, 1);
-
- //hdfsChmod
- EXPECT_EQ(0, hdfsChmod(fs, fileName.c_str(), 0777));
-
- //hdfsChown
- EXPECT_EQ(0, hdfsChown(fs, fileName.c_str(), "cool", "nice"));
-
- //hdfsDisallowSnapshot
- EXPECT_EQ(0, hdfsDisallowSnapshot(fs, "newDir"));
-
- //hdfsAllowSnapshot
- EXPECT_EQ(0, hdfsAllowSnapshot(fs, "newDir"));
-
- //hdfsCreateSnapshot
- EXPECT_EQ(0, hdfsCreateSnapshot(fs, "newDir", "Some"));
-
- //hdfsDeleteSnapshot
- EXPECT_EQ(0, hdfsDeleteSnapshot(fs, "newDir", "Some"));
-
- //hdfsGetBlockLocations
- hdfsBlockLocations * blocks = nullptr;
- EXPECT_EQ(0, hdfsGetBlockLocations(connection, fileName.c_str(), &blocks));
- hdfsFreeBlockLocations(blocks);
-
- //hdfsGetHosts
- char *** hosts;
- EXPECT_NE(nullptr, hosts = hdfsGetHosts(fs, fileName.c_str(), 0, std::numeric_limits<int64_t>::max()));
- hdfsFreeHosts(hosts);
-
- //hdfsRename
- EXPECT_EQ(0, hdfsRename(fs, fileName.c_str(), "new_file_name"));
-
- //hdfsDelete
- EXPECT_EQ(0, hdfsDelete(fs, "new_file_name", 0));
-}
-
-
-// Flags used to test event handlers
-static int connect_callback_invoked = 0;
-int basic_fs_callback(const char *event, const char *cluster, int64_t value, int64_t cookie) {
- (void)cluster;
- (void)value;
- if(::strstr(FS_NN_CONNECT_EVENT, event) && cookie == 0xFFF0) {
- connect_callback_invoked = 1;
- }
- return LIBHDFSPP_EVENT_OK;
-}
-
-// Make sure event handler gets called during connect
-TEST_F(HdfsExtTest, TestConnectEvent) {
- connect_callback_invoked = 0;
- hdfsPreAttachFSMonitor(basic_fs_callback, 0xFFF0);
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- EXPECT_EQ(connect_callback_invoked, 1);
-}
-
-int throwing_fs_callback(const char *event, const char *cluster, int64_t value, int64_t cookie) {
- (void)cluster;
- (void)value;
- if(::strstr(FS_NN_CONNECT_EVENT, event) && cookie == 0xFFF1) {
- connect_callback_invoked = 1;
- throw std::runtime_error("Throwing in callbacks is a bad thing.");
- }
- return LIBHDFSPP_EVENT_OK;
-}
-
-// Make sure throwing in the connect event handler doesn't prevent connection
-TEST_F(HdfsExtTest, TestConnectEventThrow) {
- connect_callback_invoked = 0;
- hdfsPreAttachFSMonitor(throwing_fs_callback, 0xFFF1);
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- EXPECT_EQ(connect_callback_invoked, 1);
-}
-
-int char_throwing_fs_callback(const char *event, const char *cluster, int64_t value, int64_t cookie) {
- (void)cluster;
- (void)value;
- if(::strstr(FS_NN_CONNECT_EVENT, event) && cookie == 0xFFF2) {
- connect_callback_invoked = 1;
- throw "Throwing non std::exceptions in callbacks is even worse.";
- }
- return LIBHDFSPP_EVENT_OK;
-}
-
-TEST_F(HdfsExtTest, TestConnectEventThrowChar) {
- connect_callback_invoked = 0;
- hdfsPreAttachFSMonitor(char_throwing_fs_callback, 0xFFF2);
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- EXPECT_EQ(connect_callback_invoked, 1);
-}
-
-// Make sure throwing in the read event handler doesn't prevent reads
-int read_handler_invokation_count = 0;
-int basic_read_event_handler(const char *event, const char *cluster, const char *file,
- int64_t value, int64_t cookie)
-{
- (void)cluster;
- (void)file;
- (void)value;
- if(::strstr(FILE_DN_READ_EVENT, event) && cookie == 0xFFF3) {
- read_handler_invokation_count += 1;
- }
- return LIBHDFSPP_EVENT_OK;
-}
-
-// Testing that read handler is called.
-// Note: This is counting calls to async_read rather than hdfsPread.
-// Typically a call to hdfs(P)Read that doesn't span blocks/packets
-// invokes async_read 6 times; 4 more than required (improving that
-// in HDFS-11266).
-TEST_F(HdfsExtTest, TestReadEvent) {
- read_handler_invokation_count = 0;
- hdfsPreAttachFileMonitor(basic_read_event_handler, 0xFFF3);
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- //Write to a file
- errno = 0;
- int size = 256;
- std::string path = "/readEventTest";
- hdfsFile file = hdfsOpenFile(fs, path.c_str(), O_WRONLY, 0, 0, 0);
- EXPECT_NE(nullptr, file);
- void * buf = malloc(size);
- memset(buf, ' ', size);
- EXPECT_EQ(size, hdfsWrite(fs, file, buf, size));
- free(buf);
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-
- //Test that read counters are getting incremented
- char buffer[300];
- file = hdfsOpenFile(fs, path.c_str(), O_RDONLY, 0, 0, 0);
- EXPECT_EQ(size, hdfsPread(fs, file, 0, buffer, sizeof(buffer)));
- EXPECT_EQ(read_handler_invokation_count, 6);
-
- EXPECT_EQ(size, hdfsPread(fs, file, 0, buffer, sizeof(buffer)));
- EXPECT_EQ(read_handler_invokation_count, 12);
-
-
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-}
-
-int throwing_read_event_handler(const char *event, const char *cluster, const char *file,
- int64_t value, int64_t cookie)
-{
- (void)cluster;
- (void)file;
- (void)value;
- if(::strstr(FILE_DN_READ_EVENT, event) && cookie == 0xFFF4) {
- read_handler_invokation_count += 1;
- throw std::runtime_error("Throwing here is a bad idea, but shouldn't break reads");
- }
- return LIBHDFSPP_EVENT_OK;
-}
-
-// Testing that reads can be done when event handler throws.
-TEST_F(HdfsExtTest, TestReadEventThrow) {
- read_handler_invokation_count = 0;
- hdfsPreAttachFileMonitor(throwing_read_event_handler, 0xFFF4);
-
- HdfsHandle connection = cluster.connect_c();
- hdfsFS fs = connection.handle();
- EXPECT_NE(nullptr, fs);
- //Write to a file
- errno = 0;
- int size = 256;
- std::string path = "/readEventTest";
- hdfsFile file = hdfsOpenFile(fs, path.c_str(), O_WRONLY, 0, 0, 0);
- EXPECT_NE(nullptr, file);
- void * buf = malloc(size);
- memset(buf, ' ', size);
- EXPECT_EQ(size, hdfsWrite(fs, file, buf, size));
- free(buf);
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-
- //Test that read counters are getting incremented
- char buffer[300];
- file = hdfsOpenFile(fs, path.c_str(), O_RDONLY, 0, 0, 0);
- EXPECT_EQ(size, hdfsPread(fs, file, 0, buffer, sizeof(buffer)));
- EXPECT_EQ(read_handler_invokation_count, 6);
-
- EXPECT_EQ(size, hdfsPread(fs, file, 0, buffer, sizeof(buffer)));
- EXPECT_EQ(read_handler_invokation_count, 12);
-
-
- EXPECT_EQ(0, hdfsCloseFile(fs, file));
-}
-
-
-} // end namespace hdfs
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
-
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ioservice_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ioservice_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ioservice_test.cc
deleted file mode 100644
index 5ee9789..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_ioservice_test.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/hdfs_ioservice.h"
-
-#include <future>
-#include <functional>
-#include <thread>
-#include <string>
-
-#include <gmock/gmock.h>
-
-using ::testing::_;
-using ::testing::InvokeArgument;
-using ::testing::Return;
-
-using namespace hdfs;
-
-// Make sure IoService spins up specified number of threads
-TEST(IoServiceTest, InitThreads) {
-#ifndef DISABLE_CONCURRENT_WORKERS
- std::shared_ptr<IoServiceImpl> service = std::static_pointer_cast<IoServiceImpl>(IoService::MakeShared());
- EXPECT_NE(service, nullptr);
-
- unsigned int thread_count = 4;
- unsigned int result_thread_count = service->InitWorkers(thread_count);
- EXPECT_EQ(thread_count, result_thread_count);
-
- service->Stop();
-#else
- #pragma message("DISABLE_CONCURRENT_WORKERS is defined so hdfs_ioservice_test will compile out the InitThreads test")
-#endif
-}
-
-// Make sure IoService defaults to logical thread count
-TEST(IoServiceTest, InitDefaultThreads) {
-#ifndef DISABLE_CONCURRENT_WORKERS
- std::shared_ptr<IoServiceImpl> service = std::static_pointer_cast<IoServiceImpl>(IoService::MakeShared());
- EXPECT_NE(service, nullptr);
-
- unsigned int thread_count = std::thread::hardware_concurrency();
- unsigned int result_thread_count = service->InitDefaultWorkers();
- EXPECT_EQ(thread_count, result_thread_count);
-
- service->Stop();
-#else
- #pragma message("DISABLE_CONCURRENT_WORKERS is defined so hdfs_ioservice_test will compile out the InitDefaultThreads test")
-#endif
-}
-
-
-// Check IoService::PostTask
-TEST(IoServiceTest, SimplePost) {
- std::shared_ptr<IoServiceImpl> service = std::static_pointer_cast<IoServiceImpl>(IoService::MakeShared());
- EXPECT_NE(service, nullptr);
-
- unsigned int thread_count = std::thread::hardware_concurrency();
- unsigned int result_thread_count = service->InitDefaultWorkers();
-#ifndef DISABLE_CONCURRENT_WORKERS
- EXPECT_EQ(thread_count, result_thread_count);
-#else
- (void)thread_count;
- (void)result_thread_count;
-#endif
- // Like with the C synchronous shims a promise/future is needed to block until the async call completes.
- auto promise = std::make_shared<std::promise<std::string>>();
- std::future<std::string> future = promise->get_future();
-
- // this will get invoked on a worker thread
- std::function<void()> example_callback = [promise](){
- promise->set_value("hello from IoService");
- };
- service->PostTask(example_callback);
-
- // block until worker thread finishes
- std::string result = future.get();
- EXPECT_EQ(result, "hello from IoService");
-
- service->Stop();
-
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_shim.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_shim.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_shim.c
deleted file mode 100644
index 54d4cf6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_shim.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "libhdfs_wrapper.h"
-#include "libhdfspp_wrapper.h"
-#include "hdfs/hdfs.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Shim structs and functions that delegate to libhdfspp and libhdfs. */
-struct hdfs_internal {
- libhdfs_hdfsFS libhdfsRep;
- libhdfspp_hdfsFS libhdfsppRep;
-};
-typedef struct hdfs_internal* hdfsFS;
-
-struct hdfsFile_internal {
- libhdfs_hdfsFile libhdfsRep;
- libhdfspp_hdfsFile libhdfsppRep;
-};
-typedef struct hdfsFile_internal* hdfsFile;
-
-struct hdfsBuilder {
- struct hdfsBuilder * libhdfs_builder;
- struct hdfsBuilder * libhdfspp_builder;
-};
-
-#define REPORT_FUNCTION_NOT_IMPLEMENTED \
- fprintf(stderr, "%s failed: function not implemented by " \
- "libhdfs++ test shim", __PRETTY_FUNCTION__);
-
-int hdfsFileIsOpenForWrite(hdfsFile file) {
- return libhdfs_hdfsFileIsOpenForWrite(file->libhdfsRep);
-}
-
-int hdfsFileGetReadStatistics(hdfsFile file, struct hdfsReadStatistics **stats) {
- //We do not track which bytes were remote or local, so we assume all are local
- int ret = libhdfspp_hdfsFileGetReadStatistics(file->libhdfsppRep, (struct libhdfspp_hdfsReadStatistics **)stats);
- if(!ret) {
- (*stats)->totalLocalBytesRead = (*stats)->totalBytesRead;
- }
- return ret;
-}
-
-int64_t hdfsReadStatisticsGetRemoteBytesRead(const struct hdfsReadStatistics *stats) {
- return libhdfspp_hdfsReadStatisticsGetRemoteBytesRead((struct libhdfspp_hdfsReadStatistics *)stats);
-}
-
-int hdfsFileClearReadStatistics(hdfsFile file) {
- return libhdfspp_hdfsFileClearReadStatistics(file->libhdfsppRep);
-}
-
-void hdfsFileFreeReadStatistics(struct hdfsReadStatistics *stats) {
- libhdfspp_hdfsFileFreeReadStatistics((struct libhdfspp_hdfsReadStatistics *)stats);
-}
-
-hdfsFS hdfsConnectAsUser(const char* nn, tPort port, const char *user) {
- hdfsFS ret = calloc(1, sizeof(struct hdfs_internal));
- ret->libhdfsRep = libhdfs_hdfsConnectAsUser(nn, port, user);
- if (!ret->libhdfsRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- ret->libhdfsppRep = libhdfspp_hdfsConnectAsUser(nn, port, user);
- if (!ret->libhdfsppRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- return ret;
-}
-
-hdfsFS hdfsConnect(const char* nn, tPort port) {
- hdfsFS ret = calloc(1, sizeof(struct hdfs_internal));
- ret->libhdfsRep = libhdfs_hdfsConnect(nn, port);
- if (!ret->libhdfsRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- ret->libhdfsppRep = libhdfspp_hdfsConnect(nn, port);
- if (!ret->libhdfsppRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- return ret;
-}
-
-hdfsFS hdfsConnectAsUserNewInstance(const char* nn, tPort port, const char *user ) {
- hdfsFS ret = calloc(1, sizeof(struct hdfs_internal));
- ret->libhdfsRep = libhdfs_hdfsConnectAsUserNewInstance(nn, port, user);
- if (!ret->libhdfsRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- ret->libhdfsppRep = libhdfspp_hdfsConnectAsUserNewInstance(nn, port, user);
- if (!ret->libhdfsppRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- return ret;
-}
-
-hdfsFS hdfsConnectNewInstance(const char* nn, tPort port) {
- hdfsFS ret = calloc(1, sizeof(struct hdfs_internal));
- ret->libhdfsRep = libhdfs_hdfsConnectNewInstance(nn, port);
- if (!ret->libhdfsRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- ret->libhdfsppRep = libhdfspp_hdfsConnectNewInstance(nn, port);
- if (!ret->libhdfsppRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- return ret;
-}
-
-hdfsFS hdfsBuilderConnect(struct hdfsBuilder *bld) {
- hdfsFS ret = calloc(1, sizeof(struct hdfs_internal));
- ret->libhdfsRep = libhdfs_hdfsBuilderConnect(bld->libhdfs_builder);
- if (!ret->libhdfsRep) {
- free(ret);
- return NULL;
- }
- /* Destroys bld object. */
- ret->libhdfsppRep = libhdfspp_hdfsBuilderConnect(bld->libhdfspp_builder);
- if (!ret->libhdfsppRep) {
- libhdfs_hdfsDisconnect(ret->libhdfsRep);
- free(ret);
- return NULL;
- }
- return ret;
-}
-
-struct hdfsBuilder *hdfsNewBuilder(void) {
- struct hdfsBuilder * result = calloc(1, sizeof(struct hdfsBuilder));
- result -> libhdfs_builder = libhdfs_hdfsNewBuilder();
- result -> libhdfspp_builder = libhdfspp_hdfsNewBuilder();
- return result;
-}
-
-void hdfsBuilderSetForceNewInstance(struct hdfsBuilder *bld) {
- libhdfs_hdfsBuilderSetForceNewInstance(bld->libhdfs_builder);
- libhdfspp_hdfsBuilderSetForceNewInstance(bld->libhdfspp_builder);
-}
-
-void hdfsBuilderSetNameNode(struct hdfsBuilder *bld, const char *nn) {
- libhdfs_hdfsBuilderSetNameNode(bld->libhdfs_builder, nn);
- libhdfspp_hdfsBuilderSetNameNode(bld->libhdfspp_builder, nn);
-}
-
-void hdfsBuilderSetNameNodePort(struct hdfsBuilder *bld, tPort port) {
- libhdfs_hdfsBuilderSetNameNodePort(bld->libhdfs_builder, port);
- libhdfspp_hdfsBuilderSetNameNodePort(bld->libhdfspp_builder, port);
-}
-
-void hdfsBuilderSetUserName(struct hdfsBuilder *bld, const char *userName) {
- libhdfs_hdfsBuilderSetUserName(bld->libhdfs_builder, userName);
- libhdfspp_hdfsBuilderSetUserName(bld->libhdfspp_builder, userName);
-}
-
-void hdfsBuilderSetKerbTicketCachePath(struct hdfsBuilder *bld,
- const char *kerbTicketCachePath) {
- REPORT_FUNCTION_NOT_IMPLEMENTED
-}
-
-void hdfsFreeBuilder(struct hdfsBuilder *bld) {
- libhdfs_hdfsFreeBuilder(bld->libhdfs_builder);
- libhdfspp_hdfsFreeBuilder(bld->libhdfspp_builder);
- free(bld);
-}
-
-int hdfsBuilderConfSetStr(struct hdfsBuilder *bld, const char *key,
- const char *val) {
- int ret = libhdfs_hdfsBuilderConfSetStr(bld->libhdfs_builder, key, val);
- if (ret) {
- return ret;
- }
- ret = libhdfspp_hdfsBuilderConfSetStr(bld->libhdfspp_builder, key, val);
- if (ret) {
- return ret;
- }
- return 0;
-}
-
-int hdfsConfGetStr(const char *key, char **val) {
- return libhdfspp_hdfsConfGetStr(key, val);
-}
-
-int hdfsConfGetInt(const char *key, int32_t *val) {
- return libhdfspp_hdfsConfGetInt(key, val);
-}
-
-void hdfsConfStrFree(char *val) {
- libhdfspp_hdfsConfStrFree(val);
-}
-
-int hdfsDisconnect(hdfsFS fs) {
- int ret1 = libhdfs_hdfsDisconnect(fs->libhdfsRep);
- int ret2 = libhdfspp_hdfsDisconnect(fs->libhdfsppRep);
- free(fs);
- if (ret1){
- return ret1;
- } else if (ret2){
- return ret2;
- } else {
- return 0;
- }
-}
-
-hdfsFile hdfsOpenFile(hdfsFS fs, const char* path, int flags,
- int bufferSize, short replication, tSize blocksize) {
- hdfsFile ret = calloc(1, sizeof(struct hdfsFile_internal));
- /* Currently only open libhdf++ for reads. */
- ret->libhdfsppRep = 0;
- if (flags == O_RDONLY) {
- ret->libhdfsppRep = libhdfspp_hdfsOpenFile(fs->libhdfsppRep, path, flags,
- bufferSize, replication, blocksize);
- }
- ret->libhdfsRep = libhdfs_hdfsOpenFile(fs->libhdfsRep, path,
- flags, bufferSize, replication, blocksize);
- if (!ret->libhdfsRep) {
- free(ret);
- ret = NULL;
- }
- return ret;
-}
-
-int hdfsTruncateFile(hdfsFS fs, const char* path, tOffset newlength) {
- return libhdfs_hdfsTruncateFile(fs->libhdfsRep, path, newlength);
-}
-
-int hdfsUnbufferFile(hdfsFile file) {
- return libhdfs_hdfsUnbufferFile(file->libhdfsRep);
-}
-
-int hdfsCloseFile(hdfsFS fs, hdfsFile file) {
- int ret;
- if (file->libhdfsppRep) {
- libhdfspp_hdfsCloseFile(fs->libhdfsppRep, file->libhdfsppRep);
- }
- ret = libhdfs_hdfsCloseFile(fs->libhdfsRep, file->libhdfsRep);
- free(file);
- return ret;
-}
-
-int hdfsExists(hdfsFS fs, const char *path) {
- return libhdfspp_hdfsExists(fs->libhdfsppRep, path);
-}
-
-int hdfsSeek(hdfsFS fs, hdfsFile file, tOffset desiredPos) {
- int ret1 = libhdfs_hdfsSeek(fs->libhdfsRep, file->libhdfsRep, desiredPos);
- int ret2 = libhdfspp_hdfsSeek(fs->libhdfsppRep, file->libhdfsppRep, desiredPos);
- if (ret1) {
- return ret1;
- } else if (ret2) {
- return ret2;
- } else {
- return 0;
- }
-}
-
-tOffset hdfsTell(hdfsFS fs, hdfsFile file) {
- tOffset ret1 = libhdfs_hdfsTell(fs->libhdfsRep, file->libhdfsRep);
- tOffset ret2 = libhdfspp_hdfsTell(fs->libhdfsppRep, file->libhdfsppRep);
- if (ret1 != ret2) {
- errno = EIO;
- return -1;
- } else {
- return ret1;
- }
-}
-
-tSize hdfsRead(hdfsFS fs, hdfsFile file, void* buffer, tSize length) {
- // Read to update stats.
- tSize nRead = libhdfs_hdfsRead(fs->libhdfsRep, file->libhdfsRep, buffer, length);
- // Clear to avoid false positives.
- if (nRead > 0) memset(buffer, 0, nRead);
- return libhdfspp_hdfsRead(fs->libhdfsppRep, file->libhdfsppRep, buffer, length);
-}
-
-tSize hdfsPread(hdfsFS fs, hdfsFile file, tOffset position,
- void* buffer, tSize length) {
- tSize ret = -1;
- if (!fs->libhdfsppRep) {
- fprintf(stderr, "hdfsPread failed: no libhdfs++ file system");
- } else if (!file->libhdfsppRep) {
- fprintf(stderr, "hdfsPread failed: no libhdfs++ file");
- } else {
- ret = libhdfspp_hdfsPread(fs->libhdfsppRep, file->libhdfsppRep,
- position, buffer, length);
- }
- return ret;
-}
-
-tSize hdfsWrite(hdfsFS fs, hdfsFile file, const void* buffer,
- tSize length) {
- return libhdfs_hdfsWrite(fs->libhdfsRep, file->libhdfsRep, buffer, length);
-}
-
-int hdfsFlush(hdfsFS fs, hdfsFile file) {
- return libhdfs_hdfsFlush(fs->libhdfsRep, file->libhdfsRep);
-}
-
-int hdfsHFlush(hdfsFS fs, hdfsFile file) {
- return libhdfs_hdfsHFlush(fs->libhdfsRep, file->libhdfsRep);
-}
-
-int hdfsHSync(hdfsFS fs, hdfsFile file) {
- return libhdfs_hdfsHSync(fs->libhdfsRep, file->libhdfsRep);
-}
-
-int hdfsAvailable(hdfsFS fs, hdfsFile file) {
- return libhdfspp_hdfsAvailable(fs->libhdfsppRep, file->libhdfsppRep);
-}
-
-int hdfsCopy(hdfsFS srcFS, const char* src, hdfsFS dstFS, const char* dst) {
- return libhdfs_hdfsCopy(srcFS->libhdfsRep, src, dstFS->libhdfsRep, dst);
-}
-
-int hdfsMove(hdfsFS srcFS, const char* src, hdfsFS dstFS, const char* dst) {
- return libhdfs_hdfsMove(srcFS->libhdfsRep, src, dstFS->libhdfsRep, dst);
-}
-
-int hdfsDelete(hdfsFS fs, const char* path, int recursive) {
- return libhdfspp_hdfsDelete(fs->libhdfsppRep, path, recursive);
-}
-
-int hdfsRename(hdfsFS fs, const char* oldPath, const char* newPath) {
- return libhdfspp_hdfsRename(fs->libhdfsppRep, oldPath, newPath);
-}
-
-char* hdfsGetWorkingDirectory(hdfsFS fs, char *buffer, size_t bufferSize) {
- return libhdfspp_hdfsGetWorkingDirectory(fs->libhdfsppRep, buffer, bufferSize);
-}
-
-int hdfsSetWorkingDirectory(hdfsFS fs, const char* path) {
- int ret1 = libhdfspp_hdfsSetWorkingDirectory(fs->libhdfsppRep, path);
- int ret2 = libhdfs_hdfsSetWorkingDirectory(fs->libhdfsRep, path);
- if (ret1) {
- return ret1;
- } else if (ret2) {
- return ret2;
- } else {
- return 0;
- }
-}
-
-int hdfsCreateDirectory(hdfsFS fs, const char* path) {
- return libhdfspp_hdfsCreateDirectory(fs->libhdfsppRep, path);
-}
-
-int hdfsSetReplication(hdfsFS fs, const char* path, int16_t replication) {
- return libhdfspp_hdfsSetReplication(fs->libhdfsppRep, path, replication);
-}
-
-hdfsFileInfo *hdfsListDirectory(hdfsFS fs, const char* path,
- int *numEntries) {
- return (hdfsFileInfo *)libhdfspp_hdfsListDirectory(fs->libhdfsppRep, path, numEntries);
-}
-
-hdfsFileInfo *hdfsGetPathInfo(hdfsFS fs, const char* path) {
- return (hdfsFileInfo *)libhdfspp_hdfsGetPathInfo(fs->libhdfsppRep, path);
-}
-
-void hdfsFreeFileInfo(hdfsFileInfo *hdfsFileInfo, int numEntries) {
- return libhdfspp_hdfsFreeFileInfo
- ((libhdfspp_hdfsFileInfo *) hdfsFileInfo, numEntries);
-}
-
-int hdfsFileIsEncrypted(hdfsFileInfo *hdfsFileInfo) {
- return libhdfs_hdfsFileIsEncrypted
- ((libhdfs_hdfsFileInfo *) hdfsFileInfo);
-}
-
-char*** hdfsGetHosts(hdfsFS fs, const char* path,
- tOffset start, tOffset length) {
- return libhdfspp_hdfsGetHosts(fs->libhdfsppRep, path, start, length);
-}
-
-void hdfsFreeHosts(char ***blockHosts) {
- return libhdfspp_hdfsFreeHosts(blockHosts);
-}
-
-tOffset hdfsGetDefaultBlockSize(hdfsFS fs) {
- return libhdfspp_hdfsGetDefaultBlockSize(fs->libhdfsppRep);
-}
-
-tOffset hdfsGetDefaultBlockSizeAtPath(hdfsFS fs, const char *path) {
- return libhdfspp_hdfsGetDefaultBlockSizeAtPath(fs->libhdfsppRep, path);
-}
-
-tOffset hdfsGetCapacity(hdfsFS fs) {
- return libhdfspp_hdfsGetCapacity(fs->libhdfsppRep);
-}
-
-tOffset hdfsGetUsed(hdfsFS fs) {
- return libhdfspp_hdfsGetUsed(fs->libhdfsppRep);
-}
-
-int hdfsChown(hdfsFS fs, const char* path, const char *owner,
- const char *group) {
- return libhdfspp_hdfsChown(fs->libhdfsppRep, path, owner, group);
-}
-
-int hdfsChmod(hdfsFS fs, const char* path, short mode) {
- return libhdfspp_hdfsChmod(fs->libhdfsppRep, path, mode);
-}
-
-int hdfsUtime(hdfsFS fs, const char* path, tTime mtime, tTime atime) {
- return libhdfspp_hdfsUtime(fs->libhdfsppRep, path, mtime, atime);
-}
-
-struct hadoopRzOptions *hadoopRzOptionsAlloc(void) {
- return libhdfs_hadoopRzOptionsAlloc();
-}
-
-int hadoopRzOptionsSetSkipChecksum(
- struct hadoopRzOptions *opts, int skip) {
- return libhdfs_hadoopRzOptionsSetSkipChecksum(opts, skip);
-}
-
-int hadoopRzOptionsSetByteBufferPool(
- struct hadoopRzOptions *opts, const char *className) {
- return libhdfs_hadoopRzOptionsSetByteBufferPool(opts, className);
-}
-
-void hadoopRzOptionsFree(struct hadoopRzOptions *opts) {
- libhdfs_hadoopRzOptionsFree(opts);
-}
-
-struct hadoopRzBuffer* hadoopReadZero(hdfsFile file,
- struct hadoopRzOptions *opts, int32_t maxLength) {
- return libhdfs_hadoopReadZero(file->libhdfsRep, opts, maxLength);
-}
-
-int32_t hadoopRzBufferLength(const struct hadoopRzBuffer *buffer) {
- return libhdfs_hadoopRzBufferLength(buffer);
-}
-
-const void *hadoopRzBufferGet(const struct hadoopRzBuffer *buffer) {
- return libhdfs_hadoopRzBufferGet(buffer);
-}
-
-void hadoopRzBufferFree(hdfsFile file, struct hadoopRzBuffer *buffer) {
- return libhdfs_hadoopRzBufferFree(file->libhdfsRep, buffer);
-}
-
-int hdfsGetHedgedReadMetrics(hdfsFS fs, struct hdfsHedgedReadMetrics **metrics) {
- return libhdfs_hdfsGetHedgedReadMetrics(fs->libhdfsRep, (struct libhdfs_hdfsHedgedReadMetrics **) metrics);
-}
-
-void hdfsFreeHedgedReadMetrics(struct hdfsHedgedReadMetrics *metrics) {
- return libhdfs_hdfsFreeHedgedReadMetrics((struct libhdfs_hdfsHedgedReadMetrics *) metrics);
-}
-
-/*************
- * hdfs_ext functions
- */
-
-int hdfsGetLastError(char *buf, int len) {
- return libhdfspp_hdfsGetLastError(buf, len);
-}
-
-int hdfsCancel(hdfsFS fs, hdfsFile file) {
- return libhdfspp_hdfsCancel(fs->libhdfsppRep, file->libhdfsppRep);
-}
-
-
-int hdfsGetBlockLocations(hdfsFS fs, const char *path, struct hdfsBlockLocations ** locations) {
- return libhdfspp_hdfsGetBlockLocations(fs->libhdfsppRep, path, locations);
-}
-
-int hdfsFreeBlockLocations(struct hdfsBlockLocations * locations) {
- return libhdfspp_hdfsFreeBlockLocations(locations);
-}
-
-hdfsFileInfo *hdfsFind(hdfsFS fs, const char* path, const char* name, uint32_t *numEntries) {
- return (hdfsFileInfo *)libhdfspp_hdfsFind(fs->libhdfsppRep, path, name, numEntries);
-}
-
-int hdfsCreateSnapshot(hdfsFS fs, const char* path, const char* name) {
- return libhdfspp_hdfsCreateSnapshot(fs->libhdfsppRep, path, name);
-}
-
-int hdfsDeleteSnapshot(hdfsFS fs, const char* path, const char* name) {
- return libhdfspp_hdfsDeleteSnapshot(fs->libhdfsppRep, path, name);
-}
-
-int hdfsRenameSnapshot(hdfsFS fs, const char* path, const char* old_name, const char* new_name) {
- return libhdfspp_hdfsRenameSnapshot(fs->libhdfsppRep, path, old_name, new_name);
-}
-
-int hdfsAllowSnapshot(hdfsFS fs, const char* path) {
- return libhdfspp_hdfsAllowSnapshot(fs->libhdfsppRep, path);
-}
-
-int hdfsDisallowSnapshot(hdfsFS fs, const char* path) {
- return libhdfspp_hdfsDisallowSnapshot(fs->libhdfsppRep, path);
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_errors.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_errors.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_errors.cc
deleted file mode 100644
index f49f5fa..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_errors.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <hdfs/hdfs.h>
-#include <hdfspp/hdfs_ext.h>
-
-#include <google/protobuf/io/coded_stream.h>
-#include <gmock/gmock.h>
-
-#include <string.h>
-#include <string>
-
-using ::testing::_;
-using ::testing::InvokeArgument;
-using ::testing::Return;
-
-/* Don't need a real minidfs cluster since this just passes invalid params. */
-
-TEST(HdfsppErrors, NullFileSystem) {
-
- char buf[4096];
-
- hdfsFS fs = nullptr;
- hdfsFile fd = reinterpret_cast<hdfsFile>(1);
-
- tSize res = hdfsRead(fs, fd, buf, 4096);
- ASSERT_EQ(res, -1);
-
- hdfsGetLastError(buf, 4096);
-
- ASSERT_EQ(std::string(buf), "Cannot perform FS operations with null FS handle.");
-}
-
-TEST(HdfsppErrors, NullFileHandle) {
- char buf[4096];
-
- hdfsFS fs = reinterpret_cast<hdfsFS>(1);
- hdfsFile fd = nullptr;
-
- tSize res = hdfsRead(fs, fd, buf, 4096);
- ASSERT_EQ(res, -1);
-
- hdfsGetLastError(buf, 4096);
-
- ASSERT_EQ(std::string(buf), "Cannot perform FS operations with null File handle.");
-}
-
-TEST(HdfsppErrors, ZeroLength) {
- char buf[1];
- buf[0] = 0;
-
- hdfsFS fs = reinterpret_cast<hdfsFS>(1);
- hdfsFile fd = nullptr;
-
- tSize res = hdfsRead(fs, fd, buf, 1);
- ASSERT_EQ(res, -1);
-
- hdfsGetLastError(buf, 0);
-
- ASSERT_EQ(std::string(buf), "");
-}
-
-TEST(HdfsppErrors, NegativeLength) {
- char buf[1];
- buf[0] = 0;
-
- hdfsFS fs = reinterpret_cast<hdfsFS>(1);
- hdfsFile fd = nullptr;
-
- tSize res = hdfsRead(fs, fd, buf, 1);
- ASSERT_EQ(res, -1);
-
- hdfsGetLastError(buf, -1);
-
- ASSERT_EQ(std::string(buf), "");
-}
-
-TEST(HdfsppErrors, MessageTruncation) {
- char buf[4096];
-
- hdfsFS fs = reinterpret_cast<hdfsFS>(1);
- hdfsFile fd = nullptr;
-
- tSize res = hdfsRead(fs, fd, buf, 4096);
- ASSERT_EQ(res, -1);
-
- hdfsGetLastError(buf, 10);
-
- ASSERT_EQ(std::string(buf), "Cannot pe");
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
-
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs.h
deleted file mode 100644
index aecced1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfs/hdfs.h"
-#include "hdfspp/hdfspp.h"
-#include <native_mini_dfs.h>
-
-#include <google/protobuf/io/coded_stream.h>
-#include <gmock/gmock.h>
-
-#include <string>
-#include <atomic>
-
-#define TO_STR_HELPER(X) #X
-#define TO_STR(X) TO_STR_HELPER(X)
-
-#define TEST_BLOCK_SIZE 134217728
-
-namespace hdfs {
-
-
-static std::atomic<int> dirnum;
-static std::atomic<int> filenum;
-
-
-class FSHandle {
-public:
- FSHandle() : fs(nullptr) {}
- FSHandle(FileSystem * fs_in) : fs(fs_in) {}
-
-
- FileSystem * handle() { return fs.get(); }
- operator FileSystem *() { return fs.get(); }
-protected:
- std::shared_ptr<FileSystem> fs;
-};
-
-
-/**
- * For tests going through the C API to libhdfs++
- */
-
-class HdfsHandle {
-public:
- HdfsHandle() : fs(nullptr) {
- }
-
- HdfsHandle(hdfsFS fs_in) : fs(fs_in) {
- }
-
- ~HdfsHandle () {
- if (fs) {
- EXPECT_EQ(0, hdfsDisconnect(fs));
- }
- }
-
- std::string newDir(const std::string & parent_dir = "/") {
- int newDirNum = dirnum++;
-
- std::string path = parent_dir;
- if (path.back() != '/')
- path += "/";
- path += "dir" + std::to_string(newDirNum) + "/";
-
- EXPECT_EQ(0, hdfsCreateDirectory(*this, path.c_str()));
- return path;
- }
-
- std::string newFile(const std::string & dir = "/", size_t size = 1024) {
- int newFileNum = filenum++;
-
- std::string path = dir;
- if (path.back() != '/')
- path += "/";
- path += "file" + std::to_string(newFileNum);
-
- hdfsFile file = hdfsOpenFile(*this, path.c_str(), O_WRONLY, 0, 0, 0);
- EXPECT_NE(nullptr, file);
- void * buf = malloc(size);
- bzero(buf, size);
- EXPECT_EQ(1024, hdfsWrite(*this, file, buf, size));
- EXPECT_EQ(0, hdfsCloseFile(*this, file));
- free(buf);
-
- return path;
- }
-
- std::string newFile(size_t size) {
- return newFile("/", size);
- }
-
- hdfsFS handle() { return fs; }
- operator hdfsFS() { return fs; }
-private:
- hdfsFS fs;
-};
-
-
-class MiniCluster {
-public:
- MiniCluster() : io_service(IoService::MakeShared()) {
- struct NativeMiniDfsConf conf = {
- 1, /* doFormat */
- 0, /* webhdfs */
- -1, /* webhdfs port */
- 1 /* shortcircuit */
- };
- clusterInfo = nmdCreate(&conf);
- EXPECT_NE(nullptr, clusterInfo);
- EXPECT_EQ(0, nmdWaitClusterUp(clusterInfo));
-
- //TODO: Write some files for tests to read/check
- }
-
- virtual ~MiniCluster() {
- if (clusterInfo) {
- EXPECT_EQ(0, nmdShutdown(clusterInfo));
- }
- nmdFree(clusterInfo);
- }
-
- // Connect via the C++ API
- FSHandle connect(const std::string username) {
- Options options;
-
- unsigned int worker_count = io_service->InitDefaultWorkers();
- EXPECT_NE(0, worker_count);
-
- FileSystem * fs = FileSystem::New(io_service, username, options);
- EXPECT_NE(nullptr, fs);
- FSHandle result(fs);
-
- tPort port = (tPort)nmdGetNameNodePort(clusterInfo);
- EXPECT_NE(0, port);
- Status status = fs->Connect("localhost", std::to_string(port));
- EXPECT_EQ(true, status.ok());
- return result;
- }
-
- FSHandle connect() {
- return connect("");
- }
-
- // Connect via the C API
- HdfsHandle connect_c(const std::string & username) {
- tPort port;
- hdfsFS hdfs;
- struct hdfsBuilder *bld;
-
- port = (tPort)nmdGetNameNodePort(clusterInfo);
- bld = hdfsNewBuilder();
- EXPECT_NE(nullptr, bld);
- hdfsBuilderSetForceNewInstance(bld);
- hdfsBuilderSetNameNode(bld, "localhost");
- hdfsBuilderSetNameNodePort(bld, port);
- hdfsBuilderConfSetStr(bld, "dfs.block.size",
- TO_STR(TEST_BLOCK_SIZE));
- hdfsBuilderConfSetStr(bld, "dfs.blocksize",
- TO_STR(TEST_BLOCK_SIZE));
- if (!username.empty()) {
- hdfsBuilderSetUserName(bld, username.c_str());
- }
- hdfs = hdfsBuilderConnect(bld);
- EXPECT_NE(nullptr, hdfs);
-
- return HdfsHandle(hdfs);
- }
-
- // Connect via the C API
- HdfsHandle connect_c() {
- return connect_c("");
- }
-
-protected:
- struct NativeMiniDfsCluster* clusterInfo;
- std::shared_ptr<IoService> io_service;
-};
-
-} // namespace
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs_smoke.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs_smoke.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs_smoke.cc
deleted file mode 100644
index aaa2903..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfspp_mini_dfs_smoke.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp_mini_dfs.h"
-
-namespace hdfs {
-
-class HdfsMiniDfsSmokeTest: public ::testing::Test {
-public:
- MiniCluster cluster;
-};
-
-// Make sure we can set up a mini-cluster and connect to it
-TEST_F(HdfsMiniDfsSmokeTest, SmokeTest) {
- FSHandle handle = cluster.connect();
- EXPECT_NE(nullptr, handle.handle());
-
- HdfsHandle connection = cluster.connect_c();
- EXPECT_NE(nullptr, connection.handle());
-}
-
-
-}
-
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
-
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.c
deleted file mode 100644
index 8a7124b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Rename libhdfs structs and functions */
-#include "libhdfs_wrapper_defines.h"
-#include "libhdfs/hdfs.c"
-#include "libhdfs_wrapper_undefs.h"
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.h
deleted file mode 100644
index e8e716c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* "Original" symbols can be included elsewhere. */
-#undef LIBHDFS_HDFS_H
-
-/* Rename libhdfs structs and functions */
-#include "libhdfs_wrapper_defines.h"
-#include "hdfs/hdfs.h"
-#include "libhdfs_wrapper_undefs.h"
-
-/* "Original" symbols can be included elsewhere. */
-#undef LIBHDFS_HDFS_H
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_defines.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_defines.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_defines.h
deleted file mode 100644
index b907768..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_defines.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#define hdfsFileIsOpenForRead libhdfs_hdfsFileIsOpenForRead
-#define hdfsFileIsOpenForWrite libhdfs_hdfsFileIsOpenForWrite
-#define hdfsFileGetReadStatistics libhdfs_hdfsFileGetReadStatistics
-#define hdfsReadStatisticsGetRemoteBytesRead libhdfs_hdfsReadStatisticsGetRemoteBytesRead
-#define hdfsFileClearReadStatistics libhdfs_hdfsFileClearReadStatistics
-#define hdfsFileFreeReadStatistics libhdfs_hdfsFileFreeReadStatistics
-#define hdfsConnectAsUser libhdfs_hdfsConnectAsUser
-#define hdfsConnect libhdfs_hdfsConnect
-#define hdfsConnectAsUserNewInstance libhdfs_hdfsConnectAsUserNewInstance
-#define hdfsConnectNewInstance libhdfs_hdfsConnectNewInstance
-#define hdfsBuilderConnect libhdfs_hdfsBuilderConnect
-#define hdfsNewBuilder libhdfs_hdfsNewBuilder
-#define hdfsBuilderSetForceNewInstance libhdfs_hdfsBuilderSetForceNewInstance
-#define hdfsBuilderSetNameNode libhdfs_hdfsBuilderSetNameNode
-#define hdfsBuilderSetNameNodePort libhdfs_hdfsBuilderSetNameNodePort
-#define hdfsBuilderSetUserName libhdfs_hdfsBuilderSetUserName
-#define hdfsBuilderSetKerbTicketCachePath libhdfs_hdfsBuilderSetKerbTicketCachePath
-#define hdfsFreeBuilder libhdfs_hdfsFreeBuilder
-#define hdfsBuilderConfSetStr libhdfs_hdfsBuilderConfSetStr
-#define hdfsConfGetStr libhdfs_hdfsConfGetStr
-#define hdfsConfGetInt libhdfs_hdfsConfGetInt
-#define hdfsConfStrFree libhdfs_hdfsConfStrFree
-#define hdfsDisconnect libhdfs_hdfsDisconnect
-#define hdfsOpenFile libhdfs_hdfsOpenFile
-#define hdfsTruncateFile libhdfs_hdfsTruncateFile
-#define hdfsUnbufferFile libhdfs_hdfsUnbufferFile
-#define hdfsCloseFile libhdfs_hdfsCloseFile
-#define hdfsExists libhdfs_hdfsExists
-#define hdfsSeek libhdfs_hdfsSeek
-#define hdfsTell libhdfs_hdfsTell
-#define hdfsRead libhdfs_hdfsRead
-#define hdfsPread libhdfs_hdfsPread
-#define hdfsWrite libhdfs_hdfsWrite
-#define hdfsFlush libhdfs_hdfsFlush
-#define hdfsHFlush libhdfs_hdfsHFlush
-#define hdfsHSync libhdfs_hdfsHSync
-#define hdfsAvailable libhdfs_hdfsAvailable
-#define hdfsCopy libhdfs_hdfsCopy
-#define hdfsMove libhdfs_hdfsMove
-#define hdfsDelete libhdfs_hdfsDelete
-#define hdfsRename libhdfs_hdfsRename
-#define hdfsGetWorkingDirectory libhdfs_hdfsGetWorkingDirectory
-#define hdfsSetWorkingDirectory libhdfs_hdfsSetWorkingDirectory
-#define hdfsCreateDirectory libhdfs_hdfsCreateDirectory
-#define hdfsSetReplication libhdfs_hdfsSetReplication
-#define hdfsListDirectory libhdfs_hdfsListDirectory
-#define hdfsGetPathInfo libhdfs_hdfsGetPathInfo
-#define hdfsFreeFileInfo libhdfs_hdfsFreeFileInfo
-#define hdfsFileIsEncrypted libhdfs_hdfsFileIsEncrypted
-#define hdfsGetHosts libhdfs_hdfsGetHosts
-#define hdfsFreeHosts libhdfs_hdfsFreeHosts
-#define hdfsGetDefaultBlockSize libhdfs_hdfsGetDefaultBlockSize
-#define hdfsGetDefaultBlockSizeAtPath libhdfs_hdfsGetDefaultBlockSizeAtPath
-#define hdfsGetCapacity libhdfs_hdfsGetCapacity
-#define hdfsGetUsed libhdfs_hdfsGetUsed
-#define hdfsChown libhdfs_hdfsChown
-#define hdfsChmod libhdfs_hdfsChmod
-#define hdfsUtime libhdfs_hdfsUtime
-#define hadoopRzOptionsAlloc libhdfs_hadoopRzOptionsAlloc
-#define hadoopRzOptionsSetSkipChecksum libhdfs_hadoopRzOptionsSetSkipChecksum
-#define hadoopRzOptionsSetByteBufferPool libhdfs_hadoopRzOptionsSetByteBufferPool
-#define hadoopRzOptionsFree libhdfs_hadoopRzOptionsFree
-#define hadoopReadZero libhdfs_hadoopReadZero
-#define hadoopRzBufferLength libhdfs_hadoopRzBufferLength
-#define hadoopRzBufferGet libhdfs_hadoopRzBufferGet
-#define hadoopRzBufferFree libhdfs_hadoopRzBufferFree
-#define hdfs_internal libhdfs_hdfs_internal
-#define hdfsFS libhdfs_hdfsFS
-#define hdfsFile_internal libhdfs_hdfsFile_internal
-#define hdfsFile libhdfs_hdfsFile
-#define tObjectKind libhdfs_tObjectKind
-#define kObjectKindFile libhdfs_kObjectKindFile
-#define kObjectKindDirectory libhdfs_kObjectKindDirectory
-#define hdfsReadStatistics libhdfs_hdfsReadStatistics
-#define hdfsFileInfo libhdfs_hdfsFileInfo
-#define hdfsHedgedReadMetrics libhdfs_hdfsHedgedReadMetrics
-#define hdfsGetHedgedReadMetrics libhdfs_hdfsGetHedgedReadMetrics
-#define hdfsFreeHedgedReadMetrics libhdfs_hdfsFreeHedgedReadMetrics
-#define hdfsStreamBuilderAlloc libhdfs_hdfsStreamBuilderAlloc
-#define hdfsStreamBuilderBuild libhdfs_hdfsStreamBuilderBuild
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_undefs.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_undefs.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_undefs.h
deleted file mode 100644
index fce0e82..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfs_wrapper_undefs.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#undef hdfsFileIsOpenForRead
-#undef hdfsFileIsOpenForWrite
-#undef hdfsFileGetReadStatistics
-#undef hdfsReadStatisticsGetRemoteBytesRead
-#undef hdfsFileClearReadStatistics
-#undef hdfsFileFreeReadStatistics
-#undef hdfsConnectAsUser
-#undef hdfsConnect
-#undef hdfsConnectAsUserNewInstance
-#undef hdfsConnectNewInstance
-#undef hdfsBuilderConnect
-#undef hdfsNewBuilder
-#undef hdfsBuilderSetForceNewInstance
-#undef hdfsBuilderSetNameNode
-#undef hdfsBuilderSetNameNodePort
-#undef hdfsBuilderSetUserName
-#undef hdfsBuilderSetKerbTicketCachePath
-#undef hdfsFreeBuilder
-#undef hdfsBuilderConfSetStr
-#undef hdfsConfGetStr
-#undef hdfsConfGetInt
-#undef hdfsConfStrFree
-#undef hdfsDisconnect
-#undef hdfsOpenFile
-#undef hdfsTruncateFile
-#undef hdfsUnbufferFile
-#undef hdfsCloseFile
-#undef hdfsExists
-#undef hdfsSeek
-#undef hdfsTell
-#undef hdfsRead
-#undef hdfsPread
-#undef hdfsWrite
-#undef hdfsFlush
-#undef hdfsHFlush
-#undef hdfsHSync
-#undef hdfsAvailable
-#undef hdfsCopy
-#undef hdfsMove
-#undef hdfsDelete
-#undef hdfsRename
-#undef hdfsGetWorkingDirectory
-#undef hdfsSetWorkingDirectory
-#undef hdfsCreateDirectory
-#undef hdfsSetReplication
-#undef hdfsListDirectory
-#undef hdfsGetPathInfo
-#undef hdfsFreeFileInfo
-#undef hdfsFileIsEncrypted
-#undef hdfsGetHosts
-#undef hdfsFreeHosts
-#undef hdfsGetDefaultBlockSize
-#undef hdfsGetDefaultBlockSizeAtPath
-#undef hdfsGetCapacity
-#undef hdfsGetUsed
-#undef hdfsChown
-#undef hdfsChmod
-#undef hdfsUtime
-#undef hadoopRzOptionsAlloc
-#undef hadoopRzOptionsSetSkipChecksum
-#undef hadoopRzOptionsSetByteBufferPool
-#undef hadoopRzOptionsFree
-#undef hadoopReadZero
-#undef hadoopRzBufferLength
-#undef hadoopRzBufferGet
-#undef hadoopRzBufferFree
-#undef hdfs_internal
-#undef hdfsFS
-#undef hdfsFile_internal
-#undef hdfsFile
-#undef tObjectKind
-#undef kObjectKindFile
-#undef kObjectKindDirectory
-#undef hdfsReadStatistics
-#undef hdfsFileInfo
-#undef hdfsGetLastError
-#undef hdfsCancel
-#undef hdfsGetBlockLocations
-#undef hdfsFreeBlockLocations
-#undef hdfsFind
-#undef hdfsCreateSnapshot
-#undef hdfsDeleteSnapshot
-#undef hdfsRenameSnapshot
-#undef hdfsAllowSnapshot
-#undef hdfsDisallowSnapshot
-#undef hdfsHedgedReadMetrics
-#undef hdfsGetHedgedReadMetrics
-#undef hdfsFreeHedgedReadMetrics
-#undef hdfsStreamBuilderAlloc
-#undef hdfsStreamBuilderBuild
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.cc
deleted file mode 100644
index 913bd6c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Rename libhdfspp structs and functions */
-#include "libhdfspp_wrapper_defines.h"
-#include "bindings/c/hdfs.cc"
-#include "libhdfs_wrapper_undefs.h"
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.h
deleted file mode 100644
index 8cd78d2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* "Original" symbols can be included elsewhere. */
-#undef LIBHDFS_HDFS_H
-
-/* Rename libhdfspp structs and functions */
-#include "libhdfspp_wrapper_defines.h"
-#include "hdfs/hdfs.h"
-#include "hdfspp/hdfs_ext.h"
-#include "libhdfs_wrapper_undefs.h"
-
-/* "Original" symbols can be included elsewhere. */
-#undef LIBHDFS_HDFS_H
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper_defines.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper_defines.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper_defines.h
deleted file mode 100644
index d0411c2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/libhdfspp_wrapper_defines.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#define hdfsFileIsOpenForRead libhdfspp_hdfsFileIsOpenForRead
-#define hdfsFileIsOpenForWrite libhdfspp_hdfsFileIsOpenForWrite
-#define hdfsFileGetReadStatistics libhdfspp_hdfsFileGetReadStatistics
-#define hdfsReadStatisticsGetRemoteBytesRead libhdfspp_hdfsReadStatisticsGetRemoteBytesRead
-#define hdfsFileClearReadStatistics libhdfspp_hdfsFileClearReadStatistics
-#define hdfsFileFreeReadStatistics libhdfspp_hdfsFileFreeReadStatistics
-#define hdfsConnectAsUser libhdfspp_hdfsConnectAsUser
-#define hdfsConnect libhdfspp_hdfsConnect
-#define hdfsConnectAsUserNewInstance libhdfspp_hdfsConnectAsUserNewInstance
-#define hdfsConnectNewInstance libhdfspp_hdfsConnectNewInstance
-#define hdfsBuilderConnect libhdfspp_hdfsBuilderConnect
-#define hdfsNewBuilder libhdfspp_hdfsNewBuilder
-#define hdfsBuilderSetForceNewInstance libhdfspp_hdfsBuilderSetForceNewInstance
-#define hdfsBuilderSetNameNode libhdfspp_hdfsBuilderSetNameNode
-#define hdfsBuilderSetNameNodePort libhdfspp_hdfsBuilderSetNameNodePort
-#define hdfsBuilderSetUserName libhdfspp_hdfsBuilderSetUserName
-#define hdfsBuilderSetKerbTicketCachePath libhdfspp_hdfsBuilderSetKerbTicketCachePath
-#define hdfsFreeBuilder libhdfspp_hdfsFreeBuilder
-#define hdfsBuilderConfSetStr libhdfspp_hdfsBuilderConfSetStr
-#define hdfsConfGetStr libhdfspp_hdfsConfGetStr
-#define hdfsConfGetInt libhdfspp_hdfsConfGetInt
-#define hdfsConfStrFree libhdfspp_hdfsConfStrFree
-#define hdfsDisconnect libhdfspp_hdfsDisconnect
-#define hdfsOpenFile libhdfspp_hdfsOpenFile
-#define hdfsTruncateFile libhdfspp_hdfsTruncateFile
-#define hdfsUnbufferFile libhdfspp_hdfsUnbufferFile
-#define hdfsCloseFile libhdfspp_hdfsCloseFile
-#define hdfsExists libhdfspp_hdfsExists
-#define hdfsSeek libhdfspp_hdfsSeek
-#define hdfsTell libhdfspp_hdfsTell
-#define hdfsRead libhdfspp_hdfsRead
-#define hdfsPread libhdfspp_hdfsPread
-#define hdfsWrite libhdfspp_hdfsWrite
-#define hdfsFlush libhdfspp_hdfsFlush
-#define hdfsHFlush libhdfspp_hdfsHFlush
-#define hdfsHSync libhdfspp_hdfsHSync
-#define hdfsAvailable libhdfspp_hdfsAvailable
-#define hdfsCopy libhdfspp_hdfsCopy
-#define hdfsMove libhdfspp_hdfsMove
-#define hdfsDelete libhdfspp_hdfsDelete
-#define hdfsRename libhdfspp_hdfsRename
-#define hdfsGetWorkingDirectory libhdfspp_hdfsGetWorkingDirectory
-#define hdfsSetWorkingDirectory libhdfspp_hdfsSetWorkingDirectory
-#define hdfsCreateDirectory libhdfspp_hdfsCreateDirectory
-#define hdfsSetReplication libhdfspp_hdfsSetReplication
-#define hdfsListDirectory libhdfspp_hdfsListDirectory
-#define hdfsGetPathInfo libhdfspp_hdfsGetPathInfo
-#define hdfsFreeFileInfo libhdfspp_hdfsFreeFileInfo
-#define hdfsFileIsEncrypted libhdfspp_hdfsFileIsEncrypted
-#define hdfsGetHosts libhdfspp_hdfsGetHosts
-#define hdfsFreeHosts libhdfspp_hdfsFreeHosts
-#define hdfsGetDefaultBlockSize libhdfspp_hdfsGetDefaultBlockSize
-#define hdfsGetDefaultBlockSizeAtPath libhdfspp_hdfsGetDefaultBlockSizeAtPath
-#define hdfsGetCapacity libhdfspp_hdfsGetCapacity
-#define hdfsGetUsed libhdfspp_hdfsGetUsed
-#define hdfsChown libhdfspp_hdfsChown
-#define hdfsChmod libhdfspp_hdfsChmod
-#define hdfsUtime libhdfspp_hdfsUtime
-#define hadoopRzOptionsAlloc libhdfspp_hadoopRzOptionsAlloc
-#define hadoopRzOptionsSetSkipChecksum libhdfspp_hadoopRzOptionsSetSkipChecksum
-#define hadoopRzOptionsSetByteBufferPool libhdfspp_hadoopRzOptionsSetByteBufferPool
-#define hadoopRzOptionsFree libhdfspp_hadoopRzOptionsFree
-#define hadoopReadZero libhdfspp_hadoopReadZero
-#define hadoopRzBufferLength libhdfspp_hadoopRzBufferLength
-#define hadoopRzBufferGet libhdfspp_hadoopRzBufferGet
-#define hadoopRzBufferFree libhdfspp_hadoopRzBufferFree
-#define hdfs_internal libhdfspp_hdfs_internal
-#define hdfsFS libhdfspp_hdfsFS
-#define hdfsFile_internal libhdfspp_hdfsFile_internal
-#define hdfsFile libhdfspp_hdfsFile
-#define tObjectKind libhdfspp_tObjectKind
-#define kObjectKindFile libhdfspp_kObjectKindFile
-#define kObjectKindDirectory libhdfspp_kObjectKindDirectory
-#define hdfsReadStatistics libhdfspp_hdfsReadStatistics
-#define hdfsFileInfo libhdfspp_hdfsFileInfo
-#define hdfsGetLastError libhdfspp_hdfsGetLastError
-#define hdfsCancel libhdfspp_hdfsCancel
-#define hdfsGetBlockLocations libhdfspp_hdfsGetBlockLocations
-#define hdfsFreeBlockLocations libhdfspp_hdfsFreeBlockLocations
-#define hdfsFind libhdfspp_hdfsFind
-#define hdfsCreateSnapshot libhdfspp_hdfsCreateSnapshot
-#define hdfsDeleteSnapshot libhdfspp_hdfsDeleteSnapshot
-#define hdfsRenameSnapshot libhdfspp_hdfsRenameSnapshot
-#define hdfsAllowSnapshot libhdfspp_hdfsAllowSnapshot
-#define hdfsDisallowSnapshot libhdfspp_hdfsDisallowSnapshot
-#define hdfsHedgedReadMetrics libhdfspp_hdfsHedgedReadMetrics
-#define hdfsGetHedgedReadMetrics libhdfspp_hdfsGetHedgedReadMetrics
-#define hdfsFreeHedgedReadMetrics libhdfspp_hdfsFreeHedgedReadMetrics
-#define hdfsStreamBuilderAlloc libhdfspp_hdfsStreamBuilderAlloc
-#define hdfsStreamBuilderBuild libhdfspp_hdfsStreamBuilderBuild
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[26/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_serial_port_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_serial_port_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_serial_port_service.ipp
deleted file mode 100644
index 1974876..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_serial_port_service.ipp
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-// detail/impl/reactive_serial_port_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT)
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include <cstring>
-#include "asio/detail/reactive_serial_port_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-reactive_serial_port_service::reactive_serial_port_service(
- asio::io_service& io_service)
- : descriptor_service_(io_service)
-{
-}
-
-void reactive_serial_port_service::shutdown_service()
-{
- descriptor_service_.shutdown_service();
-}
-
-asio::error_code reactive_serial_port_service::open(
- reactive_serial_port_service::implementation_type& impl,
- const std::string& device, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- descriptor_ops::state_type state = 0;
- int fd = descriptor_ops::open(device.c_str(),
- O_RDWR | O_NONBLOCK | O_NOCTTY, ec);
- if (fd < 0)
- return ec;
-
- int s = descriptor_ops::fcntl(fd, F_GETFL, ec);
- if (s >= 0)
- s = descriptor_ops::fcntl(fd, F_SETFL, s | O_NONBLOCK, ec);
- if (s < 0)
- {
- asio::error_code ignored_ec;
- descriptor_ops::close(fd, state, ignored_ec);
- return ec;
- }
-
- // Set up default serial port options.
- termios ios;
- errno = 0;
- s = descriptor_ops::error_wrapper(::tcgetattr(fd, &ios), ec);
- if (s >= 0)
- {
-#if defined(_BSD_SOURCE)
- ::cfmakeraw(&ios);
-#else
- ios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK
- | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
- ios.c_oflag &= ~OPOST;
- ios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
- ios.c_cflag &= ~(CSIZE | PARENB);
- ios.c_cflag |= CS8;
-#endif
- ios.c_iflag |= IGNPAR;
- ios.c_cflag |= CREAD | CLOCAL;
- errno = 0;
- s = descriptor_ops::error_wrapper(::tcsetattr(fd, TCSANOW, &ios), ec);
- }
- if (s < 0)
- {
- asio::error_code ignored_ec;
- descriptor_ops::close(fd, state, ignored_ec);
- return ec;
- }
-
- // We're done. Take ownership of the serial port descriptor.
- if (descriptor_service_.assign(impl, fd, ec))
- {
- asio::error_code ignored_ec;
- descriptor_ops::close(fd, state, ignored_ec);
- }
-
- return ec;
-}
-
-asio::error_code reactive_serial_port_service::do_set_option(
- reactive_serial_port_service::implementation_type& impl,
- reactive_serial_port_service::store_function_type store,
- const void* option, asio::error_code& ec)
-{
- termios ios;
- errno = 0;
- descriptor_ops::error_wrapper(::tcgetattr(
- descriptor_service_.native_handle(impl), &ios), ec);
- if (ec)
- return ec;
-
- if (store(option, ios, ec))
- return ec;
-
- errno = 0;
- descriptor_ops::error_wrapper(::tcsetattr(
- descriptor_service_.native_handle(impl), TCSANOW, &ios), ec);
- return ec;
-}
-
-asio::error_code reactive_serial_port_service::do_get_option(
- const reactive_serial_port_service::implementation_type& impl,
- reactive_serial_port_service::load_function_type load,
- void* option, asio::error_code& ec) const
-{
- termios ios;
- errno = 0;
- descriptor_ops::error_wrapper(::tcgetattr(
- descriptor_service_.native_handle(impl), &ios), ec);
- if (ec)
- return ec;
-
- return load(option, ios, ec);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_socket_service_base.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_socket_service_base.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_socket_service_base.ipp
deleted file mode 100644
index a0363ed..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_socket_service_base.ipp
+++ /dev/null
@@ -1,267 +0,0 @@
-//
-// detail/reactive_socket_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP) \
- && !defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/reactive_socket_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-reactive_socket_service_base::reactive_socket_service_base(
- asio::io_service& io_service)
- : reactor_(use_service<reactor>(io_service))
-{
- reactor_.init_task();
-}
-
-void reactive_socket_service_base::shutdown_service()
-{
-}
-
-void reactive_socket_service_base::construct(
- reactive_socket_service_base::base_implementation_type& impl)
-{
- impl.socket_ = invalid_socket;
- impl.state_ = 0;
-}
-
-void reactive_socket_service_base::base_move_construct(
- reactive_socket_service_base::base_implementation_type& impl,
- reactive_socket_service_base::base_implementation_type& other_impl)
-{
- impl.socket_ = other_impl.socket_;
- other_impl.socket_ = invalid_socket;
-
- impl.state_ = other_impl.state_;
- other_impl.state_ = 0;
-
- reactor_.move_descriptor(impl.socket_,
- impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_socket_service_base::base_move_assign(
- reactive_socket_service_base::base_implementation_type& impl,
- reactive_socket_service_base& other_service,
- reactive_socket_service_base::base_implementation_type& other_impl)
-{
- destroy(impl);
-
- impl.socket_ = other_impl.socket_;
- other_impl.socket_ = invalid_socket;
-
- impl.state_ = other_impl.state_;
- other_impl.state_ = 0;
-
- other_service.reactor_.move_descriptor(impl.socket_,
- impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_socket_service_base::destroy(
- reactive_socket_service_base::base_implementation_type& impl)
-{
- if (impl.socket_ != invalid_socket)
- {
- ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
- reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_,
- (impl.state_ & socket_ops::possible_dup) == 0);
-
- asio::error_code ignored_ec;
- socket_ops::close(impl.socket_, impl.state_, true, ignored_ec);
- }
-}
-
-asio::error_code reactive_socket_service_base::close(
- reactive_socket_service_base::base_implementation_type& impl,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
- reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_,
- (impl.state_ & socket_ops::possible_dup) == 0);
- }
-
- socket_ops::close(impl.socket_, impl.state_, false, ec);
-
- // The descriptor is closed by the OS even if close() returns an error.
- //
- // (Actually, POSIX says the state of the descriptor is unspecified. On
- // Linux the descriptor is apparently closed anyway; e.g. see
- // http://lkml.org/lkml/2005/9/10/129
- // We'll just have to assume that other OSes follow the same behaviour. The
- // known exception is when Windows's closesocket() function fails with
- // WSAEWOULDBLOCK, but this case is handled inside socket_ops::close().
- construct(impl);
-
- return ec;
-}
-
-asio::error_code reactive_socket_service_base::cancel(
- reactive_socket_service_base::base_implementation_type& impl,
- asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return ec;
- }
-
- ASIO_HANDLER_OPERATION(("socket", &impl, "cancel"));
-
- reactor_.cancel_ops(impl.socket_, impl.reactor_data_);
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code reactive_socket_service_base::do_open(
- reactive_socket_service_base::base_implementation_type& impl,
- int af, int type, int protocol, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- socket_holder sock(socket_ops::socket(af, type, protocol, ec));
- if (sock.get() == invalid_socket)
- return ec;
-
- if (int err = reactor_.register_descriptor(sock.get(), impl.reactor_data_))
- {
- ec = asio::error_code(err,
- asio::error::get_system_category());
- return ec;
- }
-
- impl.socket_ = sock.release();
- switch (type)
- {
- case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
- case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
- default: impl.state_ = 0; break;
- }
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code reactive_socket_service_base::do_assign(
- reactive_socket_service_base::base_implementation_type& impl, int type,
- const reactive_socket_service_base::native_handle_type& native_socket,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- if (int err = reactor_.register_descriptor(
- native_socket, impl.reactor_data_))
- {
- ec = asio::error_code(err,
- asio::error::get_system_category());
- return ec;
- }
-
- impl.socket_ = native_socket;
- switch (type)
- {
- case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
- case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
- default: impl.state_ = 0; break;
- }
- impl.state_ |= socket_ops::possible_dup;
- ec = asio::error_code();
- return ec;
-}
-
-void reactive_socket_service_base::start_op(
- reactive_socket_service_base::base_implementation_type& impl,
- int op_type, reactor_op* op, bool is_continuation,
- bool is_non_blocking, bool noop)
-{
- if (!noop)
- {
- if ((impl.state_ & socket_ops::non_blocking)
- || socket_ops::set_internal_non_blocking(
- impl.socket_, impl.state_, true, op->ec_))
- {
- reactor_.start_op(op_type, impl.socket_,
- impl.reactor_data_, op, is_continuation, is_non_blocking);
- return;
- }
- }
-
- reactor_.post_immediate_completion(op, is_continuation);
-}
-
-void reactive_socket_service_base::start_accept_op(
- reactive_socket_service_base::base_implementation_type& impl,
- reactor_op* op, bool is_continuation, bool peer_is_open)
-{
- if (!peer_is_open)
- start_op(impl, reactor::read_op, op, true, is_continuation, false);
- else
- {
- op->ec_ = asio::error::already_open;
- reactor_.post_immediate_completion(op, is_continuation);
- }
-}
-
-void reactive_socket_service_base::start_connect_op(
- reactive_socket_service_base::base_implementation_type& impl,
- reactor_op* op, bool is_continuation,
- const socket_addr_type* addr, size_t addrlen)
-{
- if ((impl.state_ & socket_ops::non_blocking)
- || socket_ops::set_internal_non_blocking(
- impl.socket_, impl.state_, true, op->ec_))
- {
- if (socket_ops::connect(impl.socket_, addr, addrlen, op->ec_) != 0)
- {
- if (op->ec_ == asio::error::in_progress
- || op->ec_ == asio::error::would_block)
- {
- op->ec_ = asio::error_code();
- reactor_.start_op(reactor::connect_op, impl.socket_,
- impl.reactor_data_, op, is_continuation, false);
- return;
- }
- }
- }
-
- reactor_.post_immediate_completion(op, is_continuation);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_IOCP)
- // && !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/resolver_service_base.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/resolver_service_base.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/resolver_service_base.ipp
deleted file mode 100644
index 2f99983..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/resolver_service_base.ipp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// detail/impl/resolver_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/resolver_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class resolver_service_base::work_io_service_runner
-{
-public:
- work_io_service_runner(asio::io_service& io_service)
- : io_service_(io_service) {}
- void operator()() { io_service_.run(); }
-private:
- asio::io_service& io_service_;
-};
-
-resolver_service_base::resolver_service_base(
- asio::io_service& io_service)
- : io_service_impl_(asio::use_service<io_service_impl>(io_service)),
- work_io_service_(new asio::io_service),
- work_io_service_impl_(asio::use_service<
- io_service_impl>(*work_io_service_)),
- work_(new asio::io_service::work(*work_io_service_)),
- work_thread_(0)
-{
-}
-
-resolver_service_base::~resolver_service_base()
-{
- shutdown_service();
-}
-
-void resolver_service_base::shutdown_service()
-{
- work_.reset();
- if (work_io_service_.get())
- {
- work_io_service_->stop();
- if (work_thread_.get())
- {
- work_thread_->join();
- work_thread_.reset();
- }
- work_io_service_.reset();
- }
-}
-
-void resolver_service_base::fork_service(
- asio::io_service::fork_event fork_ev)
-{
- if (work_thread_.get())
- {
- if (fork_ev == asio::io_service::fork_prepare)
- {
- work_io_service_->stop();
- work_thread_->join();
- }
- else
- {
- work_io_service_->reset();
- work_thread_.reset(new asio::detail::thread(
- work_io_service_runner(*work_io_service_)));
- }
- }
-}
-
-void resolver_service_base::construct(
- resolver_service_base::implementation_type& impl)
-{
- impl.reset(static_cast<void*>(0), socket_ops::noop_deleter());
-}
-
-void resolver_service_base::destroy(
- resolver_service_base::implementation_type& impl)
-{
- ASIO_HANDLER_OPERATION(("resolver", &impl, "cancel"));
-
- impl.reset();
-}
-
-void resolver_service_base::cancel(
- resolver_service_base::implementation_type& impl)
-{
- ASIO_HANDLER_OPERATION(("resolver", &impl, "cancel"));
-
- impl.reset(static_cast<void*>(0), socket_ops::noop_deleter());
-}
-
-void resolver_service_base::start_resolve_op(operation* op)
-{
- start_work_thread();
- io_service_impl_.work_started();
- work_io_service_impl_.post_immediate_completion(op, false);
-}
-
-void resolver_service_base::start_work_thread()
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- if (!work_thread_.get())
- {
- work_thread_.reset(new asio::detail::thread(
- work_io_service_runner(*work_io_service_)));
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.hpp
deleted file mode 100644
index 5572472..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// detail/impl/select_reactor.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_DETAIL_IMPL_SELECT_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_SELECT_REACTOR_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_HAS_IOCP) \
- || (!defined(ASIO_HAS_DEV_POLL) \
- && !defined(ASIO_HAS_EPOLL) \
- && !defined(ASIO_HAS_KQUEUE) \
- && !defined(ASIO_WINDOWS_RUNTIME))
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void select_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_add_timer_queue(queue);
-}
-
-// Remove a timer queue from the reactor.
-template <typename Time_Traits>
-void select_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void select_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- io_service_.post_immediate_completion(op, false);
- return;
- }
-
- bool earliest = queue.enqueue_timer(time, timer, op);
- io_service_.work_started();
- if (earliest)
- interrupter_.interrupt();
-}
-
-template <typename Time_Traits>
-std::size_t select_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- op_queue<operation> ops;
- std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
- lock.unlock();
- io_service_.post_deferred_completions(ops);
- return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
- // || (!defined(ASIO_HAS_DEV_POLL)
- // && !defined(ASIO_HAS_EPOLL)
- // && !defined(ASIO_HAS_KQUEUE)
- // && !defined(ASIO_WINDOWS_RUNTIME))
-
-#endif // ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.ipp
deleted file mode 100644
index d1ae2e9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/select_reactor.ipp
+++ /dev/null
@@ -1,313 +0,0 @@
-//
-// detail/impl/select_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_SELECT_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) \
- || (!defined(ASIO_HAS_DEV_POLL) \
- && !defined(ASIO_HAS_EPOLL) \
- && !defined(ASIO_HAS_KQUEUE) \
- && !defined(ASIO_WINDOWS_RUNTIME))
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fd_set_adapter.hpp"
-#include "asio/detail/select_reactor.hpp"
-#include "asio/detail/signal_blocker.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-select_reactor::select_reactor(asio::io_service& io_service)
- : asio::detail::service_base<select_reactor>(io_service),
- io_service_(use_service<io_service_impl>(io_service)),
- mutex_(),
- interrupter_(),
-#if defined(ASIO_HAS_IOCP)
- stop_thread_(false),
- thread_(0),
-#endif // defined(ASIO_HAS_IOCP)
- shutdown_(false)
-{
-#if defined(ASIO_HAS_IOCP)
- asio::detail::signal_blocker sb;
- thread_ = new asio::detail::thread(
- bind_handler(&select_reactor::call_run_thread, this));
-#endif // defined(ASIO_HAS_IOCP)
-}
-
-select_reactor::~select_reactor()
-{
- shutdown_service();
-}
-
-void select_reactor::shutdown_service()
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- shutdown_ = true;
-#if defined(ASIO_HAS_IOCP)
- stop_thread_ = true;
-#endif // defined(ASIO_HAS_IOCP)
- lock.unlock();
-
-#if defined(ASIO_HAS_IOCP)
- if (thread_)
- {
- interrupter_.interrupt();
- thread_->join();
- delete thread_;
- thread_ = 0;
- }
-#endif // defined(ASIO_HAS_IOCP)
-
- op_queue<operation> ops;
-
- for (int i = 0; i < max_ops; ++i)
- op_queue_[i].get_all_operations(ops);
-
- timer_queues_.get_all_timers(ops);
-
- io_service_.abandon_operations(ops);
-}
-
-void select_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
- if (fork_ev == asio::io_service::fork_child)
- interrupter_.recreate();
-}
-
-void select_reactor::init_task()
-{
- io_service_.init_task();
-}
-
-int select_reactor::register_descriptor(socket_type,
- select_reactor::per_descriptor_data&)
-{
- return 0;
-}
-
-int select_reactor::register_internal_descriptor(
- int op_type, socket_type descriptor,
- select_reactor::per_descriptor_data&, reactor_op* op)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- op_queue_[op_type].enqueue_operation(descriptor, op);
- interrupter_.interrupt();
-
- return 0;
-}
-
-void select_reactor::move_descriptor(socket_type,
- select_reactor::per_descriptor_data&,
- select_reactor::per_descriptor_data&)
-{
-}
-
-void select_reactor::start_op(int op_type, socket_type descriptor,
- select_reactor::per_descriptor_data&, reactor_op* op,
- bool is_continuation, bool)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- post_immediate_completion(op, is_continuation);
- return;
- }
-
- bool first = op_queue_[op_type].enqueue_operation(descriptor, op);
- io_service_.work_started();
- if (first)
- interrupter_.interrupt();
-}
-
-void select_reactor::cancel_ops(socket_type descriptor,
- select_reactor::per_descriptor_data&)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void select_reactor::deregister_descriptor(socket_type descriptor,
- select_reactor::per_descriptor_data&, bool)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void select_reactor::deregister_internal_descriptor(
- socket_type descriptor, select_reactor::per_descriptor_data&)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- op_queue_[i].cancel_operations(descriptor, ops);
-}
-
-void select_reactor::run(bool block, op_queue<operation>& ops)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
-#if defined(ASIO_HAS_IOCP)
- // Check if the thread is supposed to stop.
- if (stop_thread_)
- return;
-#endif // defined(ASIO_HAS_IOCP)
-
- // Set up the descriptor sets.
- for (int i = 0; i < max_select_ops; ++i)
- fd_sets_[i].reset();
- fd_sets_[read_op].set(interrupter_.read_descriptor());
- socket_type max_fd = 0;
- bool have_work_to_do = !timer_queues_.all_empty();
- for (int i = 0; i < max_select_ops; ++i)
- {
- have_work_to_do = have_work_to_do || !op_queue_[i].empty();
- fd_sets_[i].set(op_queue_[i], ops);
- if (fd_sets_[i].max_descriptor() > max_fd)
- max_fd = fd_sets_[i].max_descriptor();
- }
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // Connection operations on Windows use both except and write fd_sets.
- have_work_to_do = have_work_to_do || !op_queue_[connect_op].empty();
- fd_sets_[write_op].set(op_queue_[connect_op], ops);
- if (fd_sets_[write_op].max_descriptor() > max_fd)
- max_fd = fd_sets_[write_op].max_descriptor();
- fd_sets_[except_op].set(op_queue_[connect_op], ops);
- if (fd_sets_[except_op].max_descriptor() > max_fd)
- max_fd = fd_sets_[except_op].max_descriptor();
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
- // We can return immediately if there's no work to do and the reactor is
- // not supposed to block.
- if (!block && !have_work_to_do)
- return;
-
- // Determine how long to block while waiting for events.
- timeval tv_buf = { 0, 0 };
- timeval* tv = block ? get_timeout(tv_buf) : &tv_buf;
-
- lock.unlock();
-
- // Block on the select call until descriptors become ready.
- asio::error_code ec;
- int retval = socket_ops::select(static_cast<int>(max_fd + 1),
- fd_sets_[read_op], fd_sets_[write_op], fd_sets_[except_op], tv, ec);
-
- // Reset the interrupter.
- if (retval > 0 && fd_sets_[read_op].is_set(interrupter_.read_descriptor()))
- {
- interrupter_.reset();
- --retval;
- }
-
- lock.lock();
-
- // Dispatch all ready operations.
- if (retval > 0)
- {
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // Connection operations on Windows use both except and write fd_sets.
- fd_sets_[except_op].perform(op_queue_[connect_op], ops);
- fd_sets_[write_op].perform(op_queue_[connect_op], ops);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
- // Exception operations must be processed first to ensure that any
- // out-of-band data is read before normal data.
- for (int i = max_select_ops - 1; i >= 0; --i)
- fd_sets_[i].perform(op_queue_[i], ops);
- }
- timer_queues_.get_ready_timers(ops);
-}
-
-void select_reactor::interrupt()
-{
- interrupter_.interrupt();
-}
-
-#if defined(ASIO_HAS_IOCP)
-void select_reactor::run_thread()
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- while (!stop_thread_)
- {
- lock.unlock();
- op_queue<operation> ops;
- run(true, ops);
- io_service_.post_deferred_completions(ops);
- lock.lock();
- }
-}
-
-void select_reactor::call_run_thread(select_reactor* reactor)
-{
- reactor->run_thread();
-}
-#endif // defined(ASIO_HAS_IOCP)
-
-void select_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.insert(&queue);
-}
-
-void select_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.erase(&queue);
-}
-
-timeval* select_reactor::get_timeout(timeval& tv)
-{
- // By default we will wait no longer than 5 minutes. This will ensure that
- // any changes to the system clock are detected after no longer than this.
- long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000);
- tv.tv_sec = usec / 1000000;
- tv.tv_usec = usec % 1000000;
- return &tv;
-}
-
-void select_reactor::cancel_ops_unlocked(socket_type descriptor,
- const asio::error_code& ec)
-{
- bool need_interrupt = false;
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- need_interrupt = op_queue_[i].cancel_operations(
- descriptor, ops, ec) || need_interrupt;
- io_service_.post_deferred_completions(ops);
- if (need_interrupt)
- interrupter_.interrupt();
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
- // || (!defined(ASIO_HAS_DEV_POLL)
- // && !defined(ASIO_HAS_EPOLL)
- // && !defined(ASIO_HAS_KQUEUE))
- // && !defined(ASIO_WINDOWS_RUNTIME))
-
-#endif // ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.hpp
deleted file mode 100644
index 722773f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/impl/service_registry.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_DETAIL_IMPL_SERVICE_REGISTRY_HPP
-#define ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Service, typename Arg>
-service_registry::service_registry(
- asio::io_service& o, Service*, Arg arg)
- : owner_(o),
- first_service_(new Service(o, arg))
-{
- asio::io_service::service::key key;
- init_key(key, Service::id);
- first_service_->key_ = key;
- first_service_->next_ = 0;
-}
-
-template <typename Service>
-Service& service_registry::first_service()
-{
- return *static_cast<Service*>(first_service_);
-}
-
-template <typename Service>
-Service& service_registry::use_service()
-{
- asio::io_service::service::key key;
- init_key(key, Service::id);
- factory_type factory = &service_registry::create<Service>;
- return *static_cast<Service*>(do_use_service(key, factory));
-}
-
-template <typename Service>
-void service_registry::add_service(Service* new_service)
-{
- asio::io_service::service::key key;
- init_key(key, Service::id);
- return do_add_service(key, new_service);
-}
-
-template <typename Service>
-bool service_registry::has_service() const
-{
- asio::io_service::service::key key;
- init_key(key, Service::id);
- return do_has_service(key);
-}
-
-#if !defined(ASIO_NO_TYPEID)
-template <typename Service>
-void service_registry::init_key(asio::io_service::service::key& key,
- const asio::detail::service_id<Service>& /*id*/)
-{
- key.type_info_ = &typeid(typeid_wrapper<Service>);
- key.id_ = 0;
-}
-#endif // !defined(ASIO_NO_TYPEID)
-
-template <typename Service>
-asio::io_service::service* service_registry::create(
- asio::io_service& owner)
-{
- return new Service(owner);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.ipp
deleted file mode 100644
index b5e66dc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/service_registry.ipp
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// detail/impl/service_registry.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_SERVICE_REGISTRY_IPP
-#define ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <vector>
-#include "asio/detail/service_registry.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-service_registry::~service_registry()
-{
- // Shutdown all services. This must be done in a separate loop before the
- // services are destroyed since the destructors of user-defined handler
- // objects may try to access other service objects.
- asio::io_service::service* service = first_service_;
- while (service)
- {
- service->shutdown_service();
- service = service->next_;
- }
-
- // Destroy all services.
- while (first_service_)
- {
- asio::io_service::service* next_service = first_service_->next_;
- destroy(first_service_);
- first_service_ = next_service;
- }
-}
-
-void service_registry::notify_fork(asio::io_service::fork_event fork_ev)
-{
- // Make a copy of all of the services while holding the lock. We don't want
- // to hold the lock while calling into each service, as it may try to call
- // back into this class.
- std::vector<asio::io_service::service*> services;
- {
- asio::detail::mutex::scoped_lock lock(mutex_);
- asio::io_service::service* service = first_service_;
- while (service)
- {
- services.push_back(service);
- service = service->next_;
- }
- }
-
- // If processing the fork_prepare event, we want to go in reverse order of
- // service registration, which happens to be the existing order of the
- // services in the vector. For the other events we want to go in the other
- // direction.
- std::size_t num_services = services.size();
- if (fork_ev == asio::io_service::fork_prepare)
- for (std::size_t i = 0; i < num_services; ++i)
- services[i]->fork_service(fork_ev);
- else
- for (std::size_t i = num_services; i > 0; --i)
- services[i - 1]->fork_service(fork_ev);
-}
-
-void service_registry::init_key(asio::io_service::service::key& key,
- const asio::io_service::id& id)
-{
- key.type_info_ = 0;
- key.id_ = &id;
-}
-
-bool service_registry::keys_match(
- const asio::io_service::service::key& key1,
- const asio::io_service::service::key& key2)
-{
- if (key1.id_ && key2.id_)
- if (key1.id_ == key2.id_)
- return true;
- if (key1.type_info_ && key2.type_info_)
- if (*key1.type_info_ == *key2.type_info_)
- return true;
- return false;
-}
-
-void service_registry::destroy(asio::io_service::service* service)
-{
- delete service;
-}
-
-asio::io_service::service* service_registry::do_use_service(
- const asio::io_service::service::key& key,
- factory_type factory)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- // First see if there is an existing service object with the given key.
- asio::io_service::service* service = first_service_;
- while (service)
- {
- if (keys_match(service->key_, key))
- return service;
- service = service->next_;
- }
-
- // Create a new service object. The service registry's mutex is not locked
- // at this time to allow for nested calls into this function from the new
- // service's constructor.
- lock.unlock();
- auto_service_ptr new_service = { factory(owner_) };
- new_service.ptr_->key_ = key;
- lock.lock();
-
- // Check that nobody else created another service object of the same type
- // while the lock was released.
- service = first_service_;
- while (service)
- {
- if (keys_match(service->key_, key))
- return service;
- service = service->next_;
- }
-
- // Service was successfully initialised, pass ownership to registry.
- new_service.ptr_->next_ = first_service_;
- first_service_ = new_service.ptr_;
- new_service.ptr_ = 0;
- return first_service_;
-}
-
-void service_registry::do_add_service(
- const asio::io_service::service::key& key,
- asio::io_service::service* new_service)
-{
- if (&owner_ != &new_service->get_io_service())
- asio::detail::throw_exception(invalid_service_owner());
-
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- // Check if there is an existing service object with the given key.
- asio::io_service::service* service = first_service_;
- while (service)
- {
- if (keys_match(service->key_, key))
- asio::detail::throw_exception(service_already_exists());
- service = service->next_;
- }
-
- // Take ownership of the service object.
- new_service->key_ = key;
- new_service->next_ = first_service_;
- first_service_ = new_service;
-}
-
-bool service_registry::do_has_service(
- const asio::io_service::service::key& key) const
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- asio::io_service::service* service = first_service_;
- while (service)
- {
- if (keys_match(service->key_, key))
- return true;
- service = service->next_;
- }
-
- return false;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/signal_set_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/signal_set_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/signal_set_service.ipp
deleted file mode 100644
index 2429b4d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/signal_set_service.ipp
+++ /dev/null
@@ -1,647 +0,0 @@
-//
-// detail/impl/signal_set_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cstring>
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/signal_blocker.hpp"
-#include "asio/detail/signal_set_service.hpp"
-#include "asio/detail/static_mutex.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct signal_state
-{
- // Mutex used for protecting global state.
- static_mutex mutex_;
-
- // The read end of the pipe used for signal notifications.
- int read_descriptor_;
-
- // The write end of the pipe used for signal notifications.
- int write_descriptor_;
-
- // Whether the signal state has been prepared for a fork.
- bool fork_prepared_;
-
- // The head of a linked list of all signal_set_service instances.
- class signal_set_service* service_list_;
-
- // A count of the number of objects that are registered for each signal.
- std::size_t registration_count_[max_signal_number];
-};
-
-signal_state* get_signal_state()
-{
- static signal_state state = {
- ASIO_STATIC_MUTEX_INIT, -1, -1, false, 0, { 0 } };
- return &state;
-}
-
-void asio_signal_handler(int signal_number)
-{
-#if defined(ASIO_WINDOWS) \
- || defined(ASIO_WINDOWS_RUNTIME) \
- || defined(__CYGWIN__)
- signal_set_service::deliver_signal(signal_number);
-#else // defined(ASIO_WINDOWS)
- // || defined(ASIO_WINDOWS_RUNTIME)
- // || defined(__CYGWIN__)
- int saved_errno = errno;
- signal_state* state = get_signal_state();
- signed_size_type result = ::write(state->write_descriptor_,
- &signal_number, sizeof(signal_number));
- (void)result;
- errno = saved_errno;
-#endif // defined(ASIO_WINDOWS)
- // || defined(ASIO_WINDOWS_RUNTIME)
- // || defined(__CYGWIN__)
-
-#if defined(ASIO_HAS_SIGNAL) && !defined(ASIO_HAS_SIGACTION)
- ::signal(signal_number, asio_signal_handler);
-#endif // defined(ASIO_HAS_SIGNAL) && !defined(ASIO_HAS_SIGACTION)
-}
-
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-class signal_set_service::pipe_read_op : public reactor_op
-{
-public:
- pipe_read_op()
- : reactor_op(&pipe_read_op::do_perform, pipe_read_op::do_complete)
- {
- }
-
- static bool do_perform(reactor_op*)
- {
- signal_state* state = get_signal_state();
-
- int fd = state->read_descriptor_;
- int signal_number = 0;
- while (::read(fd, &signal_number, sizeof(int)) == sizeof(int))
- if (signal_number >= 0 && signal_number < max_signal_number)
- signal_set_service::deliver_signal(signal_number);
-
- return false;
- }
-
- static void do_complete(io_service_impl* /*owner*/, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- pipe_read_op* o(static_cast<pipe_read_op*>(base));
- delete o;
- }
-};
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
-signal_set_service::signal_set_service(
- asio::io_service& io_service)
- : io_service_(asio::use_service<io_service_impl>(io_service)),
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- reactor_(asio::use_service<reactor>(io_service)),
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
- next_(0),
- prev_(0)
-{
- get_signal_state()->mutex_.init();
-
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- reactor_.init_task();
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
- for (int i = 0; i < max_signal_number; ++i)
- registrations_[i] = 0;
-
- add_service(this);
-}
-
-signal_set_service::~signal_set_service()
-{
- remove_service(this);
-}
-
-void signal_set_service::shutdown_service()
-{
- remove_service(this);
-
- op_queue<operation> ops;
-
- for (int i = 0; i < max_signal_number; ++i)
- {
- registration* reg = registrations_[i];
- while (reg)
- {
- ops.push(*reg->queue_);
- reg = reg->next_in_table_;
- }
- }
-
- io_service_.abandon_operations(ops);
-}
-
-void signal_set_service::fork_service(
- asio::io_service::fork_event fork_ev)
-{
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- switch (fork_ev)
- {
- case asio::io_service::fork_prepare:
- {
- int read_descriptor = state->read_descriptor_;
- state->fork_prepared_ = true;
- lock.unlock();
- reactor_.deregister_internal_descriptor(read_descriptor, reactor_data_);
- }
- break;
- case asio::io_service::fork_parent:
- if (state->fork_prepared_)
- {
- int read_descriptor = state->read_descriptor_;
- state->fork_prepared_ = false;
- lock.unlock();
- reactor_.register_internal_descriptor(reactor::read_op,
- read_descriptor, reactor_data_, new pipe_read_op);
- }
- break;
- case asio::io_service::fork_child:
- if (state->fork_prepared_)
- {
- asio::detail::signal_blocker blocker;
- close_descriptors();
- open_descriptors();
- int read_descriptor = state->read_descriptor_;
- state->fork_prepared_ = false;
- lock.unlock();
- reactor_.register_internal_descriptor(reactor::read_op,
- read_descriptor, reactor_data_, new pipe_read_op);
- }
- break;
- default:
- break;
- }
-#else // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
- (void)fork_ev;
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-}
-
-void signal_set_service::construct(
- signal_set_service::implementation_type& impl)
-{
- impl.signals_ = 0;
-}
-
-void signal_set_service::destroy(
- signal_set_service::implementation_type& impl)
-{
- asio::error_code ignored_ec;
- clear(impl, ignored_ec);
- cancel(impl, ignored_ec);
-}
-
-asio::error_code signal_set_service::add(
- signal_set_service::implementation_type& impl,
- int signal_number, asio::error_code& ec)
-{
- // Check that the signal number is valid.
- if (signal_number < 0 || signal_number > max_signal_number)
- {
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- // Find the appropriate place to insert the registration.
- registration** insertion_point = &impl.signals_;
- registration* next = impl.signals_;
- while (next && next->signal_number_ < signal_number)
- {
- insertion_point = &next->next_in_set_;
- next = next->next_in_set_;
- }
-
- // Only do something if the signal is not already registered.
- if (next == 0 || next->signal_number_ != signal_number)
- {
- registration* new_registration = new registration;
-
-#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
- // Register for the signal if we're the first.
- if (state->registration_count_[signal_number] == 0)
- {
-# if defined(ASIO_HAS_SIGACTION)
- using namespace std; // For memset.
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa));
- sa.sa_handler = asio_signal_handler;
- sigfillset(&sa.sa_mask);
- if (::sigaction(signal_number, &sa, 0) == -1)
-# else // defined(ASIO_HAS_SIGACTION)
- if (::signal(signal_number, asio_signal_handler) == SIG_ERR)
-# endif // defined(ASIO_HAS_SIGACTION)
- {
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error::invalid_argument;
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error_code(errno,
- asio::error::get_system_category());
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- delete new_registration;
- return ec;
- }
- }
-#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-
- // Record the new registration in the set.
- new_registration->signal_number_ = signal_number;
- new_registration->queue_ = &impl.queue_;
- new_registration->next_in_set_ = next;
- *insertion_point = new_registration;
-
- // Insert registration into the registration table.
- new_registration->next_in_table_ = registrations_[signal_number];
- if (registrations_[signal_number])
- registrations_[signal_number]->prev_in_table_ = new_registration;
- registrations_[signal_number] = new_registration;
-
- ++state->registration_count_[signal_number];
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code signal_set_service::remove(
- signal_set_service::implementation_type& impl,
- int signal_number, asio::error_code& ec)
-{
- // Check that the signal number is valid.
- if (signal_number < 0 || signal_number > max_signal_number)
- {
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- // Find the signal number in the list of registrations.
- registration** deletion_point = &impl.signals_;
- registration* reg = impl.signals_;
- while (reg && reg->signal_number_ < signal_number)
- {
- deletion_point = ®->next_in_set_;
- reg = reg->next_in_set_;
- }
-
- if (reg != 0 && reg->signal_number_ == signal_number)
- {
-#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
- // Set signal handler back to the default if we're the last.
- if (state->registration_count_[signal_number] == 1)
- {
-# if defined(ASIO_HAS_SIGACTION)
- using namespace std; // For memset.
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa));
- sa.sa_handler = SIG_DFL;
- if (::sigaction(signal_number, &sa, 0) == -1)
-# else // defined(ASIO_HAS_SIGACTION)
- if (::signal(signal_number, SIG_DFL) == SIG_ERR)
-# endif // defined(ASIO_HAS_SIGACTION)
- {
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error::invalid_argument;
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error_code(errno,
- asio::error::get_system_category());
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- return ec;
- }
- }
-#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-
- // Remove the registration from the set.
- *deletion_point = reg->next_in_set_;
-
- // Remove the registration from the registration table.
- if (registrations_[signal_number] == reg)
- registrations_[signal_number] = reg->next_in_table_;
- if (reg->prev_in_table_)
- reg->prev_in_table_->next_in_table_ = reg->next_in_table_;
- if (reg->next_in_table_)
- reg->next_in_table_->prev_in_table_ = reg->prev_in_table_;
-
- --state->registration_count_[signal_number];
-
- delete reg;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code signal_set_service::clear(
- signal_set_service::implementation_type& impl,
- asio::error_code& ec)
-{
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- while (registration* reg = impl.signals_)
- {
-#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
- // Set signal handler back to the default if we're the last.
- if (state->registration_count_[reg->signal_number_] == 1)
- {
-# if defined(ASIO_HAS_SIGACTION)
- using namespace std; // For memset.
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa));
- sa.sa_handler = SIG_DFL;
- if (::sigaction(reg->signal_number_, &sa, 0) == -1)
-# else // defined(ASIO_HAS_SIGACTION)
- if (::signal(reg->signal_number_, SIG_DFL) == SIG_ERR)
-# endif // defined(ASIO_HAS_SIGACTION)
- {
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error::invalid_argument;
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- ec = asio::error_code(errno,
- asio::error::get_system_category());
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- return ec;
- }
- }
-#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-
- // Remove the registration from the registration table.
- if (registrations_[reg->signal_number_] == reg)
- registrations_[reg->signal_number_] = reg->next_in_table_;
- if (reg->prev_in_table_)
- reg->prev_in_table_->next_in_table_ = reg->next_in_table_;
- if (reg->next_in_table_)
- reg->next_in_table_->prev_in_table_ = reg->prev_in_table_;
-
- --state->registration_count_[reg->signal_number_];
-
- impl.signals_ = reg->next_in_set_;
- delete reg;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code signal_set_service::cancel(
- signal_set_service::implementation_type& impl,
- asio::error_code& ec)
-{
- ASIO_HANDLER_OPERATION(("signal_set", &impl, "cancel"));
-
- op_queue<operation> ops;
- {
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- while (signal_op* op = impl.queue_.front())
- {
- op->ec_ = asio::error::operation_aborted;
- impl.queue_.pop();
- ops.push(op);
- }
- }
-
- io_service_.post_deferred_completions(ops);
-
- ec = asio::error_code();
- return ec;
-}
-
-void signal_set_service::deliver_signal(int signal_number)
-{
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- signal_set_service* service = state->service_list_;
- while (service)
- {
- op_queue<operation> ops;
-
- registration* reg = service->registrations_[signal_number];
- while (reg)
- {
- if (reg->queue_->empty())
- {
- ++reg->undelivered_;
- }
- else
- {
- while (signal_op* op = reg->queue_->front())
- {
- op->signal_number_ = signal_number;
- reg->queue_->pop();
- ops.push(op);
- }
- }
-
- reg = reg->next_in_table_;
- }
-
- service->io_service_.post_deferred_completions(ops);
-
- service = service->next_;
- }
-}
-
-void signal_set_service::add_service(signal_set_service* service)
-{
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
- // If this is the first service to be created, open a new pipe.
- if (state->service_list_ == 0)
- open_descriptors();
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
- // Insert service into linked list of all services.
- service->next_ = state->service_list_;
- service->prev_ = 0;
- if (state->service_list_)
- state->service_list_->prev_ = service;
- state->service_list_ = service;
-
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- // Register for pipe readiness notifications.
- int read_descriptor = state->read_descriptor_;
- lock.unlock();
- service->reactor_.register_internal_descriptor(reactor::read_op,
- read_descriptor, service->reactor_data_, new pipe_read_op);
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-}
-
-void signal_set_service::remove_service(signal_set_service* service)
-{
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- if (service->next_ || service->prev_ || state->service_list_ == service)
- {
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- // Disable the pipe readiness notifications.
- int read_descriptor = state->read_descriptor_;
- lock.unlock();
- service->reactor_.deregister_descriptor(
- read_descriptor, service->reactor_data_, false);
- lock.lock();
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
- // Remove service from linked list of all services.
- if (state->service_list_ == service)
- state->service_list_ = service->next_;
- if (service->prev_)
- service->prev_->next_ = service->next_;
- if (service->next_)
- service->next_->prev_= service->prev_;
- service->next_ = 0;
- service->prev_ = 0;
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
- // If this is the last service to be removed, close the pipe.
- if (state->service_list_ == 0)
- close_descriptors();
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
- }
-}
-
-void signal_set_service::open_descriptors()
-{
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- signal_state* state = get_signal_state();
-
- int pipe_fds[2];
- if (::pipe(pipe_fds) == 0)
- {
- state->read_descriptor_ = pipe_fds[0];
- ::fcntl(state->read_descriptor_, F_SETFL, O_NONBLOCK);
-
- state->write_descriptor_ = pipe_fds[1];
- ::fcntl(state->write_descriptor_, F_SETFL, O_NONBLOCK);
-
-#if defined(FD_CLOEXEC)
- ::fcntl(state->read_descriptor_, F_SETFD, FD_CLOEXEC);
- ::fcntl(state->write_descriptor_, F_SETFD, FD_CLOEXEC);
-#endif // defined(FD_CLOEXEC)
- }
- else
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "signal_set_service pipe");
- }
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-}
-
-void signal_set_service::close_descriptors()
-{
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- signal_state* state = get_signal_state();
-
- if (state->read_descriptor_ != -1)
- ::close(state->read_descriptor_);
- state->read_descriptor_ = -1;
-
- if (state->write_descriptor_ != -1)
- ::close(state->write_descriptor_);
- state->write_descriptor_ = -1;
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-}
-
-void signal_set_service::start_wait_op(
- signal_set_service::implementation_type& impl, signal_op* op)
-{
- io_service_.work_started();
-
- signal_state* state = get_signal_state();
- static_mutex::scoped_lock lock(state->mutex_);
-
- registration* reg = impl.signals_;
- while (reg)
- {
- if (reg->undelivered_ > 0)
- {
- --reg->undelivered_;
- op->signal_number_ = reg->signal_number_;
- io_service_.post_deferred_completion(op);
- return;
- }
-
- reg = reg->next_in_set_;
- }
-
- impl.queue_.push(op);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[33/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_stream_socket.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_stream_socket.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_stream_socket.hpp
deleted file mode 100644
index f2d1ccf..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_stream_socket.hpp
+++ /dev/null
@@ -1,852 +0,0 @@
-//
-// basic_stream_socket.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_BASIC_STREAM_SOCKET_HPP
-#define ASIO_BASIC_STREAM_SOCKET_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 "asio/async_result.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/stream_socket_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides stream-oriented socket functionality.
-/**
- * The basic_stream_socket class template provides asynchronous and blocking
- * stream-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Protocol,
- typename StreamSocketService = stream_socket_service<Protocol> >
-class basic_stream_socket
- : public basic_socket<Protocol, StreamSocketService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename StreamSocketService::native_handle_type native_type;
-
- /// The native representation of a socket.
- typedef typename StreamSocketService::native_handle_type native_handle_type;
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- /// Construct a basic_stream_socket without opening it.
- /**
- * This constructor creates a stream socket without opening it. The socket
- * needs to be opened and then connected or accepted before data can be sent
- * or received on it.
- *
- * @param io_service The io_service object that the stream socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- */
- explicit basic_stream_socket(asio::io_service& io_service)
- : basic_socket<Protocol, StreamSocketService>(io_service)
- {
- }
-
- /// Construct and open a basic_stream_socket.
- /**
- * This constructor creates and opens a stream socket. The socket needs to be
- * connected or accepted before data can be sent or received on it.
- *
- * @param io_service The io_service object that the stream socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_stream_socket(asio::io_service& io_service,
- const protocol_type& protocol)
- : basic_socket<Protocol, StreamSocketService>(io_service, protocol)
- {
- }
-
- /// Construct a basic_stream_socket, opening it and binding it to the given
- /// local endpoint.
- /**
- * This constructor creates a stream socket and automatically opens it bound
- * to the specified endpoint on the local machine. The protocol used is the
- * protocol associated with the given endpoint.
- *
- * @param io_service The io_service object that the stream socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- *
- * @param endpoint An endpoint on the local machine to which the stream
- * socket will be bound.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_stream_socket(asio::io_service& io_service,
- const endpoint_type& endpoint)
- : basic_socket<Protocol, StreamSocketService>(io_service, endpoint)
- {
- }
-
- /// Construct a basic_stream_socket on an existing native socket.
- /**
- * This constructor creates a stream socket object to hold an existing native
- * socket.
- *
- * @param io_service The io_service object that the stream socket will use to
- * dispatch handlers for any asynchronous operations performed on the socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @param native_socket The new underlying socket implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_stream_socket(asio::io_service& io_service,
- const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, StreamSocketService>(
- io_service, protocol, native_socket)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_stream_socket from another.
- /**
- * This constructor moves a stream socket from one object to another.
- *
- * @param other The other basic_stream_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_socket(io_service&) constructor.
- */
- basic_stream_socket(basic_stream_socket&& other)
- : basic_socket<Protocol, StreamSocketService>(
- ASIO_MOVE_CAST(basic_stream_socket)(other))
- {
- }
-
- /// Move-assign a basic_stream_socket from another.
- /**
- * This assignment operator moves a stream socket from one object to another.
- *
- * @param other The other basic_stream_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_socket(io_service&) constructor.
- */
- basic_stream_socket& operator=(basic_stream_socket&& other)
- {
- basic_socket<Protocol, StreamSocketService>::operator=(
- ASIO_MOVE_CAST(basic_stream_socket)(other));
- return *this;
- }
-
- /// Move-construct a basic_stream_socket from a socket of another protocol
- /// type.
- /**
- * This constructor moves a stream socket from one object to another.
- *
- * @param other The other basic_stream_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename StreamSocketService1>
- basic_stream_socket(
- basic_stream_socket<Protocol1, StreamSocketService1>&& other,
- typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, StreamSocketService>(
- ASIO_MOVE_CAST2(basic_stream_socket<
- Protocol1, StreamSocketService1>)(other))
- {
- }
-
- /// Move-assign a basic_stream_socket from a socket of another protocol type.
- /**
- * This assignment operator moves a stream socket from one object to another.
- *
- * @param other The other basic_stream_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename StreamSocketService1>
- typename enable_if<is_convertible<Protocol1, Protocol>::value,
- basic_stream_socket>::type& operator=(
- basic_stream_socket<Protocol1, StreamSocketService1>&& other)
- {
- basic_socket<Protocol, StreamSocketService>::operator=(
- ASIO_MOVE_CAST2(basic_stream_socket<
- Protocol1, StreamSocketService1>)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Send some data on the socket.
- /**
- * This function is used to send data on the stream socket. The function
- * call will block until one or more bytes of the data has been sent
- * successfully, or an until error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The send 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.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.send(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on the socket.
- /**
- * This function is used to send data on the stream socket. The function
- * call will block until one or more bytes of the data has been sent
- * successfully, or an until error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The send 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.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.send(asio::buffer(data, size), 0);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on the socket.
- /**
- * This function is used to send data on the stream socket. The function
- * call will block until one or more bytes of the data has been sent
- * successfully, or an until error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes sent. Returns 0 if an error occurred.
- *
- * @note The send 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 send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send data on the stream socket.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks 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 send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The send 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 asynchronous operation completes.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_send(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(
- this->get_implementation(), buffers, 0,
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send data on the stream socket.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks is retained by the caller, which must guarantee that they
- * remain valid until the handler is called.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The send 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 asynchronous operation completes.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_send(asio::buffer(data, size), 0, handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(
- this->get_implementation(), buffers, flags,
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Receive some data on the socket.
- /**
- * This function is used to receive data on the stream socket. The function
- * call will block until one or more bytes of data has been received
- * successfully, or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @note The receive operation may not receive 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.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.receive(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on the socket.
- /**
- * This function is used to receive data on the stream socket. The function
- * call will block until one or more bytes of data has been received
- * successfully, or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @note The receive operation may not receive 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.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.receive(asio::buffer(data, size), 0);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the stream socket. The function
- * call will block until one or more bytes of data has been received
- * successfully, or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes received. Returns 0 if an error occurred.
- *
- * @note The receive operation may not receive 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 receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().receive(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive data from the stream
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The receive operation may not receive 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 received before the asynchronous
- * operation completes.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.async_receive(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive data from the stream
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The receive operation may not receive 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 received before the asynchronous
- * operation completes.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.async_receive(asio::buffer(data, size), 0, handler);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, flags, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Write some data to the socket.
- /**
- * This function is used to write data to the stream socket. The function call
- * will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the socket.
- *
- * @returns The number of bytes written.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.write_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "write_some");
- return s;
- }
-
- /// Write some data to the socket.
- /**
- * This function is used to write data to the stream socket. The function call
- * will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the socket.
- *
- * @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 this->get_service().send(this->get_implementation(), buffers, 0, ec);
- }
-
- /// Start an asynchronous write.
- /**
- * This function is used to asynchronously write data to the stream socket.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be written to the socket.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The write 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 asynchronous operation completes.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_write_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Read some data from the socket.
- /**
- * This function is used to read data from the stream socket. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be read.
- *
- * @returns The number of bytes read.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.read_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "read_some");
- return s;
- }
-
- /// Read some data from the socket.
- /**
- * This function is used to read data from the stream socket. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more 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 this->get_service().receive(
- this->get_implementation(), buffers, 0, ec);
- }
-
- /// Start an asynchronous read.
- /**
- * This function is used to asynchronously read data from the stream socket.
- * The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be read.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The read 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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_read_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_STREAM_SOCKET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf.hpp
deleted file mode 100644
index bacc485..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf.hpp
+++ /dev/null
@@ -1,369 +0,0 @@
-//
-// basic_streambuf.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_BASIC_STREAMBUF_HPP
-#define ASIO_BASIC_STREAMBUF_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_NO_IOSTREAM)
-
-#include <algorithm>
-#include <cstring>
-#include <stdexcept>
-#include <streambuf>
-#include <vector>
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Automatically resizable buffer class based on std::streambuf.
-/**
- * The @c basic_streambuf class is derived from @c std::streambuf to associate
- * the streambuf's input and output sequences with one or more character
- * arrays. These character arrays are internal to the @c basic_streambuf
- * object, but direct access to the array elements is provided to permit them
- * to be used efficiently with I/O operations. Characters written to the output
- * sequence of a @c basic_streambuf object are appended to the input sequence
- * of the same object.
- *
- * The @c basic_streambuf class's public interface is intended to permit the
- * following implementation strategies:
- *
- * @li A single contiguous character array, which is reallocated as necessary
- * to accommodate changes in the size of the character sequence. This is the
- * implementation approach currently used in Asio.
- *
- * @li A sequence of one or more character arrays, where each array is of the
- * same size. Additional character array objects are appended to the sequence
- * to accommodate changes in the size of the character sequence.
- *
- * @li A sequence of one or more character arrays of varying sizes. Additional
- * character array objects are appended to the sequence to accommodate changes
- * in the size of the character sequence.
- *
- * The constructor for basic_streambuf accepts a @c size_t argument specifying
- * the maximum of the sum of the sizes of the input sequence and output
- * sequence. During the lifetime of the @c basic_streambuf object, the following
- * invariant holds:
- * @code size() <= max_size()@endcode
- * Any member function that would, if successful, cause the invariant to be
- * violated shall throw an exception of class @c std::length_error.
- *
- * The constructor for @c basic_streambuf takes an Allocator argument. A copy
- * of this argument is used for any memory allocation performed, by the
- * constructor and by all member functions, during the lifetime of each @c
- * basic_streambuf object.
- *
- * @par Examples
- * Writing directly from an streambuf to a socket:
- * @code
- * asio::streambuf b;
- * std::ostream os(&b);
- * os << "Hello, World!\n";
- *
- * // try sending some data in input sequence
- * size_t n = sock.send(b.data());
- *
- * b.consume(n); // sent data is removed from input sequence
- * @endcode
- *
- * Reading from a socket directly into a streambuf:
- * @code
- * asio::streambuf b;
- *
- * // reserve 512 bytes in output sequence
- * asio::streambuf::mutable_buffers_type bufs = b.prepare(512);
- *
- * size_t n = sock.receive(bufs);
- *
- * // received data is "committed" from output sequence to input sequence
- * b.commit(n);
- *
- * std::istream is(&b);
- * std::string s;
- * is >> s;
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-template <typename Allocator = std::allocator<char> >
-#else
-template <typename Allocator>
-#endif
-class basic_streambuf
- : public std::streambuf,
- private noncopyable
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The type used to represent the input sequence as a list of buffers.
- typedef implementation_defined const_buffers_type;
-
- /// The type used to represent the output sequence as a list of buffers.
- typedef implementation_defined mutable_buffers_type;
-#else
- typedef asio::const_buffers_1 const_buffers_type;
- typedef asio::mutable_buffers_1 mutable_buffers_type;
-#endif
-
- /// Construct a basic_streambuf object.
- /**
- * Constructs a streambuf with the specified maximum size. The initial size
- * of the streambuf's input sequence is 0.
- */
- explicit basic_streambuf(
- std::size_t maximum_size = (std::numeric_limits<std::size_t>::max)(),
- const Allocator& allocator = Allocator())
- : max_size_(maximum_size),
- buffer_(allocator)
- {
- std::size_t pend = (std::min<std::size_t>)(max_size_, buffer_delta);
- buffer_.resize((std::max<std::size_t>)(pend, 1));
- setg(&buffer_[0], &buffer_[0], &buffer_[0]);
- setp(&buffer_[0], &buffer_[0] + pend);
- }
-
- /// Get the size of the input sequence.
- /**
- * @returns The size of the input sequence. The value is equal to that
- * calculated for @c s in the following code:
- * @code
- * size_t s = 0;
- * const_buffers_type bufs = data();
- * const_buffers_type::const_iterator i = bufs.begin();
- * while (i != bufs.end())
- * {
- * const_buffer buf(*i++);
- * s += buffer_size(buf);
- * }
- * @endcode
- */
- std::size_t size() const
- {
- return pptr() - gptr();
- }
-
- /// Get the maximum size of the basic_streambuf.
- /**
- * @returns The allowed maximum of the sum of the sizes of the input sequence
- * and output sequence.
- */
- std::size_t max_size() const
- {
- return max_size_;
- }
-
- /// Get a list of buffers that represents the input sequence.
- /**
- * @returns An object of type @c const_buffers_type that satisfies
- * ConstBufferSequence requirements, representing all character arrays in the
- * input sequence.
- *
- * @note The returned object is invalidated by any @c basic_streambuf member
- * function that modifies the input sequence or output sequence.
- */
- const_buffers_type data() const
- {
- return asio::buffer(asio::const_buffer(gptr(),
- (pptr() - gptr()) * sizeof(char_type)));
- }
-
- /// Get a list of buffers that represents the output sequence, with the given
- /// size.
- /**
- * Ensures that the output sequence can accommodate @c n characters,
- * reallocating character array objects as necessary.
- *
- * @returns An object of type @c mutable_buffers_type that satisfies
- * MutableBufferSequence requirements, representing character array objects
- * at the start of the output sequence such that the sum of the buffer sizes
- * is @c n.
- *
- * @throws std::length_error If <tt>size() + n > max_size()</tt>.
- *
- * @note The returned object is invalidated by any @c basic_streambuf member
- * function that modifies the input sequence or output sequence.
- */
- mutable_buffers_type prepare(std::size_t n)
- {
- reserve(n);
- return asio::buffer(asio::mutable_buffer(
- pptr(), n * sizeof(char_type)));
- }
-
- /// Move characters from the output sequence to the input sequence.
- /**
- * Appends @c n characters from the start of the output sequence to the input
- * sequence. The beginning of the output sequence is advanced by @c n
- * characters.
- *
- * Requires a preceding call <tt>prepare(x)</tt> where <tt>x >= n</tt>, and
- * no intervening operations that modify the input or output sequence.
- *
- * @note If @c n is greater than the size of the output sequence, the entire
- * output sequence is moved to the input sequence and no error is issued.
- */
- void commit(std::size_t n)
- {
- if (pptr() + n > epptr())
- n = epptr() - pptr();
- pbump(static_cast<int>(n));
- setg(eback(), gptr(), pptr());
- }
-
- /// Remove characters from the input sequence.
- /**
- * Removes @c n characters from the beginning of the input sequence.
- *
- * @note If @c n is greater than the size of the input sequence, the entire
- * input sequence is consumed and no error is issued.
- */
- void consume(std::size_t n)
- {
- if (egptr() < pptr())
- setg(&buffer_[0], gptr(), pptr());
- if (gptr() + n > pptr())
- n = pptr() - gptr();
- gbump(static_cast<int>(n));
- }
-
-protected:
- enum { buffer_delta = 128 };
-
- /// Override std::streambuf behaviour.
- /**
- * Behaves according to the specification of @c std::streambuf::underflow().
- */
- int_type underflow()
- {
- if (gptr() < pptr())
- {
- setg(&buffer_[0], gptr(), pptr());
- return traits_type::to_int_type(*gptr());
- }
- else
- {
- return traits_type::eof();
- }
- }
-
- /// Override std::streambuf behaviour.
- /**
- * Behaves according to the specification of @c std::streambuf::overflow(),
- * with the specialisation that @c std::length_error is thrown if appending
- * the character to the input sequence would require the condition
- * <tt>size() > max_size()</tt> to be true.
- */
- int_type overflow(int_type c)
- {
- if (!traits_type::eq_int_type(c, traits_type::eof()))
- {
- if (pptr() == epptr())
- {
- std::size_t buffer_size = pptr() - gptr();
- if (buffer_size < max_size_ && max_size_ - buffer_size < buffer_delta)
- {
- reserve(max_size_ - buffer_size);
- }
- else
- {
- reserve(buffer_delta);
- }
- }
-
- *pptr() = traits_type::to_char_type(c);
- pbump(1);
- return c;
- }
-
- return traits_type::not_eof(c);
- }
-
- void reserve(std::size_t n)
- {
- // Get current stream positions as offsets.
- std::size_t gnext = gptr() - &buffer_[0];
- std::size_t pnext = pptr() - &buffer_[0];
- std::size_t pend = epptr() - &buffer_[0];
-
- // Check if there is already enough space in the put area.
- if (n <= pend - pnext)
- {
- return;
- }
-
- // Shift existing contents of get area to start of buffer.
- if (gnext > 0)
- {
- pnext -= gnext;
- std::memmove(&buffer_[0], &buffer_[0] + gnext, pnext);
- }
-
- // Ensure buffer is large enough to hold at least the specified size.
- if (n > pend - pnext)
- {
- if (n <= max_size_ && pnext <= max_size_ - n)
- {
- pend = pnext + n;
- buffer_.resize((std::max<std::size_t>)(pend, 1));
- }
- else
- {
- std::length_error ex("asio::streambuf too long");
- asio::detail::throw_exception(ex);
- }
- }
-
- // Update stream positions.
- setg(&buffer_[0], &buffer_[0], &buffer_[0] + pnext);
- setp(&buffer_[0] + pnext, &buffer_[0] + pend);
- }
-
-private:
- std::size_t max_size_;
- std::vector<char_type, Allocator> buffer_;
-
- // Helper function to get the preferred size for reading data.
- friend std::size_t read_size_helper(
- basic_streambuf& sb, std::size_t max_size)
- {
- return std::min<std::size_t>(
- std::max<std::size_t>(512, sb.buffer_.capacity() - sb.size()),
- std::min<std::size_t>(max_size, sb.max_size() - sb.size()));
- }
-};
-
-// Helper function to get the preferred size for reading data. Used for any
-// user-provided specialisations of basic_streambuf.
-template <typename Allocator>
-inline std::size_t read_size_helper(
- basic_streambuf<Allocator>& sb, std::size_t max_size)
-{
- return std::min<std::size_t>(512,
- std::min<std::size_t>(max_size, sb.max_size() - sb.size()));
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_STREAMBUF_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf_fwd.hpp
deleted file mode 100644
index 8fd0ae8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_streambuf_fwd.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// basic_streambuf_fwd.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_BASIC_STREAMBUF_FWD_HPP
-#define ASIO_BASIC_STREAMBUF_FWD_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_NO_IOSTREAM)
-
-#include <memory>
-
-namespace asio {
-
-template <typename Allocator = std::allocator<char> >
-class basic_streambuf;
-
-} // namespace asio
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_STREAMBUF_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_waitable_timer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_waitable_timer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_waitable_timer.hpp
deleted file mode 100644
index c204ae2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_waitable_timer.hpp
+++ /dev/null
@@ -1,519 +0,0 @@
-//
-// basic_waitable_timer.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_BASIC_WAITABLE_TIMER_HPP
-#define ASIO_BASIC_WAITABLE_TIMER_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 "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/wait_traits.hpp"
-#include "asio/waitable_timer_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides waitable timer functionality.
-/**
- * The basic_waitable_timer class template provides the ability to perform a
- * blocking or asynchronous wait for a timer to expire.
- *
- * A waitable timer is always in one of two states: "expired" or "not expired".
- * If the wait() or async_wait() function is called on an expired timer, the
- * wait operation will complete immediately.
- *
- * Most applications will use one of the asio::steady_timer,
- * asio::system_timer or asio::high_resolution_timer typedefs.
- *
- * @note This waitable timer functionality is for use with the C++11 standard
- * library's @c <chrono> facility, or with the Boost.Chrono library.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Examples
- * Performing a blocking wait (C++11):
- * @code
- * // Construct a timer without setting an expiry time.
- * asio::steady_timer timer(io_service);
- *
- * // Set an expiry time relative to now.
- * timer.expires_from_now(std::chrono::seconds(5));
- *
- * // Wait for the timer to expire.
- * timer.wait();
- * @endcode
- *
- * @par
- * Performing an asynchronous wait (C++11):
- * @code
- * void handler(const asio::error_code& error)
- * {
- * if (!error)
- * {
- * // Timer expired.
- * }
- * }
- *
- * ...
- *
- * // Construct a timer with an absolute expiry time.
- * asio::steady_timer timer(io_service,
- * std::chrono::steady_clock::now() + std::chrono::seconds(60));
- *
- * // Start an asynchronous wait.
- * timer.async_wait(handler);
- * @endcode
- *
- * @par Changing an active waitable timer's expiry time
- *
- * Changing the expiry time of a timer while there are pending asynchronous
- * waits causes those wait operations to be cancelled. To ensure that the action
- * associated with the timer is performed only once, use something like this:
- * used:
- *
- * @code
- * void on_some_event()
- * {
- * if (my_timer.expires_from_now(seconds(5)) > 0)
- * {
- * // We managed to cancel the timer. Start new asynchronous wait.
- * my_timer.async_wait(on_timeout);
- * }
- * else
- * {
- * // Too late, timer has already expired!
- * }
- * }
- *
- * void on_timeout(const asio::error_code& e)
- * {
- * if (e != asio::error::operation_aborted)
- * {
- * // Timer was not cancelled, take necessary action.
- * }
- * }
- * @endcode
- *
- * @li The asio::basic_waitable_timer::expires_from_now() function
- * cancels any pending asynchronous waits, and returns the number of
- * asynchronous waits that were cancelled. If it returns 0 then you were too
- * late and the wait handler has already been executed, or will soon be
- * executed. If it returns 1 then the wait handler was successfully cancelled.
- *
- * @li If a wait handler is cancelled, the asio::error_code passed to
- * it contains the value asio::error::operation_aborted.
- */
-template <typename Clock,
- typename WaitTraits = asio::wait_traits<Clock>,
- typename WaitableTimerService = waitable_timer_service<Clock, WaitTraits> >
-class basic_waitable_timer
- : public basic_io_object<WaitableTimerService>
-{
-public:
- /// The clock type.
- typedef Clock clock_type;
-
- /// The duration type of the clock.
- typedef typename clock_type::duration duration;
-
- /// The time point type of the clock.
- typedef typename clock_type::time_point time_point;
-
- /// The wait traits type.
- typedef WaitTraits traits_type;
-
- /// Constructor.
- /**
- * This constructor creates a timer without setting an expiry time. The
- * expires_at() or expires_from_now() functions must be called to set an
- * expiry time before the timer can be waited on.
- *
- * @param io_service The io_service object that the timer will use to dispatch
- * handlers for any asynchronous operations performed on the timer.
- */
- explicit basic_waitable_timer(asio::io_service& io_service)
- : basic_io_object<WaitableTimerService>(io_service)
- {
- }
-
- /// Constructor to set a particular expiry time as an absolute time.
- /**
- * This constructor creates a timer and sets the expiry time.
- *
- * @param io_service The io_service object that the timer will use to dispatch
- * handlers for any asynchronous operations performed on the timer.
- *
- * @param expiry_time The expiry time to be used for the timer, expressed
- * as an absolute time.
- */
- basic_waitable_timer(asio::io_service& io_service,
- const time_point& expiry_time)
- : basic_io_object<WaitableTimerService>(io_service)
- {
- asio::error_code ec;
- this->service.expires_at(this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_at");
- }
-
- /// Constructor to set a particular expiry time relative to now.
- /**
- * This constructor creates a timer and sets the expiry time.
- *
- * @param io_service The io_service object that the timer will use to dispatch
- * handlers for any asynchronous operations performed on the timer.
- *
- * @param expiry_time The expiry time to be used for the timer, relative to
- * now.
- */
- basic_waitable_timer(asio::io_service& io_service,
- const duration& expiry_time)
- : basic_io_object<WaitableTimerService>(io_service)
- {
- asio::error_code ec;
- this->service.expires_from_now(this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_from_now");
- }
-
- /// Cancel any asynchronous operations that are waiting on the timer.
- /**
- * This function forces the completion of any pending asynchronous wait
- * operations against the timer. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when cancel() is called, then the
- * handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel()
- {
- asio::error_code ec;
- std::size_t s = this->service.cancel(this->implementation, ec);
- asio::detail::throw_error(ec, "cancel");
- return s;
- }
-
- /// Cancel any asynchronous operations that are waiting on the timer.
- /**
- * This function forces the completion of any pending asynchronous wait
- * operations against the timer. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @note If the timer has already expired when cancel() is called, then the
- * handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel(asio::error_code& ec)
- {
- return this->service.cancel(this->implementation, ec);
- }
-
- /// Cancels one asynchronous operation that is waiting on the timer.
- /**
- * This function forces the completion of one pending asynchronous wait
- * operation against the timer. Handlers are cancelled in FIFO order. The
- * handler for the cancelled operation will be invoked with the
- * asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @return The number of asynchronous operations that were cancelled. That is,
- * either 0 or 1.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when cancel_one() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel_one()
- {
- asio::error_code ec;
- std::size_t s = this->service.cancel_one(this->implementation, ec);
- asio::detail::throw_error(ec, "cancel_one");
- return s;
- }
-
- /// Cancels one asynchronous operation that is waiting on the timer.
- /**
- * This function forces the completion of one pending asynchronous wait
- * operation against the timer. Handlers are cancelled in FIFO order. The
- * handler for the cancelled operation will be invoked with the
- * asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled. That is,
- * either 0 or 1.
- *
- * @note If the timer has already expired when cancel_one() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel_one(asio::error_code& ec)
- {
- return this->service.cancel_one(this->implementation, ec);
- }
-
- /// Get the timer's expiry time as an absolute time.
- /**
- * This function may be used to obtain the timer's current expiry time.
- * Whether the timer has expired or not does not affect this value.
- */
- time_point expires_at() const
- {
- return this->service.expires_at(this->implementation);
- }
-
- /// Set the timer's expiry time as an absolute time.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when expires_at() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_at(const time_point& expiry_time)
- {
- asio::error_code ec;
- std::size_t s = this->service.expires_at(
- this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_at");
- return s;
- }
-
- /// Set the timer's expiry time as an absolute time.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @note If the timer has already expired when expires_at() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_at(const time_point& expiry_time,
- asio::error_code& ec)
- {
- return this->service.expires_at(this->implementation, expiry_time, ec);
- }
-
- /// Get the timer's expiry time relative to now.
- /**
- * This function may be used to obtain the timer's current expiry time.
- * Whether the timer has expired or not does not affect this value.
- */
- duration expires_from_now() const
- {
- return this->service.expires_from_now(this->implementation);
- }
-
- /// Set the timer's expiry time relative to now.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when expires_from_now() is called,
- * then the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_from_now(const duration& expiry_time)
- {
- asio::error_code ec;
- std::size_t s = this->service.expires_from_now(
- this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_from_now");
- return s;
- }
-
- /// Set the timer's expiry time relative to now.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @note If the timer has already expired when expires_from_now() is called,
- * then the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_from_now(const duration& expiry_time,
- asio::error_code& ec)
- {
- return this->service.expires_from_now(
- this->implementation, expiry_time, ec);
- }
-
- /// Perform a blocking wait on the timer.
- /**
- * This function is used to wait for the timer to expire. This function
- * blocks and does not return until the timer has expired.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void wait()
- {
- asio::error_code ec;
- this->service.wait(this->implementation, ec);
- asio::detail::throw_error(ec, "wait");
- }
-
- /// Perform a blocking wait on the timer.
- /**
- * This function is used to wait for the timer to expire. This function
- * blocks and does not return until the timer has expired.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- void wait(asio::error_code& ec)
- {
- this->service.wait(this->implementation, ec);
- }
-
- /// Start an asynchronous wait on the timer.
- /**
- * This function may be used to initiate an asynchronous wait against the
- * timer. It always returns immediately.
- *
- * For each call to async_wait(), the supplied handler will be called exactly
- * once. The handler will be called when:
- *
- * @li The timer has expired.
- *
- * @li The timer was cancelled, in which case the handler is passed the error
- * code asio::error::operation_aborted.
- *
- * @param handler The handler to be called when the timer expires. Copies
- * will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * const asio::error_code& error // Result of operation.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename WaitHandler>
- ASIO_INITFN_RESULT_TYPE(WaitHandler,
- void (asio::error_code))
- async_wait(ASIO_MOVE_ARG(WaitHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WaitHandler.
- ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
-
- return this->service.async_wait(this->implementation,
- ASIO_MOVE_CAST(WaitHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_WAITABLE_TIMER_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[40/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/CMakeLists.txt
deleted file mode 100644
index 3331935..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/CMakeLists.txt
+++ /dev/null
@@ -1,170 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Delegate some functionality to libhdfs, until libhdfspp is complete.
-set (LIBHDFS_SRC_DIR ../../libhdfs)
-set (LIBHDFS_TESTS_DIR ../../libhdfs-tests)
-set (LIBHDFSPP_SRC_DIR ..)
-set (LIBHDFSPP_LIB_DIR ${LIBHDFSPP_SRC_DIR}/lib)
-set (LIBHDFSPP_BINDING_C ${LIBHDFSPP_LIB_DIR}/bindings/c)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers")
-
-include_directories(
- ${GENERATED_JAVAH}
- ${CMAKE_CURRENT_LIST_DIR}
- ${CMAKE_BINARY_DIR}
- ${JNI_INCLUDE_DIRS}
- ${LIBHDFS_SRC_DIR}/include
- ${LIBHDFS_SRC_DIR}/..
- ${LIBHDFS_SRC_DIR}
- ${OS_DIR}
-)
-add_library(test_common_obj OBJECT mock_connection.cc)
-add_library(test_common $<TARGET_OBJECTS:test_common_obj>)
-
-set(PROTOBUF_IMPORT_DIRS ${PROTO_HADOOP_TEST_DIR})
-
-protobuf_generate_cpp(PROTO_TEST_SRCS PROTO_TEST_HDRS
- ${PROTO_HADOOP_TEST_DIR}/test.proto
- ${PROTO_HADOOP_TEST_DIR}/test_rpc_service.proto
-)
-
-# Shamelessly stolen from
-# http://stackoverflow.com/questions/9303711/how-do-i-make-ctest-run-a-program-with-valgrind-without-dart
-function(add_memcheck_test name binary)
- add_test(${name} ${binary} ${ARGN})
-
- if(NOT MEMORYCHECK_COMMAND MATCHES "MEMORYCHECK_COMMAND-NOTFOUND" AND NOT SKIP_VALGRIND)
- set(memcheck_command "${MEMORYCHECK_COMMAND} ${MEMORYCHECK_COMMAND_OPTIONS}")
- separate_arguments(memcheck_command)
- add_test(memcheck_${name} ${memcheck_command} ./${binary} ${ARGN})
- endif()
-endfunction(add_memcheck_test)
-
-#
-#
-# UNIT TESTS - TEST SELECTED PARTS OF THE LIBRARY
-#
-#
-
-add_executable(uri_test uri_test.cc)
-target_link_libraries(uri_test common gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(uri uri_test)
-
-add_executable(remote_block_reader_test remote_block_reader_test.cc)
-target_link_libraries(remote_block_reader_test test_common reader proto common connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(remote_block_reader remote_block_reader_test)
-
-add_executable(sasl_digest_md5_test sasl_digest_md5_test.cc)
-target_link_libraries(sasl_digest_md5_test common ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(sasl_digest_md5 sasl_digest_md5_test)
-
-add_executable(retry_policy_test retry_policy_test.cc)
-target_link_libraries(retry_policy_test common gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(retry_policy retry_policy_test)
-
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
-add_executable(rpc_engine_test rpc_engine_test.cc ${PROTO_TEST_SRCS} ${PROTO_TEST_HDRS})
-target_link_libraries(rpc_engine_test test_common rpc proto common ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(rpc_engine rpc_engine_test)
-
-add_executable(bad_datanode_test bad_datanode_test.cc)
-target_link_libraries(bad_datanode_test rpc reader proto fs bindings_c rpc proto common reader connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(bad_datanode bad_datanode_test)
-
-add_executable(node_exclusion_test node_exclusion_test.cc)
-target_link_libraries(node_exclusion_test fs gmock_main common ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(node_exclusion node_exclusion_test)
-
-add_executable(configuration_test configuration_test.cc)
-target_link_libraries(configuration_test common gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(configuration configuration_test)
-
-add_executable(hdfs_configuration_test hdfs_configuration_test.cc)
-target_link_libraries(hdfs_configuration_test common gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(hdfs_configuration hdfs_configuration_test)
-
-add_executable(hdfspp_errors_test hdfspp_errors.cc)
-target_link_libraries(hdfspp_errors_test common gmock_main bindings_c fs rpc proto common reader connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(hdfspp_errors hdfspp_errors_test)
-
-add_executable(hdfs_builder_test hdfs_builder_test.cc)
-target_link_libraries(hdfs_builder_test test_common gmock_main bindings_c fs rpc proto common reader connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(hdfs_builder_test hdfs_builder_test)
-
-add_executable(logging_test logging_test.cc)
-target_link_libraries(logging_test common gmock_main bindings_c fs rpc proto common reader connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} gmock_main ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(logging_test logging_test)
-
-add_executable(hdfs_ioservice_test hdfs_ioservice_test.cc)
-target_link_libraries(hdfs_ioservice_test fs gmock_main common ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(hdfs_ioservice hdfs_ioservice_test)
-
-add_executable(user_lock_test user_lock_test.cc)
-target_link_libraries(user_lock_test fs gmock_main common ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(user_lock user_lock_test)
-
-add_executable(hdfs_config_connect_bugs_test hdfs_config_connect_bugs.cc)
-target_link_libraries(hdfs_config_connect_bugs_test common gmock_main bindings_c fs rpc proto common reader connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${SASL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
-add_memcheck_test(hdfs_config_connect_bugs hdfs_config_connect_bugs_test)
-
-
-
-#
-#
-# INTEGRATION TESTS - TESTS THE FULL LIBRARY AGAINST ACTUAL SERVERS
-#
-#
-# This test requires a great deal of Hadoop Java infrastructure to run.
-#
-if(HADOOP_BUILD)
-
-include_directories (
- #TODO: Put this in a variable up top and pull it out here
- ${CMAKE_CURRENT_SOURCE_DIR}/../../libhdfs-tests/
-)
-
-add_library(hdfspp_test_shim_static STATIC hdfs_shim.c libhdfs_wrapper.c libhdfspp_wrapper.cc ${LIBHDFSPP_BINDING_C}/hdfs.cc)
-
-# TODO: get all of the mini dfs library bits here in one place
-# add_library(hdfspp_mini_cluster native_mini_dfs ${JAVA_JVM_LIBRARY} )
-
-#TODO: Link against full library rather than just parts
-
-build_libhdfs_test(libhdfs_threaded hdfspp_test_shim_static expect.c test_libhdfs_threaded.c ${OS_DIR}/thread.c)
-link_libhdfs_test(libhdfs_threaded hdfspp_test_shim_static fs reader rpc proto common connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} native_mini_dfs ${JAVA_JVM_LIBRARY} ${SASL_LIBRARIES} )
-add_libhdfs_test (libhdfs_threaded hdfspp_test_shim_static)
-
-build_libhdfs_test(hdfspp_mini_dfs_smoke hdfspp_test_shim_static ${CMAKE_CURRENT_LIST_DIR}/hdfspp_mini_dfs_smoke.cc)
-link_libhdfs_test (hdfspp_mini_dfs_smoke hdfspp_test_shim_static fs reader rpc proto common connection gmock_main ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} native_mini_dfs ${JAVA_JVM_LIBRARY} ${SASL_LIBRARIES})
-add_libhdfs_test (hdfspp_mini_dfs_smoke hdfspp_test_shim_static)
-
-build_libhdfs_test(libhdfs_mini_stress hdfspp_test_shim_static expect.c test_libhdfs_mini_stress.c ${OS_DIR}/thread.c)
-link_libhdfs_test(libhdfs_mini_stress hdfspp_test_shim_static fs reader rpc proto common connection ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} native_mini_dfs ${JAVA_JVM_LIBRARY} ${SASL_LIBRARIES})
-add_libhdfs_test(libhdfs_mini_stress hdfspp_test_shim_static)
-
-build_libhdfs_test(hdfs_ext hdfspp_test_shim_static ${CMAKE_CURRENT_LIST_DIR}/hdfs_ext_test.cc)
-link_libhdfs_test (hdfs_ext hdfspp_test_shim_static hdfspp_static gmock_main native_mini_dfs ${JAVA_JVM_LIBRARY} ${SASL_LIBRARIES})
-add_libhdfs_test (hdfs_ext hdfspp_test_shim_static)
-
-#build_libhdfs_test(hdfs_config_connect_bugs hdfspp_test_shim_static ${CMAKE_CURRENT_LIST_DIR}/hdfs_config_connect_bugs.cc)
-#link_libhdfs_test (hdfs_config_connect_bugs hdfspp_test_shim_static hdfspp_static gmock_main native_mini_dfs ${JAVA_JVM_LIBRARY} ${SASL_LIBRARIES})
-#add_libhdfs_test (hdfs_config_connect_bugs hdfspp_test_shim_static)
-
-endif(HADOOP_BUILD)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/bad_datanode_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/bad_datanode_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/bad_datanode_test.cc
deleted file mode 100644
index 00bbf3d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/bad_datanode_test.cc
+++ /dev/null
@@ -1,330 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "fs/filesystem.h"
-#include "fs/bad_datanode_tracker.h"
-#include "common/libhdfs_events_impl.h"
-
-#include "common/util.h"
-
-#include <gmock/gmock.h>
-
-using hadoop::common::TokenProto;
-using hadoop::hdfs::DatanodeInfoProto;
-using hadoop::hdfs::DatanodeIDProto;
-using hadoop::hdfs::ExtendedBlockProto;
-using hadoop::hdfs::LocatedBlockProto;
-using hadoop::hdfs::LocatedBlocksProto;
-
-using ::testing::_;
-using ::testing::InvokeArgument;
-using ::testing::Return;
-
-using namespace hdfs;
-
-class MockReader : public BlockReader {
-public:
- MOCK_METHOD2(
- AsyncReadPacket,
- void(const asio::mutable_buffers_1 &,
- const std::function<void(const Status &, size_t transferred)> &));
-
- MOCK_METHOD5(AsyncRequestBlock,
- void(const std::string &client_name,
- const hadoop::hdfs::ExtendedBlockProto *block,
- uint64_t length, uint64_t offset,
- const std::function<void(Status)> &handler));
-
- MOCK_METHOD5(AsyncReadBlock, void(
- const std::string & client_name,
- const hadoop::hdfs::LocatedBlockProto &block,
- size_t offset,
- const MutableBuffers &buffers,
- const std::function<void(const Status &, size_t)> handler));
-
- virtual void CancelOperation() override {
- /* no-op, declared pure virtual */
- }
-};
-
-class MockDNConnection : public DataNodeConnection, public std::enable_shared_from_this<MockDNConnection> {
- void Connect(std::function<void(Status status, std::shared_ptr<DataNodeConnection> dn)> handler) override {
- handler(Status::OK(), shared_from_this());
- }
-
- void async_read_some(const MutableBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- (void)buf;
- handler(asio::error::fault, 0);
- }
-
- void async_write_some(const ConstBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- (void)buf;
- handler(asio::error::fault, 0);
- }
-
- virtual void Cancel() override {
- /* no-op, declared pure virtual */
- }
-};
-
-
-class PartialMockFileHandle : public FileHandleImpl {
- using FileHandleImpl::FileHandleImpl;
-public:
- std::shared_ptr<MockReader> mock_reader_ = std::make_shared<MockReader>();
-protected:
- std::shared_ptr<BlockReader> CreateBlockReader(const BlockReaderOptions &options,
- std::shared_ptr<DataNodeConnection> dn,
- std::shared_ptr<hdfs::LibhdfsEvents> event_handlers) override
- {
- (void) options; (void) dn; (void) event_handlers;
- assert(mock_reader_);
- return mock_reader_;
- }
- std::shared_ptr<DataNodeConnection> CreateDataNodeConnection(
- ::asio::io_service *io_service,
- const ::hadoop::hdfs::DatanodeInfoProto & dn,
- const hadoop::common::TokenProto * token) override {
- (void) io_service; (void) dn; (void) token;
- return std::make_shared<MockDNConnection>();
- }
-
-
-};
-
-TEST(BadDataNodeTest, TestNoNodes) {
- auto file_info = std::make_shared<struct FileInfo>();
- file_info->file_length_ = 1; //To avoid running into EOF
- file_info->blocks_.push_back(LocatedBlockProto());
- LocatedBlockProto & block = file_info->blocks_[0];
- ExtendedBlockProto *b = block.mutable_b();
- b->set_poolid("");
- b->set_blockid(1);
- b->set_generationstamp(1);
- b->set_numbytes(4096);
-
- // Set up the one block to have one datanode holding it
- DatanodeInfoProto *di = block.add_locs();
- DatanodeIDProto *dnid = di->mutable_id();
- dnid->set_datanodeuuid("foo");
-
- char buf[4096] = {
- 0,
- };
- IoServiceImpl io_service;
- auto bad_node_tracker = std::make_shared<BadDataNodeTracker>();
- auto monitors = std::make_shared<LibhdfsEvents>();
- bad_node_tracker->AddBadNode("foo");
-
- PartialMockFileHandle is("cluster", "file", &io_service.io_service(), GetRandomClientName(), file_info, bad_node_tracker, monitors);
- Status stat;
- size_t read = 0;
-
- // Exclude the one datanode with the data
- is.AsyncPreadSome(0, asio::buffer(buf, sizeof(buf)), nullptr,
- [&stat, &read](const Status &status, const std::string &, size_t transferred) {
- stat = status;
- read = transferred;
- });
-
- // Should fail with no resource available
- ASSERT_EQ(static_cast<int>(std::errc::resource_unavailable_try_again), stat.code());
- ASSERT_EQ(0UL, read);
-}
-
-TEST(BadDataNodeTest, NNEventCallback) {
- auto file_info = std::make_shared<struct FileInfo>();
- file_info->file_length_ = 1; //To avoid running into EOF
- file_info->blocks_.push_back(LocatedBlockProto());
- LocatedBlockProto & block = file_info->blocks_[0];
- ExtendedBlockProto *b = block.mutable_b();
- b->set_poolid("");
- b->set_blockid(1);
- b->set_generationstamp(1);
- b->set_numbytes(4096);
-
- // Set up the one block to have one datanodes holding it
- DatanodeInfoProto *di = block.add_locs();
- DatanodeIDProto *dnid = di->mutable_id();
- dnid->set_datanodeuuid("dn1");
-
- char buf[4096] = {
- 0,
- };
- IoServiceImpl io_service;
- auto tracker = std::make_shared<BadDataNodeTracker>();
-
-
- // Set up event callbacks
- int calls = 0;
- std::vector<std::string> callbacks;
- auto monitors = std::make_shared<LibhdfsEvents>();
- monitors->set_file_callback([&calls, &callbacks] (const char * event,
- const char * cluster,
- const char * file,
- int64_t value) {
- (void)cluster; (void) file; (void)value;
- callbacks.push_back(event);
-
- // Allow connect call to succeed by fail on read
- if (calls++ == 1)
- return event_response::test_err(Status::Error("Test"));
-
- return event_response::make_ok();
- });
- PartialMockFileHandle is("cluster", "file", &io_service.io_service(), GetRandomClientName(), file_info, tracker, monitors);
- Status stat;
- size_t read = 0;
-
- EXPECT_CALL(*is.mock_reader_, AsyncReadBlock(_,_,_,_,_))
- // Will return OK, but our callback will subvert it
- .WillOnce(InvokeArgument<4>(
- Status::OK(), 0));
-
- is.AsyncPreadSome(
- 0, asio::buffer(buf, sizeof(buf)), nullptr,
- [&stat, &read](const Status &status, const std::string &,
- size_t transferred) {
- stat = status;
- read = transferred;
- });
-
- ASSERT_FALSE(stat.ok());
- ASSERT_EQ(2, callbacks.size());
- ASSERT_EQ(FILE_DN_CONNECT_EVENT, callbacks[0]);
- ASSERT_EQ(FILE_DN_READ_EVENT, callbacks[1]);
-}
-
-
-TEST(BadDataNodeTest, RecoverableError) {
- auto file_info = std::make_shared<struct FileInfo>();
- file_info->file_length_ = 1; //To avoid running into EOF
- file_info->blocks_.push_back(LocatedBlockProto());
- LocatedBlockProto & block = file_info->blocks_[0];
- ExtendedBlockProto *b = block.mutable_b();
- b->set_poolid("");
- b->set_blockid(1);
- b->set_generationstamp(1);
- b->set_numbytes(4096);
-
- // Set up the one block to have one datanode holding it
- DatanodeInfoProto *di = block.add_locs();
- DatanodeIDProto *dnid = di->mutable_id();
- dnid->set_datanodeuuid("foo");
-
- char buf[4096] = {
- 0,
- };
- IoServiceImpl io_service;
- auto tracker = std::make_shared<BadDataNodeTracker>();
- auto monitors = std::make_shared<LibhdfsEvents>();
- PartialMockFileHandle is("cluster", "file", &io_service.io_service(), GetRandomClientName(), file_info, tracker, monitors);
- Status stat;
- size_t read = 0;
- EXPECT_CALL(*is.mock_reader_, AsyncReadBlock(_,_,_,_,_))
- // resource unavailable error
- .WillOnce(InvokeArgument<4>(
- Status::ResourceUnavailable("Unable to get some resource, try again later"), 0));
-
-
- is.AsyncPreadSome(
- 0, asio::buffer(buf, sizeof(buf)), nullptr,
- [&stat, &read](const Status &status, const std::string &,
- size_t transferred) {
- stat = status;
- read = transferred;
- });
-
- ASSERT_FALSE(stat.ok());
-
- std::string failing_dn = "id_of_bad_datanode";
- if (!stat.ok()) {
- if (FileHandle::ShouldExclude(stat)) {
- tracker->AddBadNode(failing_dn);
- }
- }
-
- ASSERT_FALSE(tracker->IsBadNode(failing_dn));
-}
-
-TEST(BadDataNodeTest, InternalError) {
- auto file_info = std::make_shared<struct FileInfo>();
- file_info->file_length_ = 1; //To avoid running into EOF
- file_info->blocks_.push_back(LocatedBlockProto());
- LocatedBlockProto & block = file_info->blocks_[0];
- ExtendedBlockProto *b = block.mutable_b();
- b->set_poolid("");
- b->set_blockid(1);
- b->set_generationstamp(1);
- b->set_numbytes(4096);
-
- // Set up the one block to have one datanode holding it
- DatanodeInfoProto *di = block.add_locs();
- DatanodeIDProto *dnid = di->mutable_id();
- dnid->set_datanodeuuid("foo");
-
- char buf[4096] = {
- 0,
- };
- IoServiceImpl io_service;
- auto tracker = std::make_shared<BadDataNodeTracker>();
- auto monitors = std::make_shared<LibhdfsEvents>();
- PartialMockFileHandle is("cluster", "file", &io_service.io_service(), GetRandomClientName(), file_info, tracker, monitors);
- Status stat;
- size_t read = 0;
- EXPECT_CALL(*is.mock_reader_, AsyncReadBlock(_,_,_,_,_))
- // resource unavailable error
- .WillOnce(InvokeArgument<4>(
- Status::Exception("server_explosion_exception",
- "the server exploded"),
- sizeof(buf)));
-
- is.AsyncPreadSome(
- 0, asio::buffer(buf, sizeof(buf)), nullptr,
- [&stat, &read](const Status &status, const std::string &,
- size_t transferred) {
- stat = status;
- read = transferred;
- });
-
- ASSERT_FALSE(stat.ok());
-
- std::string failing_dn = "id_of_bad_datanode";
- if (!stat.ok()) {
- if (FileHandle::ShouldExclude(stat)) {
- tracker->AddBadNode(failing_dn);
- }
- }
-
- ASSERT_TRUE(tracker->IsBadNode(failing_dn));
-}
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.cc
deleted file mode 100644
index 9534204..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.cc
+++ /dev/null
@@ -1,573 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "configuration_test.h"
-#include "common/configuration.h"
-#include "common/configuration_loader.h"
-#include <gmock/gmock.h>
-#include <cstdio>
-#include <fstream>
-
-using ::testing::_;
-
-using namespace hdfs;
-
-namespace hdfs {
-
-TEST(ConfigurationTest, TestDegenerateInputs) {
- /* Completely empty stream */
- {
- std::stringstream stream;
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>("");
- EXPECT_FALSE(config && "Empty stream");
- }
-
- /* No values */
- {
- std::string data = "<configuration></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(data);
- EXPECT_TRUE(config && "Blank config");
- }
-
- /* Extraneous values */
- {
- std::string data = "<configuration><spam></spam></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(data);
- EXPECT_TRUE(config && "Extraneous values");
- }
-}
-
-TEST(ConfigurationTest, TestBasicOperations) {
- /* Single value */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "value1");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- }
-
- /* Multiple values */
- {
- optional<Configuration> config =
- simpleConfig("key1", "value1", "key2", "value2");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config->GetWithDefault("key2", ""));
- }
-
- /* Case-insensitive */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "value1");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- EXPECT_EQ("value1", config->GetWithDefault("KEY1", ""));
- }
-
- /* No defaults */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "value1");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- optional<std::string> value = config->Get("key1");
- EXPECT_TRUE((bool)value);
- EXPECT_EQ("value1", *value);
- EXPECT_FALSE(config->Get("key2"));
- }
-}
-
-TEST(ConfigurationTest, TestCompactValues) {
- {
- std::stringstream stream;
- stream << "<configuration><property name=\"key1\" "
- "value=\"value1\"/></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Compact value parse");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- }
-}
-
-TEST(ConfigurationTest, TestMultipleResources) {
- /* Single value */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "value1");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key2", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value1", config2->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config2->GetWithDefault("key2", ""));
- }
-}
-
-TEST(ConfigurationTest, TestStringResource) {
- /* Single value */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "value1");
- std::string str = stream.str();
-
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- }
-}
-
-TEST(ConfigurationTest, TestValueOverlay) {
- /* Incremental updates */
- {
- ConfigurationLoader loader;
- std::stringstream stream;
- stream << "<configuration>"
- "<property><name>key1</name><value>value1</value><final>false</final></property>"
- "<property><name>final2</name><value>value2</value><final>true</final></property>"
- "</configuration>";
- optional<Configuration> config = loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config->GetWithDefault("final2", ""));
- config = loader.OverlayValue(config.value(), "key3", "value3");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config->GetWithDefault("final2", ""));
- EXPECT_EQ("value3", config->GetWithDefault("key3", ""));
- config = loader.OverlayValue(config.value(), "final2", "value4");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config->GetWithDefault("final2", ""));
- EXPECT_EQ("value3", config->GetWithDefault("key3", ""));
-
- // Case insensitive overlay
- config = loader.OverlayValue(config.value(), "KEY3", "value3a");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config->GetWithDefault("final2", ""));
- EXPECT_EQ("value3a", config->GetWithDefault("key3", ""));
- }
-}
-
-TEST(ConfigurationTest, TestFinal) {
- {
- /* Explicitly non-final non-compact value */
- std::stringstream stream;
- stream << "<configuration><property><name>key1</name><value>value1</"
- "value><final>false</final></property></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key1", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value2", config2->GetWithDefault("key1", ""));
- }
- {
- /* Explicitly final non-compact value */
- std::stringstream stream;
- stream << "<configuration><property><name>key1</name><value>value1</"
- "value><final>true</final></property></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key1", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value1", config2->GetWithDefault("key1", ""));
- }
- {
- /* Explicitly non-final compact value */
- std::stringstream stream;
- stream << "<configuration><property name=\"key1\" value=\"value1\" "
- "final=\"false\"/></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key1", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value2", config2->GetWithDefault("key1", ""));
- }
- {
- /* Explicitly final compact value */
- std::stringstream stream;
- stream << "<configuration><property name=\"key1\" value=\"value1\" "
- "final=\"true\"/></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key1", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value1", config2->GetWithDefault("key1", ""));
- }
- {
- /* Bogus final value */
- std::stringstream stream;
- stream << "<configuration><property><name>key1</name><value>value1</"
- "value><final>spam</final></property></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key1", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value2", config2->GetWithDefault("key1", ""));
- }
- {
- /* Blank final value */
- std::stringstream stream;
- stream << "<configuration><property><name>key1</name><value>value1</"
- "value><final></final></property></configuration>";
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- std::stringstream stream2;
- simpleConfigStream(stream2, "key1", "value2");
- optional<Configuration> config2 =
- ConfigurationLoader().OverlayResourceString(config.value(), stream2.str());
- EXPECT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value2", config2->GetWithDefault("key1", ""));
- }
-}
-
-TEST(ConfigurationTest, TestFileReads)
-{
- // Single stream
- {
- TempFile tempFile;
- writeSimpleConfig(tempFile.filename, "key1", "value1");
-
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.LoadFromFile<Configuration>(tempFile.filename);
- EXPECT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- }
-
- // Multiple files
- {
- TempFile tempFile;
- writeSimpleConfig(tempFile.filename, "key1", "value1");
-
- ConfigurationLoader loader;
- optional<Configuration> config = loader.LoadFromFile<Configuration>(tempFile.filename);
- ASSERT_TRUE(config && "Parse first stream");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
-
- TempFile tempFile2;
- writeSimpleConfig(tempFile2.filename, "key2", "value2");
- optional<Configuration> config2 = loader.OverlayResourceFile(*config, tempFile2.filename);
- ASSERT_TRUE(config2 && "Parse second stream");
- EXPECT_EQ("value1", config2->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config2->GetWithDefault("key2", ""));
- }
-
- // Try to add a directory
- {
- TempDir tempDir;
-
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.LoadFromFile<Configuration>(tempDir.path);
- EXPECT_FALSE(config && "Add directory as file resource");
- }
-
-
- // Search path splitting
- {
- ConfigurationLoader loader;
- loader.SetSearchPath("foo:/bar:baz/:/fioux/:/bar/bar/bong");
-
- // Paths will have / appended to them if not already present
- EXPECT_EQ("foo/:/bar/:baz/:/fioux/:/bar/bar/bong/", loader.GetSearchPath());
- }
-
- // Search path
- {
- TempDir tempDir1;
- TempFile tempFile1(tempDir1.path + "/file1.xml");
- writeSimpleConfig(tempFile1.filename, "key1", "value1");
- TempDir tempDir2;
- TempFile tempFile2(tempDir2.path + "/file2.xml");
- writeSimpleConfig(tempFile2.filename, "key2", "value2");
- TempDir tempDir3;
- TempFile tempFile3(tempDir3.path + "/file3.xml");
- writeSimpleConfig(tempFile3.filename, "key3", "value3");
-
- ConfigurationLoader loader;
- loader.SetSearchPath(tempDir1.path + ":" + tempDir2.path + ":" + tempDir3.path);
- optional<Configuration> config1 = loader.LoadFromFile<Configuration>("file1.xml");
- EXPECT_TRUE(config1 && "Parse first stream");
- optional<Configuration> config2 = loader.OverlayResourceFile(*config1, "file2.xml");
- EXPECT_TRUE(config2 && "Parse second stream");
- optional<Configuration> config3 = loader.OverlayResourceFile(*config2, "file3.xml");
- EXPECT_TRUE(config3 && "Parse third stream");
- EXPECT_EQ("value1", config3->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config3->GetWithDefault("key2", ""));
- EXPECT_EQ("value3", config3->GetWithDefault("key3", ""));
- }
-}
-
-TEST(ConfigurationTest, TestDefaultConfigs) {
- // Search path
- {
- TempDir tempDir;
- TempFile coreSite(tempDir.path + "/core-site.xml");
- writeSimpleConfig(coreSite.filename, "key1", "value1");
-
- ConfigurationLoader loader;
- loader.SetSearchPath(tempDir.path);
-
- optional<Configuration> config = loader.LoadDefaultResources<Configuration>();
- EXPECT_TRUE(config && "Parse streams");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- }
-}
-
-TEST(ConfigurationTest, TestIntConversions) {
- /* No defaults */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "1");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- optional<int64_t> value = config->GetInt("key1");
- EXPECT_TRUE((bool)value);
- EXPECT_EQ(1, *value);
- EXPECT_FALSE(config->GetInt("key2"));
- }
-
- {
- optional<Configuration> config = simpleConfig("key1", "1");
- EXPECT_EQ(1, config->GetIntWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "-100");
- EXPECT_EQ(-100, config->GetIntWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", " 1 ");
- EXPECT_EQ(1, config->GetIntWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "");
- EXPECT_EQ(-1, config->GetIntWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "spam");
- EXPECT_EQ(-1, config->GetIntWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key2", "");
- EXPECT_EQ(-1, config->GetIntWithDefault("key1", -1));
- }
-}
-
-TEST(ConfigurationTest, TestDoubleConversions) {
- /* No defaults */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "1");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- optional<double> value = config->GetDouble("key1");
- EXPECT_TRUE((bool)value);
- EXPECT_EQ(1, *value);
- EXPECT_FALSE(config->GetDouble("key2"));
- }
-
- {
- optional<Configuration> config = simpleConfig("key1", "1");
- EXPECT_EQ(1, config->GetDoubleWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "-100");
- EXPECT_EQ(-100, config->GetDoubleWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", " 1 ");
- EXPECT_EQ(1, config->GetDoubleWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "");
- EXPECT_EQ(-1, config->GetDoubleWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "spam");
- EXPECT_EQ(-1, config->GetDoubleWithDefault("key1", -1));
- }
- {
- optional<Configuration> config = simpleConfig("key2", "");
- EXPECT_EQ(-1, config->GetDoubleWithDefault("key1", -1));
- }
- { /* Out of range */
- optional<Configuration> config = simpleConfig("key2", "1e9999");
- EXPECT_EQ(-1, config->GetDoubleWithDefault("key1", -1));
- }
-}
-
-TEST(ConfigurationTest, TestBoolConversions) {
- /* No defaults */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "true");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- optional<bool> value = config->GetBool("key1");
- EXPECT_TRUE((bool)value);
- EXPECT_EQ(true, *value);
- EXPECT_FALSE(config->GetBool("key2"));
- }
-
- {
- optional<Configuration> config = simpleConfig("key1", "true");
- EXPECT_EQ(true, config->GetBoolWithDefault("key1", false));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "tRuE");
- EXPECT_EQ(true, config->GetBoolWithDefault("key1", false));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "false");
- EXPECT_FALSE(config->GetBoolWithDefault("key1", true));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "FaLsE");
- EXPECT_FALSE(config->GetBoolWithDefault("key1", true));
- }
- {
- optional<Configuration> config = simpleConfig("key1", " FaLsE ");
- EXPECT_FALSE(config->GetBoolWithDefault("key1", true));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "");
- EXPECT_EQ(true, config->GetBoolWithDefault("key1", true));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "spam");
- EXPECT_EQ(true, config->GetBoolWithDefault("key1", true));
- }
- {
- optional<Configuration> config = simpleConfig("key1", "");
- EXPECT_EQ(true, config->GetBoolWithDefault("key2", true));
- }
-}
-
-TEST(ConfigurationTest, TestUriConversions) {
- /* No defaults */
- {
- std::stringstream stream;
- simpleConfigStream(stream, "key1", "hdfs:///");
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> config = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE(config && "Parse single value");
- optional<URI> value = config->GetUri("key1");
- EXPECT_TRUE((bool)value);
- EXPECT_EQ("hdfs:///", value->str());
- EXPECT_FALSE(config->GetUri("key2"));
- }
-
- {
- optional<Configuration> config = simpleConfig("key1", "hdfs:///");
- EXPECT_EQ("hdfs:///", config->GetUriWithDefault("key1", "http:///").str());
- }
- {
- optional<Configuration> config = simpleConfig("key1", " hdfs:/// ");
- EXPECT_EQ("hdfs:///", config->GetUriWithDefault("key1", "http:///").str());
- }
- {
- optional<Configuration> config = simpleConfig("key1", "");
- EXPECT_EQ("", config->GetUriWithDefault("key1", "http:///").str());
- }
- {
- optional<Configuration> config = simpleConfig("key1", "%%"); // invalid URI
- EXPECT_EQ("http:///", config->GetUriWithDefault("key1", "http:///").str());
- }
- {
- optional<Configuration> config = simpleConfig("key2", "hdfs:///");
- EXPECT_EQ("http:///", config->GetUriWithDefault("key1", "http:///").str());
- }
-}
-
-
-
-int main(int argc, char *argv[]) {
- /*
- * The following line must be executed to initialize Google Mock
- * (and Google Test) before running the tests.
- */
- ::testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
-}
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.h
deleted file mode 100644
index 9ad11b7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/configuration_test.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef TESTS_CONFIGURATION_H_
-#define TESTS_CONFIGURATION_H_
-
-#include "hdfspp/config_parser.h"
-#include "common/configuration.h"
-#include "common/configuration_loader.h"
-#include <cstdio>
-#include <fstream>
-#include <istream>
-#include <ftw.h>
-#include <gmock/gmock.h>
-
-namespace hdfs {
-
-template <typename T, typename U>
-void simpleConfigStreamProperty(std::stringstream& out, T key, U value) {
- out << "<property>"
- << "<name>" << key << "</name>"
- << "<value>" << value << "</value>"
- << "</property>";
-}
-
-template <typename T, typename U, typename... Args>
-void simpleConfigStreamProperty(std::stringstream& out, T key, U value,
- Args... args) {
- simpleConfigStreamProperty(out, key, value);
- simpleConfigStreamProperty(out, args...);
-}
-
-template <typename... Args>
-void simpleConfigStream(std::stringstream& out, Args... args) {
- out << "<configuration>";
- simpleConfigStreamProperty(out, args...);
- out << "</configuration>";
-}
-
-template <typename T, typename U>
-void damagedConfigStreamProperty(std::stringstream& out, T key, U value) {
- out << "<propertyy>"
- << "<name>" << key << "</name>"
- << "<value>" << value << "</value>"
- << "</property>";
-}
-
-template <typename T, typename U, typename... Args>
-void damagedConfigStreamProperty(std::stringstream& out, T key, U value,
- Args... args) {
- damagedConfigStreamProperty(out, key, value);
- damagedConfigStreamProperty(out, args...);
-}
-
-template <typename... Args>
-void damagedConfigStream(std::stringstream& out, Args... args) {
- out << "<configuration>";
- damagedConfigStreamProperty(out, args...);
- out << "</configuration>";
-}
-
-template <typename... Args>
-optional<Configuration> simpleConfig(Args... args) {
- std::stringstream stream;
- simpleConfigStream(stream, args...);
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<Configuration> parse = config_loader.Load<Configuration>(stream.str());
- EXPECT_TRUE((bool)parse);
-
- return parse;
-}
-
-template <typename... Args>
-void writeSimpleConfig(const std::string& filename, Args... args) {
- std::stringstream stream;
- simpleConfigStream(stream, args...);
-
- std::ofstream out;
- out.open(filename);
- out << stream.rdbuf();
-}
-
-template <typename... Args>
-void writeDamagedConfig(const std::string& filename, Args... args) {
- std::stringstream stream;
- damagedConfigStream(stream, args...);
-
- std::ofstream out;
- out.open(filename);
- out << stream.rdbuf();
-}
-
-// TempDir: is deleted on destruction
-class TempFile {
-public:
- std::string filename;
- char fn_buffer[128];
- int tempFileHandle;
- TempFile() : tempFileHandle(-1) {
- strncpy(fn_buffer, "/tmp/test_XXXXXXXXXX", sizeof(fn_buffer));
- tempFileHandle = mkstemp(fn_buffer);
- EXPECT_NE(-1, tempFileHandle);
- filename = fn_buffer;
- }
- TempFile(const std::string & fn) : filename(fn), tempFileHandle(-1) {
- strncpy(fn_buffer, fn.c_str(), sizeof(fn_buffer));
- fn_buffer[sizeof(fn_buffer)-1] = 0;
- }
- ~TempFile() { if(-1 != tempFileHandle) close(tempFileHandle); unlink(fn_buffer); }
-};
-
-
-// Callback to remove a directory in the nftw visitor
-int nftw_remove(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
-{
- (void)sb; (void)typeflag; (void)ftwbuf;
-
- int rv = remove(fpath);
- EXPECT_EQ(0, rv);
- return rv;
-}
-
-// TempDir: is created in ctor and recursively deletes in dtor
-class TempDir {
-public:
- std::string path;
- TempDir() {
- char fn_buffer[128];
- strncpy(fn_buffer, "/tmp/test_dir_XXXXXXXXXX", sizeof(fn_buffer));
- const char * returned_path = mkdtemp(fn_buffer);
- EXPECT_NE(nullptr, returned_path);
- path = returned_path;
- }
- ~TempDir() {
- if(!path.empty())
- nftw(path.c_str(), nftw_remove, 64, FTW_DEPTH | FTW_PHYS);
- }
-};
-
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_builder_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_builder_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_builder_test.cc
deleted file mode 100644
index 01db69d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_builder_test.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/hdfs_ext.h"
-#include "configuration_test.h"
-#include <gmock/gmock.h>
-#include <google/protobuf/stubs/common.h>
-
-using ::testing::_;
-
-using namespace hdfs;
-
-TEST(HdfsBuilderTest, TestStubBuilder) {
- {
- TempDir tempDir1;
-
- hdfsBuilder * builder = hdfsNewBuilderFromDirectory(tempDir1.path.c_str());
- hdfsFreeBuilder(builder);
- }
-
- {
- hdfsBuilder * builder = hdfsNewBuilderFromDirectory("/this/path/does/not/exist");
- hdfsFreeBuilder(builder);
- }
-}
-
-TEST(HdfsBuilderTest, TestRead)
-{
- // Reading string values
- {
- TempDir tempDir1;
- TempFile tempFile1(tempDir1.path + "/core-site.xml");
- writeSimpleConfig(tempFile1.filename, "key1", "value1");
-
- hdfsBuilder * builder = hdfsNewBuilderFromDirectory(tempDir1.path.c_str());
-
- char * readVal = nullptr;
- int result = hdfsBuilderConfGetStr(builder, "key1", &readVal);
- ASSERT_EQ(0, result);
- ASSERT_NE(nullptr, readVal);
- EXPECT_EQ("value1", std::string(readVal));
- hdfsConfStrFree(readVal);
-
- readVal = nullptr;
- result = hdfsBuilderConfGetStr(builder, "key2", &readVal);
- ASSERT_EQ(0, result);
- EXPECT_EQ(nullptr, readVal);
-
- hdfsFreeBuilder(builder);
- }
-
- // Reading int values
- {
- TempDir tempDir1;
- TempFile tempFile1(tempDir1.path + "/core-site.xml");
- writeSimpleConfig(tempFile1.filename, "key1", "100");
-
- hdfsBuilder * builder = hdfsNewBuilderFromDirectory(tempDir1.path.c_str());
-
- int readVal = -1;
- int result = hdfsBuilderConfGetInt(builder, "key1", &readVal);
- EXPECT_EQ(0, result);
- EXPECT_EQ(100, readVal);
-
- readVal = -1;
- result = hdfsBuilderConfGetInt(builder, "key2", &readVal);
- EXPECT_EQ(0, result);
- EXPECT_EQ(-1, readVal);
-
- hdfsFreeBuilder(builder);
- }
-}
-
-TEST(HdfsBuilderTest, TestSet)
-{
- {
- // Setting values in an empty builder
- // Don't use default, or it will load any data in /etc/hadoop
- hdfsBuilder * builder = hdfsNewBuilderFromDirectory("/this/path/does/not/exist");
-
- int result = hdfsBuilderConfSetStr(builder, "key1", "100");
- EXPECT_EQ(0, result);
-
- int readVal = -1;
- result = hdfsBuilderConfGetInt(builder, "key1", &readVal);
- EXPECT_EQ(0, result);
- EXPECT_EQ(100, readVal);
-
- // Set value in non-empty builder
- result = hdfsBuilderConfSetStr(builder, "key2", "200");
- EXPECT_EQ(0, result);
-
- readVal = -1;
- result = hdfsBuilderConfGetInt(builder, "key2", &readVal);
- EXPECT_EQ(0, result);
- EXPECT_EQ(200, readVal);
-
- // Overwrite value
- result = hdfsBuilderConfSetStr(builder, "key2", "300");
- EXPECT_EQ(0, result);
-
- readVal = -1;
- result = hdfsBuilderConfGetInt(builder, "key2", &readVal);
- EXPECT_EQ(0, result);
- EXPECT_EQ(300, readVal);
-
- hdfsFreeBuilder(builder);
- }
-}
-
-int main(int argc, char *argv[]) {
- /*
- * The following line must be executed to initialize Google Mock
- * (and Google Test) before running the tests.
- */
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_config_connect_bugs.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_config_connect_bugs.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_config_connect_bugs.cc
deleted file mode 100644
index fc31227..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_config_connect_bugs.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/hdfs_ext.h"
-
-#include "configuration_test.h"
-
-#include <google/protobuf/stubs/common.h>
-
-#include <cstring>
-#include <chrono>
-#include <exception>
-
-
-static const char *hdfs_11294_core_site_txt =
-"<configuration>\n"
-" <property name=\"fs.defaultFS\" value=\"hdfs://NAMESERVICE1\"/>\n"
-" <property name=\"hadoop.security.authentication\" value=\"simple\"/>\n"
-" <property name=\"ipc.client.connect.retry.interval\" value=\"1\">\n"
-"</configuration>\n";
-
-static const char *hdfs_11294_hdfs_site_txt =
-"<configuration>\n"
-" <property>\n"
-" <name>dfs.nameservices</name>\n"
-" <value>NAMESERVICE1</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.ha.namenodes.NAMESERVICE1</name>\n"
-" <value>nn1, nn2</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.namenode.rpc-address.NAMESERVICE1.nn1</name>\n"
-" <value>nonesuch1.apache.org:8020</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.namenode.servicerpc-address.NAMESERVICE1.nn1</name>\n"
-" <value>nonesuch1.apache.org:8040</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.namenode.http-address.NAMESERVICE1.nn1</name>\n"
-" <value>nonesuch1.apache.org:50070</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.namenode.rpc-address.NAMESERVICE1.nn2</name>\n"
-" <value>nonesuch2.apache.org:8020</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.namenode.servicerpc-address.NAMESERVICE1.nn2</name>\n"
-" <value>nonesuch2.apache.org:8040</value>\n"
-" </property>\n"
-" <property>\n"
-" <name>dfs.namenode.http-address.NAMESERVICE1.nn2</name>\n"
-" <value>nonesuch2.apache.org:50070</value>\n"
-" </property>\n"
-"</configuration>\n";
-
-
-
-
-namespace hdfs {
-
-// Make sure we can set up a mini-cluster and connect to it
-TEST(ConfigConnectBugs, Test_HDFS_11294) {
- // Directory for hdfs config
- TempDir td;
-
- const std::string& tempDirPath = td.path;
- const std::string coreSitePath = tempDirPath + "/core-site.xml";
- const std::string hdfsSitePath = tempDirPath + "/hdfs-site.xml";
-
- // Write configs
- FILE *coreSite = fopen(coreSitePath.c_str(), "w");
- EXPECT_NE(coreSite, nullptr);
- int coreSiteLength = strlen(hdfs_11294_core_site_txt);
- size_t res = fwrite(hdfs_11294_core_site_txt, 1, coreSiteLength, coreSite);
- EXPECT_EQ(res, coreSiteLength);
- EXPECT_EQ(fclose(coreSite), 0);
-
- FILE *hdfsSite = fopen(hdfsSitePath.c_str(), "w");
- EXPECT_NE(hdfsSite, nullptr);
- int hdfsSiteLength = strlen(hdfs_11294_hdfs_site_txt);
- res = fwrite(hdfs_11294_hdfs_site_txt, 1, hdfsSiteLength, hdfsSite);
- EXPECT_EQ(res, hdfsSiteLength);
- EXPECT_EQ(fclose(hdfsSite), 0);
-
- // Load configs with new FS
- hdfsBuilder *bld = hdfsNewBuilderFromDirectory(tempDirPath.c_str());
- hdfsBuilderSetNameNode(bld, "NAMESERVICE1");
-
- // In HDFS-11294 connecting would crash because DNS couldn't resolve
- // endpoints but the RpcEngine would attempt to dereference a non existant
- // element in a std::vector and crash. Test passes if connect doesn't crash.
- hdfsFS fileSystem = hdfsBuilderConnect(bld);
-
- // FS shouldn't be created if it can't connect.
- EXPECT_EQ(fileSystem, nullptr);
-
- // Verify it got to endpoint check
- char errMsgBuf[100];
- memset(errMsgBuf, 0, 100);
- EXPECT_EQ( hdfsGetLastError(errMsgBuf, 100), 0);
- EXPECT_STREQ(errMsgBuf, "Exception:No endpoints found for namenode");
-
-
- // remove config files
- EXPECT_EQ(remove(coreSitePath.c_str()), 0);
- EXPECT_EQ(remove(hdfsSitePath.c_str()), 0);
-}
-
-} // end namespace hdfs
-
-int main(int argc, char *argv[]) {
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- int exit_code = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
-
- return exit_code;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_configuration_test.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_configuration_test.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_configuration_test.cc
deleted file mode 100644
index b21725c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/hdfs_configuration_test.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/hdfs_configuration.h"
-#include "configuration_test.h"
-#include <gmock/gmock.h>
-#include <iostream>
-
-using ::testing::_;
-
-using namespace hdfs;
-
-namespace hdfs
-{
-TEST(HdfsConfigurationTest, TestDefaultOptions)
-{
- // Completely empty stream
- {
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- HdfsConfiguration empty_config = config_loader.NewConfig<HdfsConfiguration>();
- Options options = empty_config.GetOptions();
- EXPECT_EQ(Options::kDefaultRpcTimeout, options.rpc_timeout);
- }
-}
-
-TEST(HdfsConfigurationTest, TestSetOptions)
-{
- // Completely empty stream
- {
- std::stringstream stream;
- simpleConfigStream(stream,
- HdfsConfiguration::kFsDefaultFsKey, "/FDFK",
- HdfsConfiguration::kDfsClientSocketTimeoutKey, 100,
- HdfsConfiguration::kIpcClientConnectMaxRetriesKey, 101,
- HdfsConfiguration::kIpcClientConnectRetryIntervalKey, 102,
- HdfsConfiguration::kIpcClientConnectTimeoutKey, 103,
- HdfsConfiguration::kHadoopSecurityAuthenticationKey, HdfsConfiguration::kHadoopSecurityAuthentication_kerberos
- );
- ConfigurationLoader config_loader;
- config_loader.ClearSearchPath();
- optional<HdfsConfiguration> config = config_loader.Load<HdfsConfiguration>(stream.str());
- EXPECT_TRUE(config && "Read stream");
- Options options = config->GetOptions();
-
- EXPECT_EQ("/FDFK", options.defaultFS.str());
- EXPECT_EQ(100, options.rpc_timeout);
- EXPECT_EQ(101, options.max_rpc_retries);
- EXPECT_EQ(102, options.rpc_retry_delay_ms);
- EXPECT_EQ(103, options.rpc_connect_timeout);
- EXPECT_EQ(Options::kKerberos, options.authentication);
- }
-}
-
-TEST(HdfsConfigurationTest, TestDefaultConfigs) {
- // Search path
- {
- TempDir tempDir;
- TempFile coreSite(tempDir.path + "/core-site.xml");
- writeSimpleConfig(coreSite.filename, "key1", "value1");
- TempFile hdfsSite(tempDir.path + "/hdfs-site.xml");
- writeSimpleConfig(hdfsSite.filename, "key2", "value2");
-
- ConfigurationLoader loader;
- loader.SetSearchPath(tempDir.path);
-
- optional<HdfsConfiguration> config = loader.LoadDefaultResources<HdfsConfiguration>();
- EXPECT_TRUE(config && "Parse streams");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- EXPECT_EQ("value2", config->GetWithDefault("key2", ""));
- }
-
- // Only core-site.xml available
- {
- TempDir tempDir;
- TempFile coreSite(tempDir.path + "/core-site.xml");
- writeSimpleConfig(coreSite.filename, "key1", "value1");
-
- ConfigurationLoader loader;
- loader.SetSearchPath(tempDir.path);
-
- optional<HdfsConfiguration> config = loader.LoadDefaultResources<HdfsConfiguration>();
- EXPECT_TRUE(config && "Parse streams");
- EXPECT_EQ("value1", config->GetWithDefault("key1", ""));
- }
-
- // Only hdfs-site available
- {
- TempDir tempDir;
- TempFile hdfsSite(tempDir.path + "/hdfs-site.xml");
- writeSimpleConfig(hdfsSite.filename, "key2", "value2");
-
- ConfigurationLoader loader;
- loader.SetSearchPath(tempDir.path);
-
- optional<HdfsConfiguration> config = loader.LoadDefaultResources<HdfsConfiguration>();
- EXPECT_TRUE(config && "Parse streams");
- EXPECT_EQ("value2", config->GetWithDefault("key2", ""));
- }
-
-
-}
-
-TEST(HdfsConfigurationTest, TestConfigParserAPI) {
- // Config parser API
- {
- TempDir tempDir;
- TempFile coreSite(tempDir.path + "/core-site.xml");
- writeSimpleConfig(coreSite.filename, "key1", "value1");
- TempFile hdfsSite(tempDir.path + "/hdfs-site.xml");
- writeSimpleConfig(hdfsSite.filename, "key2", "value2");
-
- ConfigParser parser(tempDir.path);
-
- EXPECT_EQ("value1", parser.get_string_or("key1", ""));
- EXPECT_EQ("value2", parser.get_string_or("key2", ""));
-
- auto stats = parser.ValidateResources();
-
- EXPECT_EQ("core-site.xml", stats[0].first);
- EXPECT_EQ("OK", stats[0].second.ToString());
-
- EXPECT_EQ("hdfs-site.xml", stats[1].first);
- EXPECT_EQ("OK", stats[1].second.ToString());
- }
-
- {
- TempDir tempDir;
- TempFile coreSite(tempDir.path + "/core-site.xml");
- writeSimpleConfig(coreSite.filename, "key1", "value1");
- TempFile hdfsSite(tempDir.path + "/hdfs-site.xml");
- writeDamagedConfig(hdfsSite.filename, "key2", "value2");
-
- ConfigParser parser(tempDir.path);
-
- EXPECT_EQ("value1", parser.get_string_or("key1", ""));
- EXPECT_EQ("", parser.get_string_or("key2", ""));
-
- auto stats = parser.ValidateResources();
-
- EXPECT_EQ("core-site.xml", stats[0].first);
- EXPECT_EQ("OK", stats[0].second.ToString());
-
- EXPECT_EQ("hdfs-site.xml", stats[1].first);
- EXPECT_EQ("Exception:The configuration file has invalid xml around character 74", stats[1].second.ToString());
- }
-}
-
-int main(int argc, char *argv[])
-{
- // The following line must be executed to initialize Google Mock
- // (and Google Test) before running the tests.
- ::testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
-}
-
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[36/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_raw_socket.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_raw_socket.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_raw_socket.hpp
deleted file mode 100644
index b0f3f18..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_raw_socket.hpp
+++ /dev/null
@@ -1,940 +0,0 @@
-//
-// basic_raw_socket.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_BASIC_RAW_SOCKET_HPP
-#define ASIO_BASIC_RAW_SOCKET_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 "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/raw_socket_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides raw-oriented socket functionality.
-/**
- * The basic_raw_socket class template provides asynchronous and blocking
- * raw-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
- typename RawSocketService = raw_socket_service<Protocol> >
-class basic_raw_socket
- : public basic_socket<Protocol, RawSocketService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename RawSocketService::native_handle_type native_type;
-
- /// The native representation of a socket.
- typedef typename RawSocketService::native_handle_type native_handle_type;
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- /// Construct a basic_raw_socket without opening it.
- /**
- * This constructor creates a raw socket without opening it. The open()
- * function must be called before data can be sent or received on the socket.
- *
- * @param io_service The io_service object that the raw socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- */
- explicit basic_raw_socket(asio::io_service& io_service)
- : basic_socket<Protocol, RawSocketService>(io_service)
- {
- }
-
- /// Construct and open a basic_raw_socket.
- /**
- * This constructor creates and opens a raw socket.
- *
- * @param io_service The io_service object that the raw socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_raw_socket(asio::io_service& io_service,
- const protocol_type& protocol)
- : basic_socket<Protocol, RawSocketService>(io_service, protocol)
- {
- }
-
- /// Construct a basic_raw_socket, opening it and binding it to the given
- /// local endpoint.
- /**
- * This constructor creates a raw socket and automatically opens it bound
- * to the specified endpoint on the local machine. The protocol used is the
- * protocol associated with the given endpoint.
- *
- * @param io_service The io_service object that the raw socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- *
- * @param endpoint An endpoint on the local machine to which the raw
- * socket will be bound.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_raw_socket(asio::io_service& io_service,
- const endpoint_type& endpoint)
- : basic_socket<Protocol, RawSocketService>(io_service, endpoint)
- {
- }
-
- /// Construct a basic_raw_socket on an existing native socket.
- /**
- * This constructor creates a raw socket object to hold an existing
- * native socket.
- *
- * @param io_service The io_service object that the raw socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @param native_socket The new underlying socket implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_raw_socket(asio::io_service& io_service,
- const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, RawSocketService>(
- io_service, protocol, native_socket)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_raw_socket from another.
- /**
- * This constructor moves a raw socket from one object to another.
- *
- * @param other The other basic_raw_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
- */
- basic_raw_socket(basic_raw_socket&& other)
- : basic_socket<Protocol, RawSocketService>(
- ASIO_MOVE_CAST(basic_raw_socket)(other))
- {
- }
-
- /// Move-assign a basic_raw_socket from another.
- /**
- * This assignment operator moves a raw socket from one object to another.
- *
- * @param other The other basic_raw_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
- */
- basic_raw_socket& operator=(basic_raw_socket&& other)
- {
- basic_socket<Protocol, RawSocketService>::operator=(
- ASIO_MOVE_CAST(basic_raw_socket)(other));
- return *this;
- }
-
- /// Move-construct a basic_raw_socket from a socket of another protocol type.
- /**
- * This constructor moves a raw socket from one object to another.
- *
- * @param other The other basic_raw_socket object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename RawSocketService1>
- basic_raw_socket(basic_raw_socket<Protocol1, RawSocketService1>&& other,
- typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, RawSocketService>(
- ASIO_MOVE_CAST2(basic_raw_socket<
- Protocol1, RawSocketService1>)(other))
- {
- }
-
- /// Move-assign a basic_raw_socket from a socket of another protocol type.
- /**
- * This assignment operator moves a raw socket from one object to another.
- *
- * @param other The other basic_raw_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename RawSocketService1>
- typename enable_if<is_convertible<Protocol1, Protocol>::value,
- basic_raw_socket>::type& operator=(
- basic_raw_socket<Protocol1, RawSocketService1>&& other)
- {
- basic_socket<Protocol, RawSocketService>::operator=(
- ASIO_MOVE_CAST2(basic_raw_socket<
- Protocol1, RawSocketService1>)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Send some data on a connected socket.
- /**
- * This function is used to send data on the raw socket. The function call
- * will block until the data has been sent successfully or an error occurs.
- *
- * @param buffers One ore more data buffers to be sent on the socket.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The send operation can only be used with a connected socket. Use
- * the send_to function to send data on an unconnected raw socket.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code socket.send(asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on a connected socket.
- /**
- * This function is used to send data on the raw socket. The function call
- * will block until the data has been sent successfully or an error occurs.
- *
- * @param buffers One ore more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The send operation can only be used with a connected socket. Use
- * the send_to function to send data on an unconnected raw socket.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on a connected socket.
- /**
- * This function is used to send data on the raw socket. The function call
- * will block until the data has been sent successfully or an error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes sent.
- *
- * @note The send operation can only be used with a connected socket. Use
- * the send_to function to send data on an unconnected raw socket.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous send on a connected socket.
- /**
- * This function is used to send data on the raw socket. The function call
- * will block until the data has been sent successfully or an error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks 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 send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_send operation can only be used with a connected socket.
- * Use the async_send_to function to send data on an unconnected raw
- * socket.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_send(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Start an asynchronous send on a connected socket.
- /**
- * This function is used to send data on the raw socket. The function call
- * will block until the data has been sent successfully or an error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks is retained by the caller, which must guarantee that they
- * remain valid until the handler is called.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_send operation can only be used with a connected socket.
- * Use the async_send_to function to send data on an unconnected raw
- * socket.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(this->get_implementation(),
- buffers, flags, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Send raw data to the specified endpoint.
- /**
- * This function is used to send raw data to the specified remote endpoint.
- * The function call will block until the data has been sent successfully or
- * an error occurs.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- *
- * @param destination The remote endpoint to which the data will be sent.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::ip::udp::endpoint destination(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * socket.send_to(asio::buffer(data, size), destination);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send_to(
- this->get_implementation(), buffers, destination, 0, ec);
- asio::detail::throw_error(ec, "send_to");
- return s;
- }
-
- /// Send raw data to the specified endpoint.
- /**
- * This function is used to send raw data to the specified remote endpoint.
- * The function call will block until the data has been sent successfully or
- * an error occurs.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- *
- * @param destination The remote endpoint to which the data will be sent.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- */
- template <typename ConstBufferSequence>
- std::size_t send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send_to(
- this->get_implementation(), buffers, destination, flags, ec);
- asio::detail::throw_error(ec, "send_to");
- return s;
- }
-
- /// Send raw data to the specified endpoint.
- /**
- * This function is used to send raw data to the specified remote endpoint.
- * The function call will block until the data has been sent successfully or
- * an error occurs.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- *
- * @param destination The remote endpoint to which the data will be sent.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes sent.
- */
- template <typename ConstBufferSequence>
- std::size_t send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- return this->get_service().send_to(this->get_implementation(),
- buffers, destination, flags, ec);
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send raw data to the specified
- * remote endpoint. The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param destination The remote endpoint to which the data will be sent.
- * Copies will be made of the endpoint as required.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::ip::udp::endpoint destination(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * socket.async_send_to(
- * asio::buffer(data, size), destination, handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send_to(this->get_implementation(),
- buffers, destination, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send raw data to the specified
- * remote endpoint. The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param destination The remote endpoint to which the data will be sent.
- * Copies will be made of the endpoint as required.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send_to(
- this->get_implementation(), buffers, destination, flags,
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the raw socket. The function
- * call will block until data has been received successfully or an error
- * occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The receive operation can only be used with a connected socket. Use
- * the receive_from function to receive data on an unconnected raw
- * socket.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code socket.receive(asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the raw socket. The function
- * call will block until data has been received successfully or an error
- * occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The receive operation can only be used with a connected socket. Use
- * the receive_from function to receive data on an unconnected raw
- * socket.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the raw socket. The function
- * call will block until data has been received successfully or an error
- * occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes received.
- *
- * @note The receive operation can only be used with a connected socket. Use
- * the receive_from function to receive data on an unconnected raw
- * socket.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().receive(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous receive on a connected socket.
- /**
- * This function is used to asynchronously receive data from the raw
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_receive operation can only be used with a connected socket.
- * Use the async_receive_from function to receive data on an unconnected
- * raw socket.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.async_receive(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Start an asynchronous receive on a connected socket.
- /**
- * This function is used to asynchronously receive data from the raw
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_receive operation can only be used with a connected socket.
- * Use the async_receive_from function to receive data on an unconnected
- * raw socket.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, flags, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Receive raw data with the endpoint of the sender.
- /**
- * This function is used to receive raw data. The function call will block
- * until data has been received successfully or an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the data.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * asio::ip::udp::endpoint sender_endpoint;
- * socket.receive_from(
- * asio::buffer(data, size), sender_endpoint);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive_from(
- this->get_implementation(), buffers, sender_endpoint, 0, ec);
- asio::detail::throw_error(ec, "receive_from");
- return s;
- }
-
- /// Receive raw data with the endpoint of the sender.
- /**
- * This function is used to receive raw data. The function call will block
- * until data has been received successfully or an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the data.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- */
- template <typename MutableBufferSequence>
- std::size_t receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive_from(
- this->get_implementation(), buffers, sender_endpoint, flags, ec);
- asio::detail::throw_error(ec, "receive_from");
- return s;
- }
-
- /// Receive raw data with the endpoint of the sender.
- /**
- * This function is used to receive raw data. The function call will block
- * until data has been received successfully or an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the data.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes received.
- */
- template <typename MutableBufferSequence>
- std::size_t receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- return this->get_service().receive_from(this->get_implementation(),
- buffers, sender_endpoint, flags, ec);
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive raw data. The function
- * call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the data. Ownership of the sender_endpoint object
- * is retained by the caller, which must guarantee that it is valid until the
- * handler is called.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code socket.async_receive_from(
- * asio::buffer(data, size), 0, sender_endpoint, handler); @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive_from(
- this->get_implementation(), buffers, sender_endpoint, 0,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive raw data. The function
- * call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the data. Ownership of the sender_endpoint object
- * is retained by the caller, which must guarantee that it is valid until the
- * handler is called.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive_from(
- this->get_implementation(), buffers, sender_endpoint, flags,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_RAW_SOCKET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_seq_packet_socket.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_seq_packet_socket.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_seq_packet_socket.hpp
deleted file mode 100644
index a3d720e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_seq_packet_socket.hpp
+++ /dev/null
@@ -1,565 +0,0 @@
-//
-// basic_seq_packet_socket.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_BASIC_SEQ_PACKET_SOCKET_HPP
-#define ASIO_BASIC_SEQ_PACKET_SOCKET_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 "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/seq_packet_socket_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides sequenced packet socket functionality.
-/**
- * The basic_seq_packet_socket class template provides asynchronous and blocking
- * sequenced packet socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
- typename SeqPacketSocketService = seq_packet_socket_service<Protocol> >
-class basic_seq_packet_socket
- : public basic_socket<Protocol, SeqPacketSocketService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename SeqPacketSocketService::native_handle_type native_type;
-
- /// The native representation of a socket.
- typedef typename SeqPacketSocketService::native_handle_type
- native_handle_type;
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- /// Construct a basic_seq_packet_socket without opening it.
- /**
- * This constructor creates a sequenced packet socket without opening it. The
- * socket needs to be opened and then connected or accepted before data can
- * be sent or received on it.
- *
- * @param io_service The io_service object that the sequenced packet socket
- * will use to dispatch handlers for any asynchronous operations performed on
- * the socket.
- */
- explicit basic_seq_packet_socket(asio::io_service& io_service)
- : basic_socket<Protocol, SeqPacketSocketService>(io_service)
- {
- }
-
- /// Construct and open a basic_seq_packet_socket.
- /**
- * This constructor creates and opens a sequenced_packet socket. The socket
- * needs to be connected or accepted before data can be sent or received on
- * it.
- *
- * @param io_service The io_service object that the sequenced packet socket
- * will use to dispatch handlers for any asynchronous operations performed on
- * the socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_seq_packet_socket(asio::io_service& io_service,
- const protocol_type& protocol)
- : basic_socket<Protocol, SeqPacketSocketService>(io_service, protocol)
- {
- }
-
- /// Construct a basic_seq_packet_socket, opening it and binding it to the
- /// given local endpoint.
- /**
- * This constructor creates a sequenced packet socket and automatically opens
- * it bound to the specified endpoint on the local machine. The protocol used
- * is the protocol associated with the given endpoint.
- *
- * @param io_service The io_service object that the sequenced packet socket
- * will use to dispatch handlers for any asynchronous operations performed on
- * the socket.
- *
- * @param endpoint An endpoint on the local machine to which the sequenced
- * packet socket will be bound.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_seq_packet_socket(asio::io_service& io_service,
- const endpoint_type& endpoint)
- : basic_socket<Protocol, SeqPacketSocketService>(io_service, endpoint)
- {
- }
-
- /// Construct a basic_seq_packet_socket on an existing native socket.
- /**
- * This constructor creates a sequenced packet socket object to hold an
- * existing native socket.
- *
- * @param io_service The io_service object that the sequenced packet socket
- * will use to dispatch handlers for any asynchronous operations performed on
- * the socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @param native_socket The new underlying socket implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_seq_packet_socket(asio::io_service& io_service,
- const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, SeqPacketSocketService>(
- io_service, protocol, native_socket)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_seq_packet_socket from another.
- /**
- * This constructor moves a sequenced packet socket from one object to
- * another.
- *
- * @param other The other basic_seq_packet_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
- */
- basic_seq_packet_socket(basic_seq_packet_socket&& other)
- : basic_socket<Protocol, SeqPacketSocketService>(
- ASIO_MOVE_CAST(basic_seq_packet_socket)(other))
- {
- }
-
- /// Move-assign a basic_seq_packet_socket from another.
- /**
- * This assignment operator moves a sequenced packet socket from one object to
- * another.
- *
- * @param other The other basic_seq_packet_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
- */
- basic_seq_packet_socket& operator=(basic_seq_packet_socket&& other)
- {
- basic_socket<Protocol, SeqPacketSocketService>::operator=(
- ASIO_MOVE_CAST(basic_seq_packet_socket)(other));
- return *this;
- }
-
- /// Move-construct a basic_seq_packet_socket from a socket of another protocol
- /// type.
- /**
- * This constructor moves a sequenced packet socket from one object to
- * another.
- *
- * @param other The other basic_seq_packet_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename SeqPacketSocketService1>
- basic_seq_packet_socket(
- basic_seq_packet_socket<Protocol1, SeqPacketSocketService1>&& other,
- typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, SeqPacketSocketService>(
- ASIO_MOVE_CAST2(basic_seq_packet_socket<
- Protocol1, SeqPacketSocketService1>)(other))
- {
- }
-
- /// Move-assign a basic_seq_packet_socket from a socket of another protocol
- /// type.
- /**
- * This assignment operator moves a sequenced packet socket from one object to
- * another.
- *
- * @param other The other basic_seq_packet_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename SeqPacketSocketService1>
- typename enable_if<is_convertible<Protocol1, Protocol>::value,
- basic_seq_packet_socket>::type& operator=(
- basic_seq_packet_socket<Protocol1, SeqPacketSocketService1>&& other)
- {
- basic_socket<Protocol, SeqPacketSocketService>::operator=(
- ASIO_MOVE_CAST2(basic_seq_packet_socket<
- Protocol1, SeqPacketSocketService1>)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Send some data on the socket.
- /**
- * This function is used to send data on the sequenced packet socket. The
- * function call will block until the data has been sent successfully, or an
- * until error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.send(asio::buffer(data, size), 0);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on the socket.
- /**
- * This function is used to send data on the sequenced packet socket. The
- * function call will block the data has been sent successfully, or an until
- * error occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes sent. Returns 0 if an error occurred.
- *
- * @note The send 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 send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send data on the sequenced packet
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks is retained by the caller, which must guarantee that they
- * remain valid until the handler is called.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_send(asio::buffer(data, size), 0, handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(this->get_implementation(),
- buffers, flags, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Receive some data on the socket.
- /**
- * This function is used to receive data on the sequenced packet socket. The
- * function call will block until data has been received successfully, or
- * until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param out_flags After the receive call completes, contains flags
- * associated with the received data. For example, if the
- * socket_base::message_end_of_record bit is set then the received data marks
- * the end of a record.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.receive(asio::buffer(data, size), out_flags);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags& out_flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, 0, out_flags, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on the socket.
- /**
- * This function is used to receive data on the sequenced packet socket. The
- * function call will block until data has been received successfully, or
- * until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param in_flags Flags specifying how the receive call is to be made.
- *
- * @param out_flags After the receive call completes, contains flags
- * associated with the received data. For example, if the
- * socket_base::message_end_of_record bit is set then the received data marks
- * the end of a record.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @note The receive operation may not receive 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.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.receive(asio::buffer(data, size), 0, out_flags);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, in_flags, out_flags, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the sequenced packet socket. The
- * function call will block until data has been received successfully, or
- * until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param in_flags Flags specifying how the receive call is to be made.
- *
- * @param out_flags After the receive call completes, contains flags
- * associated with the received data. For example, if the
- * socket_base::message_end_of_record bit is set then the received data marks
- * the end of a record.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes received. Returns 0 if an error occurred.
- *
- * @note The receive operation may not receive 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 receive(const MutableBufferSequence& buffers,
- socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, asio::error_code& ec)
- {
- return this->get_service().receive(this->get_implementation(),
- buffers, in_flags, out_flags, ec);
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive data from the sequenced
- * packet socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param out_flags Once the asynchronous operation completes, contains flags
- * associated with the received data. For example, if the
- * socket_base::message_end_of_record bit is set then the received data marks
- * the end of a record. The caller must guarantee that the referenced
- * variable remains valid until the handler is called.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.async_receive(asio::buffer(data, size), out_flags, handler);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- socket_base::message_flags& out_flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(
- this->get_implementation(), buffers, 0, out_flags,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive data from the sequenced
- * data socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param in_flags Flags specifying how the receive call is to be made.
- *
- * @param out_flags Once the asynchronous operation completes, contains flags
- * associated with the received data. For example, if the
- * socket_base::message_end_of_record bit is set then the received data marks
- * the end of a record. The caller must guarantee that the referenced
- * variable remains valid until the handler is called.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.async_receive(
- * asio::buffer(data, size),
- * 0, out_flags, handler);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(
- this->get_implementation(), buffers, in_flags, out_flags,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SEQ_PACKET_SOCKET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_serial_port.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_serial_port.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_serial_port.hpp
deleted file mode 100644
index 007d293..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_serial_port.hpp
+++ /dev/null
@@ -1,695 +0,0 @@
-//
-// basic_serial_port.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_BASIC_SERIAL_PORT_HPP
-#define ASIO_BASIC_SERIAL_PORT_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_HAS_SERIAL_PORT) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <string>
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/serial_port_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides serial port functionality.
-/**
- * The basic_serial_port class template provides functionality that is common
- * to all serial ports.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename SerialPortService = serial_port_service>
-class basic_serial_port
- : public basic_io_object<SerialPortService>,
- public serial_port_base
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// serial port.
- typedef typename SerialPortService::native_handle_type native_type;
-
- /// The native representation of a serial port.
- typedef typename SerialPortService::native_handle_type native_handle_type;
-
- /// A basic_serial_port is always the lowest layer.
- typedef basic_serial_port<SerialPortService> lowest_layer_type;
-
- /// Construct a basic_serial_port without opening it.
- /**
- * This constructor creates a serial port without opening it.
- *
- * @param io_service The io_service object that the serial port will use to
- * dispatch handlers for any asynchronous operations performed on the port.
- */
- explicit basic_serial_port(asio::io_service& io_service)
- : basic_io_object<SerialPortService>(io_service)
- {
- }
-
- /// Construct and open a basic_serial_port.
- /**
- * This constructor creates and opens a serial port for the specified device
- * name.
- *
- * @param io_service The io_service object that the serial port will use to
- * dispatch handlers for any asynchronous operations performed on the port.
- *
- * @param device The platform-specific device name for this serial
- * port.
- */
- explicit basic_serial_port(asio::io_service& io_service,
- const char* device)
- : basic_io_object<SerialPortService>(io_service)
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), device, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Construct and open a basic_serial_port.
- /**
- * This constructor creates and opens a serial port for the specified device
- * name.
- *
- * @param io_service The io_service object that the serial port will use to
- * dispatch handlers for any asynchronous operations performed on the port.
- *
- * @param device The platform-specific device name for this serial
- * port.
- */
- explicit basic_serial_port(asio::io_service& io_service,
- const std::string& device)
- : basic_io_object<SerialPortService>(io_service)
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), device, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Construct a basic_serial_port on an existing native serial port.
- /**
- * This constructor creates a serial port object to hold an existing native
- * serial port.
- *
- * @param io_service The io_service object that the serial port will use to
- * dispatch handlers for any asynchronous operations performed on the port.
- *
- * @param native_serial_port A native serial port.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_serial_port(asio::io_service& io_service,
- const native_handle_type& native_serial_port)
- : basic_io_object<SerialPortService>(io_service)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- native_serial_port, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_serial_port from another.
- /**
- * This constructor moves a serial port from one object to another.
- *
- * @param other The other basic_serial_port object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_serial_port(io_service&) constructor.
- */
- basic_serial_port(basic_serial_port&& other)
- : basic_io_object<SerialPortService>(
- ASIO_MOVE_CAST(basic_serial_port)(other))
- {
- }
-
- /// Move-assign a basic_serial_port from another.
- /**
- * This assignment operator moves a serial port from one object to another.
- *
- * @param other The other basic_serial_port object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_serial_port(io_service&) constructor.
- */
- basic_serial_port& operator=(basic_serial_port&& other)
- {
- basic_io_object<SerialPortService>::operator=(
- ASIO_MOVE_CAST(basic_serial_port)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Get a reference to the lowest layer.
- /**
- * This function returns a reference to the lowest layer in a stack of
- * layers. Since a basic_serial_port cannot contain any further layers, it
- * simply returns a reference to itself.
- *
- * @return A reference to the lowest layer in the stack of layers. Ownership
- * is not transferred to the caller.
- */
- lowest_layer_type& lowest_layer()
- {
- return *this;
- }
-
- /// Get a const reference to the lowest layer.
- /**
- * This function returns a const reference to the lowest layer in a stack of
- * layers. Since a basic_serial_port cannot contain any further layers, it
- * simply returns a reference to itself.
- *
- * @return A const reference to the lowest layer in the stack of layers.
- * Ownership is not transferred to the caller.
- */
- const lowest_layer_type& lowest_layer() const
- {
- return *this;
- }
-
- /// Open the serial port using the specified device name.
- /**
- * This function opens the serial port for the specified device name.
- *
- * @param device The platform-specific device name.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void open(const std::string& device)
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), device, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Open the serial port using the specified device name.
- /**
- * This function opens the serial port using the given platform-specific
- * device name.
- *
- * @param device The platform-specific device name.
- *
- * @param ec Set the indicate what error occurred, if any.
- */
- asio::error_code open(const std::string& device,
- asio::error_code& ec)
- {
- return this->get_service().open(this->get_implementation(), device, ec);
- }
-
- /// Assign an existing native serial port to the serial port.
- /*
- * This function opens the serial port to hold an existing native serial port.
- *
- * @param native_serial_port A native serial port.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void assign(const native_handle_type& native_serial_port)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- native_serial_port, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
- /// Assign an existing native serial port to the serial port.
- /*
- * This function opens the serial port to hold an existing native serial port.
- *
- * @param native_serial_port A native serial port.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code assign(const native_handle_type& native_serial_port,
- asio::error_code& ec)
- {
- return this->get_service().assign(this->get_implementation(),
- native_serial_port, ec);
- }
-
- /// Determine whether the serial port is open.
- bool is_open() const
- {
- return this->get_service().is_open(this->get_implementation());
- }
-
- /// Close the serial port.
- /**
- * This function is used to close the serial port. Any asynchronous read or
- * write operations will be cancelled immediately, and will complete with the
- * asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void close()
- {
- asio::error_code ec;
- this->get_service().close(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "close");
- }
-
- /// Close the serial port.
- /**
- * This function is used to close the serial port. Any asynchronous read or
- * write operations will be cancelled immediately, and will complete with the
- * asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code close(asio::error_code& ec)
- {
- return this->get_service().close(this->get_implementation(), ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native serial port
- /// representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * serial port. This is intended to allow access to native serial port
- * functionality that is not otherwise provided.
- */
- native_type native()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Get the native serial port representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * serial port. This is intended to allow access to native serial port
- * functionality that is not otherwise provided.
- */
- native_handle_type native_handle()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Cancel all asynchronous operations associated with the serial port.
- /**
- * This function causes all outstanding asynchronous read or write operations
- * to finish immediately, and the handlers for cancelled operations will be
- * passed the asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void cancel()
- {
- asio::error_code ec;
- this->get_service().cancel(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "cancel");
- }
-
- /// Cancel all asynchronous operations associated with the serial port.
- /**
- * This function causes all outstanding asynchronous read or write operations
- * to finish immediately, and the handlers for cancelled operations will be
- * passed the asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code cancel(asio::error_code& ec)
- {
- return this->get_service().cancel(this->get_implementation(), ec);
- }
-
- /// Send a break sequence to the serial port.
- /**
- * This function causes a break sequence of platform-specific duration to be
- * sent out the serial port.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void send_break()
- {
- asio::error_code ec;
- this->get_service().send_break(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "send_break");
- }
-
- /// Send a break sequence to the serial port.
- /**
- * This function causes a break sequence of platform-specific duration to be
- * sent out the serial port.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code send_break(asio::error_code& ec)
- {
- return this->get_service().send_break(this->get_implementation(), ec);
- }
-
- /// Set an option on the serial port.
- /**
- * This function is used to set an option on the serial port.
- *
- * @param option The option value to be set on the serial port.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa SettableSerialPortOption @n
- * asio::serial_port_base::baud_rate @n
- * asio::serial_port_base::flow_control @n
- * asio::serial_port_base::parity @n
- * asio::serial_port_base::stop_bits @n
- * asio::serial_port_base::character_size
- */
- template <typename SettableSerialPortOption>
- void set_option(const SettableSerialPortOption& option)
- {
- asio::error_code ec;
- this->get_service().set_option(this->get_implementation(), option, ec);
- asio::detail::throw_error(ec, "set_option");
- }
-
- /// Set an option on the serial port.
- /**
- * This function is used to set an option on the serial port.
- *
- * @param option The option value to be set on the serial port.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa SettableSerialPortOption @n
- * asio::serial_port_base::baud_rate @n
- * asio::serial_port_base::flow_control @n
- * asio::serial_port_base::parity @n
- * asio::serial_port_base::stop_bits @n
- * asio::serial_port_base::character_size
- */
- template <typename SettableSerialPortOption>
- asio::error_code set_option(const SettableSerialPortOption& option,
- asio::error_code& ec)
- {
- return this->get_service().set_option(
- this->get_implementation(), option, ec);
- }
-
- /// Get an option from the serial port.
- /**
- * This function is used to get the current value of an option on the serial
- * port.
- *
- * @param option The option value to be obtained from the serial port.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa GettableSerialPortOption @n
- * asio::serial_port_base::baud_rate @n
- * asio::serial_port_base::flow_control @n
- * asio::serial_port_base::parity @n
- * asio::serial_port_base::stop_bits @n
- * asio::serial_port_base::character_size
- */
- template <typename GettableSerialPortOption>
- void get_option(GettableSerialPortOption& option)
- {
- asio::error_code ec;
- this->get_service().get_option(this->get_implementation(), option, ec);
- asio::detail::throw_error(ec, "get_option");
- }
-
- /// Get an option from the serial port.
- /**
- * This function is used to get the current value of an option on the serial
- * port.
- *
- * @param option The option value to be obtained from the serial port.
- *
- * @param ec Set to indicate what error occured, if any.
- *
- * @sa GettableSerialPortOption @n
- * asio::serial_port_base::baud_rate @n
- * asio::serial_port_base::flow_control @n
- * asio::serial_port_base::parity @n
- * asio::serial_port_base::stop_bits @n
- * asio::serial_port_base::character_size
- */
- template <typename GettableSerialPortOption>
- asio::error_code get_option(GettableSerialPortOption& option,
- asio::error_code& ec)
- {
- return this->get_service().get_option(
- this->get_implementation(), option, ec);
- }
-
- /// Write some data to the serial port.
- /**
- * This function is used to write data to the serial port. The function call
- * will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the serial port.
- *
- * @returns The number of bytes written.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * serial_port.write_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().write_some(
- this->get_implementation(), buffers, ec);
- asio::detail::throw_error(ec, "write_some");
- return s;
- }
-
- /// Write some data to the serial port.
- /**
- * This function is used to write data to the serial port. The function call
- * will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the serial port.
- *
- * @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 this->get_service().write_some(
- this->get_implementation(), buffers, ec);
- }
-
- /// Start an asynchronous write.
- /**
- * This function is used to asynchronously write data to the serial port.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be written to the serial port.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The write 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 asynchronous operation completes.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * serial_port.async_write_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_write_some(this->get_implementation(),
- buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Read some data from the serial port.
- /**
- * This function is used to read data from the serial port. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be read.
- *
- * @returns The number of bytes read.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * serial_port.read_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().read_some(
- this->get_implementation(), buffers, ec);
- asio::detail::throw_error(ec, "read_some");
- return s;
- }
-
- /// Read some data from the serial port.
- /**
- * This function is used to read data from the serial port. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more 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 this->get_service().read_some(
- this->get_implementation(), buffers, ec);
- }
-
- /// Start an asynchronous read.
- /**
- * This function is used to asynchronously read data from the serial port.
- * The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be read.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The read 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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * serial_port.async_read_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_read_some(this->get_implementation(),
- buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_BASIC_SERIAL_PORT_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[09/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/tcp.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/tcp.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/tcp.hpp
deleted file mode 100644
index f90a55c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/tcp.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-//
-// ip/tcp.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_IP_TCP_HPP
-#define ASIO_IP_TCP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_socket_acceptor.hpp"
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/detail/socket_option.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Encapsulates the flags needed for TCP.
-/**
- * The asio::ip::tcp class contains flags necessary for TCP sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol, InternetProtocol.
- */
-class tcp
-{
-public:
- /// The type of a TCP endpoint.
- typedef basic_endpoint<tcp> endpoint;
-
- /// Construct to represent the IPv4 TCP protocol.
- static tcp v4()
- {
- return tcp(ASIO_OS_DEF(AF_INET));
- }
-
- /// Construct to represent the IPv6 TCP protocol.
- static tcp v6()
- {
- return tcp(ASIO_OS_DEF(AF_INET6));
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_STREAM);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return ASIO_OS_DEF(IPPROTO_TCP);
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// The TCP socket type.
- typedef basic_stream_socket<tcp> socket;
-
- /// The TCP acceptor type.
- typedef basic_socket_acceptor<tcp> acceptor;
-
- /// The TCP resolver type.
- typedef basic_resolver<tcp> resolver;
-
-#if !defined(ASIO_NO_IOSTREAM)
- /// The TCP iostream type.
- typedef basic_socket_iostream<tcp> iostream;
-#endif // !defined(ASIO_NO_IOSTREAM)
-
- /// Socket option for disabling the Nagle algorithm.
- /**
- * Implements the IPPROTO_TCP/TCP_NODELAY socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::no_delay option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::tcp::no_delay option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined no_delay;
-#else
- typedef asio::detail::socket_option::boolean<
- ASIO_OS_DEF(IPPROTO_TCP), ASIO_OS_DEF(TCP_NODELAY)> no_delay;
-#endif
-
- /// Compare two protocols for equality.
- friend bool operator==(const tcp& p1, const tcp& p2)
- {
- return p1.family_ == p2.family_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const tcp& p1, const tcp& p2)
- {
- return p1.family_ != p2.family_;
- }
-
-private:
- // Construct with a specific family.
- explicit tcp(int protocol_family)
- : family_(protocol_family)
- {
- }
-
- int family_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_TCP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/udp.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/udp.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/udp.hpp
deleted file mode 100644
index dd2d27d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/udp.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-//
-// ip/udp.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_IP_UDP_HPP
-#define ASIO_IP_UDP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Encapsulates the flags needed for UDP.
-/**
- * The asio::ip::udp class contains flags necessary for UDP sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol, InternetProtocol.
- */
-class udp
-{
-public:
- /// The type of a UDP endpoint.
- typedef basic_endpoint<udp> endpoint;
-
- /// Construct to represent the IPv4 UDP protocol.
- static udp v4()
- {
- return udp(ASIO_OS_DEF(AF_INET));
- }
-
- /// Construct to represent the IPv6 UDP protocol.
- static udp v6()
- {
- return udp(ASIO_OS_DEF(AF_INET6));
- }
-
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return ASIO_OS_DEF(SOCK_DGRAM);
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return ASIO_OS_DEF(IPPROTO_UDP);
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return family_;
- }
-
- /// The UDP socket type.
- typedef basic_datagram_socket<udp> socket;
-
- /// The UDP resolver type.
- typedef basic_resolver<udp> resolver;
-
- /// Compare two protocols for equality.
- friend bool operator==(const udp& p1, const udp& p2)
- {
- return p1.family_ == p2.family_;
- }
-
- /// Compare two protocols for inequality.
- friend bool operator!=(const udp& p1, const udp& p2)
- {
- return p1.family_ != p2.family_;
- }
-
-private:
- // Construct with a specific family.
- explicit udp(int protocol_family)
- : family_(protocol_family)
- {
- }
-
- int family_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_UDP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/unicast.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/unicast.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/unicast.hpp
deleted file mode 100644
index 130e664..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/unicast.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// ip/unicast.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_IP_UNICAST_HPP
-#define ASIO_IP_UNICAST_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 "asio/ip/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace unicast {
-
-/// Socket option for time-to-live associated with outgoing unicast packets.
-/**
- * Implements the IPPROTO_IP/IP_UNICAST_TTL socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::unicast::hops option(4);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::ip::unicast::hops option;
- * socket.get_option(option);
- * int ttl = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined hops;
-#else
-typedef asio::ip::detail::socket_option::unicast_hops<
- ASIO_OS_DEF(IPPROTO_IP),
- ASIO_OS_DEF(IP_TTL),
- ASIO_OS_DEF(IPPROTO_IPV6),
- ASIO_OS_DEF(IPV6_UNICAST_HOPS)> hops;
-#endif
-
-} // namespace unicast
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_UNICAST_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/v6_only.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/v6_only.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/v6_only.hpp
deleted file mode 100644
index 5be8c1c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ip/v6_only.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// ip/v6_only.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_IP_V6_ONLY_HPP
-#define ASIO_IP_V6_ONLY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Socket option for determining whether an IPv6 socket supports IPv6
-/// communication only.
-/**
- * Implements the IPPROTO_IPV6/IP_V6ONLY socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::v6_only option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::ip::v6_only option;
- * socket.get_option(option);
- * bool v6_only = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined v6_only;
-#elif defined(IPV6_V6ONLY)
-typedef asio::detail::socket_option::boolean<
- IPPROTO_IPV6, IPV6_V6ONLY> v6_only;
-#else
-typedef asio::detail::socket_option::boolean<
- asio::detail::custom_socket_option_level,
- asio::detail::always_fail_option> v6_only;
-#endif
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_V6_ONLY_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_read_buffered.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_read_buffered.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_read_buffered.hpp
deleted file mode 100644
index 3f08ce0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_read_buffered.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// is_read_buffered.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_IS_READ_BUFFERED_HPP
-#define ASIO_IS_READ_BUFFERED_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffered_read_stream_fwd.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail {
-
-template <typename Stream>
-char is_read_buffered_helper(buffered_stream<Stream>* s);
-
-template <typename Stream>
-char is_read_buffered_helper(buffered_read_stream<Stream>* s);
-
-struct is_read_buffered_big_type { char data[10]; };
-is_read_buffered_big_type is_read_buffered_helper(...);
-
-} // namespace detail
-
-/// The is_read_buffered class is a traits class that may be used to determine
-/// whether a stream type supports buffering of read data.
-template <typename Stream>
-class is_read_buffered
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The value member is true only if the Stream type supports buffering of
- /// read data.
- static const bool value;
-#else
- ASIO_STATIC_CONSTANT(bool,
- value = sizeof(detail::is_read_buffered_helper((Stream*)0)) == 1);
-#endif
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IS_READ_BUFFERED_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_write_buffered.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_write_buffered.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_write_buffered.hpp
deleted file mode 100644
index 8204d90..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/is_write_buffered.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// is_write_buffered.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_IS_WRITE_BUFFERED_HPP
-#define ASIO_IS_WRITE_BUFFERED_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-#include "asio/buffered_write_stream_fwd.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail {
-
-template <typename Stream>
-char is_write_buffered_helper(buffered_stream<Stream>* s);
-
-template <typename Stream>
-char is_write_buffered_helper(buffered_write_stream<Stream>* s);
-
-struct is_write_buffered_big_type { char data[10]; };
-is_write_buffered_big_type is_write_buffered_helper(...);
-
-} // namespace detail
-
-/// The is_write_buffered class is a traits class that may be used to determine
-/// whether a stream type supports buffering of written data.
-template <typename Stream>
-class is_write_buffered
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The value member is true only if the Stream type supports buffering of
- /// written data.
- static const bool value;
-#else
- ASIO_STATIC_CONSTANT(bool,
- value = sizeof(detail::is_write_buffered_helper((Stream*)0)) == 1);
-#endif
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IS_WRITE_BUFFERED_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/basic_endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/basic_endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/basic_endpoint.hpp
deleted file mode 100644
index cce3f4a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/basic_endpoint.hpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//
-// local/basic_endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Derived from a public domain implementation written by Daniel Casimiro.
-//
-// 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_LOCAL_BASIC_ENDPOINT_HPP
-#define ASIO_LOCAL_BASIC_ENDPOINT_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_HAS_LOCAL_SOCKETS) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/local/detail/endpoint.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Describes an endpoint for a UNIX socket.
-/**
- * The asio::local::basic_endpoint class template describes an endpoint
- * that may be associated with a particular UNIX socket.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * Endpoint.
- */
-template <typename Protocol>
-class basic_endpoint
-{
-public:
- /// The protocol type associated with the endpoint.
- typedef Protocol protocol_type;
-
- /// The type of the endpoint structure. This type is dependent on the
- /// underlying implementation of the socket layer.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined data_type;
-#else
- typedef asio::detail::socket_addr_type data_type;
-#endif
-
- /// Default constructor.
- basic_endpoint()
- {
- }
-
- /// Construct an endpoint using the specified path name.
- basic_endpoint(const char* path_name)
- : impl_(path_name)
- {
- }
-
- /// Construct an endpoint using the specified path name.
- basic_endpoint(const std::string& path_name)
- : impl_(path_name)
- {
- }
-
- /// Copy constructor.
- basic_endpoint(const basic_endpoint& other)
- : impl_(other.impl_)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move constructor.
- basic_endpoint(basic_endpoint&& other)
- : impl_(other.impl_)
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// Assign from another endpoint.
- basic_endpoint& operator=(const basic_endpoint& other)
- {
- impl_ = other.impl_;
- return *this;
- }
-
-#if defined(ASIO_HAS_MOVE)
- /// Move-assign from another endpoint.
- basic_endpoint& operator=(basic_endpoint&& other)
- {
- impl_ = other.impl_;
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- /// The protocol associated with the endpoint.
- protocol_type protocol() const
- {
- return protocol_type();
- }
-
- /// Get the underlying endpoint in the native type.
- data_type* data()
- {
- return impl_.data();
- }
-
- /// Get the underlying endpoint in the native type.
- const data_type* data() const
- {
- return impl_.data();
- }
-
- /// Get the underlying size of the endpoint in the native type.
- std::size_t size() const
- {
- return impl_.size();
- }
-
- /// Set the underlying size of the endpoint in the native type.
- void resize(std::size_t new_size)
- {
- impl_.resize(new_size);
- }
-
- /// Get the capacity of the endpoint in the native type.
- std::size_t capacity() const
- {
- return impl_.capacity();
- }
-
- /// Get the path associated with the endpoint.
- std::string path() const
- {
- return impl_.path();
- }
-
- /// Set the path associated with the endpoint.
- void path(const char* p)
- {
- impl_.path(p);
- }
-
- /// Set the path associated with the endpoint.
- void path(const std::string& p)
- {
- impl_.path(p);
- }
-
- /// Compare two endpoints for equality.
- friend bool operator==(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return e1.impl_ == e2.impl_;
- }
-
- /// Compare two endpoints for inequality.
- friend bool operator!=(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return !(e1.impl_ == e2.impl_);
- }
-
- /// Compare endpoints for ordering.
- friend bool operator<(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return e1.impl_ < e2.impl_;
- }
-
- /// Compare endpoints for ordering.
- friend bool operator>(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return e2.impl_ < e1.impl_;
- }
-
- /// Compare endpoints for ordering.
- friend bool operator<=(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return !(e2 < e1);
- }
-
- /// Compare endpoints for ordering.
- friend bool operator>=(const basic_endpoint<Protocol>& e1,
- const basic_endpoint<Protocol>& e2)
- {
- return !(e1 < e2);
- }
-
-private:
- // The underlying UNIX domain endpoint.
- asio::local::detail::endpoint impl_;
-};
-
-/// Output an endpoint as a string.
-/**
- * Used to output a human-readable string for a specified endpoint.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param endpoint The endpoint to be written.
- *
- * @return The output stream.
- *
- * @relates asio::local::basic_endpoint
- */
-template <typename Elem, typename Traits, typename Protocol>
-std::basic_ostream<Elem, Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& os,
- const basic_endpoint<Protocol>& endpoint)
-{
- os << endpoint.path();
- return os;
-}
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_BASIC_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/connect_pair.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/connect_pair.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/connect_pair.hpp
deleted file mode 100644
index 45a3de0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/connect_pair.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-//
-// local/connect_pair.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_LOCAL_CONNECT_PAIR_HPP
-#define ASIO_LOCAL_CONNECT_PAIR_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_HAS_LOCAL_SOCKETS) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_socket.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/local/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Create a pair of connected sockets.
-template <typename Protocol, typename SocketService1, typename SocketService2>
-void connect_pair(
- basic_socket<Protocol, SocketService1>& socket1,
- basic_socket<Protocol, SocketService2>& socket2);
-
-/// Create a pair of connected sockets.
-template <typename Protocol, typename SocketService1, typename SocketService2>
-asio::error_code connect_pair(
- basic_socket<Protocol, SocketService1>& socket1,
- basic_socket<Protocol, SocketService2>& socket2,
- asio::error_code& ec);
-
-template <typename Protocol, typename SocketService1, typename SocketService2>
-inline void connect_pair(
- basic_socket<Protocol, SocketService1>& socket1,
- basic_socket<Protocol, SocketService2>& socket2)
-{
- asio::error_code ec;
- connect_pair(socket1, socket2, ec);
- asio::detail::throw_error(ec, "connect_pair");
-}
-
-template <typename Protocol, typename SocketService1, typename SocketService2>
-inline asio::error_code connect_pair(
- basic_socket<Protocol, SocketService1>& socket1,
- basic_socket<Protocol, SocketService2>& socket2,
- asio::error_code& ec)
-{
- // Check that this function is only being used with a UNIX domain socket.
- asio::local::basic_endpoint<Protocol>* tmp
- = static_cast<typename Protocol::endpoint*>(0);
- (void)tmp;
-
- Protocol protocol;
- asio::detail::socket_type sv[2];
- if (asio::detail::socket_ops::socketpair(protocol.family(),
- protocol.type(), protocol.protocol(), sv, ec)
- == asio::detail::socket_error_retval)
- return ec;
-
- if (socket1.assign(protocol, sv[0], ec))
- {
- asio::error_code temp_ec;
- asio::detail::socket_ops::state_type state[2] = { 0, 0 };
- asio::detail::socket_ops::close(sv[0], state[0], true, temp_ec);
- asio::detail::socket_ops::close(sv[1], state[1], true, temp_ec);
- return ec;
- }
-
- if (socket2.assign(protocol, sv[1], ec))
- {
- asio::error_code temp_ec;
- socket1.close(temp_ec);
- asio::detail::socket_ops::state_type state = 0;
- asio::detail::socket_ops::close(sv[1], state, true, temp_ec);
- return ec;
- }
-
- return ec;
-}
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_CONNECT_PAIR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/datagram_protocol.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/datagram_protocol.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/datagram_protocol.hpp
deleted file mode 100644
index 8d57903..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/datagram_protocol.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// local/datagram_protocol.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_LOCAL_DATAGRAM_PROTOCOL_HPP
-#define ASIO_LOCAL_DATAGRAM_PROTOCOL_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_HAS_LOCAL_SOCKETS) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/local/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Encapsulates the flags needed for datagram-oriented UNIX sockets.
-/**
- * The asio::local::datagram_protocol class contains flags necessary for
- * datagram-oriented UNIX domain sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class datagram_protocol
-{
-public:
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return SOCK_DGRAM;
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return 0;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return AF_UNIX;
- }
-
- /// The type of a UNIX domain endpoint.
- typedef basic_endpoint<datagram_protocol> endpoint;
-
- /// The UNIX domain socket type.
- typedef basic_datagram_socket<datagram_protocol> socket;
-};
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/endpoint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/endpoint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/endpoint.hpp
deleted file mode 100644
index 66c72da..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/endpoint.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// local/detail/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Derived from a public domain implementation written by Daniel Casimiro.
-//
-// 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_LOCAL_DETAIL_ENDPOINT_HPP
-#define ASIO_LOCAL_DETAIL_ENDPOINT_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_HAS_LOCAL_SOCKETS)
-
-#include <cstddef>
-#include <string>
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-namespace detail {
-
-// Helper class for implementing a UNIX domain endpoint.
-class endpoint
-{
-public:
- // Default constructor.
- ASIO_DECL endpoint();
-
- // Construct an endpoint using the specified path name.
- ASIO_DECL endpoint(const char* path_name);
-
- // Construct an endpoint using the specified path name.
- ASIO_DECL endpoint(const std::string& path_name);
-
- // Copy constructor.
- endpoint(const endpoint& other)
- : data_(other.data_),
- path_length_(other.path_length_)
- {
- }
-
- // Assign from another endpoint.
- endpoint& operator=(const endpoint& other)
- {
- data_ = other.data_;
- path_length_ = other.path_length_;
- return *this;
- }
-
- // Get the underlying endpoint in the native type.
- asio::detail::socket_addr_type* data()
- {
- return &data_.base;
- }
-
- // Get the underlying endpoint in the native type.
- const asio::detail::socket_addr_type* data() const
- {
- return &data_.base;
- }
-
- // Get the underlying size of the endpoint in the native type.
- std::size_t size() const
- {
- return path_length_
- + offsetof(asio::detail::sockaddr_un_type, sun_path);
- }
-
- // Set the underlying size of the endpoint in the native type.
- ASIO_DECL void resize(std::size_t size);
-
- // Get the capacity of the endpoint in the native type.
- std::size_t capacity() const
- {
- return sizeof(asio::detail::sockaddr_un_type);
- }
-
- // Get the path associated with the endpoint.
- ASIO_DECL std::string path() const;
-
- // Set the path associated with the endpoint.
- ASIO_DECL void path(const char* p);
-
- // Set the path associated with the endpoint.
- ASIO_DECL void path(const std::string& p);
-
- // Compare two endpoints for equality.
- ASIO_DECL friend bool operator==(
- const endpoint& e1, const endpoint& e2);
-
- // Compare endpoints for ordering.
- ASIO_DECL friend bool operator<(
- const endpoint& e1, const endpoint& e2);
-
-private:
- // The underlying UNIX socket address.
- union data_union
- {
- asio::detail::socket_addr_type base;
- asio::detail::sockaddr_un_type local;
- } data_;
-
- // The length of the path associated with the endpoint.
- std::size_t path_length_;
-
- // Initialise with a specified path.
- ASIO_DECL void init(const char* path, std::size_t path_length);
-};
-
-} // namespace detail
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/local/detail/impl/endpoint.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#endif // ASIO_LOCAL_DETAIL_ENDPOINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/impl/endpoint.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/impl/endpoint.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/impl/endpoint.ipp
deleted file mode 100644
index c625ab2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/detail/impl/endpoint.ipp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// local/detail/impl/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Derived from a public domain implementation written by Daniel Casimiro.
-//
-// 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_LOCAL_DETAIL_IMPL_ENDPOINT_IPP
-#define ASIO_LOCAL_DETAIL_IMPL_ENDPOINT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#include <cstring>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/local/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-namespace detail {
-
-endpoint::endpoint()
-{
- init("", 0);
-}
-
-endpoint::endpoint(const char* path_name)
-{
- using namespace std; // For strlen.
- init(path_name, strlen(path_name));
-}
-
-endpoint::endpoint(const std::string& path_name)
-{
- init(path_name.data(), path_name.length());
-}
-
-void endpoint::resize(std::size_t new_size)
-{
- if (new_size > sizeof(asio::detail::sockaddr_un_type))
- {
- asio::error_code ec(asio::error::invalid_argument);
- asio::detail::throw_error(ec);
- }
- else if (new_size == 0)
- {
- path_length_ = 0;
- }
- else
- {
- path_length_ = new_size
- - offsetof(asio::detail::sockaddr_un_type, sun_path);
-
- // The path returned by the operating system may be NUL-terminated.
- if (path_length_ > 0 && data_.local.sun_path[path_length_ - 1] == 0)
- --path_length_;
- }
-}
-
-std::string endpoint::path() const
-{
- return std::string(data_.local.sun_path, path_length_);
-}
-
-void endpoint::path(const char* p)
-{
- using namespace std; // For strlen.
- init(p, strlen(p));
-}
-
-void endpoint::path(const std::string& p)
-{
- init(p.data(), p.length());
-}
-
-bool operator==(const endpoint& e1, const endpoint& e2)
-{
- return e1.path() == e2.path();
-}
-
-bool operator<(const endpoint& e1, const endpoint& e2)
-{
- return e1.path() < e2.path();
-}
-
-void endpoint::init(const char* path_name, std::size_t path_length)
-{
- if (path_length > sizeof(data_.local.sun_path) - 1)
- {
- // The buffer is not large enough to store this address.
- asio::error_code ec(asio::error::name_too_long);
- asio::detail::throw_error(ec);
- }
-
- using namespace std; // For memcpy.
- data_.local = asio::detail::sockaddr_un_type();
- data_.local.sun_family = AF_UNIX;
- memcpy(data_.local.sun_path, path_name, path_length);
- path_length_ = path_length;
-
- // NUL-terminate normal path names. Names that start with a NUL are in the
- // UNIX domain protocol's "abstract namespace" and are not NUL-terminated.
- if (path_length > 0 && data_.local.sun_path[0] == 0)
- data_.local.sun_path[path_length] = 0;
-}
-
-} // namespace detail
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#endif // ASIO_LOCAL_DETAIL_IMPL_ENDPOINT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/stream_protocol.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/stream_protocol.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/stream_protocol.hpp
deleted file mode 100644
index abb0b52..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/local/stream_protocol.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// local/stream_protocol.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_LOCAL_STREAM_PROTOCOL_HPP
-#define ASIO_LOCAL_STREAM_PROTOCOL_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_HAS_LOCAL_SOCKETS) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_socket_acceptor.hpp"
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/local/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Encapsulates the flags needed for stream-oriented UNIX sockets.
-/**
- * The asio::local::stream_protocol class contains flags necessary for
- * stream-oriented UNIX domain sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class stream_protocol
-{
-public:
- /// Obtain an identifier for the type of the protocol.
- int type() const
- {
- return SOCK_STREAM;
- }
-
- /// Obtain an identifier for the protocol.
- int protocol() const
- {
- return 0;
- }
-
- /// Obtain an identifier for the protocol family.
- int family() const
- {
- return AF_UNIX;
- }
-
- /// The type of a UNIX domain endpoint.
- typedef basic_endpoint<stream_protocol> endpoint;
-
- /// The UNIX domain socket type.
- typedef basic_stream_socket<stream_protocol> socket;
-
- /// The UNIX domain acceptor type.
- typedef basic_socket_acceptor<stream_protocol> acceptor;
-
-#if !defined(ASIO_NO_IOSTREAM)
- /// The UNIX domain iostream type.
- typedef basic_socket_iostream<stream_protocol> iostream;
-#endif // !defined(ASIO_NO_IOSTREAM)
-};
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_STREAM_PROTOCOL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/placeholders.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/placeholders.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/placeholders.hpp
deleted file mode 100644
index 371ac7f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/placeholders.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// placeholders.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_PLACEHOLDERS_HPP
-#define ASIO_PLACEHOLDERS_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_HAS_BOOST_BIND)
-# include <boost/bind/arg.hpp>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace placeholders {
-
-#if defined(GENERATING_DOCUMENTATION)
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the error argument of a handler for any of the asynchronous functions.
-unspecified error;
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the bytes_transferred argument of a handler for asynchronous functions such
-/// as asio::basic_stream_socket::async_write_some or
-/// asio::async_write.
-unspecified bytes_transferred;
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the iterator argument of a handler for asynchronous functions such as
-/// asio::basic_resolver::async_resolve.
-unspecified iterator;
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the signal_number argument of a handler for asynchronous functions such as
-/// asio::signal_set::async_wait.
-unspecified signal_number;
-
-#elif defined(ASIO_HAS_BOOST_BIND)
-# if defined(__BORLANDC__) || defined(__GNUC__)
-
-inline boost::arg<1> error()
-{
- return boost::arg<1>();
-}
-
-inline boost::arg<2> bytes_transferred()
-{
- return boost::arg<2>();
-}
-
-inline boost::arg<2> iterator()
-{
- return boost::arg<2>();
-}
-
-inline boost::arg<2> signal_number()
-{
- return boost::arg<2>();
-}
-
-# else
-
-namespace detail
-{
- template <int Number>
- struct placeholder
- {
- static boost::arg<Number>& get()
- {
- static boost::arg<Number> result;
- return result;
- }
- };
-}
-
-# if defined(ASIO_MSVC) && (ASIO_MSVC < 1400)
-
-static boost::arg<1>& error
- = asio::placeholders::detail::placeholder<1>::get();
-static boost::arg<2>& bytes_transferred
- = asio::placeholders::detail::placeholder<2>::get();
-static boost::arg<2>& iterator
- = asio::placeholders::detail::placeholder<2>::get();
-static boost::arg<2>& signal_number
- = asio::placeholders::detail::placeholder<2>::get();
-
-# else
-
-namespace
-{
- boost::arg<1>& error
- = asio::placeholders::detail::placeholder<1>::get();
- boost::arg<2>& bytes_transferred
- = asio::placeholders::detail::placeholder<2>::get();
- boost::arg<2>& iterator
- = asio::placeholders::detail::placeholder<2>::get();
- boost::arg<2>& signal_number
- = asio::placeholders::detail::placeholder<2>::get();
-} // namespace
-
-# endif
-# endif
-#endif
-
-} // namespace placeholders
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_PLACEHOLDERS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_descriptor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_descriptor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_descriptor.hpp
deleted file mode 100644
index f06da91..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_descriptor.hpp
+++ /dev/null
@@ -1,490 +0,0 @@
-//
-// posix/basic_descriptor.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_POSIX_BASIC_DESCRIPTOR_HPP
-#define ASIO_POSIX_BASIC_DESCRIPTOR_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_HAS_POSIX_STREAM_DESCRIPTOR) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/posix/descriptor_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Provides POSIX descriptor functionality.
-/**
- * The posix::basic_descriptor class template provides the ability to wrap a
- * POSIX descriptor.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename DescriptorService>
-class basic_descriptor
- : public basic_io_object<DescriptorService>,
- public descriptor_base
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// descriptor.
- typedef typename DescriptorService::native_handle_type native_type;
-
- /// The native representation of a descriptor.
- typedef typename DescriptorService::native_handle_type native_handle_type;
-
- /// A basic_descriptor is always the lowest layer.
- typedef basic_descriptor<DescriptorService> lowest_layer_type;
-
- /// Construct a basic_descriptor without opening it.
- /**
- * This constructor creates a descriptor without opening it.
- *
- * @param io_service The io_service object that the descriptor will use to
- * dispatch handlers for any asynchronous operations performed on the
- * descriptor.
- */
- explicit basic_descriptor(asio::io_service& io_service)
- : basic_io_object<DescriptorService>(io_service)
- {
- }
-
- /// Construct a basic_descriptor on an existing native descriptor.
- /**
- * This constructor creates a descriptor object to hold an existing native
- * descriptor.
- *
- * @param io_service The io_service object that the descriptor will use to
- * dispatch handlers for any asynchronous operations performed on the
- * descriptor.
- *
- * @param native_descriptor A native descriptor.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_descriptor(asio::io_service& io_service,
- const native_handle_type& native_descriptor)
- : basic_io_object<DescriptorService>(io_service)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- native_descriptor, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_descriptor from another.
- /**
- * This constructor moves a descriptor from one object to another.
- *
- * @param other The other basic_descriptor object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_descriptor(io_service&) constructor.
- */
- basic_descriptor(basic_descriptor&& other)
- : basic_io_object<DescriptorService>(
- ASIO_MOVE_CAST(basic_descriptor)(other))
- {
- }
-
- /// Move-assign a basic_descriptor from another.
- /**
- * This assignment operator moves a descriptor from one object to another.
- *
- * @param other The other basic_descriptor object from which the move will
- * occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_descriptor(io_service&) constructor.
- */
- basic_descriptor& operator=(basic_descriptor&& other)
- {
- basic_io_object<DescriptorService>::operator=(
- ASIO_MOVE_CAST(basic_descriptor)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Get a reference to the lowest layer.
- /**
- * This function returns a reference to the lowest layer in a stack of
- * layers. Since a basic_descriptor cannot contain any further layers, it
- * simply returns a reference to itself.
- *
- * @return A reference to the lowest layer in the stack of layers. Ownership
- * is not transferred to the caller.
- */
- lowest_layer_type& lowest_layer()
- {
- return *this;
- }
-
- /// Get a const reference to the lowest layer.
- /**
- * This function returns a const reference to the lowest layer in a stack of
- * layers. Since a basic_descriptor cannot contain any further layers, it
- * simply returns a reference to itself.
- *
- * @return A const reference to the lowest layer in the stack of layers.
- * Ownership is not transferred to the caller.
- */
- const lowest_layer_type& lowest_layer() const
- {
- return *this;
- }
-
- /// Assign an existing native descriptor to the descriptor.
- /*
- * This function opens the descriptor to hold an existing native descriptor.
- *
- * @param native_descriptor A native descriptor.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void assign(const native_handle_type& native_descriptor)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- native_descriptor, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
- /// Assign an existing native descriptor to the descriptor.
- /*
- * This function opens the descriptor to hold an existing native descriptor.
- *
- * @param native_descriptor A native descriptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code assign(const native_handle_type& native_descriptor,
- asio::error_code& ec)
- {
- return this->get_service().assign(
- this->get_implementation(), native_descriptor, ec);
- }
-
- /// Determine whether the descriptor is open.
- bool is_open() const
- {
- return this->get_service().is_open(this->implementation);
- }
-
- /// Close the descriptor.
- /**
- * This function is used to close the descriptor. Any asynchronous read or
- * write operations will be cancelled immediately, and will complete with the
- * asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure. Note that, even if
- * the function indicates an error, the underlying descriptor is closed.
- */
- void close()
- {
- asio::error_code ec;
- this->get_service().close(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "close");
- }
-
- /// Close the descriptor.
- /**
- * This function is used to close the descriptor. Any asynchronous read or
- * write operations will be cancelled immediately, and will complete with the
- * asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any. Note that, even if
- * the function indicates an error, the underlying descriptor is closed.
- */
- asio::error_code close(asio::error_code& ec)
- {
- return this->get_service().close(this->get_implementation(), ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native descriptor
- /// representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * descriptor. This is intended to allow access to native descriptor
- * functionality that is not otherwise provided.
- */
- native_type native()
- {
- return this->get_service().native_handle(this->implementation);
- }
-
- /// Get the native descriptor representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * descriptor. This is intended to allow access to native descriptor
- * functionality that is not otherwise provided.
- */
- native_handle_type native_handle()
- {
- return this->get_service().native_handle(this->implementation);
- }
-
- /// Release ownership of the native descriptor implementation.
- /**
- * This function may be used to obtain the underlying representation of the
- * descriptor. After calling this function, @c is_open() returns false. The
- * caller is responsible for closing the descriptor.
- *
- * All outstanding asynchronous read or write operations will finish
- * immediately, and the handlers for cancelled operations will be passed the
- * asio::error::operation_aborted error.
- */
- native_handle_type release()
- {
- return this->get_service().release(this->implementation);
- }
-
- /// Cancel all asynchronous operations associated with the descriptor.
- /**
- * This function causes all outstanding asynchronous read or write operations
- * to finish immediately, and the handlers for cancelled operations will be
- * passed the asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void cancel()
- {
- asio::error_code ec;
- this->get_service().cancel(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "cancel");
- }
-
- /// Cancel all asynchronous operations associated with the descriptor.
- /**
- * This function causes all outstanding asynchronous read or write operations
- * to finish immediately, and the handlers for cancelled operations will be
- * passed the asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code cancel(asio::error_code& ec)
- {
- return this->get_service().cancel(this->get_implementation(), ec);
- }
-
- /// Perform an IO control command on the descriptor.
- /**
- * This function is used to execute an IO control command on the descriptor.
- *
- * @param command The IO control command to be performed on the descriptor.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa IoControlCommand @n
- * asio::posix::descriptor_base::bytes_readable @n
- * asio::posix::descriptor_base::non_blocking_io
- *
- * @par Example
- * Getting the number of bytes ready to read:
- * @code
- * asio::posix::stream_descriptor descriptor(io_service);
- * ...
- * asio::posix::stream_descriptor::bytes_readable command;
- * descriptor.io_control(command);
- * std::size_t bytes_readable = command.get();
- * @endcode
- */
- template <typename IoControlCommand>
- void io_control(IoControlCommand& command)
- {
- asio::error_code ec;
- this->get_service().io_control(this->get_implementation(), command, ec);
- asio::detail::throw_error(ec, "io_control");
- }
-
- /// Perform an IO control command on the descriptor.
- /**
- * This function is used to execute an IO control command on the descriptor.
- *
- * @param command The IO control command to be performed on the descriptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa IoControlCommand @n
- * asio::posix::descriptor_base::bytes_readable @n
- * asio::posix::descriptor_base::non_blocking_io
- *
- * @par Example
- * Getting the number of bytes ready to read:
- * @code
- * asio::posix::stream_descriptor descriptor(io_service);
- * ...
- * asio::posix::stream_descriptor::bytes_readable command;
- * asio::error_code ec;
- * descriptor.io_control(command, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * std::size_t bytes_readable = command.get();
- * @endcode
- */
- template <typename IoControlCommand>
- asio::error_code io_control(IoControlCommand& command,
- asio::error_code& ec)
- {
- return this->get_service().io_control(
- this->get_implementation(), command, ec);
- }
-
- /// Gets the non-blocking mode of the descriptor.
- /**
- * @returns @c true if the descriptor's synchronous operations will fail with
- * asio::error::would_block if they are unable to perform the requested
- * operation immediately. If @c false, synchronous operations will block
- * until complete.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- bool non_blocking() const
- {
- return this->get_service().non_blocking(this->implementation);
- }
-
- /// Sets the non-blocking mode of the descriptor.
- /**
- * @param mode If @c true, the descriptor's synchronous operations will fail
- * with asio::error::would_block if they are unable to perform the
- * requested operation immediately. If @c false, synchronous operations will
- * block until complete.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- void non_blocking(bool mode)
- {
- asio::error_code ec;
- this->get_service().non_blocking(this->get_implementation(), mode, ec);
- asio::detail::throw_error(ec, "non_blocking");
- }
-
- /// Sets the non-blocking mode of the descriptor.
- /**
- * @param mode If @c true, the descriptor's synchronous operations will fail
- * with asio::error::would_block if they are unable to perform the
- * requested operation immediately. If @c false, synchronous operations will
- * block until complete.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- asio::error_code non_blocking(
- bool mode, asio::error_code& ec)
- {
- return this->get_service().non_blocking(
- this->get_implementation(), mode, ec);
- }
-
- /// Gets the non-blocking mode of the native descriptor implementation.
- /**
- * This function is used to retrieve the non-blocking mode of the underlying
- * native descriptor. This mode has no effect on the behaviour of the
- * descriptor object's synchronous operations.
- *
- * @returns @c true if the underlying descriptor is in non-blocking mode and
- * direct system calls may fail with asio::error::would_block (or the
- * equivalent system error).
- *
- * @note The current non-blocking mode is cached by the descriptor object.
- * Consequently, the return value may be incorrect if the non-blocking mode
- * was set directly on the native descriptor.
- */
- bool native_non_blocking() const
- {
- return this->get_service().native_non_blocking(this->implementation);
- }
-
- /// Sets the non-blocking mode of the native descriptor implementation.
- /**
- * This function is used to modify the non-blocking mode of the underlying
- * native descriptor. It has no effect on the behaviour of the descriptor
- * object's synchronous operations.
- *
- * @param mode If @c true, the underlying descriptor is put into non-blocking
- * mode and direct system calls may fail with asio::error::would_block
- * (or the equivalent system error).
- *
- * @throws asio::system_error Thrown on failure. If the @c mode is
- * @c false, but the current value of @c non_blocking() is @c true, this
- * function fails with asio::error::invalid_argument, as the
- * combination does not make sense.
- */
- void native_non_blocking(bool mode)
- {
- asio::error_code ec;
- this->get_service().native_non_blocking(
- this->get_implementation(), mode, ec);
- asio::detail::throw_error(ec, "native_non_blocking");
- }
-
- /// Sets the non-blocking mode of the native descriptor implementation.
- /**
- * This function is used to modify the non-blocking mode of the underlying
- * native descriptor. It has no effect on the behaviour of the descriptor
- * object's synchronous operations.
- *
- * @param mode If @c true, the underlying descriptor is put into non-blocking
- * mode and direct system calls may fail with asio::error::would_block
- * (or the equivalent system error).
- *
- * @param ec Set to indicate what error occurred, if any. If the @c mode is
- * @c false, but the current value of @c non_blocking() is @c true, this
- * function fails with asio::error::invalid_argument, as the
- * combination does not make sense.
- */
- asio::error_code native_non_blocking(
- bool mode, asio::error_code& ec)
- {
- return this->get_service().native_non_blocking(
- this->get_implementation(), mode, ec);
- }
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~basic_descriptor()
- {
- }
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_BASIC_DESCRIPTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_stream_descriptor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_stream_descriptor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_stream_descriptor.hpp
deleted file mode 100644
index e433c6a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/basic_stream_descriptor.hpp
+++ /dev/null
@@ -1,362 +0,0 @@
-//
-// posix/basic_stream_descriptor.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_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
-#define ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_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_HAS_POSIX_STREAM_DESCRIPTOR) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/posix/basic_descriptor.hpp"
-#include "asio/posix/stream_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Provides stream-oriented descriptor functionality.
-/**
- * The posix::basic_stream_descriptor class template provides asynchronous and
- * blocking stream-oriented descriptor functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename StreamDescriptorService = stream_descriptor_service>
-class basic_stream_descriptor
- : public basic_descriptor<StreamDescriptorService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// descriptor.
- typedef typename StreamDescriptorService::native_handle_type native_type;
-
- /// The native representation of a descriptor.
- typedef typename StreamDescriptorService::native_handle_type
- native_handle_type;
-
- /// Construct a basic_stream_descriptor without opening it.
- /**
- * This constructor creates a stream descriptor without opening it. The
- * descriptor needs to be opened and then connected or accepted before data
- * can be sent or received on it.
- *
- * @param io_service The io_service object that the stream descriptor will
- * use to dispatch handlers for any asynchronous operations performed on the
- * descriptor.
- */
- explicit basic_stream_descriptor(asio::io_service& io_service)
- : basic_descriptor<StreamDescriptorService>(io_service)
- {
- }
-
- /// Construct a basic_stream_descriptor on an existing native descriptor.
- /**
- * This constructor creates a stream descriptor object to hold an existing
- * native descriptor.
- *
- * @param io_service The io_service object that the stream descriptor will
- * use to dispatch handlers for any asynchronous operations performed on the
- * descriptor.
- *
- * @param native_descriptor The new underlying descriptor implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_stream_descriptor(asio::io_service& io_service,
- const native_handle_type& native_descriptor)
- : basic_descriptor<StreamDescriptorService>(io_service, native_descriptor)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_stream_descriptor from another.
- /**
- * This constructor moves a stream descriptor from one object to another.
- *
- * @param other The other basic_stream_descriptor object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_descriptor(io_service&) constructor.
- */
- basic_stream_descriptor(basic_stream_descriptor&& other)
- : basic_descriptor<StreamDescriptorService>(
- ASIO_MOVE_CAST(basic_stream_descriptor)(other))
- {
- }
-
- /// Move-assign a basic_stream_descriptor from another.
- /**
- * This assignment operator moves a stream descriptor from one object to
- * another.
- *
- * @param other The other basic_stream_descriptor object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_stream_descriptor(io_service&) constructor.
- */
- basic_stream_descriptor& operator=(basic_stream_descriptor&& other)
- {
- basic_descriptor<StreamDescriptorService>::operator=(
- ASIO_MOVE_CAST(basic_stream_descriptor)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Write some data to the descriptor.
- /**
- * This function is used to write data to the stream descriptor. The function
- * call will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the descriptor.
- *
- * @returns The number of bytes written.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * descriptor.write_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().write_some(
- this->get_implementation(), buffers, ec);
- asio::detail::throw_error(ec, "write_some");
- return s;
- }
-
- /// Write some data to the descriptor.
- /**
- * This function is used to write data to the stream descriptor. The function
- * call will block until one or more bytes of the data has been written
- * successfully, or until an error occurs.
- *
- * @param buffers One or more data buffers to be written to the descriptor.
- *
- * @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 this->get_service().write_some(
- this->get_implementation(), buffers, ec);
- }
-
- /// Start an asynchronous write.
- /**
- * This function is used to asynchronously write data to the stream
- * descriptor. The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be written to the descriptor.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The write 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 asynchronous operation completes.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * descriptor.async_write_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_write_some(this->get_implementation(),
- buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Read some data from the descriptor.
- /**
- * This function is used to read data from the stream descriptor. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more buffers into which the data will be read.
- *
- * @returns The number of bytes read.
- *
- * @throws asio::system_error Thrown on failure. An error code of
- * asio::error::eof indicates that the connection was closed by the
- * peer.
- *
- * @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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * descriptor.read_some(asio::buffer(data, size));
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().read_some(
- this->get_implementation(), buffers, ec);
- asio::detail::throw_error(ec, "read_some");
- return s;
- }
-
- /// Read some data from the descriptor.
- /**
- * This function is used to read data from the stream descriptor. The function
- * call will block until one or more bytes of data has been read successfully,
- * or until an error occurs.
- *
- * @param buffers One or more 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 this->get_service().read_some(
- this->get_implementation(), buffers, ec);
- }
-
- /// Start an asynchronous read.
- /**
- * This function is used to asynchronously read data from the stream
- * descriptor. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be read.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 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
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The read 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.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * descriptor.async_read_some(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_read_some(this->get_implementation(),
- buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/descriptor_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/descriptor_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/descriptor_base.hpp
deleted file mode 100644
index f9bc841..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/descriptor_base.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// posix/descriptor_base.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_POSIX_DESCRIPTOR_BASE_HPP
-#define ASIO_POSIX_DESCRIPTOR_BASE_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_HAS_POSIX_STREAM_DESCRIPTOR) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/io_control.hpp"
-#include "asio/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// The descriptor_base class is used as a base for the basic_stream_descriptor
-/// class template so that we have a common place to define the associated
-/// IO control commands.
-class descriptor_base
-{
-public:
- /// (Deprecated: Use non_blocking().) IO control command to set the blocking
- /// mode of the descriptor.
- /**
- * Implements the FIONBIO IO control command.
- *
- * @par Example
- * @code
- * asio::posix::stream_descriptor descriptor(io_service);
- * ...
- * asio::descriptor_base::non_blocking_io command(true);
- * descriptor.io_control(command);
- * @endcode
- *
- * @par Concepts:
- * IoControlCommand.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined non_blocking_io;
-#else
- typedef asio::detail::io_control::non_blocking_io non_blocking_io;
-#endif
-
- /// IO control command to get the amount of data that can be read without
- /// blocking.
- /**
- * Implements the FIONREAD IO control command.
- *
- * @par Example
- * @code
- * asio::posix::stream_descriptor descriptor(io_service);
- * ...
- * asio::descriptor_base::bytes_readable command(true);
- * descriptor.io_control(command);
- * std::size_t bytes_readable = command.get();
- * @endcode
- *
- * @par Concepts:
- * IoControlCommand.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined bytes_readable;
-#else
- typedef asio::detail::io_control::bytes_readable bytes_readable;
-#endif
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~descriptor_base()
- {
- }
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_DESCRIPTOR_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor.hpp
deleted file mode 100644
index de90fb5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/posix/stream_descriptor.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// posix/stream_descriptor.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_POSIX_STREAM_DESCRIPTOR_HPP
-#define ASIO_POSIX_STREAM_DESCRIPTOR_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_HAS_POSIX_STREAM_DESCRIPTOR) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/posix/basic_stream_descriptor.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Typedef for the typical usage of a stream-oriented descriptor.
-typedef basic_stream_descriptor<> stream_descriptor;
-
-} // namespace posix
-} // namespace asio
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_STREAM_DESCRIPTOR_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[46/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.cc
deleted file mode 100644
index 691d2ff..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.cc
+++ /dev/null
@@ -1,328 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "configuration_loader.h"
-#include "common/logging.h"
-
-#include <fstream>
-#include <strings.h>
-#include <sstream>
-#include <map>
-#include <sys/stat.h>
-#include <rapidxml/rapidxml.hpp>
-#include <rapidxml/rapidxml_utils.hpp>
-
-namespace hdfs {
-
-/*
- * ConfigurationLoader class
- */
-
-#if defined(WIN32) || defined(_WIN32)
-static const char kFileSeparator = '\\';
-#else
-static const char kFileSeparator = '/';
-#endif
-
-static const char kSearchPathSeparator = ':';
-
-bool is_valid_bool(const std::string& raw) {
- if (raw.empty()) {
- return false;
- }
-
- if (!strcasecmp(raw.c_str(), "true")) {
- return true;
- }
- if (!strcasecmp(raw.c_str(), "false")) {
- return true;
- }
- return false;
-}
-
-bool str_to_bool(const std::string& raw) {
- if (!strcasecmp(raw.c_str(), "true")) {
- return true;
- }
-
- return false;
-}
-
-ConfigurationLoader::ConfigurationLoader() {
- //In order to creates a configuration loader with the default search path
- //("$HADOOP_CONF_DIR" or "/etc/hadoop/conf") we call SetDefaultSearchPath().
- ConfigurationLoader::SetDefaultSearchPath();
-}
-
-void ConfigurationLoader::SetDefaultSearchPath() {
- // Try (in order, taking the first valid one):
- // $HADOOP_CONF_DIR
- // /etc/hadoop/conf
- const char * hadoop_conf_dir_env = getenv("HADOOP_CONF_DIR");
- if (hadoop_conf_dir_env) {
- std::stringstream ss(hadoop_conf_dir_env);
- std::string path;
- while (std::getline(ss, path, kSearchPathSeparator)) {
- AddToSearchPath(path);
- }
- } else {
- AddToSearchPath("/etc/hadoop/conf");
- }
-}
-
-void ConfigurationLoader::ClearSearchPath()
-{
- search_path_.clear();
-}
-
-void ConfigurationLoader::SetSearchPath(const std::string & searchPath)
-{
- search_path_.clear();
-
- std::vector<std::string> paths;
- std::string::size_type start = 0;
- std::string::size_type end = searchPath.find(kSearchPathSeparator);
-
- while (end != std::string::npos) {
- paths.push_back(searchPath.substr(start, end-start));
- start = ++end;
- end = searchPath.find(kSearchPathSeparator, start);
- }
- paths.push_back(searchPath.substr(start, searchPath.length()));
-
- for (auto path: paths) {
- AddToSearchPath(path);
- }
-
-}
-
-void ConfigurationLoader::AddToSearchPath(const std::string & searchPath)
-{
- if (searchPath.empty())
- return;
-
- if (searchPath.back() != kFileSeparator) {
- std::string pathWithSlash(searchPath);
- pathWithSlash += kFileSeparator;
- search_path_.push_back(pathWithSlash);
- } else {
- search_path_.push_back(searchPath);
- }
-}
-
-std::string ConfigurationLoader::GetSearchPath()
-{
- std::stringstream result;
- bool first = true;
- for(std::string item: search_path_) {
- if (!first) {
- result << kSearchPathSeparator;
- }
-
- result << item;
- first = false;
- }
-
- return result.str();
-}
-
-Status validateStream(std::istream & stream) {
- std::streampos start = stream.tellg();
- stream.seekg(0, std::ios::end);
- std::streampos end = stream.tellg();
- stream.seekg(start, std::ios::beg);
-
- int length = end - start;
-
- if (length <= 0 || start == -1 || end == -1)
- return Status::Error("The configuration file is empty");
-
- LOG_DEBUG(kFileSystem, << "validateStream will read a config file of length " << length);
-
- std::vector<char> raw_bytes((int64_t)length + 1);
- stream.read(&raw_bytes[0], length);
- raw_bytes[length] = 0;
-
- try {
- rapidxml::xml_document<> dom;
- dom.parse<rapidxml::parse_trim_whitespace|rapidxml::parse_validate_closing_tags>(&raw_bytes[0]);
-
- /* File must contain a single <configuration> stanza */
- auto config_node = dom.first_node("configuration", 0, false);
- if (!config_node) {
- return Status::Error("The configuration file is missing a 'configuration' tag");
- }
- return Status::OK();
- } catch (const rapidxml::parse_error &e) {
- size_t location = e.where<char>() - &raw_bytes[0];
- std::string msg = "The configuration file has invalid xml around character " + std::to_string(location);
- return Status::Error(msg.c_str());
- }
-}
-
-std::vector<std::pair<std::string, Status> > ConfigurationLoader::ValidateResources(std::vector<std::string> filenames) const
-{
- std::vector<std::pair<std::string, Status> > stats;
- bool found;
- for(auto file: filenames) {
- found = false;
- for(auto dir: search_path_) {
- std::ifstream stream(dir + file);
- if ( stream.is_open() ) {
- found = true;
- stats.push_back(std::make_pair(file,validateStream(stream)));
- } else {
- LOG_DEBUG(kFileSystem, << dir << file << " was not found");
- }
- }
- if(!found) {
- std::string msg("No directory in the current search path contains the file [" + file + "]");
- stats.push_back(std::make_pair(file,Status::PathNotFound(msg.c_str())));
- }
- }
- return stats;
-}
-
-bool ConfigurationLoader::UpdateMapWithFile(ConfigMap & map, const std::string & path) const
-{
- if (path.front() == kFileSeparator) { // Absolute path
- std::ifstream stream(path, std::ifstream::in);
- if ( stream.is_open() ) {
- return UpdateMapWithStream(map, stream);
- } else {
- return false;
- }
- } else { // Use search path
- for(auto dir: search_path_) {
- std::ifstream stream(dir + path);
- if ( stream.is_open() ) {
- if (UpdateMapWithStream(map, stream))
- return true;
- }
- }
- }
-
- return false;
-}
-
-bool ConfigurationLoader::UpdateMapWithStream(ConfigMap & map,
- std::istream & stream) {
- std::streampos start = stream.tellg();
- stream.seekg(0, std::ios::end);
- std::streampos end = stream.tellg();
- stream.seekg(start, std::ios::beg);
-
- int length = end - start;
-
- if (length <= 0 || start == -1 || end == -1)
- return false;
-
- std::vector<char> raw_bytes((int64_t)length + 1);
- stream.read(&raw_bytes[0], length);
- raw_bytes[length] = 0;
-
- return UpdateMapWithBytes(map, raw_bytes);
-}
-
-bool ConfigurationLoader::UpdateMapWithString(ConfigMap & map,
- const std::string &xml_data) {
- if (xml_data.size() == 0) {
- return false;
- }
-
- std::vector<char> raw_bytes(xml_data.begin(), xml_data.end());
- raw_bytes.push_back('\0');
-
- bool success = UpdateMapWithBytes(map, raw_bytes);
-
- if (success) {
- return true;
- } else {
- return false;
- }
-}
-
-bool ConfigurationLoader::UpdateMapWithBytes(ConfigMap& map,
- std::vector<char>& raw_bytes) {
- try {
- rapidxml::xml_document<> dom;
- dom.parse<rapidxml::parse_trim_whitespace>(&raw_bytes[0]);
-
- /* File must contain a single <configuration> stanza */
- auto config_node = dom.first_node("configuration", 0, false);
- if (!config_node) {
- return false;
- }
-
- /* Walk all of the <property> nodes, ignoring the rest */
- for (auto property_node = config_node->first_node("property", 0, false);
- property_node;
- property_node = property_node->next_sibling("property", 0, false)) {
- auto name_node = property_node->first_node("name", 0, false);
- auto value_node = property_node->first_node("value", 0, false);
-
- if (name_node && value_node) {
- std::string final_value;
- auto final_node = property_node->first_node("final", 0, false);
- if (final_node) {
- final_value = final_node->value();
- }
- UpdateMapWithValue(map, name_node->value(), value_node->value(), final_value);
- }
-
- auto name_attr = property_node->first_attribute("name", 0, false);
- auto value_attr = property_node->first_attribute("value", 0, false);
-
- if (name_attr && value_attr) {
- std::string final_value;
- auto final_attr = property_node->first_attribute("final", 0, false);
- if (final_attr) {
- final_value = final_attr->value();
- }
- UpdateMapWithValue(map, name_attr->value(), value_attr->value(), final_value);
- }
- }
-
- return true;
- } catch (const rapidxml::parse_error &e) {
- // TODO: Capture the result in a Status object
- return false;
- }
-}
-
-bool ConfigurationLoader::UpdateMapWithValue(ConfigMap& map,
- const std::string& key, const std::string& value,
- const std::string& final_text)
-{
- std::string caseFixedKey = Configuration::fixCase(key);
- auto mapValue = map.find(caseFixedKey);
- if (mapValue != map.end() && mapValue->second.final) {
- return false;
- }
-
- bool final_value = false;
- if (is_valid_bool(final_text)) {
- final_value = str_to_bool(final_text);
- }
-
- map[caseFixedKey].value = value;
- map[caseFixedKey].final = final_value;
- return true;
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.h
deleted file mode 100644
index 2673a6b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_CONFIGURATION_BUILDER_H_
-#define COMMON_CONFIGURATION_BUILDER_H_
-
-#include "configuration.h"
-#include "hdfspp/status.h"
-
-namespace hdfs {
-
-
-class ConfigurationLoader {
-public:
- // Creates a new, empty Configuration object
- // T must be Configuration or a subclass
- template<class T>
- T NewConfig();
-
- /****************************************************************************
- * LOADING CONFIG FILES
- ***************************************************************************/
-
- // Loads Configuration XML contained in a string/stream/file and returns a parsed
- // Configuration object.
- // T must be Configuration or a subclass
- template<class T>
- optional<T> Load(const std::string &xml_data);
- // Streams must be seekable
- template<class T>
- optional<T> LoadFromStream(std::istream & stream);
- // The ConfigurationBuilder's search path will be searched for the filename
- // unless it is an absolute path
- template<class T>
- optional<T> LoadFromFile(const std::string &filename);
-
- // Loads Configuration XML contained in a string and produces a new copy that
- // is the union of the src and xml_data
- // Any parameters from src will be overwritten by the xml_data unless they
- // are marked as "final" in src.
- // T must be Configuration or a subclass
- template<class T>
- optional<T> OverlayResourceString(const T &src, const std::string &xml_data) const;
- // Streams must be seekable
- template<class T>
- optional<T> OverlayResourceStream(const T &src, std::istream &stream) const;
- // The ConfigurationBuilder's search path will be searched for the filename
- // unless it is an absolute path
- template<class T>
- optional<T> OverlayResourceFile(const T &src, const std::string &path) const;
-
- // Attempts to update the map. If the update failed (because there was
- // an existing final value, for example), returns the original map
- template<class T>
- optional<T> OverlayValue(const T &src, const std::string &key, const std::string &value) const;
-
- // Returns an instance of the Configuration with all of the default resource
- // files loaded.
- // T must be Configuration or a subclass
- template<class T>
- optional<T> LoadDefaultResources();
-
-
- // Returns a vector of filenames and the corresponding status when validation is attempted.
- // If the files can be successfully validated, then the status returned for that file is Status::OK
- // The files that are validated are those returned by T::GetDefaultFilenames().
- // T must be Configuration or a subclass
- template<class T>
- std::vector<std::pair<std::string, Status>> ValidateDefaultResources() const;
-
- /****************************************************************************
- * SEARCH PATH METHODS
- ***************************************************************************/
-
- //Creates a configuration loader with the default search path ("$HADOOP_CONF_DIR" or "/etc/hadoop/conf").
- //If you want to explicitly set the entire search path, call ClearSearchPath() first
- ConfigurationLoader();
-
- // Sets the search path to the default search path (namely, "$HADOOP_CONF_DIR" or "/etc/hadoop/conf")
- void SetDefaultSearchPath();
-
- // Clears out the search path
- void ClearSearchPath();
- // Sets the search path to ":"-delimited paths
- void SetSearchPath(const std::string & searchPath);
- // Adds an element to the search path
- void AddToSearchPath(const std::string & searchPath);
- // Returns the search path in ":"-delmited form
- std::string GetSearchPath();
-
-protected:
- using ConfigMap = Configuration::ConfigMap;
-
- std::vector<std::pair<std::string, Status>> ValidateResources(std::vector<std::string> filenames) const;
-
- // Updates the src map with data from the XML in the path
- // The search path will be searched for the filename
- bool UpdateMapWithFile(ConfigMap & map, const std::string & path) const;
-
- // Updates the src map with data from the XML in the stream
- // The stream must be seekable
- static bool UpdateMapWithStream(ConfigMap & map,
- std::istream & stream);
- // Updates the src map with data from the XML
- static bool UpdateMapWithString(Configuration::ConfigMap & src,
- const std::string &xml_data);
- // Updates the src map with data from the XML
- static bool UpdateMapWithBytes(Configuration::ConfigMap &map,
- std::vector<char> &raw_bytes);
-
- // Attempts to update the map. If the update failed (because there was
- // an existing final value, for example), returns false
- static bool UpdateMapWithValue(ConfigMap& map,
- const std::string& key, const std::string& value, const std::string& final_text);
-
- std::vector<std::string> search_path_;
-};
-
-}
-
-#include "configuration_loader_impl.h"
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader_impl.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader_impl.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader_impl.h
deleted file mode 100644
index dad5a82..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration_loader_impl.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_CONFIGURATION_BUILDER_IMPL_H_
-#define COMMON_CONFIGURATION_BUILDER_IMPL_H_
-
-namespace hdfs {
-
-
-template<class T>
-T ConfigurationLoader::NewConfig() {
- return T();
-}
-
-template<class T>
-optional<T> ConfigurationLoader::Load(const std::string &xml_data) {
- return OverlayResourceString<T>(T(), xml_data);
-}
-template<class T>
-optional<T> ConfigurationLoader::LoadFromStream(std::istream &stream) {
- return OverlayResourceStream<T>(T(), stream);
-}
-template<class T>
-optional<T> ConfigurationLoader::LoadFromFile(const std::string &path) {
- return OverlayResourceFile<T>(T(), path);
-}
-
-
-template<class T>
-optional<T> ConfigurationLoader::OverlayResourceFile(const T& src, const std::string &path) const {
- ConfigMap map(src.raw_values_);
- bool success = UpdateMapWithFile(map, path);
-
- if (success) {
- return std::experimental::make_optional<T>(map);
- } else {
- return optional<T>();
- }
-}
-
-template<class T>
-optional<T> ConfigurationLoader::OverlayResourceStream(const T& src, std::istream & stream) const {
- ConfigMap map(src.raw_values_);
- bool success = UpdateMapWithStream(map, stream);
-
- if (success) {
- return std::experimental::make_optional<T>(map);
- } else {
- return optional<T>();
- }
-}
-
-template<class T>
-optional<T> ConfigurationLoader::OverlayResourceString(const T& src, const std::string &xml_data) const {
- if (xml_data.size() == 0) {
- return optional<T>();
- }
-
- std::vector<char> raw_bytes(xml_data.begin(), xml_data.end());
- raw_bytes.push_back('\0');
-
- ConfigMap map(src.raw_values_);
- bool success = UpdateMapWithBytes(map, raw_bytes);
-
- if (success) {
- return std::experimental::make_optional<T>(map);
- } else {
- return optional<T>();
- }
-}
-
-template<class T>
-optional<T> ConfigurationLoader::OverlayValue(const T& src, const std::string &key, const std::string &value) const {
- ConfigMap map(src.raw_values_);
- UpdateMapWithValue(map, key, value, "");
-
- return std::experimental::make_optional<T>(map);
-}
-
-template <class T>
-optional<T> ConfigurationLoader::LoadDefaultResources() {
- std::vector<std::string> default_filenames = T::GetDefaultFilenames();
-
- ConfigMap result;
- bool success = false;
-
- for (auto fn: default_filenames) {
- // We succeed if we have loaded data from any file
- success |= UpdateMapWithFile(result, fn);
- }
-
- if (success) {
- return std::experimental::make_optional<T>(result);
- } else {
- return optional<T>();
- }
-}
-
-template<class T>
-std::vector<std::pair<std::string, Status> > ConfigurationLoader::ValidateDefaultResources() const{
- return ValidateResources(T::GetDefaultFilenames());
-}
-
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/content_summary.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/content_summary.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/content_summary.cc
deleted file mode 100644
index 0dca36a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/content_summary.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <hdfspp/content_summary.h>
-#include <sstream>
-#include <iomanip>
-
-namespace hdfs {
-
-ContentSummary::ContentSummary()
-: length(0),
- filecount(0),
- directorycount(0),
- quota(0),
- spaceconsumed(0),
- spacequota(0) {
-}
-
-std::string ContentSummary::str(bool include_quota) const {
- std::stringstream ss;
- if(include_quota){
- ss << this->quota << " "
- << spacequota << " "
- << spaceconsumed << " ";
- }
- ss << directorycount << " "
- << filecount << " "
- << length << " "
- << path;
- return ss.str();
-}
-
-std::string ContentSummary::str_du() const {
- std::stringstream ss;
- ss << std::left << std::setw(10) << length
- << path;
- return ss.str();
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/asio.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/asio.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/asio.h
deleted file mode 100644
index 193358f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/asio.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_COMMON_CONTINUATION_ASIO_H_
-#define LIB_COMMON_CONTINUATION_ASIO_H_
-
-#include "continuation.h"
-#include "common/util.h"
-
-#include "hdfspp/status.h"
-
-#include <asio/connect.hpp>
-#include <asio/read.hpp>
-#include <asio/write.hpp>
-#include <asio/ip/tcp.hpp>
-#include <memory>
-
-namespace hdfs {
-namespace asio_continuation {
-
-using namespace continuation;
-
-template <class Stream, class ConstBufferSequence>
-class WriteContinuation : public Continuation {
-public:
- WriteContinuation(std::shared_ptr<Stream>& stream, const ConstBufferSequence &buffer)
- : stream_(stream), buffer_(buffer) {}
-
- virtual void Run(const Next &next) override {
- auto handler =
- [next](const asio::error_code &ec, size_t) { next(ToStatus(ec)); };
- asio::async_write(*stream_, buffer_, handler);
- }
-
-private:
- // prevent construction from raw ptr
- WriteContinuation(Stream *stream, ConstBufferSequence &buffer);
- std::shared_ptr<Stream> stream_;
- ConstBufferSequence buffer_;
-};
-
-template <class Stream, class ConstBufferSequence>
-static inline Continuation *Write(std::shared_ptr<Stream> stream,
- const ConstBufferSequence &buffer) {
- return new WriteContinuation<Stream, ConstBufferSequence>(stream, buffer);
-}
-
-}
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/continuation.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/continuation.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/continuation.h
deleted file mode 100644
index 18aa146..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/continuation.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_COMMON_CONTINUATION_CONTINUATION_H_
-#define LIB_COMMON_CONTINUATION_CONTINUATION_H_
-
-#include "hdfspp/status.h"
-#include "common/cancel_tracker.h"
-
-#include <functional>
-#include <memory>
-#include <vector>
-
-namespace hdfs {
-namespace continuation {
-
-class PipelineBase;
-
-/**
- * A continuation is a fragment of runnable code whose execution will
- * be scheduled by a \link Pipeline \endlink.
- *
- * The Continuation class is a build block to implement the
- * Continuation Passing Style (CPS) in libhdfs++. In CPS, the
- * upper-level user specifies the control flow by chaining a sequence
- * of continuations explicitly through the \link Run() \endlink method,
- * while in traditional imperative programming the sequences of
- * sentences implicitly specify the control flow.
- *
- * See http://en.wikipedia.org/wiki/Continuation for more details.
- **/
-class Continuation {
-public:
- typedef std::function<void(const Status &)> Next;
- virtual ~Continuation() = default;
- virtual void Run(const Next &next) = 0;
- Continuation(const Continuation &) = delete;
- Continuation &operator=(const Continuation &) = delete;
-
-protected:
- Continuation() = default;
-};
-
-/**
- * A pipeline schedules the execution of a chain of \link Continuation
- * \endlink. The pipeline schedules the execution of continuations
- * based on their order in the pipeline, where the next parameter for
- * each continuation points to the \link Schedule() \endlink
- * method. That way the pipeline executes all scheduled continuations
- * in sequence.
- *
- * The typical use case of a pipeline is executing continuations
- * asynchronously. Note that a continuation calls the next
- * continuation when it is finished. If the continuation is posted
- * into an asynchronous event loop, invoking the next continuation
- * can be done in the callback handler in the asynchronous event loop.
- *
- * The pipeline allocates the memory as follows. A pipeline is always
- * allocated on the heap. It owns all the continuations as well as the
- * the state specified by the user. Both the continuations and the
- * state have the same life cycle of the pipeline. The design
- * simplifies the problem of ensuring that the executions in the
- * asynchronous event loop always hold valid pointers w.r.t. the
- * pipeline. The pipeline will automatically deallocate itself right
- * after it invokes the callback specified the user.
- **/
-template <class State> class Pipeline {
-public:
- typedef std::function<void(const Status &, const State &)> UserHandler;
- static Pipeline *Create() { return new Pipeline(); }
- static Pipeline *Create(CancelHandle cancel_handle) {
- return new Pipeline(cancel_handle);
- }
- Pipeline &Push(Continuation *stage);
- void Run(UserHandler &&handler);
- State &state() { return state_; }
-
-private:
- State state_;
- std::vector<std::unique_ptr<Continuation>> routines_;
- size_t stage_;
- std::function<void(const Status &, const State &)> handler_;
-
- Pipeline() : stage_(0), cancel_handle_(CancelTracker::New()) {}
- Pipeline(CancelHandle cancel_handle) : stage_(0), cancel_handle_(cancel_handle) {}
- ~Pipeline() = default;
- void Schedule(const Status &status);
- CancelHandle cancel_handle_;
-};
-
-template <class State>
-inline Pipeline<State> &Pipeline<State>::Push(Continuation *stage) {
- routines_.emplace_back(std::unique_ptr<Continuation>(stage));
- return *this;
-}
-
-template <class State>
-inline void Pipeline<State>::Schedule(const Status &status) {
- // catch cancelation signalled from outside of pipeline
- if(cancel_handle_->is_canceled()) {
- handler_(Status::Canceled(), state_);
- routines_.clear();
- delete this;
- } else if (!status.ok() || stage_ >= routines_.size()) {
- handler_(status, state_);
- routines_.clear();
- delete this;
- } else {
- auto next = routines_[stage_].get();
- ++stage_;
- next->Run(std::bind(&Pipeline::Schedule, this, std::placeholders::_1));
- }
-}
-
-template <class State> inline void Pipeline<State>::Run(UserHandler &&handler) {
- handler_ = std::move(handler);
- Schedule(Status::OK());
-}
-
-}
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/protobuf.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/protobuf.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/protobuf.h
deleted file mode 100644
index 21e063e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/continuation/protobuf.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_COMMON_CONTINUATION_PROTOBUF_H_
-#define LIBHDFSPP_COMMON_CONTINUATION_PROTOBUF_H_
-
-#include "common/util.h"
-
-#include <asio/read.hpp>
-
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-
-#include <cassert>
-
-namespace hdfs {
-namespace continuation {
-
-template <class Stream, size_t MaxMessageSize = 512>
-struct ReadDelimitedPBMessageContinuation : public Continuation {
- ReadDelimitedPBMessageContinuation(std::shared_ptr<Stream> stream,
- ::google::protobuf::MessageLite *msg)
- : stream_(stream), msg_(msg) {}
-
- virtual void Run(const Next &next) override {
- namespace pbio = google::protobuf::io;
- auto handler = [this, next](const asio::error_code &ec, size_t) {
- Status status;
- if (ec) {
- status = ToStatus(ec);
- } else {
- pbio::ArrayInputStream as(&buf_[0], buf_.size());
- pbio::CodedInputStream is(&as);
- uint32_t size = 0;
- bool v = is.ReadVarint32(&size);
- assert(v);
- (void)v; //avoids unused variable warning
- is.PushLimit(size);
- msg_->Clear();
- v = msg_->MergeFromCodedStream(&is);
- assert(v);
- }
- next(status);
- };
- asio::async_read(*stream_,
- asio::buffer(buf_),
- std::bind(&ReadDelimitedPBMessageContinuation::CompletionHandler, this,
- std::placeholders::_1, std::placeholders::_2),
- handler);
- }
-
-private:
- size_t CompletionHandler(const asio::error_code &ec, size_t transferred) {
- if (ec) {
- return 0;
- }
-
- size_t offset = 0, len = 0;
- for (size_t i = 0; i + 1 < transferred && i < sizeof(int32_t); ++i) {
- len = (len << 7) | (buf_[i] & 0x7f);
- if ((uint8_t)buf_.at(i) < 0x80) {
- offset = i + 1;
- break;
- }
- }
-
- assert(offset + len < buf_.size() && "Message is too big");
- return offset ? len + offset - transferred : 1;
- }
-
- std::shared_ptr<Stream> stream_;
- ::google::protobuf::MessageLite *msg_;
- std::array<char, MaxMessageSize> buf_;
-};
-
-template <class Stream>
-struct WriteDelimitedPBMessageContinuation : Continuation {
- WriteDelimitedPBMessageContinuation(std::shared_ptr<Stream> stream,
- const google::protobuf::MessageLite *msg)
- : stream_(stream), msg_(msg) {}
-
- virtual void Run(const Next &next) override {
- bool success = true;
- buf_ = SerializeDelimitedProtobufMessage(msg_, &success);
-
- if(!success) {
- next(Status::Error("Unable to serialize protobuf message."));
- return;
- }
-
- asio::async_write(*stream_, asio::buffer(buf_), [next](const asio::error_code &ec, size_t) { next(ToStatus(ec)); } );
- }
-
-private:
- std::shared_ptr<Stream> stream_;
- const google::protobuf::MessageLite *msg_;
- std::string buf_;
-};
-
-template <class Stream, size_t MaxMessageSize = 512>
-static inline Continuation *
-ReadDelimitedPBMessage(std::shared_ptr<Stream> stream, ::google::protobuf::MessageLite *msg) {
- return new ReadDelimitedPBMessageContinuation<Stream, MaxMessageSize>(stream,
- msg);
-}
-
-template <class Stream>
-static inline Continuation *
-WriteDelimitedPBMessage(std::shared_ptr<Stream> stream, ::google::protobuf::MessageLite *msg) {
- return new WriteDelimitedPBMessageContinuation<Stream>(stream, msg);
-}
-}
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/fsinfo.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/fsinfo.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/fsinfo.cc
deleted file mode 100644
index 9f350a8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/fsinfo.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <hdfspp/fsinfo.h>
-#include <sstream>
-#include <iomanip>
-
-namespace hdfs {
-
-FsInfo::FsInfo()
- : capacity(0),
- used(0),
- remaining(0),
- under_replicated(0),
- corrupt_blocks(0),
- missing_blocks(0),
- missing_repl_one_blocks(0),
- blocks_in_future(0) {
-}
-
-std::string FsInfo::str(const std::string fs_name) const {
- std::string fs_name_label = "Filesystem";
- std::string size = std::to_string(capacity);
- std::string size_label = "Size";
- std::string used = std::to_string(this->used);
- std::string used_label = "Used";
- std::string available = std::to_string(remaining);
- std::string available_label = "Available";
- std::string use_percentage = std::to_string(this->used * 100 / capacity) + "%";
- std::string use_percentage_label = "Use%";
- std::stringstream ss;
- ss << std::left << std::setw(std::max(fs_name.size(), fs_name_label.size())) << fs_name_label
- << std::right << std::setw(std::max(size.size(), size_label.size()) + 2) << size_label
- << std::right << std::setw(std::max(used.size(), used_label.size()) + 2) << used_label
- << std::right << std::setw(std::max(available.size(), available_label.size()) + 2) << available_label
- << std::right << std::setw(std::max(use_percentage.size(), use_percentage_label.size()) + 2) << use_percentage_label
- << std::endl
- << std::left << std::setw(std::max(fs_name.size(), fs_name_label.size())) << fs_name
- << std::right << std::setw(std::max(size.size(), size_label.size()) + 2) << size
- << std::right << std::setw(std::max(used.size(), used_label.size()) + 2) << used
- << std::right << std::setw(std::max(available.size(), available_label.size()) + 2) << available
- << std::right << std::setw(std::max(use_percentage.size(), use_percentage_label.size()) + 2) << use_percentage;
- return ss.str();
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.cc
deleted file mode 100644
index 07e2edc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.cc
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/hdfs_configuration.h"
-#include "common/logging.h"
-
-#include <exception>
-
-#ifndef DEFAULT_SCHEME
- #define DEFAULT_SCHEME "hdfs://"
-#endif
-
-namespace hdfs {
-
-// Constructs a configuration with no search path and no resources loaded
-HdfsConfiguration::HdfsConfiguration() : Configuration() {}
-
-// Constructs a configuration with a copy of the input data
-HdfsConfiguration::HdfsConfiguration(ConfigMap &src_map) : Configuration(src_map) {}
-HdfsConfiguration::HdfsConfiguration(const ConfigMap &src_map) : Configuration(src_map) {}
-
-std::vector<std::string> HdfsConfiguration::GetDefaultFilenames() {
- auto result = Configuration::GetDefaultFilenames();
- result.push_back("hdfs-site.xml");
- return result;
-}
-
-// Sets a value iff the optional<T> has a value
-template <class T, class U>
-void OptionalSet(T& target, optional<U> value) {
- if (value)
- target = *value;
-}
-
-std::vector<std::string> SplitOnComma(const std::string &s, bool include_empty_strings) {
- std::vector<std::string> res;
- std::string buf;
-
- for(unsigned int i=0;i<s.size();i++) {
- char c = s[i];
- if(c != ',') {
- buf += c;
- } else {
- if(!include_empty_strings && buf.empty()) {
- // Skip adding empty strings if needed
- continue;
- }
- res.push_back(buf);
- buf.clear();
- }
- }
-
- if(buf.size() > 0)
- res.push_back(buf);
-
- return res;
-}
-
-std::string RemoveSpaces(const std::string &str) {
- std::string res;
- for(unsigned int i=0; i<str.size(); i++) {
- char curr = str[i];
- if(curr != ' ') {
- res += curr;
- }
- }
- return res;
-}
-
-// Prepend hdfs:// to string if there isn't already a scheme
-// Converts unset optional into empty string
-std::string PrependHdfsScheme(optional<std::string> str) {
- if(!str)
- return "";
-
- if(str.value().find("://") == std::string::npos)
- return DEFAULT_SCHEME + str.value();
- return str.value();
-}
-
-// It's either use this, goto, or a lot of returns w/ status checks
-struct ha_parse_error : public std::exception {
- std::string desc;
- ha_parse_error(const std::string &val) : desc(val) {};
- const char *what() const noexcept override {
- return desc.c_str();
- };
-};
-
-std::vector<NamenodeInfo> HdfsConfiguration::LookupNameService(const std::string &nameservice) {
- LOG_TRACE(kRPC, << "HDFSConfiguration@" << this << "::LookupNameService( nameservice=" << nameservice<< " ) called");
-
- std::vector<NamenodeInfo> namenodes;
- try {
- // Find namenodes that belong to nameservice
- std::vector<std::string> namenode_ids;
- {
- std::string service_nodes = std::string("dfs.ha.namenodes.") + nameservice;
- optional<std::string> namenode_list = Get(service_nodes);
- if(namenode_list)
- namenode_ids = SplitOnComma(namenode_list.value(), false);
- else
- throw ha_parse_error("unable to find " + service_nodes);
-
- for(unsigned int i=0; i<namenode_ids.size(); i++) {
- namenode_ids[i] = RemoveSpaces(namenode_ids[i]);
- LOG_INFO(kRPC, << "Namenode: " << namenode_ids[i]);
- }
- }
-
- // should this error if we only find 1 NN?
- if(namenode_ids.empty())
- throw ha_parse_error("No namenodes found for nameservice " + nameservice);
-
- // Get URI for each HA namenode
- for(auto node_id=namenode_ids.begin(); node_id != namenode_ids.end(); node_id++) {
- // find URI
- std::string dom_node_name = std::string("dfs.namenode.rpc-address.") + nameservice + "." + *node_id;
-
- URI uri;
- try {
- uri = URI::parse_from_string(PrependHdfsScheme(Get(dom_node_name)));
- } catch (const uri_parse_error) {
- throw ha_parse_error("unable to find " + dom_node_name);
- }
-
- if(uri.str() == "") {
- LOG_WARN(kRPC, << "Attempted to read info for nameservice " << nameservice << " node " << dom_node_name << " but didn't find anything.")
- } else {
- LOG_INFO(kRPC, << "Read the following HA Namenode URI from config" << uri.GetDebugString());
- }
-
- NamenodeInfo node(nameservice, *node_id, uri);
- namenodes.push_back(node);
- }
- } catch (ha_parse_error e) {
- LOG_ERROR(kRPC, << "HA cluster detected but failed because : " << e.what());
- namenodes.clear(); // Don't return inconsistent view
- }
- return namenodes;
-}
-
-// Interprets the resources to build an Options object
-Options HdfsConfiguration::GetOptions() {
- Options result;
-
- OptionalSet(result.rpc_timeout, GetInt(kDfsClientSocketTimeoutKey));
- OptionalSet(result.rpc_connect_timeout, GetInt(kIpcClientConnectTimeoutKey));
- OptionalSet(result.max_rpc_retries, GetInt(kIpcClientConnectMaxRetriesKey));
- OptionalSet(result.rpc_retry_delay_ms, GetInt(kIpcClientConnectRetryIntervalKey));
- OptionalSet(result.defaultFS, GetUri(kFsDefaultFsKey));
- OptionalSet(result.block_size, GetInt(kDfsBlockSizeKey));
-
-
- OptionalSet(result.failover_max_retries, GetInt(kDfsClientFailoverMaxAttempts));
- OptionalSet(result.failover_connection_max_retries, GetInt(kDfsClientFailoverConnectionRetriesOnTimeouts));
-
- // Load all nameservices if it's HA configured
- optional<std::string> dfs_nameservices = Get("dfs.nameservices");
- if(dfs_nameservices) {
- std::string nameservice = dfs_nameservices.value();
-
- std::vector<std::string> all_services = SplitOnComma(nameservice, false);
-
- // Look up nodes for each nameservice so that FileSystem object can support
- // multiple nameservices by ID.
- for(const std::string &service : all_services) {
- if(service.empty())
- continue;
-
- LOG_DEBUG(kFileSystem, << "Parsing info for nameservice: " << service);
- std::vector<NamenodeInfo> nodes = LookupNameService(service);
- if(nodes.empty()) {
- LOG_WARN(kFileSystem, << "Nameservice \"" << service << "\" declared in config but nodes aren't");
- } else {
- result.services[service] = nodes;
- }
- }
- }
-
- optional<std::string> authentication_value = Get(kHadoopSecurityAuthenticationKey);
-
- if (authentication_value ) {
- std::string fixed_case_value = fixCase(authentication_value.value());
- if (fixed_case_value == fixCase(kHadoopSecurityAuthentication_kerberos))
- result.authentication = Options::kKerberos;
- else
- result.authentication = Options::kSimple;
- }
-
- return result;
-}
-
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.h
deleted file mode 100644
index d6f902e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_configuration.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_HDFS_CONFIGURATION_H_
-#define COMMON_HDFS_CONFIGURATION_H_
-
-#include "common/configuration.h"
-#include "hdfspp/options.h"
-
-#include <string>
-#include <map>
-#include <vector>
-#include <set>
-#include <istream>
-#include <stdint.h>
-
-namespace hdfs {
-
-class HdfsConfiguration : public Configuration {
- public:
- // Interprets the resources to build an Options object
- Options GetOptions();
-
- // Keys to look for in the configuration file
- static constexpr const char * kFsDefaultFsKey = "fs.defaultFS";
- static constexpr const char * kDfsClientSocketTimeoutKey = "dfs.client.socket-timeout";
- static constexpr const char * kIpcClientConnectTimeoutKey = "ipc.client.connect.timeout";
- static constexpr const char * kIpcClientConnectMaxRetriesKey = "ipc.client.connect.max.retries";
- static constexpr const char * kIpcClientConnectRetryIntervalKey = "ipc.client.connect.retry.interval";
- static constexpr const char * kHadoopSecurityAuthenticationKey = "hadoop.security.authentication";
- static constexpr const char * kHadoopSecurityAuthentication_simple = "simple";
- static constexpr const char * kHadoopSecurityAuthentication_kerberos = "kerberos";
- static constexpr const char * kDfsBlockSizeKey = "dfs.blocksize";
-
- static constexpr const char * kDfsClientFailoverMaxAttempts = "dfs.client.failover.max.attempts";
- static constexpr const char * kDfsClientFailoverConnectionRetriesOnTimeouts = "dfs.client.failover.connection.retries.on.timeouts";
-
-
-private:
- friend class ConfigurationLoader;
-
- // Constructs a configuration with no search path and no resources loaded
- HdfsConfiguration();
-
- // Constructs a configuration with some static data
- HdfsConfiguration(ConfigMap &src_map);
- HdfsConfiguration(const ConfigMap &src_map);
-
- static std::vector<std::string> GetDefaultFilenames();
- std::vector<NamenodeInfo> LookupNameService(const std::string &nameservice);
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.cc
deleted file mode 100644
index 578b782..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfs_ioservice.h"
-
-#include <thread>
-#include <mutex>
-#include <vector>
-
-#include "common/logging.h"
-
-namespace hdfs {
-
-IoService::~IoService() {}
-
-IoService *IoService::New() {
- return new IoServiceImpl();
-}
-
-std::shared_ptr<IoService> IoService::MakeShared() {
- return std::make_shared<IoServiceImpl>();
-}
-
-
-unsigned int IoServiceImpl::InitDefaultWorkers() {
- LOG_TRACE(kAsyncRuntime, << "IoServiceImpl::InitDefaultWorkers@" << this << " called.");
- unsigned int logical_thread_count = std::thread::hardware_concurrency();
-#ifndef DISABLE_CONCURRENT_WORKERS
- if(logical_thread_count < 1) {
- LOG_WARN(kAsyncRuntime, << "IoServiceImpl::InitDefaultWorkers did not detect any logical processors. Defaulting to 1 worker thread.");
- } else {
- LOG_DEBUG(kRPC, << "IoServiceImpl::InitDefaultWorkers detected " << logical_thread_count << " logical threads and will spawn a worker for each.");
- }
-#else
- if(logical_thread_count > 0) {
- LOG_DEBUG(kAsyncRuntime, << "IoServiceImpl::InitDefaultWorkers: " << logical_thread_count << " threads available. Concurrent workers are disabled so 1 worker thread will be used");
- }
- logical_thread_count = 1;
-#endif
- return InitWorkers(logical_thread_count);
-}
-
-unsigned int IoServiceImpl::InitWorkers(unsigned int thread_count) {
-#ifdef DISABLED_CONCURRENT_WORKERS
- LOG_DEBUG(kAsyncRuntime, << "IoServiceImpl::InitWorkers: " << thread_count << " threads specified but concurrent workers are disabled so 1 will be used");
- thread_count = 1;
-#endif
- unsigned int created_threads = 0;
- for(unsigned int i=0; i<thread_count; i++) {
- bool created = AddWorkerThread();
- if(created) {
- created_threads++;
- } else {
- LOG_DEBUG(kAsyncRuntime, << "IoServiceImpl@" << this << " ::InitWorkers failed to create a worker thread");
- }
- }
- if(created_threads != thread_count) {
- LOG_WARN(kAsyncRuntime, << "IoServiceImpl@" << this << " ::InitWorkers attempted to create "
- << thread_count << " but only created " << created_threads
- << " worker threads. Make sure this process has adequate resources.");
- }
- return created_threads;
-}
-
-bool IoServiceImpl::AddWorkerThread() {
- mutex_guard state_lock(state_lock_);
- auto async_worker = [this]() {
- this->ThreadStartHook();
- this->Run();
- this->ThreadExitHook();
- };
- worker_threads_.push_back(WorkerPtr( new std::thread(async_worker)) );
- return true;
-}
-
-
-void IoServiceImpl::ThreadStartHook() {
- mutex_guard state_lock(state_lock_);
- LOG_DEBUG(kAsyncRuntime, << "Worker thread #" << std::this_thread::get_id() << " for IoServiceImpl@" << this << " starting");
-}
-
-void IoServiceImpl::ThreadExitHook() {
- mutex_guard state_lock(state_lock_);
- LOG_DEBUG(kAsyncRuntime, << "Worker thread #" << std::this_thread::get_id() << " for IoServiceImpl@" << this << " exiting");
-}
-
-void IoServiceImpl::PostTask(std::function<void(void)>& asyncTask) {
- io_service_.post(asyncTask);
-}
-
-void IoServiceImpl::WorkerDeleter::operator()(std::thread *t) {
- // It is far too easy to destroy the filesystem (and thus the threadpool)
- // from within one of the worker threads, leading to a deadlock. Let's
- // provide some explicit protection.
- if(t->get_id() == std::this_thread::get_id()) {
- LOG_ERROR(kAsyncRuntime, << "FileSystemImpl::WorkerDeleter::operator(treadptr="
- << t << ") : FATAL: Attempted to destroy a thread pool"
- "from within a callback of the thread pool!");
- }
- t->join();
- delete t;
-}
-
-// As long as this just forwards to an asio::io_service method it doesn't need a lock
-void IoServiceImpl::Run() {
- // The IoService executes callbacks provided by library users in the context of worker threads,
- // there is no way of preventing those callbacks from throwing but we can at least prevent them
- // from escaping this library and crashing the process.
-
- // As recommended in http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/reference/io_service.html#boost_asio.reference.io_service.effect_of_exceptions_thrown_from_handlers
- asio::io_service::work work(io_service_);
- while(true)
- {
- try
- {
- io_service_.run();
- break;
- } catch (const std::exception & e) {
- LOG_WARN(kFileSystem, << "Unexpected exception in libhdfspp worker thread: " << e.what());
- } catch (...) {
- LOG_WARN(kFileSystem, << "Unexpected value not derived from std::exception in libhdfspp worker thread");
- }
- }
-}
-
-unsigned int IoServiceImpl::get_worker_thread_count() {
- mutex_guard state_lock(state_lock_);
- return worker_threads_.size();
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.h
deleted file mode 100644
index 294252b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/hdfs_ioservice.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_HDFS_IOSERVICE_H_
-#define COMMON_HDFS_IOSERVICE_H_
-
-#include "hdfspp/hdfspp.h"
-
-#include <asio/io_service.hpp>
-#include "common/util.h"
-
-#include <mutex>
-#include <thread>
-
-namespace hdfs {
-
-// Uncomment this to determine if issues are due to concurrency or logic faults
-// If tests still fail with concurrency disabled it's most likely a logic bug
-#define DISABLE_CONCURRENT_WORKERS
-
-/*
- * A thin wrapper over the asio::io_service with a few extras
- * -manages it's own worker threads
- * -some helpers for sharing with multiple modules that need to do async work
- */
-
-class IoServiceImpl : public IoService {
- public:
- IoServiceImpl() {}
-
- virtual unsigned int InitDefaultWorkers() override;
- virtual unsigned int InitWorkers(unsigned int thread_count) override;
- virtual void PostTask(std::function<void(void)>& asyncTask) override;
- virtual void Run() override;
- virtual void Stop() override { io_service_.stop(); }
-
- // Add a single worker thread, in the common case try to avoid this in favor
- // of Init[Default]Workers. Public for use by tests and rare cases where a
- // client wants very explicit control of threading for performance reasons
- // e.g. pinning threads to NUMA nodes.
- bool AddWorkerThread();
-
- // Be very careful about using this: HDFS-10241
- ::asio::io_service &io_service() { return io_service_; }
- unsigned int get_worker_thread_count();
- private:
- std::mutex state_lock_;
- ::asio::io_service io_service_;
-
- // For doing logging + resource manager updates on thread start/exit
- void ThreadStartHook();
- void ThreadExitHook();
-
- // Support for async worker threads
- struct WorkerDeleter {
- void operator()(std::thread *t);
- };
- typedef std::unique_ptr<std::thread, WorkerDeleter> WorkerPtr;
- std::vector<WorkerPtr> worker_threads_;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.cc
deleted file mode 100644
index d9f4edf..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "libhdfs_events_impl.h"
-
-#include <exception>
-
-namespace hdfs {
-
-/**
- * Default no-op callback implementations
- **/
-
-LibhdfsEvents::LibhdfsEvents() : fs_callback(std::experimental::nullopt),
- file_callback(std::experimental::nullopt)
-{}
-
-LibhdfsEvents::~LibhdfsEvents() {}
-
-void LibhdfsEvents::set_fs_callback(const fs_event_callback & callback) {
- fs_callback = callback;
-}
-
-void LibhdfsEvents::set_file_callback(const file_event_callback & callback) {
- file_callback = callback;
-}
-
-void LibhdfsEvents::clear_fs_callback() {
- fs_callback = std::experimental::nullopt;
-}
-
-void LibhdfsEvents::clear_file_callback() {
- file_callback = std::experimental::nullopt;
-}
-
-event_response LibhdfsEvents::call(const char * event,
- const char * cluster,
- int64_t value)
-{
- if (fs_callback) {
- try {
- return fs_callback->operator()(event, cluster, value);
- } catch (const std::exception& e) {
- return event_response::make_caught_std_exception(e.what());
- } catch (...) {
- // Arguably calling abort() here would serve as appropriate
- // punishment for those who throw garbage that isn't derived
- // from std::exception...
- return event_response::make_caught_unknown_exception();
- }
- } else {
- return event_response::make_ok();
- }
-}
-
-event_response LibhdfsEvents::call(const char * event,
- const char * cluster,
- const char * file,
- int64_t value)
-{
- if (file_callback) {
- try {
- return file_callback->operator()(event, cluster, file, value);
- } catch (const std::exception& e) {
- return event_response::make_caught_std_exception(e.what());
- } catch (...) {
- return event_response::make_caught_unknown_exception();
- }
- } else {
- return event_response::make_ok();
- }
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.h
deleted file mode 100644
index e43266a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/libhdfs_events_impl.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIBHDFSPP_COMMON_LIBHDFSEVENTS_IMPL
-#define LIBHDFSPP_COMMON_LIBHDFSEVENTS_IMPL
-
-#include "hdfspp/events.h"
-#include "common/optional_wrapper.h"
-
-#include <functional>
-
-namespace hdfs {
-
-/**
- * Users can specify event handlers. Default is a no-op handler.
- **/
-class LibhdfsEvents {
-public:
- LibhdfsEvents();
- virtual ~LibhdfsEvents();
-
- void set_fs_callback(const fs_event_callback & callback);
- void set_file_callback(const file_event_callback & callback);
- void clear_fs_callback();
- void clear_file_callback();
-
- event_response call(const char *event,
- const char *cluster,
- int64_t value);
-
- event_response call(const char *event,
- const char *cluster,
- const char *file,
- int64_t value);
-private:
- // Called when fs events occur
- std::experimental::optional<fs_event_callback> fs_callback;
-
- // Called when file events occur
- std::experimental::optional<file_event_callback> file_callback;
-};
-
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/locks.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/locks.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/locks.cc
deleted file mode 100644
index 30dcb44..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/locks.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/locks.h"
-
-#include <mutex>
-
-
-namespace hdfs {
-
-LockGuard::LockGuard(Mutex *m) : _mtx(m) {
- if(!m) {
- throw LockFailure("LockGuard passed invalid (null) Mutex pointer");
- }
- _mtx->lock();
-}
-
-LockGuard::~LockGuard() {
- if(_mtx) {
- _mtx->unlock();
- }
-}
-
-
-// Basic mutexes to use as default. Just a wrapper around C++11 std::mutex.
-class DefaultMutex : public Mutex {
- public:
- DefaultMutex() {}
-
- void lock() override {
- // Could throw in here if the implementation couldn't lock for some reason.
- _mtx.lock();
- }
-
- void unlock() override {
- _mtx.unlock();
- }
-
- std::string str() override {
- return "DefaultMutex";
- }
- private:
- std::mutex _mtx;
-};
-
-DefaultMutex defaultTestMutex;
-DefaultMutex defaultGssapiMutex;
-
-// LockManager static var instantiation
-Mutex *LockManager::TEST_default_mutex = &defaultTestMutex;
-Mutex *LockManager::gssapiMtx = &defaultGssapiMutex;
-std::mutex LockManager::_state_lock;
-bool LockManager::_finalized = false;
-
-bool LockManager::InitLocks(Mutex *gssapi) {
- std::lock_guard<std::mutex> guard(_state_lock);
-
- // You get once shot to set this - swapping the locks
- // out while in use gets risky. It can still be done by
- // using the Mutex as a proxy object if one understands
- // the implied risk of doing so.
- if(_finalized)
- return false;
-
- gssapiMtx = gssapi;
- _finalized = true;
- return true;
-}
-
-Mutex *LockManager::getGssapiMutex() {
- std::lock_guard<std::mutex> guard(_state_lock);
- return gssapiMtx;
-}
-
-Mutex *LockManager::TEST_get_default_mutex() {
- return TEST_default_mutex;
-}
-
-void LockManager::TEST_reset_manager() {
- _finalized = false;
- // user still responsible for cleanup
- gssapiMtx = &defaultGssapiMutex;
-}
-
-} // end namepace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.cc
deleted file mode 100644
index 94bce83..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.cc
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "logging.h"
-
-#include <ctime>
-#include <cstring>
-#include <thread>
-#include <iostream>
-#include <sstream>
-
-namespace hdfs
-{
-
-LogManager::LogManager() {}
-std::unique_ptr<LoggerInterface> LogManager::logger_impl_(new StderrLogger());
-std::mutex LogManager::impl_lock_;
-uint32_t LogManager::component_mask_ = 0xFFFFFFFF;
-uint32_t LogManager::level_threshold_ = kWarning;
-
-void LogManager::DisableLogForComponent(LogSourceComponent c) {
- // AND with all bits other than one we want to unset
- std::lock_guard<std::mutex> impl_lock(impl_lock_);
- component_mask_ &= ~c;
-}
-
-void LogManager::EnableLogForComponent(LogSourceComponent c) {
- // OR with bit to set
- std::lock_guard<std::mutex> impl_lock(impl_lock_);
- component_mask_ |= c;
-}
-
-void LogManager::SetLogLevel(LogLevel level) {
- std::lock_guard<std::mutex> impl_lock(impl_lock_);
- level_threshold_ = level;
-}
-
-void LogManager::Write(const LogMessage& msg) {
- std::lock_guard<std::mutex> impl_lock(impl_lock_);
- if(logger_impl_)
- logger_impl_->Write(msg);
-}
-
-void LogManager::SetLoggerImplementation(std::unique_ptr<LoggerInterface> impl) {
- std::lock_guard<std::mutex> impl_lock(impl_lock_);
- logger_impl_.reset(impl.release());
-}
-
-
-/**
- * Simple plugin to dump logs to stderr
- **/
-void StderrLogger::Write(const LogMessage& msg) {
- std::stringstream formatted;
-
- if(show_level_)
- formatted << msg.level_string();
-
- if(show_component_)
- formatted << msg.component_string();
-
- if(show_timestamp_) {
- time_t current_time = std::time(nullptr);
- char timestr[128];
- memset(timestr, 0, 128);
- int res = std::strftime(timestr, 128, "%a %b %e %H:%M:%S %Y", std::localtime(¤t_time));
- if(res > 0) {
- formatted << '[' << (const char*)timestr << ']';
- } else {
- formatted << "[Error formatting timestamp]";
- }
- }
-
- if(show_component_) {
- formatted << "[Thread id = " << std::this_thread::get_id() << ']';
- }
-
- if(show_file_) {
- // __FILE__ contains absolute path, which is giant if doing a build inside the
- // Hadoop tree. Trim down to relative to libhdfspp/
- std::string abs_path(msg.file_name());
- size_t rel_path_idx = abs_path.find("libhdfspp/");
- // Default to whole string if library is being built in an odd way
- if(rel_path_idx == std::string::npos)
- rel_path_idx = 0;
-
- formatted << '[' << (const char*)&abs_path[rel_path_idx] << ":" << msg.file_line() << ']';
- }
-
- std::cerr << formatted.str() << " " << msg.MsgString() << std::endl;
-}
-
-void StderrLogger::set_show_timestamp(bool show) {
- show_timestamp_ = show;
-}
-void StderrLogger::set_show_level(bool show) {
- show_level_ = show;
-}
-void StderrLogger::set_show_thread(bool show) {
- show_thread_ = show;
-}
-void StderrLogger::set_show_component(bool show) {
- show_component_ = show;
-}
-
-
-LogMessage::~LogMessage() {
- LogManager::Write(*this);
-}
-
-LogMessage& LogMessage::operator<<(const std::string *str) {
- if(str)
- msg_buffer_ << str;
- else
- msg_buffer_ << "<nullptr>";
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(const std::string& str) {
- msg_buffer_ << str;
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(const ::asio::ip::tcp::endpoint& endpoint) {
- msg_buffer_ << endpoint;
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(const char *str) {
- if(str)
- msg_buffer_ << str;
- else
- msg_buffer_ << "<nullptr>";
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(bool val) {
- if(val)
- msg_buffer_ << "true";
- else
- msg_buffer_ << "false";
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(int32_t val) {
- msg_buffer_ << val;
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(uint32_t val) {
- msg_buffer_ << val;
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(int64_t val) {
- msg_buffer_ << val;
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(uint64_t val) {
- msg_buffer_ << val;
- return *this;
-}
-
-LogMessage& LogMessage::operator<<(void *ptr) {
- msg_buffer_ << ptr;
- return *this;
-}
-
-
-LogMessage& LogMessage::operator<<(const std::thread::id& tid) {
- msg_buffer_ << tid;
- return *this;
-}
-
-std::string LogMessage::MsgString() const {
- return msg_buffer_.str();
-}
-
-const char * kLevelStrings[5] = {
- "[TRACE ]",
- "[DEBUG ]",
- "[INFO ]",
- "[WARN ]",
- "[ERROR ]"
-};
-
-const char * LogMessage::level_string() const {
- return kLevelStrings[level_];
-}
-
-const char * kComponentStrings[6] = {
- "[Unknown ]",
- "[RPC ]",
- "[BlockReader ]",
- "[FileHandle ]",
- "[FileSystem ]",
- "[Async Runtime ]",
-};
-
-const char * LogMessage::component_string() const {
- switch(component_) {
- case kRPC: return kComponentStrings[1];
- case kBlockReader: return kComponentStrings[2];
- case kFileHandle: return kComponentStrings[3];
- case kFileSystem: return kComponentStrings[4];
- case kAsyncRuntime: return kComponentStrings[5];
- default: return kComponentStrings[0];
- }
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.h
deleted file mode 100644
index 69f9c6e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/logging.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_COMMON_LOGGING_H_
-#define LIB_COMMON_LOGGING_H_
-
-#include <asio/ip/tcp.hpp>
-
-#include "hdfspp/log.h"
-
-#include <iostream>
-#include <sstream>
-#include <mutex>
-#include <memory>
-#include <thread>
-
-#include <asio/ip/tcp.hpp>
-
-namespace hdfs {
-
-/**
- * Logging mechanism to provide lightweight logging to stderr as well as
- * as a callback mechanism to allow C clients and larger third party libs
- * to be used to handle logging. When adding a new log message to the
- * library use the macros defined below (LOG_TRACE..LOG_ERROR) rather than
- * using the LogMessage and LogManager objects directly.
- **/
-
-enum LogLevel {
- kTrace = 0,
- kDebug = 1,
- kInfo = 2,
- kWarning = 3,
- kError = 4,
-};
-
-enum LogSourceComponent {
- kUnknown = 1 << 0,
- kRPC = 1 << 1,
- kBlockReader = 1 << 2,
- kFileHandle = 1 << 3,
- kFileSystem = 1 << 4,
- kAsyncRuntime = 1 << 5,
-};
-
-#define LOG_TRACE(C, MSG) do { \
-if(LogManager::ShouldLog(kTrace,C)) { \
- LogMessage(kTrace, __FILE__, __LINE__, C) MSG; \
-}} while (0);
-
-
-#define LOG_DEBUG(C, MSG) do { \
-if(LogManager::ShouldLog(kDebug,C)) { \
- LogMessage(kDebug, __FILE__, __LINE__, C) MSG; \
-}} while (0);
-
-#define LOG_INFO(C, MSG) do { \
-if(LogManager::ShouldLog(kInfo,C)) { \
- LogMessage(kInfo, __FILE__, __LINE__, C) MSG; \
-}} while (0);
-
-#define LOG_WARN(C, MSG) do { \
-if(LogManager::ShouldLog(kWarning,C)) { \
- LogMessage(kWarning, __FILE__, __LINE__, C) MSG; \
-}} while (0);
-
-#define LOG_ERROR(C, MSG) do { \
-if(LogManager::ShouldLog(kError,C)) { \
- LogMessage(kError, __FILE__, __LINE__, C) MSG; \
-}} while (0);
-
-
-class LogMessage;
-
-class LoggerInterface {
- public:
- LoggerInterface() {};
- virtual ~LoggerInterface() {};
-
- /**
- * User defined handling messages, common case would be printing somewhere.
- **/
- virtual void Write(const LogMessage& msg) = 0;
-};
-
-/**
- * StderrLogger unsuprisingly dumps messages to stderr.
- * This is the default logger if nothing else is explicitly set.
- **/
-class StderrLogger : public LoggerInterface {
- public:
- StderrLogger() : show_timestamp_(true), show_level_(true),
- show_thread_(true), show_component_(true),
- show_file_(true) {}
- void Write(const LogMessage& msg);
- void set_show_timestamp(bool show);
- void set_show_level(bool show);
- void set_show_thread(bool show);
- void set_show_component(bool show);
- private:
- bool show_timestamp_;
- bool show_level_;
- bool show_thread_;
- bool show_component_;
- bool show_file_;
-};
-
-
-/**
- * LogManager provides a thread safe static interface to the underlying
- * logger implementation.
- **/
-class LogManager {
- friend class LogMessage;
- public:
- // allow easy inlining
- static bool ShouldLog(LogLevel level, LogSourceComponent source) {
- std::lock_guard<std::mutex> impl_lock(impl_lock_);
- if(level < level_threshold_)
- return false;
- if(!(source & component_mask_))
- return false;
- return true;
- }
- static void Write(const LogMessage & msg);
- static void EnableLogForComponent(LogSourceComponent c);
- static void DisableLogForComponent(LogSourceComponent c);
- static void SetLogLevel(LogLevel level);
- static void SetLoggerImplementation(std::unique_ptr<LoggerInterface> impl);
-
- private:
- // don't create instances of this
- LogManager();
- // synchronize all unsafe plugin calls
- static std::mutex impl_lock_;
- static std::unique_ptr<LoggerInterface> logger_impl_;
- // component and level masking
- static uint32_t component_mask_;
- static uint32_t level_threshold_;
-};
-
-/**
- * LogMessage contains message text, along with other metadata about the message.
- * Note: For performance reasons a set of macros (see top of file) is used to
- * create these inside of an if block. Do not instantiate these directly, doing
- * so will cause the message to be uncontitionally logged. This minor inconvinience
- * gives us a ~20% performance increase in the (common) case where few messages
- * are worth logging; std::stringstream is expensive to construct.
- **/
-class LogMessage {
- friend class LogManager;
- public:
- LogMessage(const LogLevel &l, const char *file, int line,
- LogSourceComponent component = kUnknown) :
- level_(l), component_(component), origin_file_(file), origin_line_(line){}
-
- ~LogMessage();
-
- const char *level_string() const;
- const char *component_string() const;
- LogLevel level() const {return level_; }
- LogSourceComponent component() const {return component_; }
- int file_line() const {return origin_line_; }
- const char * file_name() const {return origin_file_; }
-
- //print as-is, indicates when a nullptr was passed in
- LogMessage& operator<<(const char *);
- LogMessage& operator<<(const std::string*);
- LogMessage& operator<<(const std::string&);
-
- //convert to a string "true"/"false"
- LogMessage& operator<<(bool);
-
- //integral types
- LogMessage& operator<<(int32_t);
- LogMessage& operator<<(uint32_t);
- LogMessage& operator<<(int64_t);
- LogMessage& operator<<(uint64_t);
-
- //print address as hex
- LogMessage& operator<<(void *);
-
- //asio types
- LogMessage& operator<<(const ::asio::ip::tcp::endpoint& endpoint);
-
- //thread and mutex types
- LogMessage& operator<<(const std::thread::id& tid);
-
-
- std::string MsgString() const;
-
- private:
- LogLevel level_;
- LogSourceComponent component_;
- const char *origin_file_;
- const int origin_line_;
- std::stringstream msg_buffer_;
-};
-
-}
-
-#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[30/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/datagram_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/datagram_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/datagram_socket_service.hpp
deleted file mode 100644
index a9b9610..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/datagram_socket_service.hpp
+++ /dev/null
@@ -1,432 +0,0 @@
-//
-// datagram_socket_service.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_DATAGRAM_SOCKET_SERVICE_HPP
-#define ASIO_DATAGRAM_SOCKET_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 "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a datagram socket.
-template <typename Protocol>
-class datagram_socket_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<datagram_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
- typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
- typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
- /// The type of a datagram socket.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new datagram socket service for the specified io_service.
- explicit datagram_socket_service(asio::io_service& io_service)
- : asio::detail::service_base<
- datagram_socket_service<Protocol> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new datagram socket implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new datagram socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another datagram socket implementation.
- void move_assign(implementation_type& impl,
- datagram_socket_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-
- /// Move-construct a new datagram socket implementation from another protocol
- /// type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename datagram_socket_service<
- Protocol1>::implementation_type& other_impl,
- typename enable_if<is_convertible<
- Protocol1, Protocol>::value>::type* = 0)
- {
- service_impl_.template converting_move_construct<Protocol1>(
- impl, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a datagram socket implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- // Open a new datagram socket implementation.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (protocol.type() == ASIO_OS_DEF(SOCK_DGRAM))
- service_impl_.open(impl, protocol, ec);
- else
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- /// Assign an existing native socket to a datagram socket.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- return service_impl_.assign(impl, protocol, native_socket, ec);
- }
-
- /// Determine whether the socket is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a datagram socket implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native socket implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native socket implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the socket.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.at_mark(impl, ec);
- }
-
- /// Determine the number of bytes available for reading.
- std::size_t available(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.available(impl, ec);
- }
-
- // Bind the datagram socket to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- return service_impl_.bind(impl, endpoint, ec);
- }
-
- /// Connect the datagram socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- return service_impl_.connect(impl, peer_endpoint, ec);
- }
-
- /// Start an asynchronous connect.
- template <typename ConnectHandler>
- ASIO_INITFN_RESULT_TYPE(ConnectHandler,
- void (asio::error_code))
- async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint,
- ASIO_MOVE_ARG(ConnectHandler) handler)
- {
- detail::async_result_init<
- ConnectHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(ConnectHandler)(handler));
-
- service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
- return init.result.get();
- }
-
- /// Set a socket option.
- template <typename SettableSocketOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSocketOption& option, asio::error_code& ec)
- {
- return service_impl_.set_option(impl, option, ec);
- }
-
- /// Get a socket option.
- template <typename GettableSocketOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSocketOption& option, asio::error_code& ec) const
- {
- return service_impl_.get_option(impl, option, ec);
- }
-
- /// Perform an IO control command on the socket.
- template <typename IoControlCommand>
- asio::error_code io_control(implementation_type& impl,
- IoControlCommand& command, asio::error_code& ec)
- {
- return service_impl_.io_control(impl, command, ec);
- }
-
- /// Gets the non-blocking mode of the socket.
- bool non_blocking(const implementation_type& impl) const
- {
- return service_impl_.non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.non_blocking(impl, mode, ec);
- }
-
- /// Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return service_impl_.native_non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.native_non_blocking(impl, mode, ec);
- }
-
- /// Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.local_endpoint(impl, ec);
- }
-
- /// Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.remote_endpoint(impl, ec);
- }
-
- /// Disable sends or receives on the socket.
- asio::error_code shutdown(implementation_type& impl,
- socket_base::shutdown_type what, asio::error_code& ec)
- {
- return service_impl_.shutdown(impl, what, ec);
- }
-
- /// Send the given data to the peer.
- template <typename ConstBufferSequence>
- std::size_t send(implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.send(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous send.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(implementation_type& impl, const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_send(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Send a datagram to the specified endpoint.
- template <typename ConstBufferSequence>
- std::size_t send_to(implementation_type& impl,
- const ConstBufferSequence& buffers, const endpoint_type& destination,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.send_to(impl, buffers, destination, flags, ec);
- }
-
- /// Start an asynchronous send.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send_to(implementation_type& impl,
- const ConstBufferSequence& buffers, const endpoint_type& destination,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_send_to(impl, buffers,
- destination, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Receive some data from the peer.
- template <typename MutableBufferSequence>
- std::size_t receive(implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.receive(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous receive.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_receive(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Receive a datagram with the endpoint of the sender.
- template <typename MutableBufferSequence>
- std::size_t receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.receive_from(impl, buffers, sender_endpoint, flags,
- ec);
- }
-
- /// Start an asynchronous receive that will get the endpoint of the sender.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive_from(implementation_type& impl,
- const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_receive_from(impl, buffers,
- sender_endpoint, flags, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DATAGRAM_SOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer.hpp
deleted file mode 100644
index c0b7fe8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// deadline_timer.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_DEADLINE_TIMER_HPP
-#define ASIO_DEADLINE_TIMER_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_HAS_BOOST_DATE_TIME) \
- || defined(ASIO_CPP11_DATE_TIME) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/socket_types.hpp" // Must come before posix_time.
-#include "asio/basic_deadline_timer.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#include "asio/detail/push_options.hpp"
-#include <boost/date_time/posix_time/posix_time_types.hpp>
-#include "asio/detail/pop_options.hpp"
-
-#elif defined(ASIO_CPP11_DATE_TIME)
-
-#include "asio/detail/chrono_time_traits.hpp"
-#include "asio/wait_traits.hpp"
-#include <chrono>
-
-#endif
-
-namespace asio {
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-/// Typedef for the typical usage of timer. Uses a UTC clock.
-typedef basic_deadline_timer<boost::posix_time::ptime> deadline_timer;
-
-#elif defined(ASIO_CPP11_DATE_TIME)
-
-typedef basic_deadline_timer<
- std::chrono::system_clock,
- detail::chrono_time_traits<std::chrono::system_clock,
- wait_traits<std::chrono::system_clock>>>
- deadline_timer;
-
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
- // || defined(ASIO_CPP11_DATE_TIME)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_DEADLINE_TIMER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer_service.hpp
deleted file mode 100644
index 990c2e7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/deadline_timer_service.hpp
+++ /dev/null
@@ -1,173 +0,0 @@
-//
-// deadline_timer_service.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_DEADLINE_TIMER_SERVICE_HPP
-#define ASIO_DEADLINE_TIMER_SERVICE_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_HAS_BOOST_DATE_TIME) \
- || defined(ASIO_CPP11_DATE_TIME) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/deadline_timer_service.hpp"
-#include "asio/io_service.hpp"
-#include "asio/time_traits.hpp"
-#include "asio/detail/timer_queue_ptime.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a timer.
-template <typename TimeType,
- typename TimeTraits = asio::time_traits<TimeType> >
-class deadline_timer_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<
- deadline_timer_service<TimeType, TimeTraits> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The time traits type.
- typedef TimeTraits traits_type;
-
- /// The time type.
- typedef typename traits_type::time_type time_type;
-
- /// The duration type.
- typedef typename traits_type::duration_type duration_type;
-
-private:
- // The type of the platform-specific implementation.
- typedef detail::deadline_timer_service<traits_type> service_impl_type;
-
-public:
- /// The implementation type of the deadline timer.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// Construct a new timer service for the specified io_service.
- explicit deadline_timer_service(asio::io_service& io_service)
- : asio::detail::service_base<
- deadline_timer_service<TimeType, TimeTraits> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new timer implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
- /// Destroy a timer implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Cancel any asynchronous wait operations associated with the timer.
- std::size_t cancel(implementation_type& impl, asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Cancels one asynchronous wait operation associated with the timer.
- std::size_t cancel_one(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel_one(impl, ec);
- }
-
- /// Get the expiry time for the timer as an absolute time.
- time_type expires_at(const implementation_type& impl) const
- {
- return service_impl_.expires_at(impl);
- }
-
- /// Set the expiry time for the timer as an absolute time.
- std::size_t expires_at(implementation_type& impl,
- const time_type& expiry_time, asio::error_code& ec)
- {
- return service_impl_.expires_at(impl, expiry_time, ec);
- }
-
- /// Get the expiry time for the timer relative to now.
- duration_type expires_from_now(const implementation_type& impl) const
- {
- return service_impl_.expires_from_now(impl);
- }
-
- /// Set the expiry time for the timer relative to now.
- std::size_t expires_from_now(implementation_type& impl,
- const duration_type& expiry_time, asio::error_code& ec)
- {
- return service_impl_.expires_from_now(impl, expiry_time, ec);
- }
-
- // Perform a blocking wait on the timer.
- void wait(implementation_type& impl, asio::error_code& ec)
- {
- service_impl_.wait(impl, ec);
- }
-
- // Start an asynchronous wait on the timer.
- template <typename WaitHandler>
- ASIO_INITFN_RESULT_TYPE(WaitHandler,
- void (asio::error_code))
- async_wait(implementation_type& impl,
- ASIO_MOVE_ARG(WaitHandler) handler)
- {
- detail::async_result_init<
- WaitHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(WaitHandler)(handler));
-
- service_impl_.async_wait(impl, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
- // || defined(ASIO_CPP11_DATE_TIME)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_DEADLINE_TIMER_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/addressof.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/addressof.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/addressof.hpp
deleted file mode 100644
index d09c70c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/addressof.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/addressof.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_DETAIL_ADDRESSOF_HPP
-#define ASIO_DETAIL_ADDRESSOF_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_HAS_STD_ADDRESSOF)
-# include <memory>
-#else // defined(ASIO_HAS_STD_ADDRESSOF)
-# include <boost/utility/addressof.hpp>
-#endif // defined(ASIO_HAS_STD_ADDRESSOF)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_ADDRESSOF)
-using std::addressof;
-#else // defined(ASIO_HAS_STD_ADDRESSOF)
-using boost::addressof;
-#endif // defined(ASIO_HAS_STD_ADDRESSOF)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_ADDRESSOF_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array.hpp
deleted file mode 100644
index 240a1ca..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/array.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_DETAIL_ARRAY_HPP
-#define ASIO_DETAIL_ARRAY_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_HAS_STD_ARRAY)
-# include <array>
-#else // defined(ASIO_HAS_STD_ARRAY)
-# include <boost/array.hpp>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_ARRAY)
-using std::array;
-#else // defined(ASIO_HAS_STD_ARRAY)
-using boost::array;
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_ARRAY_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array_fwd.hpp
deleted file mode 100644
index 84ee3b1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/array_fwd.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// detail/array_fwd.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_DETAIL_ARRAY_FWD_HPP
-#define ASIO_DETAIL_ARRAY_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace boost {
-
-template<class T, std::size_t N>
-class array;
-
-} // namespace boost
-
-// Standard library components can't be forward declared, so we'll have to
-// include the array header. Fortunately, it's fairly lightweight and doesn't
-// add significantly to the compile time.
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-#endif // ASIO_DETAIL_ARRAY_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/assert.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/assert.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/assert.hpp
deleted file mode 100644
index 32ec0dd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/assert.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// detail/assert.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_DETAIL_ASSERT_HPP
-#define ASIO_DETAIL_ASSERT_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_HAS_BOOST_ASSERT)
-# include <boost/assert.hpp>
-#else // defined(ASIO_HAS_BOOST_ASSERT)
-# include <cassert>
-#endif // defined(ASIO_HAS_BOOST_ASSERT)
-
-#if defined(ASIO_HAS_BOOST_ASSERT)
-# define ASIO_ASSERT(expr) BOOST_ASSERT(expr)
-#else // defined(ASIO_HAS_BOOST_ASSERT)
-# define ASIO_ASSERT(expr) assert(expr)
-#endif // defined(ASIO_HAS_BOOST_ASSERT)
-
-#endif // ASIO_DETAIL_ASSERT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/atomic_count.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/atomic_count.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/atomic_count.hpp
deleted file mode 100644
index a83f703..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/atomic_count.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/atomic_count.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_DETAIL_ATOMIC_COUNT_HPP
-#define ASIO_DETAIL_ATOMIC_COUNT_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_HAS_THREADS)
-// Nothing to include.
-#elif defined(ASIO_HAS_STD_ATOMIC)
-# include <atomic>
-#else // defined(ASIO_HAS_STD_ATOMIC)
-# include <boost/detail/atomic_count.hpp>
-#endif // defined(ASIO_HAS_STD_ATOMIC)
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef long atomic_count;
-inline void increment(atomic_count& a, long b) { a += b; }
-#elif defined(ASIO_HAS_STD_ATOMIC)
-typedef std::atomic<long> atomic_count;
-inline void increment(atomic_count& a, long b) { a += b; }
-#else // defined(ASIO_HAS_STD_ATOMIC)
-typedef boost::detail::atomic_count atomic_count;
-inline void increment(atomic_count& a, long b) { while (b > 0) ++a, --b; }
-#endif // defined(ASIO_HAS_STD_ATOMIC)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_ATOMIC_COUNT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/base_from_completion_cond.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/base_from_completion_cond.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/base_from_completion_cond.hpp
deleted file mode 100644
index e78a13f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/base_from_completion_cond.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// detail/base_from_completion_cond.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_DETAIL_BASE_FROM_COMPLETION_COND_HPP
-#define ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/completion_condition.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename CompletionCondition>
-class base_from_completion_cond
-{
-protected:
- explicit base_from_completion_cond(CompletionCondition completion_condition)
- : completion_condition_(completion_condition)
- {
- }
-
- std::size_t check_for_completion(
- const asio::error_code& ec,
- std::size_t total_transferred)
- {
- return detail::adapt_completion_condition_result(
- completion_condition_(ec, total_transferred));
- }
-
-private:
- CompletionCondition completion_condition_;
-};
-
-template <>
-class base_from_completion_cond<transfer_all_t>
-{
-protected:
- explicit base_from_completion_cond(transfer_all_t)
- {
- }
-
- static std::size_t check_for_completion(
- const asio::error_code& ec,
- std::size_t total_transferred)
- {
- return transfer_all_t()(ec, total_transferred);
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/bind_handler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/bind_handler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/bind_handler.hpp
deleted file mode 100644
index 9ecea52..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/bind_handler.hpp
+++ /dev/null
@@ -1,489 +0,0 @@
-//
-// detail/bind_handler.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_DETAIL_BIND_HANDLER_HPP
-#define ASIO_DETAIL_BIND_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler, typename Arg1>
-class binder1
-{
-public:
- binder1(const Handler& handler, const Arg1& arg1)
- : handler_(handler),
- arg1_(arg1)
- {
- }
-
- binder1(Handler& handler, const Arg1& arg1)
- : handler_(ASIO_MOVE_CAST(Handler)(handler)),
- arg1_(arg1)
- {
- }
-
- void operator()()
- {
- handler_(static_cast<const Arg1&>(arg1_));
- }
-
- void operator()() const
- {
- handler_(arg1_);
- }
-
-//private:
- Handler handler_;
- Arg1 arg1_;
-};
-
-template <typename Handler, typename Arg1>
-inline void* asio_handler_allocate(std::size_t size,
- binder1<Handler, Arg1>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- binder1<Handler, Arg1>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1>
-inline bool asio_handler_is_continuation(
- binder1<Handler, Arg1>* this_handler)
-{
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1>
-inline void asio_handler_invoke(Function& function,
- binder1<Handler, Arg1>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1>
-inline void asio_handler_invoke(const Function& function,
- binder1<Handler, Arg1>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1>
-inline binder1<Handler, Arg1> bind_handler(Handler handler,
- const Arg1& arg1)
-{
- return binder1<Handler, Arg1>(handler, arg1);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-class binder2
-{
-public:
- binder2(const Handler& handler, const Arg1& arg1, const Arg2& arg2)
- : handler_(handler),
- arg1_(arg1),
- arg2_(arg2)
- {
- }
-
- binder2(Handler& handler, const Arg1& arg1, const Arg2& arg2)
- : handler_(ASIO_MOVE_CAST(Handler)(handler)),
- arg1_(arg1),
- arg2_(arg2)
- {
- }
-
- void operator()()
- {
- handler_(static_cast<const Arg1&>(arg1_),
- static_cast<const Arg2&>(arg2_));
- }
-
- void operator()() const
- {
- handler_(arg1_, arg2_);
- }
-
-//private:
- Handler handler_;
- Arg1 arg1_;
- Arg2 arg2_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline void* asio_handler_allocate(std::size_t size,
- binder2<Handler, Arg1, Arg2>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- binder2<Handler, Arg1, Arg2>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline bool asio_handler_is_continuation(
- binder2<Handler, Arg1, Arg2>* this_handler)
-{
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2>
-inline void asio_handler_invoke(Function& function,
- binder2<Handler, Arg1, Arg2>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2>
-inline void asio_handler_invoke(const Function& function,
- binder2<Handler, Arg1, Arg2>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline binder2<Handler, Arg1, Arg2> bind_handler(Handler handler,
- const Arg1& arg1, const Arg2& arg2)
-{
- return binder2<Handler, Arg1, Arg2>(handler, arg1, arg2);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-class binder3
-{
-public:
- binder3(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3)
- : handler_(handler),
- arg1_(arg1),
- arg2_(arg2),
- arg3_(arg3)
- {
- }
-
- binder3(Handler& handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3)
- : handler_(ASIO_MOVE_CAST(Handler)(handler)),
- arg1_(arg1),
- arg2_(arg2),
- arg3_(arg3)
- {
- }
-
- void operator()()
- {
- handler_(static_cast<const Arg1&>(arg1_),
- static_cast<const Arg2&>(arg2_),
- static_cast<const Arg3&>(arg3_));
- }
-
- void operator()() const
- {
- handler_(arg1_, arg2_, arg3_);
- }
-
-//private:
- Handler handler_;
- Arg1 arg1_;
- Arg2 arg2_;
- Arg3 arg3_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline void* asio_handler_allocate(std::size_t size,
- binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline bool asio_handler_is_continuation(
- binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
- typename Arg3>
-inline void asio_handler_invoke(Function& function,
- binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
- typename Arg3>
-inline void asio_handler_invoke(const Function& function,
- binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline binder3<Handler, Arg1, Arg2, Arg3> bind_handler(Handler handler,
- const Arg1& arg1, const Arg2& arg2, const Arg3& arg3)
-{
- return binder3<Handler, Arg1, Arg2, Arg3>(handler, arg1, arg2, arg3);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4>
-class binder4
-{
-public:
- binder4(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3, const Arg4& arg4)
- : handler_(handler),
- arg1_(arg1),
- arg2_(arg2),
- arg3_(arg3),
- arg4_(arg4)
- {
- }
-
- binder4(Handler& handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3, const Arg4& arg4)
- : handler_(ASIO_MOVE_CAST(Handler)(handler)),
- arg1_(arg1),
- arg2_(arg2),
- arg3_(arg3),
- arg4_(arg4)
- {
- }
-
- void operator()()
- {
- handler_(static_cast<const Arg1&>(arg1_),
- static_cast<const Arg2&>(arg2_),
- static_cast<const Arg3&>(arg3_),
- static_cast<const Arg4&>(arg4_));
- }
-
- void operator()() const
- {
- handler_(arg1_, arg2_, arg3_, arg4_);
- }
-
-//private:
- Handler handler_;
- Arg1 arg1_;
- Arg2 arg2_;
- Arg3 arg3_;
- Arg4 arg4_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4>
-inline void* asio_handler_allocate(std::size_t size,
- binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4>
-inline bool asio_handler_is_continuation(
- binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
- typename Arg3, typename Arg4>
-inline void asio_handler_invoke(Function& function,
- binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
- typename Arg3, typename Arg4>
-inline void asio_handler_invoke(const Function& function,
- binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4>
-inline binder4<Handler, Arg1, Arg2, Arg3, Arg4> bind_handler(
- Handler handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3, const Arg4& arg4)
-{
- return binder4<Handler, Arg1, Arg2, Arg3, Arg4>(handler, arg1, arg2, arg3,
- arg4);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Arg5>
-class binder5
-{
-public:
- binder5(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
- : handler_(handler),
- arg1_(arg1),
- arg2_(arg2),
- arg3_(arg3),
- arg4_(arg4),
- arg5_(arg5)
- {
- }
-
- binder5(Handler& handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
- : handler_(ASIO_MOVE_CAST(Handler)(handler)),
- arg1_(arg1),
- arg2_(arg2),
- arg3_(arg3),
- arg4_(arg4),
- arg5_(arg5)
- {
- }
-
- void operator()()
- {
- handler_(static_cast<const Arg1&>(arg1_),
- static_cast<const Arg2&>(arg2_),
- static_cast<const Arg3&>(arg3_),
- static_cast<const Arg4&>(arg4_),
- static_cast<const Arg5&>(arg5_));
- }
-
- void operator()() const
- {
- handler_(arg1_, arg2_, arg3_, arg4_, arg5_);
- }
-
-//private:
- Handler handler_;
- Arg1 arg1_;
- Arg2 arg2_;
- Arg3 arg3_;
- Arg4 arg4_;
- Arg5 arg5_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Arg5>
-inline void* asio_handler_allocate(std::size_t size,
- binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Arg5>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Arg5>
-inline bool asio_handler_is_continuation(
- binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
- return asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
- typename Arg3, typename Arg4, typename Arg5>
-inline void asio_handler_invoke(Function& function,
- binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
- typename Arg3, typename Arg4, typename Arg5>
-inline void asio_handler_invoke(const Function& function,
- binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
- typename Arg4, typename Arg5>
-inline binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5> bind_handler(
- Handler handler, const Arg1& arg1, const Arg2& arg2,
- const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
-{
- return binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>(handler, arg1, arg2,
- arg3, arg4, arg5);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BIND_HANDLER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_resize_guard.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_resize_guard.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_resize_guard.hpp
deleted file mode 100644
index 0d01c50..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_resize_guard.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// detail/buffer_resize_guard.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_DETAIL_BUFFER_RESIZE_GUARD_HPP
-#define ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/limits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper class to manage buffer resizing in an exception safe way.
-template <typename Buffer>
-class buffer_resize_guard
-{
-public:
- // Constructor.
- buffer_resize_guard(Buffer& buffer)
- : buffer_(buffer),
- old_size_(buffer.size())
- {
- }
-
- // Destructor rolls back the buffer resize unless commit was called.
- ~buffer_resize_guard()
- {
- if (old_size_ != (std::numeric_limits<size_t>::max)())
- {
- buffer_.resize(old_size_);
- }
- }
-
- // Commit the resize transaction.
- void commit()
- {
- old_size_ = (std::numeric_limits<size_t>::max)();
- }
-
-private:
- // The buffer being managed.
- Buffer& buffer_;
-
- // The size of the buffer at the time the guard was constructed.
- size_t old_size_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_sequence_adapter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_sequence_adapter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_sequence_adapter.hpp
deleted file mode 100644
index f0ba0ea..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffer_sequence_adapter.hpp
+++ /dev/null
@@ -1,383 +0,0 @@
-//
-// detail/buffer_sequence_adapter.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_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP
-#define ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class buffer_sequence_adapter_base
-{
-protected:
-#if defined(ASIO_WINDOWS_RUNTIME)
- // The maximum number of buffers to support in a single operation.
- enum { max_buffers = 1 };
-
- typedef Windows::Storage::Streams::IBuffer^ native_buffer_type;
-
- ASIO_DECL static void init_native_buffer(
- native_buffer_type& buf,
- const asio::mutable_buffer& buffer);
-
- ASIO_DECL static void init_native_buffer(
- native_buffer_type& buf,
- const asio::const_buffer& buffer);
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // The maximum number of buffers to support in a single operation.
- enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
-
- typedef WSABUF native_buffer_type;
-
- static void init_native_buffer(WSABUF& buf,
- const asio::mutable_buffer& buffer)
- {
- buf.buf = asio::buffer_cast<char*>(buffer);
- buf.len = static_cast<ULONG>(asio::buffer_size(buffer));
- }
-
- static void init_native_buffer(WSABUF& buf,
- const asio::const_buffer& buffer)
- {
- buf.buf = const_cast<char*>(asio::buffer_cast<const char*>(buffer));
- buf.len = static_cast<ULONG>(asio::buffer_size(buffer));
- }
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- // The maximum number of buffers to support in a single operation.
- enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
-
- typedef iovec native_buffer_type;
-
- static void init_iov_base(void*& base, void* addr)
- {
- base = addr;
- }
-
- template <typename T>
- static void init_iov_base(T& base, void* addr)
- {
- base = static_cast<T>(addr);
- }
-
- static void init_native_buffer(iovec& iov,
- const asio::mutable_buffer& buffer)
- {
- init_iov_base(iov.iov_base, asio::buffer_cast<void*>(buffer));
- iov.iov_len = asio::buffer_size(buffer);
- }
-
- static void init_native_buffer(iovec& iov,
- const asio::const_buffer& buffer)
- {
- init_iov_base(iov.iov_base, const_cast<void*>(
- asio::buffer_cast<const void*>(buffer)));
- iov.iov_len = asio::buffer_size(buffer);
- }
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-};
-
-// Helper class to translate buffers into the native buffer representation.
-template <typename Buffer, typename Buffers>
-class buffer_sequence_adapter
- : buffer_sequence_adapter_base
-{
-public:
- explicit buffer_sequence_adapter(const Buffers& buffer_sequence)
- : count_(0), total_buffer_size_(0)
- {
- typename Buffers::const_iterator iter = buffer_sequence.begin();
- typename Buffers::const_iterator end = buffer_sequence.end();
- for (; iter != end && count_ < max_buffers; ++iter, ++count_)
- {
- Buffer buffer(*iter);
- init_native_buffer(buffers_[count_], buffer);
- total_buffer_size_ += asio::buffer_size(buffer);
- }
- }
-
- native_buffer_type* buffers()
- {
- return buffers_;
- }
-
- std::size_t count() const
- {
- return count_;
- }
-
- bool all_empty() const
- {
- return total_buffer_size_ == 0;
- }
-
- static bool all_empty(const Buffers& buffer_sequence)
- {
- typename Buffers::const_iterator iter = buffer_sequence.begin();
- typename Buffers::const_iterator end = buffer_sequence.end();
- std::size_t i = 0;
- for (; iter != end && i < max_buffers; ++iter, ++i)
- if (asio::buffer_size(Buffer(*iter)) > 0)
- return false;
- return true;
- }
-
- static void validate(const Buffers& buffer_sequence)
- {
- typename Buffers::const_iterator iter = buffer_sequence.begin();
- typename Buffers::const_iterator end = buffer_sequence.end();
- for (; iter != end; ++iter)
- {
- Buffer buffer(*iter);
- asio::buffer_cast<const void*>(buffer);
- }
- }
-
- static Buffer first(const Buffers& buffer_sequence)
- {
- typename Buffers::const_iterator iter = buffer_sequence.begin();
- typename Buffers::const_iterator end = buffer_sequence.end();
- for (; iter != end; ++iter)
- {
- Buffer buffer(*iter);
- if (asio::buffer_size(buffer) != 0)
- return buffer;
- }
- return Buffer();
- }
-
-private:
- native_buffer_type buffers_[max_buffers];
- std::size_t count_;
- std::size_t total_buffer_size_;
-};
-
-template <typename Buffer>
-class buffer_sequence_adapter<Buffer, asio::mutable_buffers_1>
- : buffer_sequence_adapter_base
-{
-public:
- explicit buffer_sequence_adapter(
- const asio::mutable_buffers_1& buffer_sequence)
- {
- init_native_buffer(buffer_, Buffer(buffer_sequence));
- total_buffer_size_ = asio::buffer_size(buffer_sequence);
- }
-
- native_buffer_type* buffers()
- {
- return &buffer_;
- }
-
- std::size_t count() const
- {
- return 1;
- }
-
- bool all_empty() const
- {
- return total_buffer_size_ == 0;
- }
-
- static bool all_empty(const asio::mutable_buffers_1& buffer_sequence)
- {
- return asio::buffer_size(buffer_sequence) == 0;
- }
-
- static void validate(const asio::mutable_buffers_1& buffer_sequence)
- {
- asio::buffer_cast<const void*>(buffer_sequence);
- }
-
- static Buffer first(const asio::mutable_buffers_1& buffer_sequence)
- {
- return Buffer(buffer_sequence);
- }
-
-private:
- native_buffer_type buffer_;
- std::size_t total_buffer_size_;
-};
-
-template <typename Buffer>
-class buffer_sequence_adapter<Buffer, asio::const_buffers_1>
- : buffer_sequence_adapter_base
-{
-public:
- explicit buffer_sequence_adapter(
- const asio::const_buffers_1& buffer_sequence)
- {
- init_native_buffer(buffer_, Buffer(buffer_sequence));
- total_buffer_size_ = asio::buffer_size(buffer_sequence);
- }
-
- native_buffer_type* buffers()
- {
- return &buffer_;
- }
-
- std::size_t count() const
- {
- return 1;
- }
-
- bool all_empty() const
- {
- return total_buffer_size_ == 0;
- }
-
- static bool all_empty(const asio::const_buffers_1& buffer_sequence)
- {
- return asio::buffer_size(buffer_sequence) == 0;
- }
-
- static void validate(const asio::const_buffers_1& buffer_sequence)
- {
- asio::buffer_cast<const void*>(buffer_sequence);
- }
-
- static Buffer first(const asio::const_buffers_1& buffer_sequence)
- {
- return Buffer(buffer_sequence);
- }
-
-private:
- native_buffer_type buffer_;
- std::size_t total_buffer_size_;
-};
-
-template <typename Buffer, typename Elem>
-class buffer_sequence_adapter<Buffer, boost::array<Elem, 2> >
- : buffer_sequence_adapter_base
-{
-public:
- explicit buffer_sequence_adapter(
- const boost::array<Elem, 2>& buffer_sequence)
- {
- init_native_buffer(buffers_[0], Buffer(buffer_sequence[0]));
- init_native_buffer(buffers_[1], Buffer(buffer_sequence[1]));
- total_buffer_size_ = asio::buffer_size(buffer_sequence[0])
- + asio::buffer_size(buffer_sequence[1]);
- }
-
- native_buffer_type* buffers()
- {
- return buffers_;
- }
-
- std::size_t count() const
- {
- return 2;
- }
-
- bool all_empty() const
- {
- return total_buffer_size_ == 0;
- }
-
- static bool all_empty(const boost::array<Elem, 2>& buffer_sequence)
- {
- return asio::buffer_size(buffer_sequence[0]) == 0
- && asio::buffer_size(buffer_sequence[1]) == 0;
- }
-
- static void validate(const boost::array<Elem, 2>& buffer_sequence)
- {
- asio::buffer_cast<const void*>(buffer_sequence[0]);
- asio::buffer_cast<const void*>(buffer_sequence[1]);
- }
-
- static Buffer first(const boost::array<Elem, 2>& buffer_sequence)
- {
- return Buffer(asio::buffer_size(buffer_sequence[0]) != 0
- ? buffer_sequence[0] : buffer_sequence[1]);
- }
-
-private:
- native_buffer_type buffers_[2];
- std::size_t total_buffer_size_;
-};
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
-template <typename Buffer, typename Elem>
-class buffer_sequence_adapter<Buffer, std::array<Elem, 2> >
- : buffer_sequence_adapter_base
-{
-public:
- explicit buffer_sequence_adapter(
- const std::array<Elem, 2>& buffer_sequence)
- {
- init_native_buffer(buffers_[0], Buffer(buffer_sequence[0]));
- init_native_buffer(buffers_[1], Buffer(buffer_sequence[1]));
- total_buffer_size_ = asio::buffer_size(buffer_sequence[0])
- + asio::buffer_size(buffer_sequence[1]);
- }
-
- native_buffer_type* buffers()
- {
- return buffers_;
- }
-
- std::size_t count() const
- {
- return 2;
- }
-
- bool all_empty() const
- {
- return total_buffer_size_ == 0;
- }
-
- static bool all_empty(const std::array<Elem, 2>& buffer_sequence)
- {
- return asio::buffer_size(buffer_sequence[0]) == 0
- && asio::buffer_size(buffer_sequence[1]) == 0;
- }
-
- static void validate(const std::array<Elem, 2>& buffer_sequence)
- {
- asio::buffer_cast<const void*>(buffer_sequence[0]);
- asio::buffer_cast<const void*>(buffer_sequence[1]);
- }
-
- static Buffer first(const std::array<Elem, 2>& buffer_sequence)
- {
- return Buffer(asio::buffer_size(buffer_sequence[0]) != 0
- ? buffer_sequence[0] : buffer_sequence[1]);
- }
-
-private:
- native_buffer_type buffers_[2];
- std::size_t total_buffer_size_;
-};
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/buffer_sequence_adapter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffered_stream_storage.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffered_stream_storage.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffered_stream_storage.hpp
deleted file mode 100644
index 5fd9f79..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/buffered_stream_storage.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// detail/buffered_stream_storage.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_DETAIL_BUFFERED_STREAM_STORAGE_HPP
-#define ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/assert.hpp"
-#include <cstddef>
-#include <cstring>
-#include <vector>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class buffered_stream_storage
-{
-public:
- // The type of the bytes stored in the buffer.
- typedef unsigned char byte_type;
-
- // The type used for offsets into the buffer.
- typedef std::size_t size_type;
-
- // Constructor.
- explicit buffered_stream_storage(std::size_t buffer_capacity)
- : begin_offset_(0),
- end_offset_(0),
- buffer_(buffer_capacity)
- {
- }
-
- /// Clear the buffer.
- void clear()
- {
- begin_offset_ = 0;
- end_offset_ = 0;
- }
-
- // Return a pointer to the beginning of the unread data.
- mutable_buffer data()
- {
- return asio::buffer(buffer_) + begin_offset_;
- }
-
- // Return a pointer to the beginning of the unread data.
- const_buffer data() const
- {
- return asio::buffer(buffer_) + begin_offset_;
- }
-
- // Is there no unread data in the buffer.
- bool empty() const
- {
- return begin_offset_ == end_offset_;
- }
-
- // Return the amount of unread data the is in the buffer.
- size_type size() const
- {
- return end_offset_ - begin_offset_;
- }
-
- // Resize the buffer to the specified length.
- void resize(size_type length)
- {
- ASIO_ASSERT(length <= capacity());
- if (begin_offset_ + length <= capacity())
- {
- end_offset_ = begin_offset_ + length;
- }
- else
- {
- using namespace std; // For memmove.
- memmove(&buffer_[0], &buffer_[0] + begin_offset_, size());
- end_offset_ = length;
- begin_offset_ = 0;
- }
- }
-
- // Return the maximum size for data in the buffer.
- size_type capacity() const
- {
- return buffer_.size();
- }
-
- // Consume multiple bytes from the beginning of the buffer.
- void consume(size_type count)
- {
- ASIO_ASSERT(begin_offset_ + count <= end_offset_);
- begin_offset_ += count;
- if (empty())
- clear();
- }
-
-private:
- // The offset to the beginning of the unread data.
- size_type begin_offset_;
-
- // The offset to the end of the unread data.
- size_type end_offset_;
-
- // The data in the buffer.
- std::vector<byte_type> buffer_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/call_stack.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/call_stack.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/call_stack.hpp
deleted file mode 100644
index e3496ca..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/call_stack.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// detail/call_stack.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_DETAIL_CALL_STACK_HPP
-#define ASIO_DETAIL_CALL_STACK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/tss_ptr.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper class to determine whether or not the current thread is inside an
-// invocation of io_service::run() for a specified io_service object.
-template <typename Key, typename Value = unsigned char>
-class call_stack
-{
-public:
- // Context class automatically pushes the key/value pair on to the stack.
- class context
- : private noncopyable
- {
- public:
- // Push the key on to the stack.
- explicit context(Key* k)
- : key_(k),
- next_(call_stack<Key, Value>::top_)
- {
- value_ = reinterpret_cast<unsigned char*>(this);
- call_stack<Key, Value>::top_ = this;
- }
-
- // Push the key/value pair on to the stack.
- context(Key* k, Value& v)
- : key_(k),
- value_(&v),
- next_(call_stack<Key, Value>::top_)
- {
- call_stack<Key, Value>::top_ = this;
- }
-
- // Pop the key/value pair from the stack.
- ~context()
- {
- call_stack<Key, Value>::top_ = next_;
- }
-
- // Find the next context with the same key.
- Value* next_by_key() const
- {
- context* elem = next_;
- while (elem)
- {
- if (elem->key_ == key_)
- return elem->value_;
- elem = elem->next_;
- }
- return 0;
- }
-
- private:
- friend class call_stack<Key, Value>;
-
- // The key associated with the context.
- Key* key_;
-
- // The value associated with the context.
- Value* value_;
-
- // The next element in the stack.
- context* next_;
- };
-
- friend class context;
-
- // Determine whether the specified owner is on the stack. Returns address of
- // key if present, 0 otherwise.
- static Value* contains(Key* k)
- {
- context* elem = top_;
- while (elem)
- {
- if (elem->key_ == k)
- return elem->value_;
- elem = elem->next_;
- }
- return 0;
- }
-
- // Obtain the value at the top of the stack.
- static Value* top()
- {
- context* elem = top_;
- return elem ? elem->value_ : 0;
- }
-
-private:
- // The top of the stack of calls for the current thread.
- static tss_ptr<context> top_;
-};
-
-template <typename Key, typename Value>
-tss_ptr<typename call_stack<Key, Value>::context>
-call_stack<Key, Value>::top_;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_CALL_STACK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/chrono_time_traits.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/chrono_time_traits.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/chrono_time_traits.hpp
deleted file mode 100644
index 255777b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/chrono_time_traits.hpp
+++ /dev/null
@@ -1,190 +0,0 @@
-//
-// detail/chrono_time_traits.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_DETAIL_CHRONO_TIME_TRAITS_HPP
-#define ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/cstdint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper template to compute the greatest common divisor.
-template <int64_t v1, int64_t v2>
-struct gcd { enum { value = gcd<v2, v1 % v2>::value }; };
-
-template <int64_t v1>
-struct gcd<v1, 0> { enum { value = v1 }; };
-
-// Adapts std::chrono clocks for use with a deadline timer.
-template <typename Clock, typename WaitTraits>
-struct chrono_time_traits
-{
- // The clock type.
- typedef Clock clock_type;
-
- // The duration type of the clock.
- typedef typename clock_type::duration duration_type;
-
- // The time point type of the clock.
- typedef typename clock_type::time_point time_type;
-
- // The period of the clock.
- typedef typename duration_type::period period_type;
-
- // Get the current time.
- static time_type now()
- {
- return clock_type::now();
- }
-
- // Add a duration to a time.
- static time_type add(const time_type& t, const duration_type& d)
- {
- const time_type epoch;
- if (t >= epoch)
- {
- if ((time_type::max)() - t < d)
- return (time_type::max)();
- }
- else // t < epoch
- {
- if (-(t - (time_type::min)()) > d)
- return (time_type::min)();
- }
-
- return t + d;
- }
-
- // Subtract one time from another.
- static duration_type subtract(const time_type& t1, const time_type& t2)
- {
- const time_type epoch;
- if (t1 >= epoch)
- {
- if (t2 >= epoch)
- {
- return t1 - t2;
- }
- else if (t2 == (time_type::min)())
- {
- return (duration_type::max)();
- }
- else if ((time_type::max)() - t1 < epoch - t2)
- {
- return (duration_type::max)();
- }
- else
- {
- return t1 - t2;
- }
- }
- else // t1 < epoch
- {
- if (t2 < epoch)
- {
- return t1 - t2;
- }
- else if (t1 == (time_type::min)())
- {
- return (duration_type::min)();
- }
- else if ((time_type::max)() - t2 < epoch - t1)
- {
- return (duration_type::min)();
- }
- else
- {
- return -(t2 - t1);
- }
- }
- }
-
- // Test whether one time is less than another.
- static bool less_than(const time_type& t1, const time_type& t2)
- {
- return t1 < t2;
- }
-
- // Implement just enough of the posix_time::time_duration interface to supply
- // what the timer_queue requires.
- class posix_time_duration
- {
- public:
- explicit posix_time_duration(const duration_type& d)
- : d_(d)
- {
- }
-
- int64_t ticks() const
- {
- return d_.count();
- }
-
- int64_t total_seconds() const
- {
- return duration_cast<1, 1>();
- }
-
- int64_t total_milliseconds() const
- {
- return duration_cast<1, 1000>();
- }
-
- int64_t total_microseconds() const
- {
- return duration_cast<1, 1000000>();
- }
-
- private:
- template <int64_t Num, int64_t Den>
- int64_t duration_cast() const
- {
- const int64_t num1 = period_type::num / gcd<period_type::num, Num>::value;
- const int64_t num2 = Num / gcd<period_type::num, Num>::value;
-
- const int64_t den1 = period_type::den / gcd<period_type::den, Den>::value;
- const int64_t den2 = Den / gcd<period_type::den, Den>::value;
-
- const int64_t num = num1 * den2;
- const int64_t den = num2 * den1;
-
- if (num == 1 && den == 1)
- return ticks();
- else if (num != 1 && den == 1)
- return ticks() * num;
- else if (num == 1 && period_type::den != 1)
- return ticks() / den;
- else
- return ticks() * num / den;
- }
-
- duration_type d_;
- };
-
- // Convert to POSIX duration type.
- static posix_time_duration to_posix_duration(const duration_type& d)
- {
- return posix_time_duration(WaitTraits::to_wait_duration(d));
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/completion_handler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/completion_handler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/completion_handler.hpp
deleted file mode 100644
index 71769c3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/completion_handler.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// detail/completion_handler.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_DETAIL_COMPLETION_HANDLER_HPP
-#define ASIO_DETAIL_COMPLETION_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/config.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class completion_handler : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(completion_handler);
-
- completion_handler(Handler& h)
- : operation(&completion_handler::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(h))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- completion_handler* h(static_cast<completion_handler*>(base));
- ptr p = { asio::detail::addressof(h->handler_), h, h };
-
- ASIO_HANDLER_COMPLETION((h));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- Handler handler(ASIO_MOVE_CAST(Handler)(h->handler_));
- p.h = asio::detail::addressof(handler);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN(());
- asio_handler_invoke_helpers::invoke(handler, handler);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_COMPLETION_HANDLER_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[03/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/rfc2818_verification.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream.hpp
deleted file mode 100644
index 5e3af01..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream.hpp
+++ /dev/null
@@ -1,756 +0,0 @@
-//
-// ssl/stream.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_STREAM_HPP
-#define ASIO_SSL_STREAM_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 "asio/ssl/old/stream.hpp"
-#else // defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/async_result.hpp"
-# include "asio/detail/buffer_sequence_adapter.hpp"
-# include "asio/detail/handler_type_requirements.hpp"
-# include "asio/detail/noncopyable.hpp"
-# include "asio/detail/type_traits.hpp"
-# include "asio/ssl/context.hpp"
-# include "asio/ssl/detail/buffered_handshake_op.hpp"
-# include "asio/ssl/detail/handshake_op.hpp"
-# include "asio/ssl/detail/io.hpp"
-# include "asio/ssl/detail/read_op.hpp"
-# include "asio/ssl/detail/shutdown_op.hpp"
-# include "asio/ssl/detail/stream_core.hpp"
-# include "asio/ssl/detail/write_op.hpp"
-# include "asio/ssl/stream_base.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::stream;
-
-#else // defined(ASIO_ENABLE_OLD_SSL)
-
-/// 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. The application must also ensure that all
- * asynchronous operations are performed within the same implicit or explicit
- * strand.
- *
- * @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 ctx(asio::ssl::context::sslv23);
- * asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);
- * @endcode
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class stream :
- public stream_base,
- private noncopyable
-{
-public:
- /// The native handle type of the SSL stream.
- typedef SSL* native_handle_type;
-
- /// Structure for use with deprecated impl_type.
- struct impl_struct
- {
- SSL* ssl;
- };
-
- /// (Deprecated: Use native_handle_type.) The underlying implementation type.
- typedef impl_struct* impl_type;
-
- /// 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;
-
- /// 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 ctx The SSL context to be used for the stream.
- */
- template <typename Arg>
- stream(Arg& arg, context& ctx)
- : next_layer_(arg),
- core_(ctx.native_handle(), next_layer_.lowest_layer().get_io_service())
- {
- backwards_compatible_impl_.ssl = core_.engine_.native_handle();
- }
-
- /// Destructor.
- ~stream()
- {
- }
-
- /// 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_.lowest_layer().get_io_service();
- }
-
- /// 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 context functionality that is
- * not otherwise provided.
- *
- * @par Example
- * The native_handle() function returns a pointer of type @c SSL* that is
- * suitable for passing to functions such as @c SSL_get_verify_result and
- * @c SSL_get_peer_certificate:
- * @code
- * asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);
- *
- * // ... establish connection and perform handshake ...
- *
- * if (X509* cert = SSL_get_peer_certificate(sock.native_handle()))
- * {
- * if (SSL_get_verify_result(sock.native_handle()) == X509_V_OK)
- * {
- * // ...
- * }
- * }
- * @endcode
- */
- native_handle_type native_handle()
- {
- return core_.engine_.native_handle();
- }
-
- /// (Deprecated: Use native_handle().) 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 &backwards_compatible_impl_;
- }
-
- /// 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.
- */
- const next_layer_type& next_layer() const
- {
- return next_layer_;
- }
-
- /// 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 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.
- */
- const lowest_layer_type& lowest_layer() const
- {
- return next_layer_.lowest_layer();
- }
-
- /// Set the peer verification mode.
- /**
- * This function may be used to configure the peer verification mode used by
- * the stream. The new mode will override the mode inherited from the context.
- *
- * @param v A bitmask of peer verification modes. See @ref verify_mode for
- * available values.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_set_verify.
- */
- void set_verify_mode(verify_mode v)
- {
- asio::error_code ec;
- set_verify_mode(v, ec);
- asio::detail::throw_error(ec, "set_verify_mode");
- }
-
- /// Set the peer verification mode.
- /**
- * This function may be used to configure the peer verification mode used by
- * the stream. The new mode will override the mode inherited from the context.
- *
- * @param v A bitmask of peer verification modes. See @ref verify_mode for
- * available values.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_set_verify.
- */
- asio::error_code set_verify_mode(
- verify_mode v, asio::error_code& ec)
- {
- return core_.engine_.set_verify_mode(v, ec);
- }
-
- /// Set the peer verification depth.
- /**
- * This function may be used to configure the maximum verification depth
- * allowed by the stream.
- *
- * @param depth Maximum depth for the certificate chain verification that
- * shall be allowed.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_set_verify_depth.
- */
- void set_verify_depth(int depth)
- {
- asio::error_code ec;
- set_verify_depth(depth, ec);
- asio::detail::throw_error(ec, "set_verify_depth");
- }
-
- /// Set the peer verification depth.
- /**
- * This function may be used to configure the maximum verification depth
- * allowed by the stream.
- *
- * @param depth Maximum depth for the certificate chain verification that
- * shall be allowed.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_set_verify_depth.
- */
- asio::error_code set_verify_depth(
- int depth, asio::error_code& ec)
- {
- return core_.engine_.set_verify_depth(depth, ec);
- }
-
- /// Set the callback used to verify peer certificates.
- /**
- * This function is used to specify a callback function that will be called
- * by the implementation when it needs to verify a peer certificate.
- *
- * @param callback The function object to be used for verifying a certificate.
- * The function signature of the handler must be:
- * @code bool verify_callback(
- * bool preverified, // True if the certificate passed pre-verification.
- * verify_context& ctx // The peer certificate and other context.
- * ); @endcode
- * The return value of the callback is true if the certificate has passed
- * verification, false otherwise.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_set_verify.
- */
- template <typename VerifyCallback>
- void set_verify_callback(VerifyCallback callback)
- {
- asio::error_code ec;
- this->set_verify_callback(callback, ec);
- asio::detail::throw_error(ec, "set_verify_callback");
- }
-
- /// Set the callback used to verify peer certificates.
- /**
- * This function is used to specify a callback function that will be called
- * by the implementation when it needs to verify a peer certificate.
- *
- * @param callback The function object to be used for verifying a certificate.
- * The function signature of the handler must be:
- * @code bool verify_callback(
- * bool preverified, // True if the certificate passed pre-verification.
- * verify_context& ctx // The peer certificate and other context.
- * ); @endcode
- * The return value of the callback is true if the certificate has passed
- * verification, false otherwise.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_set_verify.
- */
- template <typename VerifyCallback>
- asio::error_code set_verify_callback(VerifyCallback callback,
- asio::error_code& ec)
- {
- return core_.engine_.set_verify_callback(
- new detail::verify_callback<VerifyCallback>(callback), 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.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void handshake(handshake_type type)
- {
- asio::error_code ec;
- handshake(type, ec);
- asio::detail::throw_error(ec, "handshake");
- }
-
- /// 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)
- {
- detail::io(next_layer_, core_, detail::handshake_op(type), ec);
- return 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 buffers The buffered data to be reused for the handshake.
- *
- * @throws asio::system_error Thrown on failure.
- */
- template <typename ConstBufferSequence>
- void handshake(handshake_type type, const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- handshake(type, buffers, ec);
- asio::detail::throw_error(ec, "handshake");
- }
-
- /// 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 buffers The buffered data to be reused for the handshake.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- template <typename ConstBufferSequence>
- asio::error_code handshake(handshake_type type,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- detail::io(next_layer_, core_,
- detail::buffered_handshake_op<ConstBufferSequence>(type, buffers), ec);
- return 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>
- ASIO_INITFN_RESULT_TYPE(HandshakeHandler,
- void (asio::error_code))
- async_handshake(handshake_type type,
- ASIO_MOVE_ARG(HandshakeHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a HandshakeHandler.
- ASIO_HANDSHAKE_HANDLER_CHECK(HandshakeHandler, handler) type_check;
-
- asio::detail::async_result_init<
- HandshakeHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(HandshakeHandler)(handler));
-
- detail::async_io(next_layer_, core_,
- detail::handshake_op(type), init.handler);
-
- return init.result.get();
- }
-
- /// 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 buffers The buffered data to be reused for the handshake. 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 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.
- * std::size_t bytes_transferred // Amount of buffers used in handshake.
- * ); @endcode
- */
- template <typename ConstBufferSequence, typename BufferedHandshakeHandler>
- ASIO_INITFN_RESULT_TYPE(BufferedHandshakeHandler,
- void (asio::error_code, std::size_t))
- async_handshake(handshake_type type, const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(BufferedHandshakeHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a BufferedHandshakeHandler.
- ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK(
- BufferedHandshakeHandler, handler) type_check;
-
- asio::detail::async_result_init<BufferedHandshakeHandler,
- void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(BufferedHandshakeHandler)(handler));
-
- detail::async_io(next_layer_, core_,
- detail::buffered_handshake_op<ConstBufferSequence>(type, buffers),
- init.handler);
-
- return init.result.get();
- }
-
- /// 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;
- shutdown(ec);
- asio::detail::throw_error(ec, "shutdown");
- }
-
- /// 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)
- {
- detail::io(next_layer_, core_, detail::shutdown_op(), ec);
- return 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>
- ASIO_INITFN_RESULT_TYPE(ShutdownHandler,
- void (asio::error_code))
- async_shutdown(ASIO_MOVE_ARG(ShutdownHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ShutdownHandler.
- ASIO_SHUTDOWN_HANDLER_CHECK(ShutdownHandler, handler) type_check;
-
- asio::detail::async_result_init<
- ShutdownHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(ShutdownHandler)(handler));
-
- detail::async_io(next_layer_, core_, detail::shutdown_op(), init.handler);
-
- return init.result.get();
- }
-
- /// 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 n = write_some(buffers, ec);
- asio::detail::throw_error(ec, "write_some");
- return n;
- }
-
- /// 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 detail::io(next_layer_, core_,
- detail::write_op<ConstBufferSequence>(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>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- asio::detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- detail::async_io(next_layer_, core_,
- detail::write_op<ConstBufferSequence>(buffers), init.handler);
-
- return init.result.get();
- }
-
- /// 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 n = read_some(buffers, ec);
- asio::detail::throw_error(ec, "read_some");
- return n;
- }
-
- /// 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 detail::io(next_layer_, core_,
- detail::read_op<MutableBufferSequence>(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>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- asio::detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::async_io(next_layer_, core_,
- detail::read_op<MutableBufferSequence>(buffers), init.handler);
-
- return init.result.get();
- }
-
-private:
- Stream next_layer_;
- detail::stream_core core_;
- impl_struct backwards_compatible_impl_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_STREAM_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_base.hpp
deleted file mode 100644
index 8b3a9c5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_base.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// ssl/stream_base.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_STREAM_BASE_HPP
-#define ASIO_SSL_STREAM_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-/// The stream_base class is used as a base for the asio::ssl::stream
-/// class template so that we have a common place to define various enums.
-class stream_base
-{
-public:
- /// Different handshake types.
- enum handshake_type
- {
- /// Perform handshaking as a client.
- client,
-
- /// Perform handshaking as a server.
- server
- };
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~stream_base()
- {
- }
-};
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_STREAM_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_service.hpp
deleted file mode 100644
index a3d130f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/stream_service.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// ssl/stream_service.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_STREAM_SERVICE_HPP
-#define ASIO_SSL_STREAM_SERVICE_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 "asio/ssl/old/stream_service.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::stream_service;
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_STREAM_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_context.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_context.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_context.hpp
deleted file mode 100644
index 1de681c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_context.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ssl/verify_context.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_VERIFY_CONTEXT_HPP
-#define ASIO_SSL_VERIFY_CONTEXT_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 "asio/detail/noncopyable.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-/// A simple wrapper around the X509_STORE_CTX type, used during verification of
-/// a peer certificate.
-/**
- * @note The verify_context does not own the underlying X509_STORE_CTX object.
- */
-class verify_context
- : private noncopyable
-{
-public:
- /// The native handle type of the verification context.
- typedef X509_STORE_CTX* native_handle_type;
-
- /// Constructor.
- explicit verify_context(native_handle_type handle)
- : handle_(handle)
- {
- }
-
- /// 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 context functionality that is
- * not otherwise provided.
- */
- native_handle_type native_handle()
- {
- return handle_;
- }
-
-private:
- // The underlying native implementation.
- native_handle_type handle_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_VERIFY_CONTEXT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_mode.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_mode.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_mode.hpp
deleted file mode 100644
index f5921d0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/verify_mode.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// ssl/verify_mode.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_VERIFY_MODE_HPP
-#define ASIO_SSL_VERIFY_MODE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-/// Bitmask type for peer verification.
-/**
- * Possible values are:
- *
- * @li @ref verify_none
- * @li @ref verify_peer
- * @li @ref verify_fail_if_no_peer_cert
- * @li @ref verify_client_once
- */
-typedef int verify_mode;
-
-#if defined(GENERATING_DOCUMENTATION)
-/// No verification.
-const int verify_none = implementation_defined;
-
-/// Verify the peer.
-const int verify_peer = implementation_defined;
-
-/// Fail verification if the peer has no certificate. Ignored unless
-/// @ref verify_peer is set.
-const int verify_fail_if_no_peer_cert = implementation_defined;
-
-/// Do not request client certificate on renegotiation. Ignored unless
-/// @ref verify_peer is set.
-const int verify_client_once = implementation_defined;
-#else
-const int verify_none = SSL_VERIFY_NONE;
-const int verify_peer = SSL_VERIFY_PEER;
-const int verify_fail_if_no_peer_cert = SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
-const int verify_client_once = SSL_VERIFY_CLIENT_ONCE;
-#endif
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_VERIFY_MODE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/steady_timer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/steady_timer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/steady_timer.hpp
deleted file mode 100644
index e7472f6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/steady_timer.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// steady_timer.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_STEADY_TIMER_HPP
-#define ASIO_STEADY_TIMER_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_HAS_STD_CHRONO) \
- || defined(ASIO_HAS_BOOST_CHRONO) \
- || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-#endif
-
-#include "asio/basic_waitable_timer.hpp"
-
-namespace asio {
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Typedef for a timer based on the steady clock.
-/**
- * This typedef uses the C++11 @c <chrono> standard library facility, if
- * available. Otherwise, it may use the Boost.Chrono library. To explicitly
- * utilise Boost.Chrono, use the basic_waitable_timer template directly:
- * @code
- * typedef basic_waitable_timer<boost::chrono::steady_clock> timer;
- * @endcode
- */
-typedef basic_waitable_timer<chrono::steady_clock> steady_timer;
-#elif defined(ASIO_HAS_STD_CHRONO)
-# if defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK)
-typedef basic_waitable_timer<std::chrono::monotonic_clock> steady_timer;
-# else // defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK)
-typedef basic_waitable_timer<std::chrono::steady_clock> steady_timer;
-# endif // defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK)
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-typedef basic_waitable_timer<boost::chrono::steady_clock> steady_timer;
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_STD_CHRONO)
- // || defined(ASIO_HAS_BOOST_CHRONO)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_STEADY_TIMER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/strand.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/strand.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/strand.hpp
deleted file mode 100644
index a81718b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/strand.hpp
+++ /dev/null
@@ -1,251 +0,0 @@
-//
-// strand.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_STRAND_HPP
-#define ASIO_STRAND_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/strand_service.hpp"
-#include "asio/detail/wrapped_handler.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides serialised handler execution.
-/**
- * The io_service::strand class provides the ability to post and dispatch
- * handlers with the guarantee that none of those handlers will execute
- * concurrently.
- *
- * @par Order of handler invocation
- * Given:
- *
- * @li a strand object @c s
- *
- * @li an object @c a meeting completion handler requirements
- *
- * @li an object @c a1 which is an arbitrary copy of @c a made by the
- * implementation
- *
- * @li an object @c b meeting completion handler requirements
- *
- * @li an object @c b1 which is an arbitrary copy of @c b made by the
- * implementation
- *
- * if any of the following conditions are true:
- *
- * @li @c s.post(a) happens-before @c s.post(b)
- *
- * @li @c s.post(a) happens-before @c s.dispatch(b), where the latter is
- * performed outside the strand
- *
- * @li @c s.dispatch(a) happens-before @c s.post(b), where the former is
- * performed outside the strand
- *
- * @li @c s.dispatch(a) happens-before @c s.dispatch(b), where both are
- * performed outside the strand
- *
- * then @c asio_handler_invoke(a1, &a1) happens-before
- * @c asio_handler_invoke(b1, &b1).
- *
- * Note that in the following case:
- * @code async_op_1(..., s.wrap(a));
- * async_op_2(..., s.wrap(b)); @endcode
- * the completion of the first async operation will perform @c s.dispatch(a),
- * and the second will perform @c s.dispatch(b), but the order in which those
- * are performed is unspecified. That is, you cannot state whether one
- * happens-before the other. Therefore none of the above conditions are met and
- * no ordering guarantee is made.
- *
- * @note The implementation makes no guarantee that handlers posted or
- * dispatched through different @c strand objects will be invoked concurrently.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Dispatcher.
- */
-class io_service::strand
-{
-public:
- /// Constructor.
- /**
- * Constructs the strand.
- *
- * @param io_service The io_service object that the strand will use to
- * dispatch handlers that are ready to be run.
- */
- explicit strand(asio::io_service& io_service)
- : service_(asio::use_service<
- asio::detail::strand_service>(io_service))
- {
- service_.construct(impl_);
- }
-
- /// Destructor.
- /**
- * Destroys a strand.
- *
- * Handlers posted through the strand that have not yet been invoked will
- * still be dispatched in a way that meets the guarantee of non-concurrency.
- */
- ~strand()
- {
- }
-
- /// Get the io_service associated with the strand.
- /**
- * This function may be used to obtain the io_service object that the strand
- * uses to dispatch handlers for asynchronous operations.
- *
- * @return A reference to the io_service object that the strand will use to
- * dispatch handlers. Ownership is not transferred to the caller.
- */
- asio::io_service& get_io_service()
- {
- return service_.get_io_service();
- }
-
- /// Request the strand to invoke the given handler.
- /**
- * This function is used to ask the strand to execute the given handler.
- *
- * The strand object guarantees that handlers posted or dispatched through
- * the strand will not be executed concurrently. The handler may be executed
- * inside this function if the guarantee can be met. If this function is
- * called from within a handler that was posted or dispatched through the same
- * strand, then the new handler will be executed immediately.
- *
- * The strand's guarantee is in addition to the guarantee provided by the
- * underlying io_service. The io_service guarantees that the handler will only
- * be called in a thread in which the io_service's run member function is
- * currently being invoked.
- *
- * @param handler The handler to be called. The strand will make a copy of the
- * handler object as required. The function signature of the handler must be:
- * @code void handler(); @endcode
- */
- template <typename CompletionHandler>
- ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
- dispatch(ASIO_MOVE_ARG(CompletionHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a CompletionHandler.
- ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
- detail::async_result_init<
- CompletionHandler, void ()> init(
- ASIO_MOVE_CAST(CompletionHandler)(handler));
-
- service_.dispatch(impl_, init.handler);
-
- return init.result.get();
- }
-
- /// Request the strand to invoke the given handler and return
- /// immediately.
- /**
- * This function is used to ask the strand to execute the given handler, but
- * without allowing the strand to call the handler from inside this function.
- *
- * The strand object guarantees that handlers posted or dispatched through
- * the strand will not be executed concurrently. The strand's guarantee is in
- * addition to the guarantee provided by the underlying io_service. The
- * io_service guarantees that the handler will only be called in a thread in
- * which the io_service's run member function is currently being invoked.
- *
- * @param handler The handler to be called. The strand will make a copy of the
- * handler object as required. The function signature of the handler must be:
- * @code void handler(); @endcode
- */
- template <typename CompletionHandler>
- ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
- post(ASIO_MOVE_ARG(CompletionHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a CompletionHandler.
- ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
- detail::async_result_init<
- CompletionHandler, void ()> init(
- ASIO_MOVE_CAST(CompletionHandler)(handler));
-
- service_.post(impl_, init.handler);
-
- return init.result.get();
- }
-
- /// Create a new handler that automatically dispatches the wrapped handler
- /// on the strand.
- /**
- * This function is used to create a new handler function object that, when
- * invoked, will automatically pass the wrapped handler to the strand's
- * dispatch function.
- *
- * @param handler The handler to be wrapped. The strand will make a copy of
- * the handler object as required. The function signature of the handler must
- * be: @code void handler(A1 a1, ... An an); @endcode
- *
- * @return A function object that, when invoked, passes the wrapped handler to
- * the strand's dispatch function. Given a function object with the signature:
- * @code R f(A1 a1, ... An an); @endcode
- * If this function object is passed to the wrap function like so:
- * @code strand.wrap(f); @endcode
- * then the return value is a function object with the signature
- * @code void g(A1 a1, ... An an); @endcode
- * that, when invoked, executes code equivalent to:
- * @code strand.dispatch(boost::bind(f, a1, ... an)); @endcode
- */
- template <typename Handler>
-#if defined(GENERATING_DOCUMENTATION)
- unspecified
-#else
- detail::wrapped_handler<strand, Handler, detail::is_continuation_if_running>
-#endif
- wrap(Handler handler)
- {
- return detail::wrapped_handler<io_service::strand, Handler,
- detail::is_continuation_if_running>(*this, handler);
- }
-
- /// Determine whether the strand is running in the current thread.
- /**
- * @return @c true if the current thread is executing a handler that was
- * submitted to the strand using post(), dispatch() or wrap(). Otherwise
- * returns @c false.
- */
- bool running_in_this_thread() const
- {
- return service_.running_in_this_thread(impl_);
- }
-
-private:
- asio::detail::strand_service& service_;
- asio::detail::strand_service::implementation_type impl_;
-};
-
-/// Typedef for backwards compatibility.
-typedef asio::io_service::strand strand;
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_STRAND_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/stream_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/stream_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/stream_socket_service.hpp
deleted file mode 100644
index 15bfa5b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/stream_socket_service.hpp
+++ /dev/null
@@ -1,376 +0,0 @@
-//
-// stream_socket_service.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_STREAM_SOCKET_SERVICE_HPP
-#define ASIO_STREAM_SOCKET_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 "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_ssocket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a stream socket.
-template <typename Protocol>
-class stream_socket_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<stream_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
- typedef detail::winrt_ssocket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
- typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
- /// The type of a stream socket implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new stream socket service for the specified io_service.
- explicit stream_socket_service(asio::io_service& io_service)
- : asio::detail::service_base<
- stream_socket_service<Protocol> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new stream socket implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new stream socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another stream socket implementation.
- void move_assign(implementation_type& impl,
- stream_socket_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-
- /// Move-construct a new stream socket implementation from another protocol
- /// type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename stream_socket_service<
- Protocol1>::implementation_type& other_impl,
- typename enable_if<is_convertible<
- Protocol1, Protocol>::value>::type* = 0)
- {
- service_impl_.template converting_move_construct<Protocol1>(
- impl, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a stream socket implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Open a stream socket.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (protocol.type() == ASIO_OS_DEF(SOCK_STREAM))
- service_impl_.open(impl, protocol, ec);
- else
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- /// Assign an existing native socket to a stream socket.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- return service_impl_.assign(impl, protocol, native_socket, ec);
- }
-
- /// Determine whether the socket is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a stream socket implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native socket implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native socket implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the socket.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.at_mark(impl, ec);
- }
-
- /// Determine the number of bytes available for reading.
- std::size_t available(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.available(impl, ec);
- }
-
- /// Bind the stream socket to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- return service_impl_.bind(impl, endpoint, ec);
- }
-
- /// Connect the stream socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- return service_impl_.connect(impl, peer_endpoint, ec);
- }
-
- /// Start an asynchronous connect.
- template <typename ConnectHandler>
- ASIO_INITFN_RESULT_TYPE(ConnectHandler,
- void (asio::error_code))
- async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint,
- ASIO_MOVE_ARG(ConnectHandler) handler)
- {
- detail::async_result_init<
- ConnectHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(ConnectHandler)(handler));
-
- service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
- return init.result.get();
- }
-
- /// Set a socket option.
- template <typename SettableSocketOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSocketOption& option, asio::error_code& ec)
- {
- return service_impl_.set_option(impl, option, ec);
- }
-
- /// Get a socket option.
- template <typename GettableSocketOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSocketOption& option, asio::error_code& ec) const
- {
- return service_impl_.get_option(impl, option, ec);
- }
-
- /// Perform an IO control command on the socket.
- template <typename IoControlCommand>
- asio::error_code io_control(implementation_type& impl,
- IoControlCommand& command, asio::error_code& ec)
- {
- return service_impl_.io_control(impl, command, ec);
- }
-
- /// Gets the non-blocking mode of the socket.
- bool non_blocking(const implementation_type& impl) const
- {
- return service_impl_.non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.non_blocking(impl, mode, ec);
- }
-
- /// Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return service_impl_.native_non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.native_non_blocking(impl, mode, ec);
- }
-
- /// Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.local_endpoint(impl, ec);
- }
-
- /// Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.remote_endpoint(impl, ec);
- }
-
- /// Disable sends or receives on the socket.
- asio::error_code shutdown(implementation_type& impl,
- socket_base::shutdown_type what, asio::error_code& ec)
- {
- return service_impl_.shutdown(impl, what, ec);
- }
-
- /// Send the given data to the peer.
- template <typename ConstBufferSequence>
- std::size_t send(implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.send(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous send.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_send(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Receive some data from the peer.
- template <typename MutableBufferSequence>
- std::size_t receive(implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.receive(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous receive.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_receive(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_STREAM_SOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/streambuf.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/streambuf.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/streambuf.hpp
deleted file mode 100644
index 283c10a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/streambuf.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// streambuf.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_STREAMBUF_HPP
-#define ASIO_STREAMBUF_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_NO_IOSTREAM)
-
-#include "asio/basic_streambuf.hpp"
-
-namespace asio {
-
-/// Typedef for the typical usage of basic_streambuf.
-typedef basic_streambuf<> streambuf;
-
-} // namespace asio
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_STREAMBUF_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_error.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_error.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_error.hpp
deleted file mode 100644
index 319c242..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_error.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// system_error.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_SYSTEM_ERROR_HPP
-#define ASIO_SYSTEM_ERROR_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_HAS_STD_SYSTEM_ERROR)
-# include <system_error>
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# include <cerrno>
-# include <exception>
-# include <string>
-# include "asio/error_code.hpp"
-# include "asio/detail/scoped_ptr.hpp"
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-typedef std::system_error system_error;
-
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// The system_error class is used to represent system conditions that
-/// prevent the library from operating correctly.
-class system_error
- : public std::exception
-{
-public:
- /// Construct with an error code.
- system_error(const error_code& ec)
- : code_(ec),
- context_()
- {
- }
-
- /// Construct with an error code and context.
- system_error(const error_code& ec, const std::string& context)
- : code_(ec),
- context_(context)
- {
- }
-
- /// Copy constructor.
- system_error(const system_error& other)
- : std::exception(other),
- code_(other.code_),
- context_(other.context_),
- what_()
- {
- }
-
- /// Destructor.
- virtual ~system_error() throw ()
- {
- }
-
- /// Assignment operator.
- system_error& operator=(const system_error& e)
- {
- context_ = e.context_;
- code_ = e.code_;
- what_.reset();
- return *this;
- }
-
- /// Get a string representation of the exception.
- virtual const char* what() const throw ()
- {
-#if !defined(ASIO_NO_EXCEPTIONS)
- try
-#endif // !defined(ASIO_NO_EXCEPTIONS)
- {
- if (!what_.get())
- {
- std::string tmp(context_);
- if (tmp.length())
- tmp += ": ";
- tmp += code_.message();
- what_.reset(new std::string(tmp));
- }
- return what_->c_str();
- }
-#if !defined(ASIO_NO_EXCEPTIONS)
- catch (std::exception&)
- {
- return "system_error";
- }
-#endif // !defined(ASIO_NO_EXCEPTIONS)
- }
-
- /// Get the error code associated with the exception.
- error_code code() const
- {
- return code_;
- }
-
-private:
- // The code associated with the error.
- error_code code_;
-
- // The context associated with the error.
- std::string context_;
-
- // The string representation of the error.
- mutable asio::detail::scoped_ptr<std::string> what_;
-};
-
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SYSTEM_ERROR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_timer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_timer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_timer.hpp
deleted file mode 100644
index 5a2a038..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/system_timer.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// system_timer.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_SYSTEM_TIMER_HPP
-#define ASIO_SYSTEM_TIMER_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_HAS_STD_CHRONO) \
- || defined(ASIO_HAS_BOOST_CHRONO) \
- || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-#endif
-
-#include "asio/basic_waitable_timer.hpp"
-
-namespace asio {
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Typedef for a timer based on the system clock.
-/**
- * This typedef uses the C++11 @c <chrono> standard library facility, if
- * available. Otherwise, it may use the Boost.Chrono library. To explicitly
- * utilise Boost.Chrono, use the basic_waitable_timer template directly:
- * @code
- * typedef basic_waitable_timer<boost::chrono::system_clock> timer;
- * @endcode
- */
-typedef basic_waitable_timer<chrono::system_clock> system_timer;
-#elif defined(ASIO_HAS_STD_CHRONO)
-typedef basic_waitable_timer<std::chrono::system_clock> system_timer;
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-typedef basic_waitable_timer<boost::chrono::system_clock> system_timer;
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_STD_CHRONO)
- // || defined(ASIO_HAS_BOOST_CHRONO)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SYSTEM_TIMER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/thread.hpp
deleted file mode 100644
index c068bf0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/thread.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// thread.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_THREAD_HPP
-#define ASIO_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/thread.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// A simple abstraction for starting threads.
-/**
- * The asio::thread class implements the smallest possible subset of the
- * functionality of boost::thread. It is intended to be used only for starting
- * a thread and waiting for it to exit. If more extensive threading
- * capabilities are required, you are strongly advised to use something else.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * A typical use of asio::thread would be to launch a thread to run an
- * io_service's event processing loop:
- *
- * @par
- * @code asio::io_service io_service;
- * // ...
- * asio::thread t(boost::bind(&asio::io_service::run, &io_service));
- * // ...
- * t.join(); @endcode
- */
-class thread
- : private noncopyable
-{
-public:
- /// Start a new thread that executes the supplied function.
- /**
- * This constructor creates a new thread that will execute the given function
- * or function object.
- *
- * @param f The function or function object to be run in the thread. The
- * function signature must be: @code void f(); @endcode
- */
- template <typename Function>
- explicit thread(Function f)
- : impl_(f)
- {
- }
-
- /// Destructor.
- ~thread()
- {
- }
-
- /// Wait for the thread to exit.
- /**
- * This function will block until the thread has exited.
- *
- * If this function is not called before the thread object is destroyed, the
- * thread itself will continue to run until completion. You will, however,
- * no longer have the ability to wait for it to exit.
- */
- void join()
- {
- impl_.join();
- }
-
-private:
- detail::thread impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_THREAD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/time_traits.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/time_traits.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/time_traits.hpp
deleted file mode 100644
index 1a8c2df..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/time_traits.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// time_traits.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_TIME_TRAITS_HPP
-#define ASIO_TIME_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/socket_types.hpp" // Must come before posix_time.
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
- || defined(ASIO_CPP11_DATE_TIME) \
- || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-#include "asio/detail/push_options.hpp"
-#include <boost/date_time/posix_time/posix_time_types.hpp>
-#include "asio/detail/pop_options.hpp"
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Time traits suitable for use with the deadline timer.
-template <typename Time>
-struct time_traits;
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-
-/// Time traits specialised for posix_time.
-template <>
-struct time_traits<boost::posix_time::ptime>
-{
- /// The time type.
- typedef boost::posix_time::ptime time_type;
-
- /// The duration type.
- typedef boost::posix_time::time_duration duration_type;
-
- /// Get the current time.
- static time_type now()
- {
-#if defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
- return boost::posix_time::microsec_clock::universal_time();
-#else // defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
- return boost::posix_time::second_clock::universal_time();
-#endif // defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
- }
-
- /// Add a duration to a time.
- static time_type add(const time_type& t, const duration_type& d)
- {
- return t + d;
- }
-
- /// Subtract one time from another.
- static duration_type subtract(const time_type& t1, const time_type& t2)
- {
- return t1 - t2;
- }
-
- /// Test whether one time is less than another.
- static bool less_than(const time_type& t1, const time_type& t2)
- {
- return t1 < t2;
- }
-
- /// Convert to POSIX duration type.
- static boost::posix_time::time_duration to_posix_duration(
- const duration_type& d)
- {
- return d;
- }
-};
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
- // || defined(ASIO_CPP11_DATE_TIME)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_TIME_TRAITS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/unyield.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/unyield.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/unyield.hpp
deleted file mode 100644
index 0be57ac..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/unyield.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// unyield.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)
-//
-
-#ifdef reenter
-# undef reenter
-#endif
-
-#ifdef yield
-# undef yield
-#endif
-
-#ifdef fork
-# undef fork
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/use_future.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/use_future.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/use_future.hpp
deleted file mode 100644
index ae29bbc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/use_future.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// use_future.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_USE_FUTURE_HPP
-#define ASIO_USE_FUTURE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <memory>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Class used to specify that an asynchronous operation should return a future.
-/**
- * The use_future_t class is used to indicate that an asynchronous operation
- * should return a std::future object. A use_future_t object may be passed as a
- * handler to an asynchronous operation, typically using the special value @c
- * asio::use_future. For example:
- *
- * @code std::future<std::size_t> my_future
- * = my_socket.async_read_some(my_buffer, asio::use_future); @endcode
- *
- * The initiating function (async_read_some in the above example) returns a
- * future that will receive the result of the operation. If the operation
- * completes with an error_code indicating failure, it is converted into a
- * system_error and passed back to the caller via the future.
- */
-template <typename Allocator = std::allocator<void> >
-class use_future_t
-{
-public:
- /// The allocator type. The allocator is used when constructing the
- /// @c std::promise object for a given asynchronous operation.
- typedef Allocator allocator_type;
-
- /// Construct using default-constructed allocator.
- ASIO_CONSTEXPR use_future_t()
- {
- }
-
- /// Construct using specified allocator.
- explicit use_future_t(const Allocator& allocator)
- : allocator_(allocator)
- {
- }
-
- /// Specify an alternate allocator.
- template <typename OtherAllocator>
- use_future_t<OtherAllocator> operator[](const OtherAllocator& allocator) const
- {
- return use_future_t<OtherAllocator>(allocator);
- }
-
- /// Obtain allocator.
- allocator_type get_allocator() const
- {
- return allocator_;
- }
-
-private:
- Allocator allocator_;
-};
-
-/// A special value, similar to std::nothrow.
-/**
- * See the documentation for asio::use_future_t for a usage example.
- */
-#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
-constexpr use_future_t<> use_future;
-#elif defined(ASIO_MSVC)
-__declspec(selectany) use_future_t<> use_future;
-#endif
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/use_future.hpp"
-
-#endif // ASIO_USE_FUTURE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/version.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/version.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/version.hpp
deleted file mode 100644
index e8602e1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/version.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// version.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_VERSION_HPP
-#define ASIO_VERSION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-// ASIO_VERSION % 100 is the sub-minor version
-// ASIO_VERSION / 100 % 1000 is the minor version
-// ASIO_VERSION / 100000 is the major version
-#define ASIO_VERSION 101002 // 1.10.2
-
-#endif // ASIO_VERSION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/wait_traits.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/wait_traits.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/wait_traits.hpp
deleted file mode 100644
index 3b2218f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/wait_traits.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// wait_traits.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_WAIT_TRAITS_HPP
-#define ASIO_WAIT_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Wait traits suitable for use with the basic_waitable_timer class template.
-template <typename Clock>
-struct wait_traits
-{
- /// Convert a clock duration into a duration used for waiting.
- /**
- * @returns @c d.
- */
- static typename Clock::duration to_wait_duration(
- const typename Clock::duration& d)
- {
- return d;
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_WAIT_TRAITS_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[27/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.ipp
deleted file mode 100644
index 1f365df..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/dev_poll_reactor.ipp
+++ /dev/null
@@ -1,445 +0,0 @@
-//
-// detail/impl/dev_poll_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_DEV_POLL_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_DEV_POLL)
-
-#include "asio/detail/dev_poll_reactor.hpp"
-#include "asio/detail/assert.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-dev_poll_reactor::dev_poll_reactor(asio::io_service& io_service)
- : asio::detail::service_base<dev_poll_reactor>(io_service),
- io_service_(use_service<io_service_impl>(io_service)),
- mutex_(),
- dev_poll_fd_(do_dev_poll_create()),
- interrupter_(),
- shutdown_(false)
-{
- // Add the interrupter's descriptor to /dev/poll.
- ::pollfd ev = { 0, 0, 0 };
- ev.fd = interrupter_.read_descriptor();
- ev.events = POLLIN | POLLERR;
- ev.revents = 0;
- ::write(dev_poll_fd_, &ev, sizeof(ev));
-}
-
-dev_poll_reactor::~dev_poll_reactor()
-{
- shutdown_service();
- ::close(dev_poll_fd_);
-}
-
-void dev_poll_reactor::shutdown_service()
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- shutdown_ = true;
- lock.unlock();
-
- op_queue<operation> ops;
-
- for (int i = 0; i < max_ops; ++i)
- op_queue_[i].get_all_operations(ops);
-
- timer_queues_.get_all_timers(ops);
-
- io_service_.abandon_operations(ops);
-}
-
-// Helper class to re-register all descriptors with /dev/poll.
-class dev_poll_reactor::fork_helper
-{
-public:
- fork_helper(dev_poll_reactor* reactor, short events)
- : reactor_(reactor), events_(events)
- {
- }
-
- bool set(int descriptor)
- {
- ::pollfd& ev = reactor_->add_pending_event_change(descriptor);
- ev.events = events_;
- return true;
- }
-
-private:
- dev_poll_reactor* reactor_;
- short events_;
-};
-
-void dev_poll_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
- if (fork_ev == asio::io_service::fork_child)
- {
- detail::mutex::scoped_lock lock(mutex_);
-
- if (dev_poll_fd_ != -1)
- ::close(dev_poll_fd_);
- dev_poll_fd_ = -1;
- dev_poll_fd_ = do_dev_poll_create();
-
- interrupter_.recreate();
-
- // Add the interrupter's descriptor to /dev/poll.
- ::pollfd ev = { 0, 0, 0 };
- ev.fd = interrupter_.read_descriptor();
- ev.events = POLLIN | POLLERR;
- ev.revents = 0;
- ::write(dev_poll_fd_, &ev, sizeof(ev));
-
- // Re-register all descriptors with /dev/poll. The changes will be written
- // to the /dev/poll descriptor the next time the reactor is run.
- op_queue<operation> ops;
- fork_helper read_op_helper(this, POLLERR | POLLHUP | POLLIN);
- op_queue_[read_op].get_descriptors(read_op_helper, ops);
- fork_helper write_op_helper(this, POLLERR | POLLHUP | POLLOUT);
- op_queue_[write_op].get_descriptors(write_op_helper, ops);
- fork_helper except_op_helper(this, POLLERR | POLLHUP | POLLPRI);
- op_queue_[except_op].get_descriptors(except_op_helper, ops);
- interrupter_.interrupt();
-
- // The ops op_queue will always be empty because the fork_helper's set()
- // member function never returns false.
- ASIO_ASSERT(ops.empty());
- }
-}
-
-void dev_poll_reactor::init_task()
-{
- io_service_.init_task();
-}
-
-int dev_poll_reactor::register_descriptor(socket_type, per_descriptor_data&)
-{
- return 0;
-}
-
-int dev_poll_reactor::register_internal_descriptor(int op_type,
- socket_type descriptor, per_descriptor_data&, reactor_op* op)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- op_queue_[op_type].enqueue_operation(descriptor, op);
- ::pollfd& ev = add_pending_event_change(descriptor);
- ev.events = POLLERR | POLLHUP;
- switch (op_type)
- {
- case read_op: ev.events |= POLLIN; break;
- case write_op: ev.events |= POLLOUT; break;
- case except_op: ev.events |= POLLPRI; break;
- default: break;
- }
- interrupter_.interrupt();
-
- return 0;
-}
-
-void dev_poll_reactor::move_descriptor(socket_type,
- dev_poll_reactor::per_descriptor_data&,
- dev_poll_reactor::per_descriptor_data&)
-{
-}
-
-void dev_poll_reactor::start_op(int op_type, socket_type descriptor,
- dev_poll_reactor::per_descriptor_data&, reactor_op* op,
- bool is_continuation, bool allow_speculative)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- post_immediate_completion(op, is_continuation);
- return;
- }
-
- if (allow_speculative)
- {
- if (op_type != read_op || !op_queue_[except_op].has_operation(descriptor))
- {
- if (!op_queue_[op_type].has_operation(descriptor))
- {
- if (op->perform())
- {
- lock.unlock();
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
- }
- }
- }
-
- bool first = op_queue_[op_type].enqueue_operation(descriptor, op);
- io_service_.work_started();
- if (first)
- {
- ::pollfd& ev = add_pending_event_change(descriptor);
- ev.events = POLLERR | POLLHUP;
- if (op_type == read_op
- || op_queue_[read_op].has_operation(descriptor))
- ev.events |= POLLIN;
- if (op_type == write_op
- || op_queue_[write_op].has_operation(descriptor))
- ev.events |= POLLOUT;
- if (op_type == except_op
- || op_queue_[except_op].has_operation(descriptor))
- ev.events |= POLLPRI;
- interrupter_.interrupt();
- }
-}
-
-void dev_poll_reactor::cancel_ops(socket_type descriptor,
- dev_poll_reactor::per_descriptor_data&)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void dev_poll_reactor::deregister_descriptor(socket_type descriptor,
- dev_poll_reactor::per_descriptor_data&, bool)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- // Remove the descriptor from /dev/poll.
- ::pollfd& ev = add_pending_event_change(descriptor);
- ev.events = POLLREMOVE;
- interrupter_.interrupt();
-
- // Cancel any outstanding operations associated with the descriptor.
- cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void dev_poll_reactor::deregister_internal_descriptor(
- socket_type descriptor, dev_poll_reactor::per_descriptor_data&)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- // Remove the descriptor from /dev/poll. Since this function is only called
- // during a fork, we can apply the change immediately.
- ::pollfd ev = { 0, 0, 0 };
- ev.fd = descriptor;
- ev.events = POLLREMOVE;
- ev.revents = 0;
- ::write(dev_poll_fd_, &ev, sizeof(ev));
-
- // Destroy all operations associated with the descriptor.
- op_queue<operation> ops;
- asio::error_code ec;
- for (int i = 0; i < max_ops; ++i)
- op_queue_[i].cancel_operations(descriptor, ops, ec);
-}
-
-void dev_poll_reactor::run(bool block, op_queue<operation>& ops)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- // We can return immediately if there's no work to do and the reactor is
- // not supposed to block.
- if (!block && op_queue_[read_op].empty() && op_queue_[write_op].empty()
- && op_queue_[except_op].empty() && timer_queues_.all_empty())
- return;
-
- // Write the pending event registration changes to the /dev/poll descriptor.
- std::size_t events_size = sizeof(::pollfd) * pending_event_changes_.size();
- if (events_size > 0)
- {
- errno = 0;
- int result = ::write(dev_poll_fd_,
- &pending_event_changes_[0], events_size);
- if (result != static_cast<int>(events_size))
- {
- asio::error_code ec = asio::error_code(
- errno, asio::error::get_system_category());
- for (std::size_t i = 0; i < pending_event_changes_.size(); ++i)
- {
- int descriptor = pending_event_changes_[i].fd;
- for (int j = 0; j < max_ops; ++j)
- op_queue_[j].cancel_operations(descriptor, ops, ec);
- }
- }
- pending_event_changes_.clear();
- pending_event_change_index_.clear();
- }
-
- int timeout = block ? get_timeout() : 0;
- lock.unlock();
-
- // Block on the /dev/poll descriptor.
- ::pollfd events[128] = { { 0, 0, 0 } };
- ::dvpoll dp = { 0, 0, 0 };
- dp.dp_fds = events;
- dp.dp_nfds = 128;
- dp.dp_timeout = timeout;
- int num_events = ::ioctl(dev_poll_fd_, DP_POLL, &dp);
-
- lock.lock();
-
- // Dispatch the waiting events.
- for (int i = 0; i < num_events; ++i)
- {
- int descriptor = events[i].fd;
- if (descriptor == interrupter_.read_descriptor())
- {
- interrupter_.reset();
- }
- else
- {
- bool more_reads = false;
- bool more_writes = false;
- bool more_except = false;
-
- // Exception operations must be processed first to ensure that any
- // out-of-band data is read before normal data.
- if (events[i].events & (POLLPRI | POLLERR | POLLHUP))
- more_except =
- op_queue_[except_op].perform_operations(descriptor, ops);
- else
- more_except = op_queue_[except_op].has_operation(descriptor);
-
- if (events[i].events & (POLLIN | POLLERR | POLLHUP))
- more_reads = op_queue_[read_op].perform_operations(descriptor, ops);
- else
- more_reads = op_queue_[read_op].has_operation(descriptor);
-
- if (events[i].events & (POLLOUT | POLLERR | POLLHUP))
- more_writes = op_queue_[write_op].perform_operations(descriptor, ops);
- else
- more_writes = op_queue_[write_op].has_operation(descriptor);
-
- if ((events[i].events & (POLLERR | POLLHUP)) != 0
- && !more_except && !more_reads && !more_writes)
- {
- // If we have an event and no operations associated with the
- // descriptor then we need to delete the descriptor from /dev/poll.
- // The poll operation can produce POLLHUP or POLLERR events when there
- // is no operation pending, so if we do not remove the descriptor we
- // can end up in a tight polling loop.
- ::pollfd ev = { 0, 0, 0 };
- ev.fd = descriptor;
- ev.events = POLLREMOVE;
- ev.revents = 0;
- ::write(dev_poll_fd_, &ev, sizeof(ev));
- }
- else
- {
- ::pollfd ev = { 0, 0, 0 };
- ev.fd = descriptor;
- ev.events = POLLERR | POLLHUP;
- if (more_reads)
- ev.events |= POLLIN;
- if (more_writes)
- ev.events |= POLLOUT;
- if (more_except)
- ev.events |= POLLPRI;
- ev.revents = 0;
- int result = ::write(dev_poll_fd_, &ev, sizeof(ev));
- if (result != sizeof(ev))
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- for (int j = 0; j < max_ops; ++j)
- op_queue_[j].cancel_operations(descriptor, ops, ec);
- }
- }
- }
- }
- timer_queues_.get_ready_timers(ops);
-}
-
-void dev_poll_reactor::interrupt()
-{
- interrupter_.interrupt();
-}
-
-int dev_poll_reactor::do_dev_poll_create()
-{
- int fd = ::open("/dev/poll", O_RDWR);
- if (fd == -1)
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "/dev/poll");
- }
- return fd;
-}
-
-void dev_poll_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.insert(&queue);
-}
-
-void dev_poll_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.erase(&queue);
-}
-
-int dev_poll_reactor::get_timeout()
-{
- // By default we will wait no longer than 5 minutes. This will ensure that
- // any changes to the system clock are detected after no longer than this.
- return timer_queues_.wait_duration_msec(5 * 60 * 1000);
-}
-
-void dev_poll_reactor::cancel_ops_unlocked(socket_type descriptor,
- const asio::error_code& ec)
-{
- bool need_interrupt = false;
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- need_interrupt = op_queue_[i].cancel_operations(
- descriptor, ops, ec) || need_interrupt;
- io_service_.post_deferred_completions(ops);
- if (need_interrupt)
- interrupter_.interrupt();
-}
-
-::pollfd& dev_poll_reactor::add_pending_event_change(int descriptor)
-{
- hash_map<int, std::size_t>::iterator iter
- = pending_event_change_index_.find(descriptor);
- if (iter == pending_event_change_index_.end())
- {
- std::size_t index = pending_event_changes_.size();
- pending_event_changes_.reserve(pending_event_changes_.size() + 1);
- pending_event_change_index_.insert(std::make_pair(descriptor, index));
- pending_event_changes_.push_back(::pollfd());
- pending_event_changes_[index].fd = descriptor;
- pending_event_changes_[index].revents = 0;
- return pending_event_changes_[index];
- }
- else
- {
- return pending_event_changes_[iter->second];
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_DEV_POLL)
-
-#endif // ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.hpp
deleted file mode 100644
index df60c01..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/impl/epoll_reactor.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_DETAIL_IMPL_EPOLL_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if defined(ASIO_HAS_EPOLL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void epoll_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_add_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void epoll_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void epoll_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
- mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- io_service_.post_immediate_completion(op, false);
- return;
- }
-
- bool earliest = queue.enqueue_timer(time, timer, op);
- io_service_.work_started();
- if (earliest)
- update_timeout();
-}
-
-template <typename Time_Traits>
-std::size_t epoll_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled)
-{
- mutex::scoped_lock lock(mutex_);
- op_queue<operation> ops;
- std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
- lock.unlock();
- io_service_.post_deferred_completions(ops);
- return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_EPOLL)
-
-#endif // ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.ipp
deleted file mode 100644
index 6452f3d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/epoll_reactor.ipp
+++ /dev/null
@@ -1,662 +0,0 @@
-//
-// detail/impl/epoll_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_EPOLL_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_EPOLL)
-
-#include <cstddef>
-#include <sys/epoll.h>
-#include "asio/detail/epoll_reactor.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#if defined(ASIO_HAS_TIMERFD)
-# include <sys/timerfd.h>
-#endif // defined(ASIO_HAS_TIMERFD)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-epoll_reactor::epoll_reactor(asio::io_service& io_service)
- : asio::detail::service_base<epoll_reactor>(io_service),
- io_service_(use_service<io_service_impl>(io_service)),
- mutex_(),
- interrupter_(),
- epoll_fd_(do_epoll_create()),
- timer_fd_(do_timerfd_create()),
- shutdown_(false)
-{
- // Add the interrupter's descriptor to epoll.
- epoll_event ev = { 0, { 0 } };
- ev.events = EPOLLIN | EPOLLERR | EPOLLET;
- ev.data.ptr = &interrupter_;
- epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev);
- interrupter_.interrupt();
-
- // Add the timer descriptor to epoll.
- if (timer_fd_ != -1)
- {
- ev.events = EPOLLIN | EPOLLERR;
- ev.data.ptr = &timer_fd_;
- epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev);
- }
-}
-
-epoll_reactor::~epoll_reactor()
-{
- if (epoll_fd_ != -1)
- close(epoll_fd_);
- if (timer_fd_ != -1)
- close(timer_fd_);
-}
-
-void epoll_reactor::shutdown_service()
-{
- mutex::scoped_lock lock(mutex_);
- shutdown_ = true;
- lock.unlock();
-
- op_queue<operation> ops;
-
- while (descriptor_state* state = registered_descriptors_.first())
- {
- for (int i = 0; i < max_ops; ++i)
- ops.push(state->op_queue_[i]);
- state->shutdown_ = true;
- registered_descriptors_.free(state);
- }
-
- timer_queues_.get_all_timers(ops);
-
- io_service_.abandon_operations(ops);
-}
-
-void epoll_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
- if (fork_ev == asio::io_service::fork_child)
- {
- if (epoll_fd_ != -1)
- ::close(epoll_fd_);
- epoll_fd_ = -1;
- epoll_fd_ = do_epoll_create();
-
- if (timer_fd_ != -1)
- ::close(timer_fd_);
- timer_fd_ = -1;
- timer_fd_ = do_timerfd_create();
-
- interrupter_.recreate();
-
- // Add the interrupter's descriptor to epoll.
- epoll_event ev = { 0, { 0 } };
- ev.events = EPOLLIN | EPOLLERR | EPOLLET;
- ev.data.ptr = &interrupter_;
- epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev);
- interrupter_.interrupt();
-
- // Add the timer descriptor to epoll.
- if (timer_fd_ != -1)
- {
- ev.events = EPOLLIN | EPOLLERR;
- ev.data.ptr = &timer_fd_;
- epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev);
- }
-
- update_timeout();
-
- // Re-register all descriptors with epoll.
- mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
- for (descriptor_state* state = registered_descriptors_.first();
- state != 0; state = state->next_)
- {
- ev.events = state->registered_events_;
- ev.data.ptr = state;
- int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, state->descriptor_, &ev);
- if (result != 0)
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "epoll re-registration");
- }
- }
- }
-}
-
-void epoll_reactor::init_task()
-{
- io_service_.init_task();
-}
-
-int epoll_reactor::register_descriptor(socket_type descriptor,
- epoll_reactor::per_descriptor_data& descriptor_data)
-{
- descriptor_data = allocate_descriptor_state();
-
- {
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- descriptor_data->reactor_ = this;
- descriptor_data->descriptor_ = descriptor;
- descriptor_data->shutdown_ = false;
- }
-
- epoll_event ev = { 0, { 0 } };
- ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET;
- descriptor_data->registered_events_ = ev.events;
- ev.data.ptr = descriptor_data;
- int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
- if (result != 0)
- return errno;
-
- return 0;
-}
-
-int epoll_reactor::register_internal_descriptor(
- int op_type, socket_type descriptor,
- epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op)
-{
- descriptor_data = allocate_descriptor_state();
-
- {
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- descriptor_data->reactor_ = this;
- descriptor_data->descriptor_ = descriptor;
- descriptor_data->shutdown_ = false;
- descriptor_data->op_queue_[op_type].push(op);
- }
-
- epoll_event ev = { 0, { 0 } };
- ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET;
- descriptor_data->registered_events_ = ev.events;
- ev.data.ptr = descriptor_data;
- int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
- if (result != 0)
- return errno;
-
- return 0;
-}
-
-void epoll_reactor::move_descriptor(socket_type,
- epoll_reactor::per_descriptor_data& target_descriptor_data,
- epoll_reactor::per_descriptor_data& source_descriptor_data)
-{
- target_descriptor_data = source_descriptor_data;
- source_descriptor_data = 0;
-}
-
-void epoll_reactor::start_op(int op_type, socket_type descriptor,
- epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op,
- bool is_continuation, bool allow_speculative)
-{
- if (!descriptor_data)
- {
- op->ec_ = asio::error::bad_descriptor;
- post_immediate_completion(op, is_continuation);
- return;
- }
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- if (descriptor_data->shutdown_)
- {
- post_immediate_completion(op, is_continuation);
- return;
- }
-
- if (descriptor_data->op_queue_[op_type].empty())
- {
- if (allow_speculative
- && (op_type != read_op
- || descriptor_data->op_queue_[except_op].empty()))
- {
- if (op->perform())
- {
- descriptor_lock.unlock();
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
-
- if (op_type == write_op)
- {
- if ((descriptor_data->registered_events_ & EPOLLOUT) == 0)
- {
- epoll_event ev = { 0, { 0 } };
- ev.events = descriptor_data->registered_events_ | EPOLLOUT;
- ev.data.ptr = descriptor_data;
- if (epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev) == 0)
- {
- descriptor_data->registered_events_ |= ev.events;
- }
- else
- {
- op->ec_ = asio::error_code(errno,
- asio::error::get_system_category());
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
- }
- }
- }
- else
- {
- if (op_type == write_op)
- {
- descriptor_data->registered_events_ |= EPOLLOUT;
- }
-
- epoll_event ev = { 0, { 0 } };
- ev.events = descriptor_data->registered_events_;
- ev.data.ptr = descriptor_data;
- epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
- }
- }
-
- descriptor_data->op_queue_[op_type].push(op);
- io_service_.work_started();
-}
-
-void epoll_reactor::cancel_ops(socket_type,
- epoll_reactor::per_descriptor_data& descriptor_data)
-{
- if (!descriptor_data)
- return;
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- {
- while (reactor_op* op = descriptor_data->op_queue_[i].front())
- {
- op->ec_ = asio::error::operation_aborted;
- descriptor_data->op_queue_[i].pop();
- ops.push(op);
- }
- }
-
- descriptor_lock.unlock();
-
- io_service_.post_deferred_completions(ops);
-}
-
-void epoll_reactor::deregister_descriptor(socket_type descriptor,
- epoll_reactor::per_descriptor_data& descriptor_data, bool closing)
-{
- if (!descriptor_data)
- return;
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- if (!descriptor_data->shutdown_)
- {
- if (closing)
- {
- // The descriptor will be automatically removed from the epoll set when
- // it is closed.
- }
- else
- {
- epoll_event ev = { 0, { 0 } };
- epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
- }
-
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- {
- while (reactor_op* op = descriptor_data->op_queue_[i].front())
- {
- op->ec_ = asio::error::operation_aborted;
- descriptor_data->op_queue_[i].pop();
- ops.push(op);
- }
- }
-
- descriptor_data->descriptor_ = -1;
- descriptor_data->shutdown_ = true;
-
- descriptor_lock.unlock();
-
- free_descriptor_state(descriptor_data);
- descriptor_data = 0;
-
- io_service_.post_deferred_completions(ops);
- }
-}
-
-void epoll_reactor::deregister_internal_descriptor(socket_type descriptor,
- epoll_reactor::per_descriptor_data& descriptor_data)
-{
- if (!descriptor_data)
- return;
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- if (!descriptor_data->shutdown_)
- {
- epoll_event ev = { 0, { 0 } };
- epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
-
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- ops.push(descriptor_data->op_queue_[i]);
-
- descriptor_data->descriptor_ = -1;
- descriptor_data->shutdown_ = true;
-
- descriptor_lock.unlock();
-
- free_descriptor_state(descriptor_data);
- descriptor_data = 0;
- }
-}
-
-void epoll_reactor::run(bool block, op_queue<operation>& ops)
-{
- // This code relies on the fact that the task_io_service queues the reactor
- // task behind all descriptor operations generated by this function. This
- // means, that by the time we reach this point, any previously returned
- // descriptor operations have already been dequeued. Therefore it is now safe
- // for us to reuse and return them for the task_io_service to queue again.
-
- // Calculate a timeout only if timerfd is not used.
- int timeout;
- if (timer_fd_ != -1)
- timeout = block ? -1 : 0;
- else
- {
- mutex::scoped_lock lock(mutex_);
- timeout = block ? get_timeout() : 0;
- }
-
- // Block on the epoll descriptor.
- epoll_event events[128];
- int num_events = epoll_wait(epoll_fd_, events, 128, timeout);
-
-#if defined(ASIO_HAS_TIMERFD)
- bool check_timers = (timer_fd_ == -1);
-#else // defined(ASIO_HAS_TIMERFD)
- bool check_timers = true;
-#endif // defined(ASIO_HAS_TIMERFD)
-
- // Dispatch the waiting events.
- for (int i = 0; i < num_events; ++i)
- {
- void* ptr = events[i].data.ptr;
- if (ptr == &interrupter_)
- {
- // No need to reset the interrupter since we're leaving the descriptor
- // in a ready-to-read state and relying on edge-triggered notifications
- // to make it so that we only get woken up when the descriptor's epoll
- // registration is updated.
-
-#if defined(ASIO_HAS_TIMERFD)
- if (timer_fd_ == -1)
- check_timers = true;
-#else // defined(ASIO_HAS_TIMERFD)
- check_timers = true;
-#endif // defined(ASIO_HAS_TIMERFD)
- }
-#if defined(ASIO_HAS_TIMERFD)
- else if (ptr == &timer_fd_)
- {
- check_timers = true;
- }
-#endif // defined(ASIO_HAS_TIMERFD)
- else
- {
- // The descriptor operation doesn't count as work in and of itself, so we
- // don't call work_started() here. This still allows the io_service to
- // stop if the only remaining operations are descriptor operations.
- descriptor_state* descriptor_data = static_cast<descriptor_state*>(ptr);
- descriptor_data->set_ready_events(events[i].events);
- ops.push(descriptor_data);
- }
- }
-
- if (check_timers)
- {
- mutex::scoped_lock common_lock(mutex_);
- timer_queues_.get_ready_timers(ops);
-
-#if defined(ASIO_HAS_TIMERFD)
- if (timer_fd_ != -1)
- {
- itimerspec new_timeout;
- itimerspec old_timeout;
- int flags = get_timeout(new_timeout);
- timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout);
- }
-#endif // defined(ASIO_HAS_TIMERFD)
- }
-}
-
-void epoll_reactor::interrupt()
-{
- epoll_event ev = { 0, { 0 } };
- ev.events = EPOLLIN | EPOLLERR | EPOLLET;
- ev.data.ptr = &interrupter_;
- epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, interrupter_.read_descriptor(), &ev);
-}
-
-int epoll_reactor::do_epoll_create()
-{
-#if defined(EPOLL_CLOEXEC)
- int fd = epoll_create1(EPOLL_CLOEXEC);
-#else // defined(EPOLL_CLOEXEC)
- int fd = -1;
- errno = EINVAL;
-#endif // defined(EPOLL_CLOEXEC)
-
- if (fd == -1 && (errno == EINVAL || errno == ENOSYS))
- {
- fd = epoll_create(epoll_size);
- if (fd != -1)
- ::fcntl(fd, F_SETFD, FD_CLOEXEC);
- }
-
- if (fd == -1)
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "epoll");
- }
-
- return fd;
-}
-
-int epoll_reactor::do_timerfd_create()
-{
-#if defined(ASIO_HAS_TIMERFD)
-# if defined(TFD_CLOEXEC)
- int fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);
-# else // defined(TFD_CLOEXEC)
- int fd = -1;
- errno = EINVAL;
-# endif // defined(TFD_CLOEXEC)
-
- if (fd == -1 && errno == EINVAL)
- {
- fd = timerfd_create(CLOCK_MONOTONIC, 0);
- if (fd != -1)
- ::fcntl(fd, F_SETFD, FD_CLOEXEC);
- }
-
- return fd;
-#else // defined(ASIO_HAS_TIMERFD)
- return -1;
-#endif // defined(ASIO_HAS_TIMERFD)
-}
-
-epoll_reactor::descriptor_state* epoll_reactor::allocate_descriptor_state()
-{
- mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
- return registered_descriptors_.alloc();
-}
-
-void epoll_reactor::free_descriptor_state(epoll_reactor::descriptor_state* s)
-{
- mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
- registered_descriptors_.free(s);
-}
-
-void epoll_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.insert(&queue);
-}
-
-void epoll_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.erase(&queue);
-}
-
-void epoll_reactor::update_timeout()
-{
-#if defined(ASIO_HAS_TIMERFD)
- if (timer_fd_ != -1)
- {
- itimerspec new_timeout;
- itimerspec old_timeout;
- int flags = get_timeout(new_timeout);
- timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout);
- return;
- }
-#endif // defined(ASIO_HAS_TIMERFD)
- interrupt();
-}
-
-int epoll_reactor::get_timeout()
-{
- // By default we will wait no longer than 5 minutes. This will ensure that
- // any changes to the system clock are detected after no longer than this.
- return timer_queues_.wait_duration_msec(5 * 60 * 1000);
-}
-
-#if defined(ASIO_HAS_TIMERFD)
-int epoll_reactor::get_timeout(itimerspec& ts)
-{
- ts.it_interval.tv_sec = 0;
- ts.it_interval.tv_nsec = 0;
-
- long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000);
- ts.it_value.tv_sec = usec / 1000000;
- ts.it_value.tv_nsec = usec ? (usec % 1000000) * 1000 : 1;
-
- return usec ? 0 : TFD_TIMER_ABSTIME;
-}
-#endif // defined(ASIO_HAS_TIMERFD)
-
-struct epoll_reactor::perform_io_cleanup_on_block_exit
-{
- explicit perform_io_cleanup_on_block_exit(epoll_reactor* r)
- : reactor_(r), first_op_(0)
- {
- }
-
- ~perform_io_cleanup_on_block_exit()
- {
- if (first_op_)
- {
- // Post the remaining completed operations for invocation.
- if (!ops_.empty())
- reactor_->io_service_.post_deferred_completions(ops_);
-
- // A user-initiated operation has completed, but there's no need to
- // explicitly call work_finished() here. Instead, we'll take advantage of
- // the fact that the task_io_service will call work_finished() once we
- // return.
- }
- else
- {
- // No user-initiated operations have completed, so we need to compensate
- // for the work_finished() call that the task_io_service will make once
- // this operation returns.
- reactor_->io_service_.work_started();
- }
- }
-
- epoll_reactor* reactor_;
- op_queue<operation> ops_;
- operation* first_op_;
-};
-
-epoll_reactor::descriptor_state::descriptor_state()
- : operation(&epoll_reactor::descriptor_state::do_complete)
-{
-}
-
-operation* epoll_reactor::descriptor_state::perform_io(uint32_t events)
-{
- mutex_.lock();
- perform_io_cleanup_on_block_exit io_cleanup(reactor_);
- mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock);
-
- // Exception operations must be processed first to ensure that any
- // out-of-band data is read before normal data.
- static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI };
- for (int j = max_ops - 1; j >= 0; --j)
- {
- if (events & (flag[j] | EPOLLERR | EPOLLHUP))
- {
- while (reactor_op* op = op_queue_[j].front())
- {
- if (op->perform())
- {
- op_queue_[j].pop();
- io_cleanup.ops_.push(op);
- }
- else
- break;
- }
- }
- }
-
- // The first operation will be returned for completion now. The others will
- // be posted for later by the io_cleanup object's destructor.
- io_cleanup.first_op_ = io_cleanup.ops_.front();
- io_cleanup.ops_.pop();
- return io_cleanup.first_op_;
-}
-
-void epoll_reactor::descriptor_state::do_complete(
- io_service_impl* owner, operation* base,
- const asio::error_code& ec, std::size_t bytes_transferred)
-{
- if (owner)
- {
- descriptor_state* descriptor_data = static_cast<descriptor_state*>(base);
- uint32_t events = static_cast<uint32_t>(bytes_transferred);
- if (operation* op = descriptor_data->perform_io(events))
- {
- op->complete(*owner, ec, 0);
- }
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_EPOLL)
-
-#endif // ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/eventfd_select_interrupter.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/eventfd_select_interrupter.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/eventfd_select_interrupter.ipp
deleted file mode 100644
index 351c488..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/eventfd_select_interrupter.ipp
+++ /dev/null
@@ -1,165 +0,0 @@
-//
-// detail/impl/eventfd_select_interrupter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail 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_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP
-#define ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_EVENTFD)
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-# include <asm/unistd.h>
-#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-# include <sys/eventfd.h>
-#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/eventfd_select_interrupter.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-eventfd_select_interrupter::eventfd_select_interrupter()
-{
- open_descriptors();
-}
-
-void eventfd_select_interrupter::open_descriptors()
-{
-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
- write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0);
- if (read_descriptor_ != -1)
- {
- ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
- ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
- }
-#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-# if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
- write_descriptor_ = read_descriptor_ =
- ::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
-# else // defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
- errno = EINVAL;
- write_descriptor_ = read_descriptor_ = -1;
-# endif // defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
- if (read_descriptor_ == -1 && errno == EINVAL)
- {
- write_descriptor_ = read_descriptor_ = ::eventfd(0, 0);
- if (read_descriptor_ != -1)
- {
- ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
- ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
- }
- }
-#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-
- if (read_descriptor_ == -1)
- {
- int pipe_fds[2];
- if (pipe(pipe_fds) == 0)
- {
- read_descriptor_ = pipe_fds[0];
- ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
- ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
- write_descriptor_ = pipe_fds[1];
- ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK);
- ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC);
- }
- else
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "eventfd_select_interrupter");
- }
- }
-}
-
-eventfd_select_interrupter::~eventfd_select_interrupter()
-{
- close_descriptors();
-}
-
-void eventfd_select_interrupter::close_descriptors()
-{
- if (write_descriptor_ != -1 && write_descriptor_ != read_descriptor_)
- ::close(write_descriptor_);
- if (read_descriptor_ != -1)
- ::close(read_descriptor_);
-}
-
-void eventfd_select_interrupter::recreate()
-{
- close_descriptors();
-
- write_descriptor_ = -1;
- read_descriptor_ = -1;
-
- open_descriptors();
-}
-
-void eventfd_select_interrupter::interrupt()
-{
- uint64_t counter(1UL);
- int result = ::write(write_descriptor_, &counter, sizeof(uint64_t));
- (void)result;
-}
-
-bool eventfd_select_interrupter::reset()
-{
- if (write_descriptor_ == read_descriptor_)
- {
- for (;;)
- {
- // Only perform one read. The kernel maintains an atomic counter.
- uint64_t counter(0);
- errno = 0;
- int bytes_read = ::read(read_descriptor_, &counter, sizeof(uint64_t));
- if (bytes_read < 0 && errno == EINTR)
- continue;
- bool was_interrupted = (bytes_read > 0);
- return was_interrupted;
- }
- }
- else
- {
- for (;;)
- {
- // Clear all data from the pipe.
- char data[1024];
- int bytes_read = ::read(read_descriptor_, data, sizeof(data));
- if (bytes_read < 0 && errno == EINTR)
- continue;
- bool was_interrupted = (bytes_read > 0);
- while (bytes_read == sizeof(data))
- bytes_read = ::read(read_descriptor_, data, sizeof(data));
- return was_interrupted;
- }
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_EVENTFD)
-
-#endif // ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/handler_tracking.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/handler_tracking.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/handler_tracking.ipp
deleted file mode 100644
index e588582..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/handler_tracking.ipp
+++ /dev/null
@@ -1,305 +0,0 @@
-//
-// detail/impl/handler_tracking.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_HANDLER_TRACKING_IPP
-#define ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP
-
-#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_HANDLER_TRACKING)
-
-#include <cstdarg>
-#include <cstdio>
-#include "asio/detail/handler_tracking.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/time_traits.hpp"
-#else // defined(ASIO_HAS_BOOST_DATE_TIME)
-# if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-# elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-# endif
-# include "asio/detail/chrono_time_traits.hpp"
-# include "asio/wait_traits.hpp"
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#if !defined(ASIO_WINDOWS)
-# include <unistd.h>
-#endif // !defined(ASIO_WINDOWS)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct handler_tracking_timestamp
-{
- uint64_t seconds;
- uint64_t microseconds;
-
- handler_tracking_timestamp()
- {
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
- boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
- boost::posix_time::time_duration now =
- boost::posix_time::microsec_clock::universal_time() - epoch;
-#elif defined(ASIO_HAS_STD_CHRONO)
- typedef chrono_time_traits<std::chrono::system_clock,
- asio::wait_traits<std::chrono::system_clock> > traits_helper;
- traits_helper::posix_time_duration now(
- std::chrono::system_clock::now().time_since_epoch());
-#elif defined(ASIO_HAS_BOOST_CHRONO)
- typedef chrono_time_traits<boost::chrono::system_clock,
- asio::wait_traits<boost::chrono::system_clock> > traits_helper;
- traits_helper::posix_time_duration now(
- boost::chrono::system_clock::now().time_since_epoch());
-#endif
- seconds = static_cast<uint64_t>(now.total_seconds());
- microseconds = static_cast<uint64_t>(now.total_microseconds() % 1000000);
- }
-};
-
-struct handler_tracking::tracking_state
-{
- static_mutex mutex_;
- uint64_t next_id_;
- tss_ptr<completion>* current_completion_;
-};
-
-handler_tracking::tracking_state* handler_tracking::get_state()
-{
- static tracking_state state = { ASIO_STATIC_MUTEX_INIT, 1, 0 };
- return &state;
-}
-
-void handler_tracking::init()
-{
- static tracking_state* state = get_state();
-
- state->mutex_.init();
-
- static_mutex::scoped_lock lock(state->mutex_);
- if (state->current_completion_ == 0)
- state->current_completion_ = new tss_ptr<completion>;
-}
-
-void handler_tracking::creation(handler_tracking::tracked_handler* h,
- const char* object_type, void* object, const char* op_name)
-{
- static tracking_state* state = get_state();
-
- static_mutex::scoped_lock lock(state->mutex_);
- h->id_ = state->next_id_++;
- lock.unlock();
-
- handler_tracking_timestamp timestamp;
-
- uint64_t current_id = 0;
- if (completion* current_completion = *state->current_completion_)
- current_id = current_completion->id_;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|%I64u*%I64u|%.20s@%p.%.50s\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|%llu*%llu|%.20s@%p.%.50s\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- current_id, h->id_, object_type, object, op_name);
-}
-
-handler_tracking::completion::completion(handler_tracking::tracked_handler* h)
- : id_(h->id_),
- invoked_(false),
- next_(*get_state()->current_completion_)
-{
- *get_state()->current_completion_ = this;
-}
-
-handler_tracking::completion::~completion()
-{
- if (id_)
- {
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|%c%I64u|\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|%c%llu|\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- invoked_ ? '!' : '~', id_);
- }
-
- *get_state()->current_completion_ = next_;
-}
-
-void handler_tracking::completion::invocation_begin()
-{
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|>%I64u|\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|>%llu|\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds, id_);
-
- invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
- const asio::error_code& ec)
-{
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|>%llu|ec=%.20s:%d\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- id_, ec.category().name(), ec.value());
-
- invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
- const asio::error_code& ec, std::size_t bytes_transferred)
-{
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,bytes_transferred=%I64u\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,bytes_transferred=%llu\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- id_, ec.category().name(), ec.value(),
- static_cast<uint64_t>(bytes_transferred));
-
- invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
- const asio::error_code& ec, int signal_number)
-{
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,signal_number=%d\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,signal_number=%d\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- id_, ec.category().name(), ec.value(), signal_number);
-
- invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
- const asio::error_code& ec, const char* arg)
-{
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,%.50s\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,%.50s\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- id_, ec.category().name(), ec.value(), arg);
-
- invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_end()
-{
- if (id_)
- {
- handler_tracking_timestamp timestamp;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|<%I64u|\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|<%llu|\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds, id_);
-
- id_ = 0;
- }
-}
-
-void handler_tracking::operation(const char* object_type,
- void* object, const char* op_name)
-{
- static tracking_state* state = get_state();
-
- handler_tracking_timestamp timestamp;
-
- unsigned long long current_id = 0;
- if (completion* current_completion = *state->current_completion_)
- current_id = current_completion->id_;
-
- write_line(
-#if defined(ASIO_WINDOWS)
- "@asio|%I64u.%06I64u|%I64u|%.20s@%p.%.50s\n",
-#else // defined(ASIO_WINDOWS)
- "@asio|%llu.%06llu|%llu|%.20s@%p.%.50s\n",
-#endif // defined(ASIO_WINDOWS)
- timestamp.seconds, timestamp.microseconds,
- current_id, object_type, object, op_name);
-}
-
-void handler_tracking::write_line(const char* format, ...)
-{
- using namespace std; // For sprintf (or equivalent).
-
- va_list args;
- va_start(args, format);
-
- char line[256] = "";
-#if defined(ASIO_HAS_SECURE_RTL)
- int length = vsprintf_s(line, sizeof(line), format, args);
-#else // defined(ASIO_HAS_SECURE_RTL)
- int length = vsprintf(line, format, args);
-#endif // defined(ASIO_HAS_SECURE_RTL)
-
- va_end(args);
-
-#if defined(ASIO_WINDOWS)
- HANDLE stderr_handle = ::GetStdHandle(STD_ERROR_HANDLE);
- DWORD bytes_written = 0;
- ::WriteFile(stderr_handle, line, length, &bytes_written, 0);
-#else // defined(ASIO_WINDOWS)
- ::write(STDERR_FILENO, line, length);
-#endif // defined(ASIO_WINDOWS)
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-#endif // ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.hpp
deleted file mode 100644
index 1146017..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// detail/impl/kqueue_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze 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_DETAIL_IMPL_KQUEUE_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_KQUEUE_REACTOR_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_HAS_KQUEUE)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void kqueue_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_add_timer_queue(queue);
-}
-
-// Remove a timer queue from the reactor.
-template <typename Time_Traits>
-void kqueue_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
- do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void kqueue_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
-
- if (shutdown_)
- {
- io_service_.post_immediate_completion(op, false);
- return;
- }
-
- bool earliest = queue.enqueue_timer(time, timer, op);
- io_service_.work_started();
- if (earliest)
- interrupt();
-}
-
-template <typename Time_Traits>
-std::size_t kqueue_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled)
-{
- asio::detail::mutex::scoped_lock lock(mutex_);
- op_queue<operation> ops;
- std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
- lock.unlock();
- io_service_.post_deferred_completions(ops);
- return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_KQUEUE)
-
-#endif // ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.ipp
deleted file mode 100644
index 5e65a0c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/kqueue_reactor.ipp
+++ /dev/null
@@ -1,463 +0,0 @@
-//
-// detail/impl/kqueue_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze 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_DETAIL_IMPL_KQUEUE_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_KQUEUE)
-
-#include "asio/detail/kqueue_reactor.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-#if defined(__NetBSD__)
-# define ASIO_KQUEUE_EV_SET(ev, ident, filt, flags, fflags, data, udata) \
- EV_SET(ev, ident, filt, flags, fflags, data, \
- reinterpret_cast<intptr_t>(static_cast<void*>(udata)))
-#else
-# define ASIO_KQUEUE_EV_SET(ev, ident, filt, flags, fflags, data, udata) \
- EV_SET(ev, ident, filt, flags, fflags, data, udata)
-#endif
-
-namespace asio {
-namespace detail {
-
-kqueue_reactor::kqueue_reactor(asio::io_service& io_service)
- : asio::detail::service_base<kqueue_reactor>(io_service),
- io_service_(use_service<io_service_impl>(io_service)),
- mutex_(),
- kqueue_fd_(do_kqueue_create()),
- interrupter_(),
- shutdown_(false)
-{
- struct kevent event;
- ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(),
- EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, &interrupter_);
- if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
- {
- asio::error_code error(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(error);
- }
-}
-
-kqueue_reactor::~kqueue_reactor()
-{
- close(kqueue_fd_);
-}
-
-void kqueue_reactor::shutdown_service()
-{
- mutex::scoped_lock lock(mutex_);
- shutdown_ = true;
- lock.unlock();
-
- op_queue<operation> ops;
-
- while (descriptor_state* state = registered_descriptors_.first())
- {
- for (int i = 0; i < max_ops; ++i)
- ops.push(state->op_queue_[i]);
- state->shutdown_ = true;
- registered_descriptors_.free(state);
- }
-
- timer_queues_.get_all_timers(ops);
-
- io_service_.abandon_operations(ops);
-}
-
-void kqueue_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
- if (fork_ev == asio::io_service::fork_child)
- {
- // The kqueue descriptor is automatically closed in the child.
- kqueue_fd_ = -1;
- kqueue_fd_ = do_kqueue_create();
-
- interrupter_.recreate();
-
- struct kevent event;
- ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(),
- EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, &interrupter_);
- if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
- {
- asio::error_code error(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(error);
- }
-
- // Re-register all descriptors with kqueue.
- mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
- for (descriptor_state* state = registered_descriptors_.first();
- state != 0; state = state->next_)
- {
- struct kevent events[2];
- ASIO_KQUEUE_EV_SET(&events[0], state->descriptor_,
- EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, state);
- ASIO_KQUEUE_EV_SET(&events[1], state->descriptor_,
- EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, state);
- if (::kevent(kqueue_fd_, events, 2, 0, 0, 0) == -1)
- {
- asio::error_code error(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(error);
- }
- }
- }
-}
-
-void kqueue_reactor::init_task()
-{
- io_service_.init_task();
-}
-
-int kqueue_reactor::register_descriptor(socket_type descriptor,
- kqueue_reactor::per_descriptor_data& descriptor_data)
-{
- descriptor_data = allocate_descriptor_state();
-
- mutex::scoped_lock lock(descriptor_data->mutex_);
-
- descriptor_data->descriptor_ = descriptor;
- descriptor_data->shutdown_ = false;
-
- struct kevent events[2];
- ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ,
- EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
- ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE,
- EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
- if (::kevent(kqueue_fd_, events, 2, 0, 0, 0) == -1)
- return errno;
-
- return 0;
-}
-
-int kqueue_reactor::register_internal_descriptor(
- int op_type, socket_type descriptor,
- kqueue_reactor::per_descriptor_data& descriptor_data, reactor_op* op)
-{
- descriptor_data = allocate_descriptor_state();
-
- mutex::scoped_lock lock(descriptor_data->mutex_);
-
- descriptor_data->descriptor_ = descriptor;
- descriptor_data->shutdown_ = false;
- descriptor_data->op_queue_[op_type].push(op);
-
- struct kevent events[2];
- ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ,
- EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
- ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE,
- EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
- if (::kevent(kqueue_fd_, events, 2, 0, 0, 0) == -1)
- return errno;
-
- return 0;
-}
-
-void kqueue_reactor::move_descriptor(socket_type,
- kqueue_reactor::per_descriptor_data& target_descriptor_data,
- kqueue_reactor::per_descriptor_data& source_descriptor_data)
-{
- target_descriptor_data = source_descriptor_data;
- source_descriptor_data = 0;
-}
-
-void kqueue_reactor::start_op(int op_type, socket_type descriptor,
- kqueue_reactor::per_descriptor_data& descriptor_data, reactor_op* op,
- bool is_continuation, bool allow_speculative)
-{
- if (!descriptor_data)
- {
- op->ec_ = asio::error::bad_descriptor;
- post_immediate_completion(op, is_continuation);
- return;
- }
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- if (descriptor_data->shutdown_)
- {
- post_immediate_completion(op, is_continuation);
- return;
- }
-
- bool first = descriptor_data->op_queue_[op_type].empty();
- if (first)
- {
- if (allow_speculative
- && (op_type != read_op
- || descriptor_data->op_queue_[except_op].empty()))
- {
- if (op->perform())
- {
- descriptor_lock.unlock();
- io_service_.post_immediate_completion(op, is_continuation);
- return;
- }
- }
- else
- {
- struct kevent events[2];
- ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ,
- EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
- ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE,
- EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
- ::kevent(kqueue_fd_, events, 2, 0, 0, 0);
- }
- }
-
- descriptor_data->op_queue_[op_type].push(op);
- io_service_.work_started();
-}
-
-void kqueue_reactor::cancel_ops(socket_type,
- kqueue_reactor::per_descriptor_data& descriptor_data)
-{
- if (!descriptor_data)
- return;
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- {
- while (reactor_op* op = descriptor_data->op_queue_[i].front())
- {
- op->ec_ = asio::error::operation_aborted;
- descriptor_data->op_queue_[i].pop();
- ops.push(op);
- }
- }
-
- descriptor_lock.unlock();
-
- io_service_.post_deferred_completions(ops);
-}
-
-void kqueue_reactor::deregister_descriptor(socket_type descriptor,
- kqueue_reactor::per_descriptor_data& descriptor_data, bool closing)
-{
- if (!descriptor_data)
- return;
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- if (!descriptor_data->shutdown_)
- {
- if (closing)
- {
- // The descriptor will be automatically removed from the kqueue when it
- // is closed.
- }
- else
- {
- struct kevent events[2];
- ASIO_KQUEUE_EV_SET(&events[0], descriptor,
- EVFILT_READ, EV_DELETE, 0, 0, 0);
- ASIO_KQUEUE_EV_SET(&events[1], descriptor,
- EVFILT_WRITE, EV_DELETE, 0, 0, 0);
- ::kevent(kqueue_fd_, events, 2, 0, 0, 0);
- }
-
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- {
- while (reactor_op* op = descriptor_data->op_queue_[i].front())
- {
- op->ec_ = asio::error::operation_aborted;
- descriptor_data->op_queue_[i].pop();
- ops.push(op);
- }
- }
-
- descriptor_data->descriptor_ = -1;
- descriptor_data->shutdown_ = true;
-
- descriptor_lock.unlock();
-
- free_descriptor_state(descriptor_data);
- descriptor_data = 0;
-
- io_service_.post_deferred_completions(ops);
- }
-}
-
-void kqueue_reactor::deregister_internal_descriptor(socket_type descriptor,
- kqueue_reactor::per_descriptor_data& descriptor_data)
-{
- if (!descriptor_data)
- return;
-
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- if (!descriptor_data->shutdown_)
- {
- struct kevent events[2];
- ASIO_KQUEUE_EV_SET(&events[0], descriptor,
- EVFILT_READ, EV_DELETE, 0, 0, 0);
- ASIO_KQUEUE_EV_SET(&events[1], descriptor,
- EVFILT_WRITE, EV_DELETE, 0, 0, 0);
- ::kevent(kqueue_fd_, events, 2, 0, 0, 0);
-
- op_queue<operation> ops;
- for (int i = 0; i < max_ops; ++i)
- ops.push(descriptor_data->op_queue_[i]);
-
- descriptor_data->descriptor_ = -1;
- descriptor_data->shutdown_ = true;
-
- descriptor_lock.unlock();
-
- free_descriptor_state(descriptor_data);
- descriptor_data = 0;
- }
-}
-
-void kqueue_reactor::run(bool block, op_queue<operation>& ops)
-{
- mutex::scoped_lock lock(mutex_);
-
- // Determine how long to block while waiting for events.
- timespec timeout_buf = { 0, 0 };
- timespec* timeout = block ? get_timeout(timeout_buf) : &timeout_buf;
-
- lock.unlock();
-
- // Block on the kqueue descriptor.
- struct kevent events[128];
- int num_events = kevent(kqueue_fd_, 0, 0, events, 128, timeout);
-
- // Dispatch the waiting events.
- for (int i = 0; i < num_events; ++i)
- {
- void* ptr = reinterpret_cast<void*>(events[i].udata);
- if (ptr == &interrupter_)
- {
- interrupter_.reset();
- }
- else
- {
- descriptor_state* descriptor_data = static_cast<descriptor_state*>(ptr);
- mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
- // Exception operations must be processed first to ensure that any
- // out-of-band data is read before normal data.
-#if defined(__NetBSD__)
- static const unsigned int filter[max_ops] =
-#else
- static const int filter[max_ops] =
-#endif
- { EVFILT_READ, EVFILT_WRITE, EVFILT_READ };
- for (int j = max_ops - 1; j >= 0; --j)
- {
- if (events[i].filter == filter[j])
- {
- if (j != except_op || events[i].flags & EV_OOBAND)
- {
- while (reactor_op* op = descriptor_data->op_queue_[j].front())
- {
- if (events[i].flags & EV_ERROR)
- {
- op->ec_ = asio::error_code(
- static_cast<int>(events[i].data),
- asio::error::get_system_category());
- descriptor_data->op_queue_[j].pop();
- ops.push(op);
- }
- if (op->perform())
- {
- descriptor_data->op_queue_[j].pop();
- ops.push(op);
- }
- else
- break;
- }
- }
- }
- }
- }
- }
-
- lock.lock();
- timer_queues_.get_ready_timers(ops);
-}
-
-void kqueue_reactor::interrupt()
-{
- interrupter_.interrupt();
-}
-
-int kqueue_reactor::do_kqueue_create()
-{
- int fd = ::kqueue();
- if (fd == -1)
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "kqueue");
- }
- return fd;
-}
-
-kqueue_reactor::descriptor_state* kqueue_reactor::allocate_descriptor_state()
-{
- mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
- return registered_descriptors_.alloc();
-}
-
-void kqueue_reactor::free_descriptor_state(kqueue_reactor::descriptor_state* s)
-{
- mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
- registered_descriptors_.free(s);
-}
-
-void kqueue_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.insert(&queue);
-}
-
-void kqueue_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
- mutex::scoped_lock lock(mutex_);
- timer_queues_.erase(&queue);
-}
-
-timespec* kqueue_reactor::get_timeout(timespec& ts)
-{
- // By default we will wait no longer than 5 minutes. This will ensure that
- // any changes to the system clock are detected after no longer than this.
- long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000);
- ts.tv_sec = usec / 1000000;
- ts.tv_nsec = (usec % 1000000) * 1000;
- return &ts;
-}
-
-} // namespace detail
-} // namespace asio
-
-#undef ASIO_KQUEUE_EV_SET
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_KQUEUE)
-
-#endif // ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/pipe_select_interrupter.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/pipe_select_interrupter.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/pipe_select_interrupter.ipp
deleted file mode 100644
index 192f251..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/pipe_select_interrupter.ipp
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// detail/impl/pipe_select_interrupter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP
-#define ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-#if !defined(ASIO_WINDOWS)
-#if !defined(__CYGWIN__)
-#if !defined(__SYMBIAN32__)
-#if !defined(ASIO_HAS_EVENTFD)
-
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include "asio/detail/pipe_select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-pipe_select_interrupter::pipe_select_interrupter()
-{
- open_descriptors();
-}
-
-void pipe_select_interrupter::open_descriptors()
-{
- int pipe_fds[2];
- if (pipe(pipe_fds) == 0)
- {
- read_descriptor_ = pipe_fds[0];
- ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
- write_descriptor_ = pipe_fds[1];
- ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK);
-
-#if defined(FD_CLOEXEC)
- ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
- ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC);
-#endif // defined(FD_CLOEXEC)
- }
- else
- {
- asio::error_code ec(errno,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "pipe_select_interrupter");
- }
-}
-
-pipe_select_interrupter::~pipe_select_interrupter()
-{
- close_descriptors();
-}
-
-void pipe_select_interrupter::close_descriptors()
-{
- if (read_descriptor_ != -1)
- ::close(read_descriptor_);
- if (write_descriptor_ != -1)
- ::close(write_descriptor_);
-}
-
-void pipe_select_interrupter::recreate()
-{
- close_descriptors();
-
- write_descriptor_ = -1;
- read_descriptor_ = -1;
-
- open_descriptors();
-}
-
-void pipe_select_interrupter::interrupt()
-{
- char byte = 0;
- signed_size_type result = ::write(write_descriptor_, &byte, 1);
- (void)result;
-}
-
-bool pipe_select_interrupter::reset()
-{
- for (;;)
- {
- char data[1024];
- signed_size_type bytes_read = ::read(read_descriptor_, data, sizeof(data));
- if (bytes_read < 0 && errno == EINTR)
- continue;
- bool was_interrupted = (bytes_read > 0);
- while (bytes_read == sizeof(data))
- bytes_read = ::read(read_descriptor_, data, sizeof(data));
- return was_interrupted;
- }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_EVENTFD)
-#endif // !defined(__SYMBIAN32__)
-#endif // !defined(__CYGWIN__)
-#endif // !defined(ASIO_WINDOWS)
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_event.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_event.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_event.ipp
deleted file mode 100644
index 1bc6563..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_event.ipp
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// detail/impl/posix_event.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_POSIX_EVENT_IPP
-#define ASIO_DETAIL_IMPL_POSIX_EVENT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_event.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-posix_event::posix_event()
- : state_(0)
-{
- int error = ::pthread_cond_init(&cond_, 0);
- asio::error_code ec(error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "event");
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_EVENT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_mutex.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_mutex.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_mutex.ipp
deleted file mode 100644
index e0f67ab..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_mutex.ipp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/impl/posix_mutex.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_POSIX_MUTEX_IPP
-#define ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_mutex.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-posix_mutex::posix_mutex()
-{
- int error = ::pthread_mutex_init(&mutex_, 0);
- asio::error_code ec(error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "mutex");
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_thread.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_thread.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_thread.ipp
deleted file mode 100644
index ea12383..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_thread.ipp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// detail/impl/posix_thread.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_POSIX_THREAD_IPP
-#define ASIO_DETAIL_IMPL_POSIX_THREAD_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_thread.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-posix_thread::~posix_thread()
-{
- if (!joined_)
- ::pthread_detach(thread_);
-}
-
-void posix_thread::join()
-{
- if (!joined_)
- {
- ::pthread_join(thread_, 0);
- joined_ = true;
- }
-}
-
-void posix_thread::start_thread(func_base* arg)
-{
- int error = ::pthread_create(&thread_, 0,
- asio_detail_posix_thread_function, arg);
- if (error != 0)
- {
- delete arg;
- asio::error_code ec(error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "thread");
- }
-}
-
-void* asio_detail_posix_thread_function(void* arg)
-{
- posix_thread::auto_func_base_ptr func = {
- static_cast<posix_thread::func_base*>(arg) };
- func.ptr->run();
- return 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_THREAD_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_tss_ptr.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_tss_ptr.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_tss_ptr.ipp
deleted file mode 100644
index 1e4ac82..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/posix_tss_ptr.ipp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/impl/posix_tss_ptr.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_POSIX_TSS_PTR_IPP
-#define ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_tss_ptr.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void posix_tss_ptr_create(pthread_key_t& key)
-{
- int error = ::pthread_key_create(&key, 0);
- asio::error_code ec(error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "tss");
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_descriptor_service.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_descriptor_service.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_descriptor_service.ipp
deleted file mode 100644
index 23d8e13..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/impl/reactive_descriptor_service.ipp
+++ /dev/null
@@ -1,208 +0,0 @@
-//
-// detail/impl/reactive_descriptor_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-
-#include "asio/error.hpp"
-#include "asio/detail/reactive_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-reactive_descriptor_service::reactive_descriptor_service(
- asio::io_service& io_service)
- : reactor_(asio::use_service<reactor>(io_service))
-{
- reactor_.init_task();
-}
-
-void reactive_descriptor_service::shutdown_service()
-{
-}
-
-void reactive_descriptor_service::construct(
- reactive_descriptor_service::implementation_type& impl)
-{
- impl.descriptor_ = -1;
- impl.state_ = 0;
-}
-
-void reactive_descriptor_service::move_construct(
- reactive_descriptor_service::implementation_type& impl,
- reactive_descriptor_service::implementation_type& other_impl)
-{
- impl.descriptor_ = other_impl.descriptor_;
- other_impl.descriptor_ = -1;
-
- impl.state_ = other_impl.state_;
- other_impl.state_ = 0;
-
- reactor_.move_descriptor(impl.descriptor_,
- impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_descriptor_service::move_assign(
- reactive_descriptor_service::implementation_type& impl,
- reactive_descriptor_service& other_service,
- reactive_descriptor_service::implementation_type& other_impl)
-{
- destroy(impl);
-
- impl.descriptor_ = other_impl.descriptor_;
- other_impl.descriptor_ = -1;
-
- impl.state_ = other_impl.state_;
- other_impl.state_ = 0;
-
- other_service.reactor_.move_descriptor(impl.descriptor_,
- impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_descriptor_service::destroy(
- reactive_descriptor_service::implementation_type& impl)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("descriptor", &impl, "close"));
-
- reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_,
- (impl.state_ & descriptor_ops::possible_dup) == 0);
- }
-
- asio::error_code ignored_ec;
- descriptor_ops::close(impl.descriptor_, impl.state_, ignored_ec);
-}
-
-asio::error_code reactive_descriptor_service::assign(
- reactive_descriptor_service::implementation_type& impl,
- const native_handle_type& native_descriptor, asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- if (int err = reactor_.register_descriptor(
- native_descriptor, impl.reactor_data_))
- {
- ec = asio::error_code(err,
- asio::error::get_system_category());
- return ec;
- }
-
- impl.descriptor_ = native_descriptor;
- impl.state_ = descriptor_ops::possible_dup;
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code reactive_descriptor_service::close(
- reactive_descriptor_service::implementation_type& impl,
- asio::error_code& ec)
-{
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("descriptor", &impl, "close"));
-
- reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_,
- (impl.state_ & descriptor_ops::possible_dup) == 0);
- }
-
- descriptor_ops::close(impl.descriptor_, impl.state_, ec);
-
- // The descriptor is closed by the OS even if close() returns an error.
- //
- // (Actually, POSIX says the state of the descriptor is unspecified. On
- // Linux the descriptor is apparently closed anyway; e.g. see
- // http://lkml.org/lkml/2005/9/10/129
- // We'll just have to assume that other OSes follow the same behaviour.)
- construct(impl);
-
- return ec;
-}
-
-reactive_descriptor_service::native_handle_type
-reactive_descriptor_service::release(
- reactive_descriptor_service::implementation_type& impl)
-{
- native_handle_type descriptor = impl.descriptor_;
-
- if (is_open(impl))
- {
- ASIO_HANDLER_OPERATION(("descriptor", &impl, "release"));
-
- reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_, false);
- construct(impl);
- }
-
- return descriptor;
-}
-
-asio::error_code reactive_descriptor_service::cancel(
- reactive_descriptor_service::implementation_type& impl,
- asio::error_code& ec)
-{
- if (!is_open(impl))
- {
- ec = asio::error::bad_descriptor;
- return ec;
- }
-
- ASIO_HANDLER_OPERATION(("descriptor", &impl, "cancel"));
-
- reactor_.cancel_ops(impl.descriptor_, impl.reactor_data_);
- ec = asio::error_code();
- return ec;
-}
-
-void reactive_descriptor_service::start_op(
- reactive_descriptor_service::implementation_type& impl,
- int op_type, reactor_op* op, bool is_continuation,
- bool is_non_blocking, bool noop)
-{
- if (!noop)
- {
- if ((impl.state_ & descriptor_ops::non_blocking) ||
- descriptor_ops::set_internal_non_blocking(
- impl.descriptor_, impl.state_, true, op->ec_))
- {
- reactor_.start_op(op_type, impl.descriptor_,
- impl.reactor_data_, op, is_continuation, is_non_blocking);
- return;
- }
- }
-
- reactor_.post_immediate_completion(op, is_continuation);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[07/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_until.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_until.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_until.hpp
deleted file mode 100644
index 212b6f5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/read_until.hpp
+++ /dev/null
@@ -1,923 +0,0 @@
-//
-// read_until.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_READ_UNTIL_HPP
-#define ASIO_READ_UNTIL_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_NO_IOSTREAM)
-
-#include <cstddef>
-#include <string>
-#include "asio/async_result.hpp"
-#include "asio/basic_streambuf.hpp"
-#include "asio/detail/regex_fwd.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail
-{
- char (&has_result_type_helper(...))[2];
-
- template <typename T>
- char has_result_type_helper(T*, typename T::result_type* = 0);
-
- template <typename T>
- struct has_result_type
- {
- enum { value = (sizeof((has_result_type_helper)((T*)(0))) == 1) };
- };
-} // namespace detail
-
-/// Type trait used to determine whether a type can be used as a match condition
-/// function with read_until and async_read_until.
-template <typename T>
-struct is_match_condition
-{
-#if defined(GENERATING_DOCUMENTATION)
- /// The value member is true if the type may be used as a match condition.
- static const bool value;
-#else
- enum
- {
- value = asio::is_function<
- typename asio::remove_pointer<T>::type>::value
- || detail::has_result_type<T>::value
- };
-#endif
-};
-
-/**
- * @defgroup read_until asio::read_until
- *
- * @brief Read data into a streambuf until it contains a delimiter, matches a
- * regular expression, or a function object indicates a match.
- */
-/*@{*/
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter character.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- *
- * @par Example
- * To read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * asio::read_until(s, b, '\n');
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line); @endcode
- * After the @c read_until operation completes successfully, the buffer @c b
- * contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c read_until operation.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, char delim);
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter character.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter. Returns 0 if an error occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, char delim,
- asio::error_code& ec);
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter string.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- *
- * @par Example
- * To read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * asio::read_until(s, b, "\r\n");
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line); @endcode
- * After the @c read_until operation completes successfully, the buffer @c b
- * contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c read_until operation.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const std::string& delim);
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter string.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter. Returns 0 if an error occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const std::string& delim,
- asio::error_code& ec);
-
-#if defined(ASIO_HAS_BOOST_REGEX) \
- || defined(GENERATING_DOCUMENTATION)
-
-/// Read data into a streambuf until some part of the data it contains matches
-/// a regular expression.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains some data that matches a regular expression.
- * The call will block until one of the following conditions is true:
- *
- * @li A substring of the streambuf's get area matches the regular expression.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains data that
- * matches the regular expression, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param expr The regular expression.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the substring that matches the regular expression.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the regular expression. An
- * application will typically leave that data in the streambuf for a subsequent
- * read_until operation to examine.
- *
- * @par Example
- * To read data into a streambuf until a CR-LF sequence is encountered:
- * @code asio::streambuf b;
- * asio::read_until(s, b, boost::regex("\r\n"));
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line); @endcode
- * After the @c read_until operation completes successfully, the buffer @c b
- * contains the data which matched the regular expression:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * match, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c read_until operation.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
-
-/// Read data into a streambuf until some part of the data it contains matches
-/// a regular expression.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains some data that matches a regular expression.
- * The call will block until one of the following conditions is true:
- *
- * @li A substring of the streambuf's get area matches the regular expression.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains data that
- * matches the regular expression, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param expr The regular expression.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the substring that matches the regular expression. Returns 0 if an error
- * occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the regular expression. An
- * application will typically leave that data in the streambuf for a subsequent
- * read_until operation to examine.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
- asio::error_code& ec);
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
- // || defined(GENERATING_DOCUMENTATION)
-
-/// Read data into a streambuf until a function object indicates a match.
-/**
- * This function is used to read data into the specified streambuf until a
- * user-defined match condition function object, when applied to the data
- * contained in the streambuf, indicates a successful match. The call will
- * block until one of the following conditions is true:
- *
- * @li The match condition function object returns a std::pair where the second
- * element evaluates to true.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the match condition function object already indicates
- * a match, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param match_condition The function object to be called to determine whether
- * a match exists. The signature of the function object must be:
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
- * @endcode
- * where @c iterator represents the type:
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
- * @endcode
- * The iterator parameters @c begin and @c end define the range of bytes to be
- * scanned to determine whether there is a match. The @c first member of the
- * return value is an iterator marking one-past-the-end of the bytes that have
- * been consumed by the match function. This iterator is used to calculate the
- * @c begin parameter for any subsequent invocation of the match condition. The
- * @c second member of the return value is true if a match has been found, false
- * otherwise.
- *
- * @returns The number of bytes in the streambuf's get area that have been fully
- * consumed by the match function.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the function object. An application
- * will typically leave that data in the streambuf for a subsequent
- *
- * @note The default implementation of the @c is_match_condition type trait
- * evaluates to true for function pointers and function objects with a
- * @c result_type typedef. It must be specialised for other user-defined
- * function objects.
- *
- * @par Examples
- * To read data into a streambuf until whitespace is encountered:
- * @code typedef asio::buffers_iterator<
- * asio::streambuf::const_buffers_type> iterator;
- *
- * std::pair<iterator, bool>
- * match_whitespace(iterator begin, iterator end)
- * {
- * iterator i = begin;
- * while (i != end)
- * if (std::isspace(*i++))
- * return std::make_pair(i, true);
- * return std::make_pair(i, false);
- * }
- * ...
- * asio::streambuf b;
- * asio::read_until(s, b, match_whitespace);
- * @endcode
- *
- * To read data into a streambuf until a matching character is found:
- * @code class match_char
- * {
- * public:
- * explicit match_char(char c) : c_(c) {}
- *
- * template <typename Iterator>
- * std::pair<Iterator, bool> operator()(
- * Iterator begin, Iterator end) const
- * {
- * Iterator i = begin;
- * while (i != end)
- * if (c_ == *i++)
- * return std::make_pair(i, true);
- * return std::make_pair(i, false);
- * }
- *
- * private:
- * char c_;
- * };
- *
- * namespace asio {
- * template <> struct is_match_condition<match_char>
- * : public boost::true_type {};
- * } // namespace asio
- * ...
- * asio::streambuf b;
- * asio::read_until(s, b, match_char('a'));
- * @endcode
- */
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
-
-/// Read data into a streambuf until a function object indicates a match.
-/**
- * This function is used to read data into the specified streambuf until a
- * user-defined match condition function object, when applied to the data
- * contained in the streambuf, indicates a successful match. The call will
- * block until one of the following conditions is true:
- *
- * @li The match condition function object returns a std::pair where the second
- * element evaluates to true.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the match condition function object already indicates
- * a match, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param match_condition The function object to be called to determine whether
- * a match exists. The signature of the function object must be:
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
- * @endcode
- * where @c iterator represents the type:
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
- * @endcode
- * The iterator parameters @c begin and @c end define the range of bytes to be
- * scanned to determine whether there is a match. The @c first member of the
- * return value is an iterator marking one-past-the-end of the bytes that have
- * been consumed by the match function. This iterator is used to calculate the
- * @c begin parameter for any subsequent invocation of the match condition. The
- * @c second member of the return value is true if a match has been found, false
- * otherwise.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area that have been fully
- * consumed by the match function. Returns 0 if an error occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the function object. An application
- * will typically leave that data in the streambuf for a subsequent
- *
- * @note The default implementation of the @c is_match_condition type trait
- * evaluates to true for function pointers and function objects with a
- * @c result_type typedef. It must be specialised for other user-defined
- * function objects.
- */
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- MatchCondition match_condition, asio::error_code& ec,
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
-
-/*@}*/
-/**
- * @defgroup async_read_until asio::async_read_until
- *
- * @brief Start an asynchronous operation to read data into a streambuf until it
- * contains a delimiter, matches a regular expression, or a function object
- * indicates a match.
- */
-/*@{*/
-
-/// Start an asynchronous operation to read data into a streambuf until it
-/// contains a specified delimiter.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until the streambuf's get area contains the specified delimiter.
- * The function call always returns immediately. The asynchronous operation
- * will continue until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the streambuf's get area already contains the delimiter, this asynchronous
- * operation completes immediately. The program must ensure that the stream
- * performs no other read operations (such as async_read, async_read_until, the
- * stream's async_read_some function, or any other composed operations that
- * perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read. Ownership of
- * the streambuf is retained by the caller, which must guarantee that it remains
- * valid until the handler is called.
- *
- * @param delim The delimiter character.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // The number of bytes in the streambuf's get
- * // area up to and including the delimiter.
- * // 0 if an error occurred.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond the delimiter. An application will typically
- * leave that data in the streambuf for a subsequent async_read_until operation
- * to examine.
- *
- * @par Example
- * To asynchronously read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * ...
- * void handler(const asio::error_code& e, std::size_t size)
- * {
- * if (!e)
- * {
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line);
- * ...
- * }
- * }
- * ...
- * asio::async_read_until(s, b, '\n', handler); @endcode
- * After the @c async_read_until operation completes successfully, the buffer
- * @c b contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c async_read_until operation.
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- char delim, ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read data into a streambuf until it
-/// contains a specified delimiter.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until the streambuf's get area contains the specified delimiter.
- * The function call always returns immediately. The asynchronous operation
- * will continue until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the streambuf's get area already contains the delimiter, this asynchronous
- * operation completes immediately. The program must ensure that the stream
- * performs no other read operations (such as async_read, async_read_until, the
- * stream's async_read_some function, or any other composed operations that
- * perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read. Ownership of
- * the streambuf is retained by the caller, which must guarantee that it remains
- * valid until the handler is called.
- *
- * @param delim The delimiter string.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // The number of bytes in the streambuf's get
- * // area up to and including the delimiter.
- * // 0 if an error occurred.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond the delimiter. An application will typically
- * leave that data in the streambuf for a subsequent async_read_until operation
- * to examine.
- *
- * @par Example
- * To asynchronously read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * ...
- * void handler(const asio::error_code& e, std::size_t size)
- * {
- * if (!e)
- * {
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line);
- * ...
- * }
- * }
- * ...
- * asio::async_read_until(s, b, "\r\n", handler); @endcode
- * After the @c async_read_until operation completes successfully, the buffer
- * @c b contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c async_read_until operation.
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const std::string& delim,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-#if defined(ASIO_HAS_BOOST_REGEX) \
- || defined(GENERATING_DOCUMENTATION)
-
-/// Start an asynchronous operation to read data into a streambuf until some
-/// part of its data matches a regular expression.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until the streambuf's get area contains some data that matches a
- * regular expression. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li A substring of the streambuf's get area matches the regular expression.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the streambuf's get area already contains data that matches the regular
- * expression, this asynchronous operation completes immediately. The program
- * must ensure that the stream performs no other read operations (such as
- * async_read, async_read_until, the stream's async_read_some function, or any
- * other composed operations that perform reads) until this operation
- * completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read. Ownership of
- * the streambuf is retained by the caller, which must guarantee that it remains
- * valid until the handler is called.
- *
- * @param expr The regular expression.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // The number of bytes in the streambuf's get
- * // area up to and including the substring
- * // that matches the regular. expression.
- * // 0 if an error occurred.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond that which matched the regular expression. An
- * application will typically leave that data in the streambuf for a subsequent
- * async_read_until operation to examine.
- *
- * @par Example
- * To asynchronously read data into a streambuf until a CR-LF sequence is
- * encountered:
- * @code asio::streambuf b;
- * ...
- * void handler(const asio::error_code& e, std::size_t size)
- * {
- * if (!e)
- * {
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line);
- * ...
- * }
- * }
- * ...
- * asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
- * After the @c async_read_until operation completes successfully, the buffer
- * @c b contains the data which matched the regular expression:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * match, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c async_read_until operation.
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
- // || defined(GENERATING_DOCUMENTATION)
-
-/// Start an asynchronous operation to read data into a streambuf until a
-/// function object indicates a match.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until a user-defined match condition function object, when applied
- * to the data contained in the streambuf, indicates a successful match. The
- * function call always returns immediately. The asynchronous operation will
- * continue until one of the following conditions is true:
- *
- * @li The match condition function object returns a std::pair where the second
- * element evaluates to true.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the match condition function object already indicates a match, this
- * asynchronous operation completes immediately. The program must ensure that
- * the stream performs no other read operations (such as async_read,
- * async_read_until, the stream's async_read_some function, or any other
- * composed operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param match_condition The function object to be called to determine whether
- * a match exists. The signature of the function object must be:
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
- * @endcode
- * where @c iterator represents the type:
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
- * @endcode
- * The iterator parameters @c begin and @c end define the range of bytes to be
- * scanned to determine whether there is a match. The @c first member of the
- * return value is an iterator marking one-past-the-end of the bytes that have
- * been consumed by the match function. This iterator is used to calculate the
- * @c begin parameter for any subsequent invocation of the match condition. The
- * @c second member of the return value is true if a match has been found, false
- * otherwise.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * // Result of operation.
- * const asio::error_code& error,
- *
- * // The number of bytes in the streambuf's get
- * // area that have been fully consumed by the
- * // match function. O if an error occurred.
- * std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond that which matched the function object. An
- * application will typically leave that data in the streambuf for a subsequent
- * async_read_until operation to examine.
- *
- * @note The default implementation of the @c is_match_condition type trait
- * evaluates to true for function pointers and function objects with a
- * @c result_type typedef. It must be specialised for other user-defined
- * function objects.
- *
- * @par Examples
- * To asynchronously read data into a streambuf until whitespace is encountered:
- * @code typedef asio::buffers_iterator<
- * asio::streambuf::const_buffers_type> iterator;
- *
- * std::pair<iterator, bool>
- * match_whitespace(iterator begin, iterator end)
- * {
- * iterator i = begin;
- * while (i != end)
- * if (std::isspace(*i++))
- * return std::make_pair(i, true);
- * return std::make_pair(i, false);
- * }
- * ...
- * void handler(const asio::error_code& e, std::size_t size);
- * ...
- * asio::streambuf b;
- * asio::async_read_until(s, b, match_whitespace, handler);
- * @endcode
- *
- * To asynchronously read data into a streambuf until a matching character is
- * found:
- * @code class match_char
- * {
- * public:
- * explicit match_char(char c) : c_(c) {}
- *
- * template <typename Iterator>
- * std::pair<Iterator, bool> operator()(
- * Iterator begin, Iterator end) const
- * {
- * Iterator i = begin;
- * while (i != end)
- * if (c_ == *i++)
- * return std::make_pair(i, true);
- * return std::make_pair(i, false);
- * }
- *
- * private:
- * char c_;
- * };
- *
- * namespace asio {
- * template <> struct is_match_condition<match_char>
- * : public boost::true_type {};
- * } // namespace asio
- * ...
- * void handler(const asio::error_code& e, std::size_t size);
- * ...
- * asio::streambuf b;
- * asio::async_read_until(s, b, match_char('a'), handler);
- * @endcode
- */
-template <typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/read_until.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_READ_UNTIL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/seq_packet_socket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/seq_packet_socket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/seq_packet_socket_service.hpp
deleted file mode 100644
index 688c55a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/seq_packet_socket_service.hpp
+++ /dev/null
@@ -1,380 +0,0 @@
-//
-// seq_packet_socket_service.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_SEQ_PACKET_SOCKET_SERVICE_HPP
-#define ASIO_SEQ_PACKET_SOCKET_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 "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a sequenced packet socket.
-template <typename Protocol>
-class seq_packet_socket_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<
- seq_packet_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
- typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
- typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
- /// The type of a sequenced packet socket implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new sequenced packet socket service for the specified
- /// io_service.
- explicit seq_packet_socket_service(asio::io_service& io_service)
- : asio::detail::service_base<
- seq_packet_socket_service<Protocol> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new sequenced packet socket implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new sequenced packet socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another sequenced packet socket implementation.
- void move_assign(implementation_type& impl,
- seq_packet_socket_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-
- /// Move-construct a new sequenced packet socket implementation from another
- /// protocol type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename seq_packet_socket_service<
- Protocol1>::implementation_type& other_impl,
- typename enable_if<is_convertible<
- Protocol1, Protocol>::value>::type* = 0)
- {
- service_impl_.template converting_move_construct<Protocol1>(
- impl, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a sequenced packet socket implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Open a sequenced packet socket.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (protocol.type() == ASIO_OS_DEF(SOCK_SEQPACKET))
- service_impl_.open(impl, protocol, ec);
- else
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- /// Assign an existing native socket to a sequenced packet socket.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- return service_impl_.assign(impl, protocol, native_socket, ec);
- }
-
- /// Determine whether the socket is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a sequenced packet socket implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native socket implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native socket implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the socket.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.at_mark(impl, ec);
- }
-
- /// Determine the number of bytes available for reading.
- std::size_t available(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.available(impl, ec);
- }
-
- /// Bind the sequenced packet socket to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- return service_impl_.bind(impl, endpoint, ec);
- }
-
- /// Connect the sequenced packet socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- return service_impl_.connect(impl, peer_endpoint, ec);
- }
-
- /// Start an asynchronous connect.
- template <typename ConnectHandler>
- ASIO_INITFN_RESULT_TYPE(ConnectHandler,
- void (asio::error_code))
- async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint,
- ASIO_MOVE_ARG(ConnectHandler) handler)
- {
- detail::async_result_init<
- ConnectHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(ConnectHandler)(handler));
-
- service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
- return init.result.get();
- }
-
- /// Set a socket option.
- template <typename SettableSocketOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSocketOption& option, asio::error_code& ec)
- {
- return service_impl_.set_option(impl, option, ec);
- }
-
- /// Get a socket option.
- template <typename GettableSocketOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSocketOption& option, asio::error_code& ec) const
- {
- return service_impl_.get_option(impl, option, ec);
- }
-
- /// Perform an IO control command on the socket.
- template <typename IoControlCommand>
- asio::error_code io_control(implementation_type& impl,
- IoControlCommand& command, asio::error_code& ec)
- {
- return service_impl_.io_control(impl, command, ec);
- }
-
- /// Gets the non-blocking mode of the socket.
- bool non_blocking(const implementation_type& impl) const
- {
- return service_impl_.non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.non_blocking(impl, mode, ec);
- }
-
- /// Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return service_impl_.native_non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.native_non_blocking(impl, mode, ec);
- }
-
- /// Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.local_endpoint(impl, ec);
- }
-
- /// Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.remote_endpoint(impl, ec);
- }
-
- /// Disable sends or receives on the socket.
- asio::error_code shutdown(implementation_type& impl,
- socket_base::shutdown_type what, asio::error_code& ec)
- {
- return service_impl_.shutdown(impl, what, ec);
- }
-
- /// Send the given data to the peer.
- template <typename ConstBufferSequence>
- std::size_t send(implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return service_impl_.send(impl, buffers, flags, ec);
- }
-
- /// Start an asynchronous send.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_send(impl, buffers, flags, init.handler);
-
- return init.result.get();
- }
-
- /// Receive some data from the peer.
- template <typename MutableBufferSequence>
- std::size_t receive(implementation_type& impl,
- const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, asio::error_code& ec)
- {
- return service_impl_.receive_with_flags(impl,
- buffers, in_flags, out_flags, ec);
- }
-
- /// Start an asynchronous receive.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(implementation_type& impl,
- const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_receive_with_flags(impl,
- buffers, in_flags, out_flags, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port.hpp
deleted file mode 100644
index 3c3010e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// serial_port.hpp
-// ~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_SERIAL_PORT_HPP
-#define ASIO_SERIAL_PORT_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_HAS_SERIAL_PORT) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_serial_port.hpp"
-
-namespace asio {
-
-/// Typedef for the typical usage of a serial port.
-typedef basic_serial_port<> serial_port;
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SERIAL_PORT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_base.hpp
deleted file mode 100644
index ff6d87c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_base.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// serial_port_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_SERIAL_PORT_BASE_HPP
-#define ASIO_SERIAL_PORT_BASE_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_HAS_SERIAL_PORT) \
- || defined(GENERATING_DOCUMENTATION)
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-# include <termios.h>
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/socket_types.hpp"
-#include "asio/error_code.hpp"
-
-#if defined(GENERATING_DOCUMENTATION)
-# define ASIO_OPTION_STORAGE implementation_defined
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# define ASIO_OPTION_STORAGE DCB
-#else
-# define ASIO_OPTION_STORAGE termios
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// The serial_port_base class is used as a base for the basic_serial_port class
-/// template so that we have a common place to define the serial port options.
-class serial_port_base
-{
-public:
- /// Serial port option to permit changing the baud rate.
- /**
- * Implements changing the baud rate for a given serial port.
- */
- class baud_rate
- {
- public:
- explicit baud_rate(unsigned int rate = 0);
- unsigned int value() const;
- ASIO_DECL asio::error_code store(
- ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec) const;
- ASIO_DECL asio::error_code load(
- const ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec);
- private:
- unsigned int value_;
- };
-
- /// Serial port option to permit changing the flow control.
- /**
- * Implements changing the flow control for a given serial port.
- */
- class flow_control
- {
- public:
- enum type { none, software, hardware };
- ASIO_DECL explicit flow_control(type t = none);
- type value() const;
- ASIO_DECL asio::error_code store(
- ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec) const;
- ASIO_DECL asio::error_code load(
- const ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec);
- private:
- type value_;
- };
-
- /// Serial port option to permit changing the parity.
- /**
- * Implements changing the parity for a given serial port.
- */
- class parity
- {
- public:
- enum type { none, odd, even };
- ASIO_DECL explicit parity(type t = none);
- type value() const;
- ASIO_DECL asio::error_code store(
- ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec) const;
- ASIO_DECL asio::error_code load(
- const ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec);
- private:
- type value_;
- };
-
- /// Serial port option to permit changing the number of stop bits.
- /**
- * Implements changing the number of stop bits for a given serial port.
- */
- class stop_bits
- {
- public:
- enum type { one, onepointfive, two };
- ASIO_DECL explicit stop_bits(type t = one);
- type value() const;
- ASIO_DECL asio::error_code store(
- ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec) const;
- ASIO_DECL asio::error_code load(
- const ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec);
- private:
- type value_;
- };
-
- /// Serial port option to permit changing the character size.
- /**
- * Implements changing the character size for a given serial port.
- */
- class character_size
- {
- public:
- ASIO_DECL explicit character_size(unsigned int t = 8);
- unsigned int value() const;
- ASIO_DECL asio::error_code store(
- ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec) const;
- ASIO_DECL asio::error_code load(
- const ASIO_OPTION_STORAGE& storage,
- asio::error_code& ec);
- private:
- unsigned int value_;
- };
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~serial_port_base()
- {
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#undef ASIO_OPTION_STORAGE
-
-#include "asio/impl/serial_port_base.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/serial_port_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SERIAL_PORT_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_service.hpp
deleted file mode 100644
index 8b0d4f4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/serial_port_service.hpp
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// serial_port_service.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_SERIAL_PORT_SERVICE_HPP
-#define ASIO_SERIAL_PORT_SERVICE_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_HAS_SERIAL_PORT) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include <string>
-#include "asio/async_result.hpp"
-#include "asio/detail/reactive_serial_port_service.hpp"
-#include "asio/detail/win_iocp_serial_port_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/serial_port_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a serial port.
-class serial_port_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<serial_port_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_serial_port_service service_impl_type;
-#else
- typedef detail::reactive_serial_port_service service_impl_type;
-#endif
-
-public:
- /// The type of a serial port implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new serial port service for the specified io_service.
- explicit serial_port_service(asio::io_service& io_service)
- : asio::detail::service_base<serial_port_service>(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new serial port implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new serial port implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another serial port implementation.
- void move_assign(implementation_type& impl,
- serial_port_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a serial port implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Open a serial port.
- asio::error_code open(implementation_type& impl,
- const std::string& device, asio::error_code& ec)
- {
- return service_impl_.open(impl, device, ec);
- }
-
- /// Assign an existing native handle to a serial port.
- asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec)
- {
- return service_impl_.assign(impl, handle, ec);
- }
-
- /// Determine whether the handle is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Close a serial port implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native handle implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native handle implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Cancel all asynchronous operations associated with the handle.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Set a serial port option.
- template <typename SettableSerialPortOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSerialPortOption& option, asio::error_code& ec)
- {
- return service_impl_.set_option(impl, option, ec);
- }
-
- /// Get a serial port option.
- template <typename GettableSerialPortOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSerialPortOption& option, asio::error_code& ec) const
- {
- return service_impl_.get_option(impl, option, ec);
- }
-
- /// Send a break sequence to the serial port.
- asio::error_code send_break(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.send_break(impl, ec);
- }
-
- /// Write the given data to the stream.
- template <typename ConstBufferSequence>
- std::size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.write_some(impl, buffers, ec);
- }
-
- /// Start an asynchronous write.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- service_impl_.async_write_some(impl, buffers, init.handler);
-
- return init.result.get();
- }
-
- /// Read some data from the stream.
- template <typename MutableBufferSequence>
- std::size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return service_impl_.read_some(impl, buffers, ec);
- }
-
- /// Start an asynchronous read.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- service_impl_.async_read_some(impl, buffers, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SERIAL_PORT_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set.hpp
deleted file mode 100644
index d1987ba..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// signal_set.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_SIGNAL_SET_HPP
-#define ASIO_SIGNAL_SET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_signal_set.hpp"
-
-namespace asio {
-
-/// Typedef for the typical usage of a signal set.
-typedef basic_signal_set<> signal_set;
-
-} // namespace asio
-
-#endif // ASIO_SIGNAL_SET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set_service.hpp
deleted file mode 100644
index f187ace..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/signal_set_service.hpp
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// signal_set_service.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_SIGNAL_SET_SERVICE_HPP
-#define ASIO_SIGNAL_SET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/detail/signal_set_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a signal set.
-class signal_set_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<signal_set_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
-public:
- /// The type of a signal set implementation.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef detail::signal_set_service::implementation_type implementation_type;
-#endif
-
- /// Construct a new signal set service for the specified io_service.
- explicit signal_set_service(asio::io_service& io_service)
- : asio::detail::service_base<signal_set_service>(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new signal set implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
- /// Destroy a signal set implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Add a signal to a signal_set.
- asio::error_code add(implementation_type& impl,
- int signal_number, asio::error_code& ec)
- {
- return service_impl_.add(impl, signal_number, ec);
- }
-
- /// Remove a signal to a signal_set.
- asio::error_code remove(implementation_type& impl,
- int signal_number, asio::error_code& ec)
- {
- return service_impl_.remove(impl, signal_number, ec);
- }
-
- /// Remove all signals from a signal_set.
- asio::error_code clear(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.clear(impl, ec);
- }
-
- /// Cancel all operations associated with the signal set.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- // Start an asynchronous operation to wait for a signal to be delivered.
- template <typename SignalHandler>
- ASIO_INITFN_RESULT_TYPE(SignalHandler,
- void (asio::error_code, int))
- async_wait(implementation_type& impl,
- ASIO_MOVE_ARG(SignalHandler) handler)
- {
- detail::async_result_init<
- SignalHandler, void (asio::error_code, int)> init(
- ASIO_MOVE_CAST(SignalHandler)(handler));
-
- service_impl_.async_wait(impl, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // Perform any fork-related housekeeping.
- void fork_service(asio::io_service::fork_event event)
- {
- service_impl_.fork_service(event);
- }
-
- // The platform-specific implementation.
- detail::signal_set_service service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SIGNAL_SET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_acceptor_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_acceptor_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_acceptor_service.hpp
deleted file mode 100644
index 62038e5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_acceptor_service.hpp
+++ /dev/null
@@ -1,302 +0,0 @@
-//
-// socket_acceptor_service.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_SOCKET_ACCEPTOR_SERVICE_HPP
-#define ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a socket acceptor.
-template <typename Protocol>
-class socket_acceptor_service
-#if defined(GENERATING_DOCUMENTATION)
- : public asio::io_service::service
-#else
- : public asio::detail::service_base<socket_acceptor_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
- /// The unique service identifier.
- static asio::io_service::id id;
-#endif
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename protocol_type::endpoint endpoint_type;
-
-private:
- // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
- typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
- typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
- typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
- /// The native type of the socket acceptor.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined implementation_type;
-#else
- typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
- /// (Deprecated: Use native_handle_type.) The native acceptor type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_type;
-#else
- typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
- /// The native acceptor type.
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined native_handle_type;
-#else
- typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
- /// Construct a new socket acceptor service for the specified io_service.
- explicit socket_acceptor_service(asio::io_service& io_service)
- : asio::detail::service_base<
- socket_acceptor_service<Protocol> >(io_service),
- service_impl_(io_service)
- {
- }
-
- /// Construct a new socket acceptor implementation.
- void construct(implementation_type& impl)
- {
- service_impl_.construct(impl);
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a new socket acceptor implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- service_impl_.move_construct(impl, other_impl);
- }
-
- /// Move-assign from another socket acceptor implementation.
- void move_assign(implementation_type& impl,
- socket_acceptor_service& other_service,
- implementation_type& other_impl)
- {
- service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
- }
-
- /// Move-construct a new socket acceptor implementation from another protocol
- /// type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename socket_acceptor_service<
- Protocol1>::implementation_type& other_impl,
- typename enable_if<is_convertible<
- Protocol1, Protocol>::value>::type* = 0)
- {
- service_impl_.template converting_move_construct<Protocol1>(
- impl, other_impl);
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destroy a socket acceptor implementation.
- void destroy(implementation_type& impl)
- {
- service_impl_.destroy(impl);
- }
-
- /// Open a new socket acceptor implementation.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- return service_impl_.open(impl, protocol, ec);
- }
-
- /// Assign an existing native acceptor to a socket acceptor.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_acceptor,
- asio::error_code& ec)
- {
- return service_impl_.assign(impl, protocol, native_acceptor, ec);
- }
-
- /// Determine whether the acceptor is open.
- bool is_open(const implementation_type& impl) const
- {
- return service_impl_.is_open(impl);
- }
-
- /// Cancel all asynchronous operations associated with the acceptor.
- asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.cancel(impl, ec);
- }
-
- /// Bind the socket acceptor to the specified local endpoint.
- asio::error_code bind(implementation_type& impl,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- return service_impl_.bind(impl, endpoint, ec);
- }
-
- /// Place the socket acceptor into the state where it will listen for new
- /// connections.
- asio::error_code listen(implementation_type& impl, int backlog,
- asio::error_code& ec)
- {
- return service_impl_.listen(impl, backlog, ec);
- }
-
- /// Close a socket acceptor implementation.
- asio::error_code close(implementation_type& impl,
- asio::error_code& ec)
- {
- return service_impl_.close(impl, ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native acceptor implementation.
- native_type native(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Get the native acceptor implementation.
- native_handle_type native_handle(implementation_type& impl)
- {
- return service_impl_.native_handle(impl);
- }
-
- /// Set a socket option.
- template <typename SettableSocketOption>
- asio::error_code set_option(implementation_type& impl,
- const SettableSocketOption& option, asio::error_code& ec)
- {
- return service_impl_.set_option(impl, option, ec);
- }
-
- /// Get a socket option.
- template <typename GettableSocketOption>
- asio::error_code get_option(const implementation_type& impl,
- GettableSocketOption& option, asio::error_code& ec) const
- {
- return service_impl_.get_option(impl, option, ec);
- }
-
- /// Perform an IO control command on the socket.
- template <typename IoControlCommand>
- asio::error_code io_control(implementation_type& impl,
- IoControlCommand& command, asio::error_code& ec)
- {
- return service_impl_.io_control(impl, command, ec);
- }
-
- /// Gets the non-blocking mode of the acceptor.
- bool non_blocking(const implementation_type& impl) const
- {
- return service_impl_.non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the acceptor.
- asio::error_code non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.non_blocking(impl, mode, ec);
- }
-
- /// Gets the non-blocking mode of the native acceptor implementation.
- bool native_non_blocking(const implementation_type& impl) const
- {
- return service_impl_.native_non_blocking(impl);
- }
-
- /// Sets the non-blocking mode of the native acceptor implementation.
- asio::error_code native_non_blocking(implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- return service_impl_.native_non_blocking(impl, mode, ec);
- }
-
- /// Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- return service_impl_.local_endpoint(impl, ec);
- }
-
- /// Accept a new connection.
- template <typename Protocol1, typename SocketService>
- asio::error_code accept(implementation_type& impl,
- basic_socket<Protocol1, SocketService>& peer,
- endpoint_type* peer_endpoint, asio::error_code& ec,
- typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
- {
- return service_impl_.accept(impl, peer, peer_endpoint, ec);
- }
-
- /// Start an asynchronous accept.
- template <typename Protocol1, typename SocketService, typename AcceptHandler>
- ASIO_INITFN_RESULT_TYPE(AcceptHandler,
- void (asio::error_code))
- async_accept(implementation_type& impl,
- basic_socket<Protocol1, SocketService>& peer,
- endpoint_type* peer_endpoint,
- ASIO_MOVE_ARG(AcceptHandler) handler,
- typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
- {
- detail::async_result_init<
- AcceptHandler, void (asio::error_code)> init(
- ASIO_MOVE_CAST(AcceptHandler)(handler));
-
- service_impl_.async_accept(impl, peer, peer_endpoint, init.handler);
-
- return init.result.get();
- }
-
-private:
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- service_impl_.shutdown_service();
- }
-
- // The platform-specific implementation.
- service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[49/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/cat.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/cat.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/cat.c
deleted file mode 100644
index bee5382..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/cat.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/*
- A a stripped down version of unix's "cat".
- Doesn't deal with any flags for now, will just attempt to read the whole file.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "hdfspp/hdfs_ext.h"
-#include "uriparser2/uriparser2.h"
-#include "common/util_c.h"
-
-#define SCHEME "hdfs"
-#define BUF_SIZE 1048576 //1 MB
-static char input_buffer[BUF_SIZE];
-
-int main(int argc, char** argv) {
-
- char error_text[1024];
- if (argc != 2) {
- fprintf(stderr, "usage: cat [hdfs://[<hostname>:<port>]]/<path-to-file>\n");
- return 1;
- }
-
- URI * uri = NULL;
- const char * uri_path = argv[1];
-
- //Separate check for scheme is required, otherwise uriparser2.h library causes memory issues under valgrind
- const char * scheme_end = strstr(uri_path, "://");
- if (scheme_end) {
- if (strncmp(uri_path, SCHEME, strlen(SCHEME)) != 0) {
- fprintf(stderr, "Scheme %.*s:// is not supported.\n", (int) (scheme_end - uri_path), uri_path);
- return 1;
- } else {
- uri = uri_parse(uri_path);
- }
- }
- if (!uri) {
- fprintf(stderr, "Malformed URI: %s\n", uri_path);
- return 1;
- }
-
- struct hdfsBuilder* builder = hdfsNewBuilder();
- if (uri->host)
- hdfsBuilderSetNameNode(builder, uri->host);
- if (uri->port != 0)
- hdfsBuilderSetNameNodePort(builder, uri->port);
-
- hdfsFS fs = hdfsBuilderConnect(builder);
- if (fs == NULL) {
- hdfsGetLastError(error_text, sizeof(error_text));
- const char * host = uri->host ? uri->host : "<default>";
- int port = uri->port;
- if (port == 0)
- port = 8020;
- fprintf(stderr, "Unable to connect to %s:%d, hdfsConnect returned null.\n%s\n",
- host, port, error_text);
- return 1;
- }
-
- hdfsFile file = hdfsOpenFile(fs, uri->path, 0, 0, 0, 0);
- if (NULL == file) {
- hdfsGetLastError(error_text, sizeof(error_text));
- fprintf(stderr, "Unable to open file %s: %s\n", uri->path, error_text );
- hdfsDisconnect(fs);
- hdfsFreeBuilder(builder);
- return 1;
- }
-
- ssize_t read_bytes_count = 0;
- ssize_t last_read_bytes = 0;
-
- while (0 < (last_read_bytes =
- hdfsPread(fs, file, read_bytes_count, input_buffer, sizeof(input_buffer)))) {
- fwrite(input_buffer, last_read_bytes, 1, stdout);
- read_bytes_count += last_read_bytes;
- }
-
- int res = 0;
- res = hdfsCloseFile(fs, file);
- if (0 != res) {
- hdfsGetLastError(error_text, sizeof(error_text));
- fprintf(stderr, "Error closing file: %s\n", error_text);
- hdfsDisconnect(fs);
- hdfsFreeBuilder(builder);
- return 1;
- }
-
- res = hdfsDisconnect(fs);
- if (0 != res) {
- hdfsGetLastError(error_text, sizeof(error_text));
- fprintf(stderr, "Error disconnecting filesystem: %s", error_text);
- hdfsFreeBuilder(builder);
- return 1;
- }
-
- hdfsFreeBuilder(builder);
- free(uri);
- // Clean up static data and prevent valgrind memory leaks
- ShutdownProtobufLibrary_C();
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/CMakeLists.txt
deleted file mode 100644
index 6276467..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Default LIBHDFSPP_DIR to the default install location. You can override
-# it by add -DLIBHDFSPP_DIR=... to your cmake invocation
-set(LIBHDFSPP_DIR CACHE STRING ${CMAKE_INSTALL_PREFIX})
-
-include_directories( ${LIBHDFSPP_DIR}/include )
-link_directories( ${LIBHDFSPP_DIR}/lib )
-
-add_executable(connect_cancel_c connect_cancel.c)
-target_link_libraries(connect_cancel_c hdfspp_static uriparser2)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/connect_cancel.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/connect_cancel.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/connect_cancel.c
deleted file mode 100644
index f6af6d1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/connect_cancel/connect_cancel.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/*
- Attempt to connect to a cluster and use Control-C to bail out if it takes a while.
- Valid config must be in environment variable $HADOOP_CONF_DIR
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-
-#include "hdfspp/hdfs_ext.h"
-#include "common/util_c.h"
-
-#define ERROR_BUFFER_SIZE 1024
-
-// Global so signal handler can get at it
-hdfsFS fs = NULL;
-
-const char *catch_enter = "In signal handler, going to try and cancel.\n";
-const char *catch_cancel = "hdfsCancelPendingConnect has been canceled in the signal handler.\n";
-const char *catch_exit = "Exiting the signal handler.\n";
-
-// Print to stdout without calling malloc or otherwise indirectly modify userspace state.
-// Write calls to stdout may still interleave with stuff coming from elsewhere.
-static void sighandler_direct_stdout(const char *msg) {
- if(!msg)
- return;
- ssize_t res = write(1 /*posix stdout fd*/, msg, strlen(msg));
- (void)res;
-}
-
-static void sig_catch(int val) {
- // Beware of calling things that aren't reentrant e.g. malloc while in a signal handler.
- sighandler_direct_stdout(catch_enter);
-
- if(fs) {
- hdfsCancelPendingConnection(fs);
- sighandler_direct_stdout(catch_cancel);
- }
- sighandler_direct_stdout(catch_exit);
-}
-
-
-int main(int argc, char** argv) {
- hdfsSetLoggingLevel(HDFSPP_LOG_LEVEL_INFO);
- signal(SIGINT, sig_catch);
-
- char error_text[ERROR_BUFFER_SIZE];
- if (argc != 1) {
- fprintf(stderr, "usage: ./connect_cancel_c\n");
- ShutdownProtobufLibrary_C();
- exit(EXIT_FAILURE);
- }
-
- const char *hdfsconfdir = getenv("HADOOP_CONF_DIR");
- if(!hdfsconfdir) {
- fprintf(stderr, "$HADOOP_CONF_DIR must be set\n");
- ShutdownProtobufLibrary_C();
- exit(EXIT_FAILURE);
- }
-
- struct hdfsBuilder* builder = hdfsNewBuilderFromDirectory(hdfsconfdir);
-
- fs = hdfsAllocateFileSystem(builder);
- if (fs == NULL) {
- hdfsGetLastError(error_text, ERROR_BUFFER_SIZE);
- fprintf(stderr, "hdfsAllocateFileSystem returned null.\n%s\n", error_text);
- hdfsFreeBuilder(builder);
- ShutdownProtobufLibrary_C();
- exit(EXIT_FAILURE);
- }
-
- int connected = hdfsConnectAllocated(fs, builder);
- if (connected != 0) {
- hdfsGetLastError(error_text, ERROR_BUFFER_SIZE);
- fprintf(stderr, "hdfsConnectAllocated errored.\n%s\n", error_text);
- hdfsFreeBuilder(builder);
- ShutdownProtobufLibrary_C();
- exit(EXIT_FAILURE);
- }
-
- hdfsDisconnect(fs);
- hdfsFreeBuilder(builder);
- // Clean up static data and prevent valgrind memory leaks
- ShutdownProtobufLibrary_C();
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/CMakeLists.txt
deleted file mode 100644
index 1849779..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-include_directories( ../../tools )
-
-add_subdirectory(cat)
-add_subdirectory(gendirs)
-add_subdirectory(find)
-add_subdirectory(connect_cancel)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/CMakeLists.txt
deleted file mode 100644
index a5bcf76..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Default LIBHDFSPP_DIR to the default install location. You can override
-# it by add -DLIBHDFSPP_DIR=... to your cmake invocation
-set(LIBHDFSPP_DIR CACHE STRING ${CMAKE_INSTALL_PREFIX})
-
-include_directories( ${LIBHDFSPP_DIR}/include )
-link_directories( ${LIBHDFSPP_DIR}/lib )
-
-add_executable(cat cat.cc)
-target_link_libraries(cat tools_common hdfspp_static)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/cat.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/cat.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/cat.cc
deleted file mode 100644
index 9d400e7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/cat/cat.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/**
- * Unix-like cat tool example.
- *
- * Reads the specified file from HDFS and outputs to stdout.
- *
- * Usage: cat /<path-to-file>
- *
- * Example: cat /dir/file
- *
- * @param path-to-file Absolute path to the file to read.
- *
- **/
-
-#include "hdfspp/hdfspp.h"
-#include <google/protobuf/stubs/common.h>
-#include "tools_common.h"
-
-const std::size_t BUF_SIZE = 1048576; //1 MB
-static char input_buffer[BUF_SIZE];
-
-int main(int argc, char *argv[]) {
- if (argc != 2) {
- std::cerr << "usage: cat /<path-to-file>" << std::endl;
- exit(EXIT_FAILURE);
- }
- std::string path = argv[1];
-
- //Building a URI object from the given uri path
- hdfs::URI uri = hdfs::parse_path_or_exit(path);
-
- std::shared_ptr<hdfs::FileSystem> fs = hdfs::doConnect(uri, false);
- if (!fs) {
- std::cerr << "Could not connect the file system. " << std::endl;
- exit(EXIT_FAILURE);
- }
-
- hdfs::FileHandle *file_raw = nullptr;
- hdfs::Status status = fs->Open(path, &file_raw);
- if (!status.ok()) {
- std::cerr << "Could not open file " << path << ". " << status.ToString() << std::endl;
- exit(EXIT_FAILURE);
- }
- //wrapping file_raw into a unique pointer to guarantee deletion
- std::unique_ptr<hdfs::FileHandle> file(file_raw);
-
- ssize_t total_bytes_read = 0;
- size_t last_bytes_read = 0;
-
- do{
- //Reading file chunks
- status = file->Read(input_buffer, sizeof(input_buffer), &last_bytes_read);
- if(status.ok()) {
- //Writing file chunks to stdout
- fwrite(input_buffer, last_bytes_read, 1, stdout);
- total_bytes_read += last_bytes_read;
- } else {
- if(status.is_invalid_offset()){
- //Reached the end of the file
- break;
- } else {
- std::cerr << "Error reading the file: " << status.ToString() << std::endl;
- exit(EXIT_FAILURE);
- }
- }
- } while (last_bytes_read > 0);
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/CMakeLists.txt
deleted file mode 100644
index e3cc0b5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Default LIBHDFSPP_DIR to the default install location. You can override
-# it by add -DLIBHDFSPP_DIR=... to your cmake invocation
-set(LIBHDFSPP_DIR CACHE STRING ${CMAKE_INSTALL_PREFIX})
-
-include_directories( ${LIBHDFSPP_DIR}/include )
-link_directories( ${LIBHDFSPP_DIR}/lib )
-
-add_executable(connect_cancel connect_cancel.cc)
-target_link_libraries(connect_cancel hdfspp_static)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/connect_cancel.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/connect_cancel.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/connect_cancel.cc
deleted file mode 100644
index 46eef9d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/connect_cancel/connect_cancel.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-
-#include "hdfspp/hdfspp.h"
-#include "common/hdfs_configuration.h"
-#include "common/configuration_loader.h"
-
-#include <google/protobuf/stubs/common.h>
-
-#include <signal.h>
-#include <unistd.h>
-
-#include <thread>
-#include <iostream>
-
-// Simple example of how to cancel an async connect call.
-// Here Control-C (SIGINT) is caught in order to invoke the FS level cancel and
-// properly tear down the process. Valgrind should show no leaked memory on exit
-// when cancel has been called. URI parsing code is omitted and defaultFs from
-// /etc/hadoop/conf or $HADOOP_CONF_DIR is always used.
-
-// Scoped globally to make it simple to reference from the signal handler.
-std::shared_ptr<hdfs::FileSystem> fs;
-
-const std::string catch_enter("In signal handler, going to try and cancel FileSystem::Connect.\n");
-const std::string catch_cancel("FileSystem::Cancel has been canceled in the signal handler.\n");
-const std::string catch_exit("Exiting the signal handler.\n");
-
-// Avoid IO reentrancy issues, see comments in signal handler below.
-// It's possible that the write interleaves with another write call,
-// but it won't corrupt the stack or heap.
-static void sighandler_direct_stdout(const std::string &msg) {
- ssize_t res = ::write(1 /*posix stdout FD*/, msg.data(), msg.size());
- // In production you'd want to check res, but error handling code will
- // need to be fairly application specific if it's going to properly
- // avoid reentrant calls to malloc.
- (void)res;
-}
-
-// Signal handler to make a SIGINT call cancel rather than exit().
-static void sig_catch(int val) {
- (void)val;
- // This is avoiding the tricky bits of signal handling, notably that the
- // underlying string manipulation and IO functions used by the the logger
- // are unlikely to be reentrant.
- //
- // Production code could mask out all logging on handler entry and enable
- // it again on exit; here we just assume it's "good enough" and some
- // (possibly broken) log messages are better than none.
-
- sighandler_direct_stdout(catch_enter);
- if(fs) {
- // This will invoke the callback immediately with an OperationCanceled status
- fs->CancelPendingConnect();
- sighandler_direct_stdout(catch_cancel);
- }
- sighandler_direct_stdout(catch_exit);
-}
-
-
-int main(int arg_token_count, const char **args) {
- (void)args;
- if(arg_token_count != 1) {
- std::cerr << "usage: ./connect_cancel";
- google::protobuf::ShutdownProtobufLibrary();
- exit(EXIT_FAILURE);
- }
-
- // Register signal handle to asynchronously invoke cancel from outside the main thread.
- signal(SIGINT, sig_catch);
-
- // Generic setup/config code much like the other examples.
- hdfs::Options options;
- //Setting the config path to the default: "$HADOOP_CONF_DIR" or "/etc/hadoop/conf"
- hdfs::ConfigurationLoader loader;
- //Loading default config files core-site.xml and hdfs-site.xml from the config path
- hdfs::optional<hdfs::HdfsConfiguration> config = loader.LoadDefaultResources<hdfs::HdfsConfiguration>();
- //TODO: HDFS-9539 - after this is resolved, valid config will always be returned.
- if(config){
- //Loading options from the config
- options = config->GetOptions();
- }
-
-
- // Start an IoService and some worker threads
- std::shared_ptr<hdfs::IoService> service = hdfs::IoService::MakeShared();
- if(nullptr == service) {
- std::cerr << "Unable to create IoService" << std::endl;
- fs.reset();
- // Nasty hack to clean up for valgrind since we don't have the C++17 optional<T>::reset method
- config = decltype(config)();
- google::protobuf::ShutdownProtobufLibrary();
- exit(EXIT_FAILURE);
- }
-
- unsigned int worker_count = service->InitDefaultWorkers();
- if(worker_count < 1) {
- std::cerr << "Unable to create IoService worker threads";
- fs.reset();
- service->Stop();
- config = decltype(config)();
- google::protobuf::ShutdownProtobufLibrary();
- exit(EXIT_FAILURE);
- }
-
- // Set up and connect to the FileSystem
- fs.reset(hdfs::FileSystem::New(service, "", options));
- if(nullptr == fs) {
- std::cerr << "Unable to create FileSystem" << std::endl;
- fs.reset();
- service->Stop();
- config = decltype(config)();
- google::protobuf::ShutdownProtobufLibrary();
- exit(EXIT_FAILURE);
- }
-
- hdfs::Status status = fs->ConnectToDefaultFs();
- if (!status.ok()) {
- if(!options.defaultFS.get_host().empty()){
- std::cerr << "Error connecting to " << options.defaultFS << ". " << status.ToString() << std::endl;
- } else {
- std::cerr << "Error connecting to the cluster: defaultFS is empty. " << status.ToString() << std::endl;
- }
- fs.reset();
- service->Stop();
- config = decltype(config)();
- google::protobuf::ShutdownProtobufLibrary();
- exit(EXIT_FAILURE);
- }
-
- fs.reset();
- service->Stop();
- config = decltype(config)();
- google::protobuf::ShutdownProtobufLibrary();
-
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/CMakeLists.txt
deleted file mode 100644
index c833676..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Default LIBHDFSPP_DIR to the default install location. You can override
-# it by add -DLIBHDFSPP_DIR=... to your cmake invocation
-set(LIBHDFSPP_DIR CACHE STRING ${CMAKE_INSTALL_PREFIX})
-
-include_directories( ${LIBHDFSPP_DIR}/include )
-link_directories( ${LIBHDFSPP_DIR}/lib )
-
-add_executable(find find.cc)
-target_link_libraries(find tools_common hdfspp_static)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/find.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/find.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/find.cc
deleted file mode 100644
index 5373890..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/find/find.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/**
- * A parallel find tool example.
- *
- * Finds all files matching the specified name recursively starting from the
- * specified directory and prints their filepaths. Works either synchronously
- * or asynchronously.
- *
- * Usage: find /<path-to-file> <file-name> <use_async>
- *
- * Example: find /dir?/tree* some?file*name 1
- *
- * @param path-to-file Absolute path at which to begin search, can have wild
- * cards and must be non-blank
- * @param file-name Name to find, can have wild cards and must be non-blank
- * @param use_async If set to 1 it prints out results asynchronously as
- * they arrive. If set to 0 results are printed in one
- * big chunk when it becomes available.
- *
- **/
-
-#include "hdfspp/hdfspp.h"
-#include <google/protobuf/stubs/common.h>
-#include <future>
-#include "tools_common.h"
-
-void SyncFind(std::shared_ptr<hdfs::FileSystem> fs, const std::string &path, const std::string &name){
- std::vector<hdfs::StatInfo> results;
- //Synchronous call to Find
- hdfs::Status stat = fs->Find(path, name, hdfs::FileSystem::GetDefaultFindMaxDepth(), &results);
-
- if (!stat.ok()) {
- std::cerr << "Error: " << stat.ToString() << std::endl;
- }
-
- if(results.empty()){
- std::cout << "Nothing Found" << std::endl;
- } else {
- //Printing out the results
- for (hdfs::StatInfo const& si : results) {
- std::cout << si.full_path << std::endl;
- }
- }
-}
-
-void AsyncFind(std::shared_ptr<hdfs::FileSystem> fs, const std::string &path, const std::string &name){
- std::promise<void> promise;
- std::future<void> future(promise.get_future());
- bool something_found = false;
- hdfs::Status status = hdfs::Status::OK();
-
- /**
- * Keep requesting more until we get the entire listing. Set the promise
- * when we have the entire listing to stop.
- *
- * Find guarantees that the handler will only be called once at a time,
- * so we do not need any locking here
- */
- auto handler = [&promise, &status, &something_found]
- (const hdfs::Status &s, const std::vector<hdfs::StatInfo> & si, bool has_more_results) -> bool {
- //Print result chunks as they arrive
- if(!si.empty()) {
- something_found = true;
- for (hdfs::StatInfo const& s : si) {
- std::cout << s.full_path << std::endl;
- }
- }
- if(!s.ok() && status.ok()){
- //We make sure we set 'status' only on the first error.
- status = s;
- }
- if (!has_more_results) {
- promise.set_value(); //set promise
- return false; //request stop sending results
- }
- return true; //request more results
- };
-
- //Asynchronous call to Find
- fs->Find(path, name, hdfs::FileSystem::GetDefaultFindMaxDepth(), handler);
-
- //block until promise is set
- future.get();
- if(!status.ok()) {
- std::cerr << "Error: " << status.ToString() << std::endl;
- }
- if(!something_found){
- std::cout << "Nothing Found" << std::endl;
- }
-}
-
-int main(int argc, char *argv[]) {
- if (argc != 4) {
- std::cerr << "usage: find /<path-to-file> <file-name> <use_async>" << std::endl;
- exit(EXIT_FAILURE);
- }
-
- std::string path = argv[1];
- std::string name = argv[2];
- bool use_async = (std::stoi(argv[3]) != 0);
-
- //Building a URI object from the given uri path
- hdfs::URI uri = hdfs::parse_path_or_exit(path);
-
- std::shared_ptr<hdfs::FileSystem> fs = hdfs::doConnect(uri, true);
- if (!fs) {
- std::cerr << "Could not connect the file system. " << std::endl;
- exit(EXIT_FAILURE);
- }
-
- if (use_async){
- //Example of Async find
- AsyncFind(fs, path, name);
- } else {
- //Example of Sync find
- SyncFind(fs, path, name);
- }
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/CMakeLists.txt
deleted file mode 100644
index 9bd8631..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Default LIBHDFSPP_DIR to the default install location. You can override
-# it by add -DLIBHDFSPP_DIR=... to your cmake invocation
-set(LIBHDFSPP_DIR CACHE STRING ${CMAKE_INSTALL_PREFIX})
-
-include_directories( ${LIBHDFSPP_DIR}/include )
-link_directories( ${LIBHDFSPP_DIR}/lib )
-
-add_executable(gendirs gendirs.cc)
-target_link_libraries(gendirs tools_common hdfspp_static)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/gendirs.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/gendirs.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/gendirs.cc
deleted file mode 100644
index 35f7be9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/cc/gendirs/gendirs.cc
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/**
- * A recursive directory generator tool.
- *
- * Generates a directory tree with specified depth and fanout starting from
- * a given path. Generation is asynchronous.
- *
- * Usage: gendirs /<path-to-dir> <depth> <fanout>
- *
- * Example: gendirs /dir0 3 10
- *
- * @param path-to-dir Absolute path to the directory tree root where the
- * directory tree will be generated
- * @param depth Depth of the directory tree (number of levels from
- * root to leaves)
- * @param fanout Fanout of each directory (number of sub-directories to
- * be created inside each directory except leaf directories)
- *
- **/
-
-#include "hdfspp/hdfspp.h"
-#include <google/protobuf/stubs/common.h>
-#include <future>
-#include "tools_common.h"
-
-#define DEFAULT_PERMISSIONS 0755
-
-void GenerateDirectories (std::shared_ptr<hdfs::FileSystem> fs, int depth, int level, int fanout, std::string path, std::vector<std::future<hdfs::Status>> & futures) {
- //Level contains our current depth in the directory tree
- if(level < depth) {
- for(int i = 0; i < fanout; i++){
- //Recursive calls to cover all possible paths from the root to the leave nodes
- GenerateDirectories(fs, depth, level+1, fanout, path + "dir" + std::to_string(i) + "/", futures);
- }
- } else {
- //We have reached the leaf nodes and now start making calls to create directories
- //We make a promise which will be set when the call finishes and executes our handler
- auto callstate = std::make_shared<std::promise<hdfs::Status>>();
- //Extract a future from this promise
- std::future<hdfs::Status> future(callstate->get_future());
- //Save this future to the vector of futures which will be used to wait on all promises
- //after the whole recursion is done
- futures.push_back(std::move(future));
- //Create a handler that will be executed when Mkdirs is done
- auto handler = [callstate](const hdfs::Status &s) {
- callstate->set_value(s);
- };
- //Asynchronous call to create this directory along with all missing parent directories
- fs->Mkdirs(path, DEFAULT_PERMISSIONS, true, handler);
- }
-}
-
-int main(int argc, char *argv[]) {
- if (argc != 4) {
- std::cerr << "usage: gendirs /<path-to-dir> <depth> <fanout>" << std::endl;
- exit(EXIT_FAILURE);
- }
-
- std::string path = argv[1];
- int depth = std::stoi(argv[2]);
- int fanout = std::stoi(argv[3]);
-
- //Building a URI object from the given uri path
- hdfs::URI uri = hdfs::parse_path_or_exit(path);
-
- std::shared_ptr<hdfs::FileSystem> fs = hdfs::doConnect(uri, true);
- if (!fs) {
- std::cerr << "Could not connect the file system. " << std::endl;
- exit(EXIT_FAILURE);
- }
-
- /**
- * We do not want the recursion to block on anything, therefore we will be
- * making asynchronous calls recursively, and then just waiting for all
- * the calls to finish.
- *
- * This array of futures will be populated by the recursive function below.
- * Each new asynchronous Mkdirs call will add a future to this vector, and will
- * create a promise, which will only be set when the call was completed and
- * processed. After the whole recursion is complete we will need to wait until
- * all promises are set before we can exit.
- **/
- std::vector<std::future<hdfs::Status>> futures;
-
- GenerateDirectories(fs, depth, 0, fanout, path + "/", futures);
-
- /**
- * We are waiting here until all promises are set, and checking whether
- * the returned statuses contained any errors.
- **/
- for(std::future<hdfs::Status> &fs : futures){
- hdfs::Status status = fs.get();
- if (!status.ok()) {
- std::cerr << "Error: " << status.ToString() << std::endl;
- exit(EXIT_FAILURE);
- }
- }
-
- std::cout << "All done!" << std::endl;
-
- // Clean up static data and prevent valgrind memory leaks
- google::protobuf::ShutdownProtobufLibrary();
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/block_location.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/block_location.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/block_location.h
deleted file mode 100644
index 4d824d6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/block_location.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef HDFSPP_BLOCK_LOCATION_H
-#define HDFSPP_BLOCK_LOCATION_H
-
-namespace hdfs {
-
-class DNInfo {
-public:
- DNInfo() : xfer_port_(-1), info_port_(-1), IPC_port_(-1), info_secure_port_(-1) {}
-
- std::string getHostname() const {
- return hostname_;
- }
-
- void setHostname(const std::string & hostname) {
- this->hostname_ = hostname;
- }
-
- std::string getIPAddr() const {
- return ip_addr_;
- }
-
- void setIPAddr(const std::string & ip_addr) {
- this->ip_addr_ = ip_addr;
- }
-
- std::string getNetworkLocation() const {
- return network_location_;
- }
-
- void setNetworkLocation(const std::string & location) {
- this->network_location_ = location;
- }
-
- int getXferPort() const {
- return xfer_port_;
- }
-
- void setXferPort(int xfer_port) {
- this->xfer_port_ = xfer_port;
- }
-
- int getInfoPort() const {
- return info_port_;
- }
-
- void setInfoPort(int info_port) {
- this->info_port_ = info_port;
- }
-
- int getIPCPort() const {
- return IPC_port_;
- }
-
- void setIPCPort(int IPC_port) {
- this->IPC_port_ = IPC_port;
- }
-
- int getInfoSecurePort() const {
- return info_secure_port_;
- }
-
- void setInfoSecurePort(int info_secure_port) {
- this->info_secure_port_ = info_secure_port;
- }
-private:
- std::string hostname_;
- std::string ip_addr_;
- std::string network_location_;
- int xfer_port_;
- int info_port_;
- int IPC_port_;
- int info_secure_port_;
-};
-
-class BlockLocation {
-public:
- bool isCorrupt() const {
- return corrupt_;
- }
-
- void setCorrupt(bool corrupt) {
- this->corrupt_ = corrupt;
- }
-
- int64_t getLength() const {
- return length_;
- }
-
- void setLength(int64_t length) {
- this->length_ = length;
- }
-
- int64_t getOffset() const {
- return offset_;
- }
-
- void setOffset(int64_t offset) {
- this->offset_ = offset;
- }
-
- const std::vector<DNInfo> & getDataNodes() const {
- return dn_info_;
- }
-
- void setDataNodes(const std::vector<DNInfo> & dn_info) {
- this->dn_info_ = dn_info;
- }
-
-private:
- bool corrupt_;
- int64_t length_;
- int64_t offset_; // Offset of the block in the file
- std::vector<DNInfo> dn_info_; // Info about who stores each block
-};
-
-class FileBlockLocation {
-public:
- uint64_t getFileLength() {
- return fileLength_;
- }
-
- void setFileLength(uint64_t fileLength) {
- this->fileLength_ = fileLength;
- }
-
- bool isLastBlockComplete() const {
- return this->lastBlockComplete_;
- }
-
- void setLastBlockComplete(bool lastBlockComplete) {
- this->lastBlockComplete_ = lastBlockComplete;
- }
-
- bool isUnderConstruction() const {
- return underConstruction_;
- }
-
- void setUnderConstruction(bool underConstruction) {
- this->underConstruction_ = underConstruction;
- }
-
- const std::vector<BlockLocation> & getBlockLocations() const {
- return blockLocations_;
- }
-
- void setBlockLocations(const std::vector<BlockLocation> & blockLocations) {
- this->blockLocations_ = blockLocations;
- }
-private:
- uint64_t fileLength_;
- bool lastBlockComplete_;
- bool underConstruction_;
- std::vector<BlockLocation> blockLocations_;
-};
-
-} // namespace hdfs
-
-
-#endif /* HDFSPP_BLOCK_LOCATION_H */
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/config_parser.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/config_parser.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/config_parser.h
deleted file mode 100644
index e30e2cf..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/config_parser.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_CONFIGPARSER_H_
-#define LIBHDFSPP_CONFIGPARSER_H_
-
-#include "hdfspp/options.h"
-#include "hdfspp/uri.h"
-#include "hdfspp/status.h"
-
-#include <string>
-#include <memory>
-#include <vector>
-
-namespace hdfs {
-
-class ConfigParser {
- public:
- ConfigParser();
- ConfigParser(const std::string& path);
- ConfigParser(const std::vector<std::string>& configDirectories);
- ~ConfigParser();
- ConfigParser(ConfigParser&&);
- ConfigParser& operator=(ConfigParser&&);
-
- bool LoadDefaultResources();
- std::vector<std::pair<std::string, Status> > ValidateResources() const;
-
- // Return false if value couldn't be found or cast to desired type
- bool get_int(const std::string& key, int& outval) const;
- int get_int_or(const std::string& key, const int defaultval) const;
-
- bool get_string(const std::string& key, std::string& outval) const;
- std::string get_string_or(const std::string& key, const std::string& defaultval) const;
-
- bool get_bool(const std::string& key, bool& outval) const;
- bool get_bool_or(const std::string& key, const bool defaultval) const;
-
- bool get_double(const std::string& key, double& outval) const;
- double get_double_or(const std::string& key, const double defaultval) const;
-
- bool get_uri(const std::string& key, URI& outval) const;
- URI get_uri_or(const std::string& key, const URI& defaultval) const;
-
- bool get_options(Options& outval) const;
- Options get_options_or(const Options& defaultval) const;
-
- private:
- class impl;
- std::unique_ptr<impl> pImpl;
-};
-
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/content_summary.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/content_summary.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/content_summary.h
deleted file mode 100644
index 6762a65..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/content_summary.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef HDFSPP_CONTENT_SUMMARY_H_
-#define HDFSPP_CONTENT_SUMMARY_H_
-
-#include <string>
-
-namespace hdfs {
-
-/**
- * Content summary is assumed to be unchanging for the duration of the operation
- */
-struct ContentSummary {
- uint64_t length;
- uint64_t filecount;
- uint64_t directorycount;
- uint64_t quota;
- uint64_t spaceconsumed;
- uint64_t spacequota;
- std::string path;
-
- ContentSummary();
-
- //Converts ContentSummary object to std::string (hdfs_count format)
- std::string str(bool include_quota) const;
-
- //Converts ContentSummary object to std::string (hdfs_du format)
- std::string str_du() const;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/events.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/events.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/events.h
deleted file mode 100644
index 83c0deb..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/events.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef HDFSPP_EVENTS
-#define HDFSPP_EVENTS
-
-#include "hdfspp/status.h"
-
-#include <functional>
-
-namespace hdfs {
-
-/*
- * Supported event names. These names will stay consistent in libhdfs callbacks.
- *
- * Other events not listed here may be seen, but they are not stable and
- * should not be counted on. May need to be broken up into more components
- * as more events are added.
- */
-
-static constexpr const char * FS_NN_CONNECT_EVENT = "NN::connect";
-static constexpr const char * FS_NN_READ_EVENT = "NN::read";
-static constexpr const char * FS_NN_WRITE_EVENT = "NN::write";
-
-static constexpr const char * FILE_DN_CONNECT_EVENT = "DN::connect";
-static constexpr const char * FILE_DN_READ_EVENT = "DN::read";
-static constexpr const char * FILE_DN_WRITE_EVENT = "DN::write";
-
-
-// NN failover event due to issues with the current NN; might be standby, might be dead.
-// Invokes the fs_event_callback using the nameservice name in the cluster string.
-// The uint64_t value argument holds an address that can be reinterpreted as a const char *
-// and provides the full URI of the node the failover will attempt to connect to next.
-static constexpr const char * FS_NN_FAILOVER_EVENT = "NN::failover";
-
-// Invoked when RpcConnection tries to use an empty set of endpoints to figure out
-// which NN in a HA cluster to connect to.
-static constexpr const char * FS_NN_EMPTY_ENDPOINTS_EVENT = "NN::bad_failover::no_endpoints";
-
-// Invoked prior to determining if failed NN rpc calls should be retried or discarded.
-static constexpr const char * FS_NN_PRE_RPC_RETRY_EVENT = "NN::rpc::get_retry_action";
-
-class event_response {
-public:
- // Helper factories
- // The default ok response; libhdfspp should continue normally
- static event_response make_ok() {
- return event_response(kOk);
- }
- static event_response make_caught_std_exception(const char *what) {
- return event_response(kCaughtStdException, what);
- }
- static event_response make_caught_unknown_exception() {
- return event_response(kCaughtUnknownException);
- }
-
- // High level classification of responses
- enum event_response_type {
- kOk = 0,
- // User supplied callback threw.
- // Std exceptions will copy the what() string
- kCaughtStdException = 1,
- kCaughtUnknownException = 2,
-
- // Responses to be used in testing only
- kTest_Error = 100
- };
-
- event_response_type response_type() { return response_type_; }
-
-private:
- // Use factories to construct for now
- event_response();
- event_response(event_response_type type)
- : response_type_(type)
- {
- if(type == kCaughtUnknownException) {
- status_ = Status::Exception("c++ unknown exception", "");
- }
- }
- event_response(event_response_type type, const char *what)
- : response_type_(type),
- exception_msg_(what==nullptr ? "" : what)
- {
- status_ = Status::Exception("c++ std::exception", exception_msg_.c_str());
- }
-
-
- event_response_type response_type_;
-
- // use to hold what str if event handler threw
- std::string exception_msg_;
-
-
-///////////////////////////////////////////////
-//
-// Testing support
-//
-// The consumer can stimulate errors
-// within libhdfdspp by returning a Status from the callback.
-///////////////////////////////////////////////
-public:
- static event_response test_err(const Status &status) {
- return event_response(status);
- }
-
- Status status() { return status_; }
-
-private:
- event_response(const Status & status) :
- response_type_(event_response_type::kTest_Error), status_(status) {}
-
- Status status_; // To be used with kTest_Error
-};
-
-/* callback signature */
-typedef std::function<event_response (const char * event,
- const char * cluster,
- int64_t value)> fs_event_callback;
-
-typedef std::function<event_response (const char * event,
- const char * cluster,
- const char * file,
- int64_t value)>file_event_callback;
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/fsinfo.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/fsinfo.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/fsinfo.h
deleted file mode 100644
index 103cf13..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/fsinfo.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef HDFSPP_FSINFO_H_
-#define HDFSPP_FSINFO_H_
-
-#include <string>
-
-namespace hdfs {
-
-/**
- * Information that is assumed to be unchanging about a file system for the duration of
- * the operations.
- */
-struct FsInfo {
-
- uint64_t capacity;
- uint64_t used;
- uint64_t remaining;
- uint64_t under_replicated;
- uint64_t corrupt_blocks;
- uint64_t missing_blocks;
- uint64_t missing_repl_one_blocks;
- uint64_t blocks_in_future;
-
- FsInfo();
-
- //Converts FsInfo object to std::string (hdfs_df format)
- std::string str(const std::string fs_name) const;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfs_ext.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfs_ext.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfs_ext.h
deleted file mode 100644
index cdd3d4d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfs_ext.h
+++ /dev/null
@@ -1,394 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_HDFS_HDFSEXT
-#define LIBHDFSPP_HDFS_HDFSEXT
-
-#include <hdfspp/log.h>
-
-/* get typdefs and #defines from libhdfs' hdfs.h to stay consistent */
-#include <hdfs/hdfs.h>
-
-/**
- * Note: The #defines below are copied directly from libhdfs'
- * hdfs.h. LIBHDFS_EXTERNAL gets explicitly #undefed at the
- * end of the file so it must be redefined here.
- **/
-
-#ifdef WIN32
- #ifdef LIBHDFS_DLL_EXPORT
- #define LIBHDFS_EXTERNAL __declspec(dllexport)
- #elif LIBHDFS_DLL_IMPORT
- #define LIBHDFS_EXTERNAL __declspec(dllimport)
- #else
- #define LIBHDFS_EXTERNAL
- #endif
-#else
- #ifdef LIBHDFS_DLL_EXPORT
- #define LIBHDFS_EXTERNAL __attribute__((visibility("default")))
- #elif LIBHDFS_DLL_IMPORT
- #define LIBHDFS_EXTERNAL __attribute__((visibility("default")))
- #else
- #define LIBHDFS_EXTERNAL
- #endif
-#endif
-
-
-/**
- * Keep C bindings that are libhdfs++ specific in here.
- **/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Reads the last error, if any, that happened in this thread
- * into the user supplied buffer.
- * @param buf A chunk of memory with room for the error string.
- * @param len Size of the buffer, if the message is longer than
- * len len-1 bytes of the message will be copied.
- * @return 0 on successful read of the last error, -1 otherwise.
- **/
-LIBHDFS_EXTERNAL
-int hdfsGetLastError(char *buf, int len);
-
-
-/**
- * Cancels operations being made by the FileHandle.
- * Note: Cancel cannot be reversed. This is intended
- * to be used before hdfsClose to avoid waiting for
- * operations to complete.
- **/
-LIBHDFS_EXTERNAL
-int hdfsCancel(hdfsFS fs, hdfsFile file);
-
-/**
- * Create an HDFS builder, using the configuration XML files from the indicated
- * directory. If the directory does not exist, or contains no configuration
- * XML files, a Builder using all default values will be returned.
- *
- * @return The HDFS builder, or NULL on error.
- */
-struct hdfsBuilder *hdfsNewBuilderFromDirectory(const char * configDirectory);
-
-
-/**
- * Get a configuration string from the settings currently read into the builder.
- *
- * @param key The key to find
- * @param val (out param) The value. This will be set to NULL if the
- * key isn't found. You must free this string with
- * hdfsConfStrFree.
- *
- * @return 0 on success; -1 otherwise.
- * Failure to find the key is not an error.
- */
-LIBHDFS_EXTERNAL
-int hdfsBuilderConfGetStr(struct hdfsBuilder *bld, const char *key,
- char **val);
-
-/**
- * Get a configuration integer from the settings currently read into the builder.
- *
- * @param key The key to find
- * @param val (out param) The value. This will NOT be changed if the
- * key isn't found.
- *
- * @return 0 on success; -1 otherwise.
- * Failure to find the key is not an error.
- */
-LIBHDFS_EXTERNAL
-int hdfsBuilderConfGetInt(struct hdfsBuilder *bld, const char *key, int32_t *val);
-
-
-/**
- * Get a configuration long from the settings currently read into the builder.
- *
- * @param key The key to find
- * @param val (out param) The value. This will NOT be changed if the
- * key isn't found.
- *
- * @return 0 on success; -1 otherwise.
- * Failure to find the key is not an error.
- */
-LIBHDFS_EXTERNAL
-int hdfsBuilderConfGetLong(struct hdfsBuilder *bld, const char *key, int64_t *val);
-
-struct hdfsDNInfo {
- const char * ip_address;
- const char * hostname;
- const char * network_location;
- int xfer_port;
- int info_port;
- int IPC_port;
- int info_secure_port;
-};
-
-struct hdfsBlockInfo {
- uint64_t start_offset;
- uint64_t num_bytes;
-
- size_t num_locations;
- struct hdfsDNInfo * locations;
-};
-
-struct hdfsBlockLocations
-{
- uint64_t fileLength;
- int isLastBlockComplete;
- int isUnderConstruction;
-
- size_t num_blocks;
- struct hdfsBlockInfo * blocks;
-};
-
-/**
- * Returns the block information and data nodes associated with a particular file.
- *
- * The hdfsBlockLocations structure will have zero or more hdfsBlockInfo elements,
- * which will have zero or more ip_addr elements indicating which datanodes have
- * each block.
- *
- * @param fs A connected hdfs instance
- * @param path Path of the file to query
- * @param locations The address of an output pointer to contain the block information.
- * On success, this pointer must be later freed with hdfsFreeBlockLocations.
- *
- * @return 0 on success; -1 otherwise.
- * If the file does not exist, -1 will be returned and errno will be set.
- */
-LIBHDFS_EXTERNAL
-int hdfsGetBlockLocations(hdfsFS fs, const char *path, struct hdfsBlockLocations ** locations);
-
-/**
- * Frees up an hdfsBlockLocations pointer allocated by hdfsGetBlockLocations.
- *
- * @param locations The previously-populated pointer allocated by hdfsGetBlockLocations
- * @return 0 on success, -1 on error
- */
-LIBHDFS_EXTERNAL
-int hdfsFreeBlockLocations(struct hdfsBlockLocations * locations);
-
-
-
-
-/**
- * Client can supply a C style function pointer to be invoked any time something
- * is logged. Unlike the C++ logger this will not filter by level or component,
- * it is up to the consumer to throw away messages they don't want.
- *
- * Note: The callback provided must be reentrant, the library does not guarentee
- * that there won't be concurrent calls.
- * Note: Callback does not own the LogData struct. If the client would like to
- * keep one around use hdfsCopyLogData/hdfsFreeLogData.
- **/
-LIBHDFS_EXTERNAL
-void hdfsSetLogFunction(void (*hook)(LogData*));
-
-/**
- * Create a copy of the LogData object passed in and return a pointer to it.
- * Returns null if it was unable to copy/
- **/
-LIBHDFS_EXTERNAL
-LogData *hdfsCopyLogData(const LogData*);
-
-/**
- * Client must call this to dispose of the LogData created by hdfsCopyLogData.
- **/
-LIBHDFS_EXTERNAL
-void hdfsFreeLogData(LogData*);
-
-/**
- * Enable loggind functionality for a component.
- * Return -1 on failure, 0 otherwise.
- **/
-LIBHDFS_EXTERNAL
-int hdfsEnableLoggingForComponent(int component);
-
-/**
- * Disable logging functionality for a component.
- * Return -1 on failure, 0 otherwise.
- **/
-LIBHDFS_EXTERNAL
-int hdfsDisableLoggingForComponent(int component);
-
-/**
- * Set level between trace and error.
- * Return -1 on failure, 0 otherwise.
- **/
-LIBHDFS_EXTERNAL
-int hdfsSetLoggingLevel(int component);
-
-/*
- * Supported event names. These names will stay consistent in libhdfs callbacks.
- *
- * Other events not listed here may be seen, but they are not stable and
- * should not be counted on.
- */
-extern const char * FS_NN_CONNECT_EVENT;
-extern const char * FS_NN_READ_EVENT;
-extern const char * FS_NN_WRITE_EVENT;
-
-extern const char * FILE_DN_CONNECT_EVENT;
-extern const char * FILE_DN_READ_EVENT;
-extern const char * FILE_DN_WRITE_EVENT;
-
-
-#define LIBHDFSPP_EVENT_OK (0)
-#define DEBUG_SIMULATE_ERROR (-1)
-
-typedef int (*libhdfspp_fs_event_callback)(const char * event, const char * cluster,
- int64_t value, int64_t cookie);
-typedef int (*libhdfspp_file_event_callback)(const char * event,
- const char * cluster,
- const char * file,
- int64_t value, int64_t cookie);
-
-/**
- * Registers a callback for the next filesystem connect operation the current
- * thread executes.
- *
- * @param handler A function pointer. Taken as a void* and internally
- * cast into the appropriate type.
- * @param cookie An opaque value that will be passed into the handler; can
- * be used to correlate the handler with some object in the
- * consumer's space.
- **/
-LIBHDFS_EXTERNAL
-int hdfsPreAttachFSMonitor(libhdfspp_fs_event_callback handler, int64_t cookie);
-
-
-/**
- * Registers a callback for the next file open operation the current thread
- * executes.
- *
- * @param fs The filesystem
- * @param handler A function pointer. Taken as a void* and internally
- * cast into the appropriate type.
- * @param cookie An opaque value that will be passed into the handler; can
- * be used to correlate the handler with some object in the
- * consumer's space.
- **/
-LIBHDFS_EXTERNAL
-int hdfsPreAttachFileMonitor(libhdfspp_file_event_callback handler, int64_t cookie);
-
-
-/**
- * Finds file name on the file system. hdfsFreeFileInfo should be called to deallocate memory.
- *
- * @param fs The filesystem (required)
- * @param path Path at which to begin search, can have wild cards (must be non-blank)
- * @param name Name to find, can have wild cards (must be non-blank)
- * @param numEntries Set to the number of files/directories in the result.
- * @return Returns a dynamically-allocated array of hdfsFileInfo
- * objects; NULL on error or empty result.
- * errno is set to non-zero on error or zero on success.
- **/
-LIBHDFS_EXTERNAL
-hdfsFileInfo * hdfsFind(hdfsFS fs, const char* path, const char* name, uint32_t * numEntries);
-
-
-/*****************************************************************************
- * HDFS SNAPSHOT FUNCTIONS
- ****************************************************************************/
-
-/**
- * Creates a snapshot of a snapshottable directory specified by path
- *
- * @param fs The filesystem (required)
- * @param path Path to the directory to be snapshotted (must be non-blank)
- * @param name Name to be given to the created snapshot (may be NULL)
- * @return 0 on success, corresponding errno on failure
- **/
-LIBHDFS_EXTERNAL
-int hdfsCreateSnapshot(hdfsFS fs, const char* path, const char* name);
-
-/**
- * Deletes the directory snapshot specified by path and name
- *
- * @param fs The filesystem (required)
- * @param path Path to the snapshotted directory (must be non-blank)
- * @param name Name of the snapshot to be deleted (must be non-blank)
- * @return 0 on success, corresponding errno on failure
- **/
-LIBHDFS_EXTERNAL
-int hdfsDeleteSnapshot(hdfsFS fs, const char* path, const char* name);
-
-/**
- * Renames the directory snapshot specified by path from old_name to new_name
- *
- * @param fs The filesystem (required)
- * @param path Path to the snapshotted directory (must be non-blank)
- * @param old_name Current name of the snapshot (must be non-blank)
- * @param new_name New name of the snapshot (must be non-blank)
- * @return 0 on success, corresponding errno on failure
- **/
-int hdfsRenameSnapshot(hdfsFS fs, const char* path, const char* old_name, const char* new_name);
-
-/**
- * Allows snapshots to be made on the specified directory
- *
- * @param fs The filesystem (required)
- * @param path Path to the directory to be made snapshottable (must be non-blank)
- * @return 0 on success, corresponding errno on failure
- **/
-LIBHDFS_EXTERNAL
-int hdfsAllowSnapshot(hdfsFS fs, const char* path);
-
-/**
- * Disallows snapshots to be made on the specified directory
- *
- * @param fs The filesystem (required)
- * @param path Path to the directory to be made non-snapshottable (must be non-blank)
- * @return 0 on success, corresponding errno on failure
- **/
-LIBHDFS_EXTERNAL
-int hdfsDisallowSnapshot(hdfsFS fs, const char* path);
-
-/**
- * Create a FileSystem based on the builder but don't connect
- * @param bld Used to populate config options in the same manner as hdfsBuilderConnect.
- * Does not free builder.
- **/
-LIBHDFS_EXTERNAL
-hdfsFS hdfsAllocateFileSystem(struct hdfsBuilder *bld);
-
-/**
- * Connect a FileSystem created with hdfsAllocateFileSystem
- * @param fs A disconnected FS created with hdfsAllocateFileSystem
- * @param bld The same or exact copy of the builder used for Allocate, we still need a few fields.
- * Does not free builder.
- * @return 0 on success, corresponding errno on failure
- **/
-LIBHDFS_EXTERNAL
-int hdfsConnectAllocated(hdfsFS fs, struct hdfsBuilder *bld);
-
-/**
- * Cancel a pending connection on a FileSystem
- * @param fs A fs in the process of connecting using hdfsConnectAllocated in another thread.
- * @return 0 on success, corresponding errno on failure
- **/
-LIBHDFS_EXTERNAL
-int hdfsCancelPendingConnection(hdfsFS fs);
-
-
-#ifdef __cplusplus
-} /* end extern "C" */
-#endif
-
-#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[29/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/config.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/config.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/config.hpp
deleted file mode 100644
index 3b7875e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/config.hpp
+++ /dev/null
@@ -1,895 +0,0 @@
-//
-// detail/config.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_DETAIL_CONFIG_HPP
-#define ASIO_DETAIL_CONFIG_HPP
-
-#if defined(ASIO_STANDALONE)
-# define ASIO_DISABLE_BOOST_ARRAY 1
-# define ASIO_DISABLE_BOOST_ASSERT 1
-# define ASIO_DISABLE_BOOST_BIND 1
-# define ASIO_DISABLE_BOOST_CHRONO 1
-# define ASIO_DISABLE_BOOST_DATE_TIME 1
-# define ASIO_DISABLE_BOOST_LIMITS 1
-# define ASIO_DISABLE_BOOST_REGEX 1
-# define ASIO_DISABLE_BOOST_STATIC_CONSTANT 1
-# define ASIO_DISABLE_BOOST_THROW_EXCEPTION 1
-# define ASIO_DISABLE_BOOST_WORKAROUND 1
-#else // defined(ASIO_STANDALONE)
-# include <boost/config.hpp>
-# include <boost/version.hpp>
-# define ASIO_HAS_BOOST_CONFIG 1
-#endif // defined(ASIO_STANDALONE)
-
-// Default to a header-only implementation. The user must specifically request
-// separate compilation by defining either ASIO_SEPARATE_COMPILATION or
-// ASIO_DYN_LINK (as a DLL/shared library implies separate compilation).
-#if !defined(ASIO_HEADER_ONLY)
-# if !defined(ASIO_SEPARATE_COMPILATION)
-# if !defined(ASIO_DYN_LINK)
-# define ASIO_HEADER_ONLY 1
-# endif // !defined(ASIO_DYN_LINK)
-# endif // !defined(ASIO_SEPARATE_COMPILATION)
-#endif // !defined(ASIO_HEADER_ONLY)
-
-#if defined(ASIO_HEADER_ONLY)
-# define ASIO_DECL inline
-#else // defined(ASIO_HEADER_ONLY)
-# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__)
-// We need to import/export our code only if the user has specifically asked
-// for it by defining ASIO_DYN_LINK.
-# if defined(ASIO_DYN_LINK)
-// Export if this is our own source, otherwise import.
-# if defined(ASIO_SOURCE)
-# define ASIO_DECL __declspec(dllexport)
-# else // defined(ASIO_SOURCE)
-# define ASIO_DECL __declspec(dllimport)
-# endif // defined(ASIO_SOURCE)
-# endif // defined(ASIO_DYN_LINK)
-# endif // defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__)
-#endif // defined(ASIO_HEADER_ONLY)
-
-// If ASIO_DECL isn't defined yet define it now.
-#if !defined(ASIO_DECL)
-# define ASIO_DECL
-#endif // !defined(ASIO_DECL)
-
-// Microsoft Visual C++ detection.
-#if !defined(ASIO_MSVC)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC)
-# define ASIO_MSVC BOOST_MSVC
-# elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
-# define ASIO_MSVC _MSC_VER
-# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC)
-#endif // defined(ASIO_MSVC)
-
-// Clang / libc++ detection.
-#if defined(__clang__)
-# if (__cplusplus >= 201103)
-# if __has_include(<__config>)
-# include <__config>
-# if defined(_LIBCPP_VERSION)
-# define ASIO_HAS_CLANG_LIBCXX 1
-# endif // defined(_LIBCPP_VERSION)
-# endif // __has_include(<__config>)
-# endif // (__cplusplus >= 201103)
-#endif // defined(__clang__)
-
-// Support move construction and assignment on compilers known to allow it.
-#if !defined(ASIO_HAS_MOVE)
-# if !defined(ASIO_DISABLE_MOVE)
-# if defined(__clang__)
-# if __has_feature(__cxx_rvalue_references__)
-# define ASIO_HAS_MOVE 1
-# endif // __has_feature(__cxx_rvalue_references__)
-# endif // defined(__clang__)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_MOVE 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_MOVE 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_MOVE)
-#endif // !defined(ASIO_HAS_MOVE)
-
-// If ASIO_MOVE_CAST isn't defined, and move support is available, define
-// ASIO_MOVE_ARG and ASIO_MOVE_CAST to take advantage of rvalue
-// references and perfect forwarding.
-#if defined(ASIO_HAS_MOVE) && !defined(ASIO_MOVE_CAST)
-# define ASIO_MOVE_ARG(type) type&&
-# define ASIO_MOVE_CAST(type) static_cast<type&&>
-# define ASIO_MOVE_CAST2(type1, type2) static_cast<type1, type2&&>
-#endif // defined(ASIO_HAS_MOVE) && !defined(ASIO_MOVE_CAST)
-
-// If ASIO_MOVE_CAST still isn't defined, default to a C++03-compatible
-// implementation. Note that older g++ and MSVC versions don't like it when you
-// pass a non-member function through a const reference, so for most compilers
-// we'll play it safe and stick with the old approach of passing the handler by
-// value.
-#if !defined(ASIO_MOVE_CAST)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
-# define ASIO_MOVE_ARG(type) const type&
-# else // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
-# define ASIO_MOVE_ARG(type) type
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
-# elif defined(ASIO_MSVC)
-# if (_MSC_VER >= 1400)
-# define ASIO_MOVE_ARG(type) const type&
-# else // (_MSC_VER >= 1400)
-# define ASIO_MOVE_ARG(type) type
-# endif // (_MSC_VER >= 1400)
-# else
-# define ASIO_MOVE_ARG(type) type
-# endif
-# define ASIO_MOVE_CAST(type) static_cast<const type&>
-# define ASIO_MOVE_CAST2(type1, type2) static_cast<const type1, type2&>
-#endif // !defined(ASIO_MOVE_CAST)
-
-// Support variadic templates on compilers known to allow it.
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-# if !defined(ASIO_DISABLE_VARIADIC_TEMPLATES)
-# if defined(__clang__)
-# if __has_feature(__cxx_variadic_templates__)
-# define ASIO_HAS_VARIADIC_TEMPLATES 1
-# endif // __has_feature(__cxx_variadic_templates__)
-# endif // defined(__clang__)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_VARIADIC_TEMPLATES 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# endif // !defined(ASIO_DISABLE_VARIADIC_TEMPLATES)
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-// Support constexpr on compilers known to allow it.
-#if !defined(ASIO_HAS_CONSTEXPR)
-# if !defined(ASIO_DISABLE_CONSTEXPR)
-# if defined(__clang__)
-# if __has_feature(__cxx_constexpr__)
-# define ASIO_HAS_CONSTEXPR 1
-# endif // __has_feature(__cxx_constexr__)
-# endif // defined(__clang__)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_CONSTEXPR 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# endif // !defined(ASIO_DISABLE_CONSTEXPR)
-#endif // !defined(ASIO_HAS_CONSTEXPR)
-#if !defined(ASIO_CONSTEXPR)
-# if defined(ASIO_HAS_CONSTEXPR)
-# define ASIO_CONSTEXPR constexpr
-# else // defined(ASIO_HAS_CONSTEXPR)
-# define ASIO_CONSTEXPR
-# endif // defined(ASIO_HAS_CONSTEXPR)
-#endif // !defined(ASIO_CONSTEXPR)
-
-// Standard library support for system errors.
-#if !defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# if !defined(ASIO_DISABLE_STD_SYSTEM_ERROR)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_SYSTEM_ERROR 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_SYSTEM_ERROR 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_SYSTEM_ERROR 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_SYSTEM_ERROR)
-#endif // !defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-// Compliant C++11 compilers put noexcept specifiers on error_category members.
-#if !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-# if (BOOST_VERSION >= 105300)
-# define ASIO_ERROR_CATEGORY_NOEXCEPT BOOST_NOEXCEPT
-# elif defined(__clang__)
-# if __has_feature(__cxx_noexcept__)
-# define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
-# endif // __has_feature(__cxx_noexcept__)
-# elif defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-# define ASIO_ERROR_CATEGORY_NOEXCEPT
-# endif // !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-#endif // !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-
-// Standard library support for arrays.
-#if !defined(ASIO_HAS_STD_ARRAY)
-# if !defined(ASIO_DISABLE_STD_ARRAY)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_ARRAY 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_ARRAY 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1600)
-# define ASIO_HAS_STD_ARRAY 1
-# endif // (_MSC_VER >= 1600)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_ARRAY)
-#endif // !defined(ASIO_HAS_STD_ARRAY)
-
-// Standard library support for shared_ptr and weak_ptr.
-#if !defined(ASIO_HAS_STD_SHARED_PTR)
-# if !defined(ASIO_DISABLE_STD_SHARED_PTR)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_SHARED_PTR 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_SHARED_PTR 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1600)
-# define ASIO_HAS_STD_SHARED_PTR 1
-# endif // (_MSC_VER >= 1600)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_SHARED_PTR)
-#endif // !defined(ASIO_HAS_STD_SHARED_PTR)
-
-// Standard library support for atomic operations.
-#if !defined(ASIO_HAS_STD_ATOMIC)
-# if !defined(ASIO_DISABLE_STD_ATOMIC)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_ATOMIC 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_ATOMIC 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_ATOMIC 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_ATOMIC)
-#endif // !defined(ASIO_HAS_STD_ATOMIC)
-
-// Standard library support for chrono. Some standard libraries (such as the
-// libstdc++ shipped with gcc 4.6) provide monotonic_clock as per early C++0x
-// drafts, rather than the eventually standardised name of steady_clock.
-#if !defined(ASIO_HAS_STD_CHRONO)
-# if !defined(ASIO_DISABLE_STD_CHRONO)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_CHRONO 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_CHRONO 1
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
-# define ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK 1
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_CHRONO 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_CHRONO)
-#endif // !defined(ASIO_HAS_STD_CHRONO)
-
-// Boost support for chrono.
-#if !defined(ASIO_HAS_BOOST_CHRONO)
-# if !defined(ASIO_DISABLE_BOOST_CHRONO)
-# if (BOOST_VERSION >= 104700)
-# define ASIO_HAS_BOOST_CHRONO 1
-# endif // (BOOST_VERSION >= 104700)
-# endif // !defined(ASIO_DISABLE_BOOST_CHRONO)
-#endif // !defined(ASIO_HAS_BOOST_CHRONO)
-
-// Boost support for the DateTime library.
-#if !defined(ASIO_HAS_BOOST_DATE_TIME)
-# if !defined(ASIO_DISABLE_BOOST_DATE_TIME)
-# define ASIO_HAS_BOOST_DATE_TIME 1
-# endif // !defined(ASIO_DISABLE_BOOST_DATE_TIME)
-#endif // !defined(ASIO_HAS_BOOST_DATE_TIME)
-
-// Standard library support for addressof.
-#if !defined(ASIO_HAS_STD_ADDRESSOF)
-# if !defined(ASIO_DISABLE_STD_ADDRESSOF)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_ADDRESSOF 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_ADDRESSOF 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_ADDRESSOF 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_ADDRESSOF)
-#endif // !defined(ASIO_HAS_STD_ADDRESSOF)
-
-// Standard library support for the function class.
-#if !defined(ASIO_HAS_STD_FUNCTION)
-# if !defined(ASIO_DISABLE_STD_FUNCTION)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_FUNCTION 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_FUNCTION 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_FUNCTION 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_FUNCTION)
-#endif // !defined(ASIO_HAS_STD_FUNCTION)
-
-// Standard library support for type traits.
-#if !defined(ASIO_HAS_STD_TYPE_TRAITS)
-# if !defined(ASIO_DISABLE_STD_TYPE_TRAITS)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_TYPE_TRAITS 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_TYPE_TRAITS 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_TYPE_TRAITS 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_TYPE_TRAITS)
-#endif // !defined(ASIO_HAS_STD_TYPE_TRAITS)
-
-// Standard library support for the cstdint header.
-#if !defined(ASIO_HAS_CSTDINT)
-# if !defined(ASIO_DISABLE_CSTDINT)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_CSTDINT 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_CSTDINT 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_CSTDINT 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_CSTDINT)
-#endif // !defined(ASIO_HAS_CSTDINT)
-
-// Standard library support for the thread class.
-#if !defined(ASIO_HAS_STD_THREAD)
-# if !defined(ASIO_DISABLE_STD_THREAD)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_THREAD 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_THREAD 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_THREAD 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_THREAD)
-#endif // !defined(ASIO_HAS_STD_THREAD)
-
-// Standard library support for the mutex and condition variable classes.
-#if !defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# if !defined(ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
-# if defined(ASIO_HAS_CLANG_LIBCXX)
-# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-# endif // defined(ASIO_HAS_CLANG_LIBCXX)
-# if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
-#endif // !defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-// WinRT target.
-#if !defined(ASIO_WINDOWS_RUNTIME)
-# if defined(__cplusplus_winrt)
-# include <winapifamily.h>
-# if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
-# define ASIO_WINDOWS_RUNTIME 1
-# endif // WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
-# endif // defined(__cplusplus_winrt)
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-// Windows target. Excludes WinRT.
-#if !defined(ASIO_WINDOWS)
-# if !defined(ASIO_WINDOWS_RUNTIME)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
-# define ASIO_WINDOWS 1
-# elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
-# define ASIO_WINDOWS 1
-# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
-# endif // !defined(ASIO_WINDOWS_RUNTIME)
-#endif // !defined(ASIO_WINDOWS)
-
-// Windows: target OS version.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-# pragma message( \
- "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\
- "- add -D_WIN32_WINNT=0x0501 to the compiler command line; or\n"\
- "- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.\n"\
- "Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).")
-# else // defined(_MSC_VER) || defined(__BORLANDC__)
-# warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.
-# warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line.
-# warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
-# endif // defined(_MSC_VER) || defined(__BORLANDC__)
-# define _WIN32_WINNT 0x0501
-# endif // !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
-# if defined(_MSC_VER)
-# if defined(_WIN32) && !defined(WIN32)
-# if !defined(_WINSOCK2API_)
-# define WIN32 // Needed for correct types in winsock2.h
-# else // !defined(_WINSOCK2API_)
-# error Please define the macro WIN32 in your compiler options
-# endif // !defined(_WINSOCK2API_)
-# endif // defined(_WIN32) && !defined(WIN32)
-# endif // defined(_MSC_VER)
-# if defined(__BORLANDC__)
-# if defined(__WIN32__) && !defined(WIN32)
-# if !defined(_WINSOCK2API_)
-# define WIN32 // Needed for correct types in winsock2.h
-# else // !defined(_WINSOCK2API_)
-# error Please define the macro WIN32 in your compiler options
-# endif // !defined(_WINSOCK2API_)
-# endif // defined(__WIN32__) && !defined(WIN32)
-# endif // defined(__BORLANDC__)
-# if defined(__CYGWIN__)
-# if !defined(__USE_W32_SOCKETS)
-# error You must add -D__USE_W32_SOCKETS to your compiler options.
-# endif // !defined(__USE_W32_SOCKETS)
-# endif // defined(__CYGWIN__)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Windows: minimise header inclusion.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(ASIO_NO_WIN32_LEAN_AND_MEAN)
-# if !defined(WIN32_LEAN_AND_MEAN)
-# define WIN32_LEAN_AND_MEAN
-# endif // !defined(WIN32_LEAN_AND_MEAN)
-# endif // !defined(ASIO_NO_WIN32_LEAN_AND_MEAN)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Windows: suppress definition of "min" and "max" macros.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(ASIO_NO_NOMINMAX)
-# if !defined(NOMINMAX)
-# define NOMINMAX 1
-# endif // !defined(NOMINMAX)
-# endif // !defined(ASIO_NO_NOMINMAX)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Windows: IO Completion Ports.
-#if !defined(ASIO_HAS_IOCP)
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
-# if !defined(UNDER_CE)
-# if !defined(ASIO_DISABLE_IOCP)
-# define ASIO_HAS_IOCP 1
-# endif // !defined(ASIO_DISABLE_IOCP)
-# endif // !defined(UNDER_CE)
-# endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-#endif // !defined(ASIO_HAS_IOCP)
-
-// Linux: epoll, eventfd and timerfd.
-#if defined(__linux__)
-# include <linux/version.h>
-# if !defined(ASIO_HAS_EPOLL)
-# if !defined(ASIO_DISABLE_EPOLL)
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
-# define ASIO_HAS_EPOLL 1
-# endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
-# endif // !defined(ASIO_DISABLE_EPOLL)
-# endif // !defined(ASIO_HAS_EPOLL)
-# if !defined(ASIO_HAS_EVENTFD)
-# if !defined(ASIO_DISABLE_EVENTFD)
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
-# define ASIO_HAS_EVENTFD 1
-# endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
-# endif // !defined(ASIO_DISABLE_EVENTFD)
-# endif // !defined(ASIO_HAS_EVENTFD)
-# if !defined(ASIO_HAS_TIMERFD)
-# if defined(ASIO_HAS_EPOLL)
-# if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
-# define ASIO_HAS_TIMERFD 1
-# endif // (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
-# endif // defined(ASIO_HAS_EPOLL)
-# endif // !defined(ASIO_HAS_TIMERFD)
-#endif // defined(__linux__)
-
-// Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue.
-#if (defined(__MACH__) && defined(__APPLE__)) \
- || defined(__FreeBSD__) \
- || defined(__NetBSD__) \
- || defined(__OpenBSD__)
-# if !defined(ASIO_HAS_KQUEUE)
-# if !defined(ASIO_DISABLE_KQUEUE)
-# define ASIO_HAS_KQUEUE 1
-# endif // !defined(ASIO_DISABLE_KQUEUE)
-# endif // !defined(ASIO_HAS_KQUEUE)
-#endif // (defined(__MACH__) && defined(__APPLE__))
- // || defined(__FreeBSD__)
- // || defined(__NetBSD__)
- // || defined(__OpenBSD__)
-
-// Solaris: /dev/poll.
-#if defined(__sun)
-# if !defined(ASIO_HAS_DEV_POLL)
-# if !defined(ASIO_DISABLE_DEV_POLL)
-# define ASIO_HAS_DEV_POLL 1
-# endif // !defined(ASIO_DISABLE_DEV_POLL)
-# endif // !defined(ASIO_HAS_DEV_POLL)
-#endif // defined(__sun)
-
-// Serial ports.
-#if !defined(ASIO_HAS_SERIAL_PORT)
-# if defined(ASIO_HAS_IOCP) \
- || !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-# if !defined(__SYMBIAN32__)
-# if !defined(ASIO_DISABLE_SERIAL_PORT)
-# define ASIO_HAS_SERIAL_PORT 1
-# endif // !defined(ASIO_DISABLE_SERIAL_PORT)
-# endif // !defined(__SYMBIAN32__)
-# endif // defined(ASIO_HAS_IOCP)
- // || !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-#endif // !defined(ASIO_HAS_SERIAL_PORT)
-
-// Windows: stream handles.
-#if !defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-# if !defined(ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
-# if defined(ASIO_HAS_IOCP)
-# define ASIO_HAS_WINDOWS_STREAM_HANDLE 1
-# endif // defined(ASIO_HAS_IOCP)
-# endif // !defined(ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
-#endif // !defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-
-// Windows: random access handles.
-#if !defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-# if !defined(ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
-# if defined(ASIO_HAS_IOCP)
-# define ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE 1
-# endif // defined(ASIO_HAS_IOCP)
-# endif // !defined(ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
-#endif // !defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-
-// Windows: object handles.
-#if !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-# if !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(UNDER_CE)
-# define ASIO_HAS_WINDOWS_OBJECT_HANDLE 1
-# endif // !defined(UNDER_CE)
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
-#endif // !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-// Windows: OVERLAPPED wrapper.
-#if !defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
-# if !defined(ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
-# if defined(ASIO_HAS_IOCP)
-# define ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1
-# endif // defined(ASIO_HAS_IOCP)
-# endif // !defined(ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
-#endif // !defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
-
-// POSIX: stream-oriented file descriptors.
-#if !defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-# if !defined(ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
-# if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-# define ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1
-# endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
-#endif // !defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-
-// UNIX domain sockets.
-#if !defined(ASIO_HAS_LOCAL_SOCKETS)
-# if !defined(ASIO_DISABLE_LOCAL_SOCKETS)
-# if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-# define ASIO_HAS_LOCAL_SOCKETS 1
-# endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_LOCAL_SOCKETS)
-#endif // !defined(ASIO_HAS_LOCAL_SOCKETS)
-
-// Can use sigaction() instead of signal().
-#if !defined(ASIO_HAS_SIGACTION)
-# if !defined(ASIO_DISABLE_SIGACTION)
-# if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-# define ASIO_HAS_SIGACTION 1
-# endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_SIGACTION)
-#endif // !defined(ASIO_HAS_SIGACTION)
-
-// Can use signal().
-#if !defined(ASIO_HAS_SIGNAL)
-# if !defined(ASIO_DISABLE_SIGNAL)
-# if !defined(UNDER_CE)
-# define ASIO_HAS_SIGNAL 1
-# endif // !defined(UNDER_CE)
-# endif // !defined(ASIO_DISABLE_SIGNAL)
-#endif // !defined(ASIO_HAS_SIGNAL)
-
-// Whether standard iostreams are disabled.
-#if !defined(ASIO_NO_IOSTREAM)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_IOSTREAM)
-# define ASIO_NO_IOSTREAM 1
-# endif // !defined(BOOST_NO_IOSTREAM)
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-// Whether exception handling is disabled.
-#if !defined(ASIO_NO_EXCEPTIONS)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_EXCEPTIONS)
-# define ASIO_NO_EXCEPTIONS 1
-# endif // !defined(BOOST_NO_EXCEPTIONS)
-#endif // !defined(ASIO_NO_EXCEPTIONS)
-
-// Whether the typeid operator is supported.
-#if !defined(ASIO_NO_TYPEID)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_TYPEID)
-# define ASIO_NO_TYPEID 1
-# endif // !defined(BOOST_NO_TYPEID)
-#endif // !defined(ASIO_NO_TYPEID)
-
-// On POSIX (and POSIX-like) platforms we need to include unistd.h in order to
-// get access to the various platform feature macros, e.g. to be able to test
-// for threads support.
-#if !defined(ASIO_HAS_UNISTD_H)
-# if !defined(ASIO_HAS_BOOST_CONFIG)
-# if defined(unix) \
- || defined(__unix) \
- || defined(_XOPEN_SOURCE) \
- || defined(_POSIX_SOURCE) \
- || (defined(__MACH__) && defined(__APPLE__)) \
- || defined(__FreeBSD__) \
- || defined(__NetBSD__) \
- || defined(__OpenBSD__) \
- || defined(__linux__)
-# define ASIO_HAS_UNISTD_H 1
-# endif
-# endif // !defined(ASIO_HAS_BOOST_CONFIG)
-#endif // !defined(ASIO_HAS_UNISTD_H)
-#if defined(ASIO_HAS_UNISTD_H)
-# include <unistd.h>
-#endif // defined(ASIO_HAS_UNISTD_H)
-
-// Threads.
-#if !defined(ASIO_HAS_THREADS)
-# if !defined(ASIO_DISABLE_THREADS)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
-# define ASIO_HAS_THREADS 1
-# elif defined(_MSC_VER) && defined(_MT)
-# define ASIO_HAS_THREADS 1
-# elif defined(__BORLANDC__) && defined(__MT__)
-# define ASIO_HAS_THREADS 1
-# elif defined(_POSIX_THREADS)
-# define ASIO_HAS_THREADS 1
-# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
-# endif // !defined(ASIO_DISABLE_THREADS)
-#endif // !defined(ASIO_HAS_THREADS)
-
-// POSIX threads.
-#if !defined(ASIO_HAS_PTHREADS)
-# if defined(ASIO_HAS_THREADS)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
-# define ASIO_HAS_PTHREADS 1
-# elif defined(_POSIX_THREADS)
-# define ASIO_HAS_PTHREADS 1
-# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
-# endif // defined(ASIO_HAS_THREADS)
-#endif // !defined(ASIO_HAS_PTHREADS)
-
-// Helper to prevent macro expansion.
-#define ASIO_PREVENT_MACRO_SUBSTITUTION
-
-// Helper to define in-class constants.
-#if !defined(ASIO_STATIC_CONSTANT)
-# if !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT)
-# define ASIO_STATIC_CONSTANT(type, assignment) \
- BOOST_STATIC_CONSTANT(type, assignment)
-# else // !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT)
-# define ASIO_STATIC_CONSTANT(type, assignment) \
- static const type assignment
-# endif // !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT)
-#endif // !defined(ASIO_STATIC_CONSTANT)
-
-// Boost array library.
-#if !defined(ASIO_HAS_BOOST_ARRAY)
-# if !defined(ASIO_DISABLE_BOOST_ARRAY)
-# define ASIO_HAS_BOOST_ARRAY 1
-# endif // !defined(ASIO_DISABLE_BOOST_ARRAY)
-#endif // !defined(ASIO_HAS_BOOST_ARRAY)
-
-// Boost assert macro.
-#if !defined(ASIO_HAS_BOOST_ASSERT)
-# if !defined(ASIO_DISABLE_BOOST_ASSERT)
-# define ASIO_HAS_BOOST_ASSERT 1
-# endif // !defined(ASIO_DISABLE_BOOST_ASSERT)
-#endif // !defined(ASIO_HAS_BOOST_ASSERT)
-
-// Boost limits header.
-#if !defined(ASIO_HAS_BOOST_LIMITS)
-# if !defined(ASIO_DISABLE_BOOST_LIMITS)
-# define ASIO_HAS_BOOST_LIMITS 1
-# endif // !defined(ASIO_DISABLE_BOOST_LIMITS)
-#endif // !defined(ASIO_HAS_BOOST_LIMITS)
-
-// Boost throw_exception function.
-#if !defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-# if !defined(ASIO_DISABLE_BOOST_THROW_EXCEPTION)
-# define ASIO_HAS_BOOST_THROW_EXCEPTION 1
-# endif // !defined(ASIO_DISABLE_BOOST_THROW_EXCEPTION)
-#endif // !defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-
-// Boost regex library.
-#if !defined(ASIO_HAS_BOOST_REGEX)
-# if !defined(ASIO_DISABLE_BOOST_REGEX)
-# define ASIO_HAS_BOOST_REGEX 1
-# endif // !defined(ASIO_DISABLE_BOOST_REGEX)
-#endif // !defined(ASIO_HAS_BOOST_REGEX)
-
-// Boost bind function.
-#if !defined(ASIO_HAS_BOOST_BIND)
-# if !defined(ASIO_DISABLE_BOOST_BIND)
-# define ASIO_HAS_BOOST_BIND 1
-# endif // !defined(ASIO_DISABLE_BOOST_BIND)
-#endif // !defined(ASIO_HAS_BOOST_BIND)
-
-// Boost's BOOST_WORKAROUND macro.
-#if !defined(ASIO_HAS_BOOST_WORKAROUND)
-# if !defined(ASIO_DISABLE_BOOST_WORKAROUND)
-# define ASIO_HAS_BOOST_WORKAROUND 1
-# endif // !defined(ASIO_DISABLE_BOOST_WORKAROUND)
-#endif // !defined(ASIO_HAS_BOOST_WORKAROUND)
-
-// Microsoft Visual C++'s secure C runtime library.
-#if !defined(ASIO_HAS_SECURE_RTL)
-# if !defined(ASIO_DISABLE_SECURE_RTL)
-# if defined(ASIO_MSVC) \
- && (ASIO_MSVC >= 1400) \
- && !defined(UNDER_CE)
-# define ASIO_HAS_SECURE_RTL 1
-# endif // defined(ASIO_MSVC)
- // && (ASIO_MSVC >= 1400)
- // && !defined(UNDER_CE)
-# endif // !defined(ASIO_DISABLE_SECURE_RTL)
-#endif // !defined(ASIO_HAS_SECURE_RTL)
-
-// Handler hooking. Disabled for ancient Borland C++ and gcc compilers.
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-# if !defined(ASIO_DISABLE_HANDLER_HOOKS)
-# if defined(__GNUC__)
-# if (__GNUC__ >= 3)
-# define ASIO_HAS_HANDLER_HOOKS 1
-# endif // (__GNUC__ >= 3)
-# elif !defined(__BORLANDC__)
-# define ASIO_HAS_HANDLER_HOOKS 1
-# endif // !defined(__BORLANDC__)
-# endif // !defined(ASIO_DISABLE_HANDLER_HOOKS)
-#endif // !defined(ASIO_HAS_HANDLER_HOOKS)
-
-// Support for the __thread keyword extension.
-#if !defined(ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
-# if defined(__linux__)
-# if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-# if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
-# if !defined(__INTEL_COMPILER) && !defined(__ICL)
-# define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
-# define ASIO_THREAD_KEYWORD __thread
-# elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
-# define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
-# endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
-# endif // ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
-# endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-# endif // defined(__linux__)
-# if defined(ASIO_MSVC) && defined(ASIO_WINDOWS_RUNTIME)
-# if (_MSC_VER >= 1700)
-# define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
-# define ASIO_THREAD_KEYWORD __declspec(thread)
-# endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC) && defined(ASIO_WINDOWS_RUNTIME)
-#endif // !defined(ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
-#if !defined(ASIO_THREAD_KEYWORD)
-# define ASIO_THREAD_KEYWORD __thread
-#endif // !defined(ASIO_THREAD_KEYWORD)
-
-// Support for POSIX ssize_t typedef.
-#if !defined(ASIO_DISABLE_SSIZE_T)
-# if defined(__linux__) \
- || (defined(__MACH__) && defined(__APPLE__))
-# define ASIO_HAS_SSIZE_T 1
-# endif // defined(__linux__)
- // || (defined(__MACH__) && defined(__APPLE__))
-#endif // !defined(ASIO_DISABLE_SSIZE_T)
-
-#endif // ASIO_DETAIL_CONFIG_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/consuming_buffers.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/consuming_buffers.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/consuming_buffers.hpp
deleted file mode 100644
index 49121e2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/consuming_buffers.hpp
+++ /dev/null
@@ -1,292 +0,0 @@
-//
-// detail/consuming_buffers.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_DETAIL_CONSUMING_BUFFERS_HPP
-#define ASIO_DETAIL_CONSUMING_BUFFERS_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 <iterator>
-#include "asio/buffer.hpp"
-#include "asio/detail/limits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// A proxy iterator for a sub-range in a list of buffers.
-template <typename Buffer, typename Buffer_Iterator>
-class consuming_buffers_iterator
-{
-public:
- /// The type used for the distance between two iterators.
- typedef std::ptrdiff_t difference_type;
-
- /// The type of the value pointed to by the iterator.
- typedef Buffer value_type;
-
- /// The type of the result of applying operator->() to the iterator.
- typedef const Buffer* pointer;
-
- /// The type of the result of applying operator*() to the iterator.
- typedef const Buffer& reference;
-
- /// The iterator category.
- typedef std::forward_iterator_tag iterator_category;
-
- // Default constructor creates an end iterator.
- consuming_buffers_iterator()
- : at_end_(true)
- {
- }
-
- // Construct with a buffer for the first entry and an iterator
- // range for the remaining entries.
- consuming_buffers_iterator(bool at_end, const Buffer& first,
- Buffer_Iterator begin_remainder, Buffer_Iterator end_remainder,
- std::size_t max_size)
- : at_end_(max_size > 0 ? at_end : true),
- first_(buffer(first, max_size)),
- begin_remainder_(begin_remainder),
- end_remainder_(end_remainder),
- offset_(0),
- max_size_(max_size)
- {
- }
-
- // Dereference an iterator.
- const Buffer& operator*() const
- {
- return dereference();
- }
-
- // Dereference an iterator.
- const Buffer* operator->() const
- {
- return &dereference();
- }
-
- // Increment operator (prefix).
- consuming_buffers_iterator& operator++()
- {
- increment();
- return *this;
- }
-
- // Increment operator (postfix).
- consuming_buffers_iterator operator++(int)
- {
- consuming_buffers_iterator tmp(*this);
- ++*this;
- return tmp;
- }
-
- // Test two iterators for equality.
- friend bool operator==(const consuming_buffers_iterator& a,
- const consuming_buffers_iterator& b)
- {
- return a.equal(b);
- }
-
- // Test two iterators for inequality.
- friend bool operator!=(const consuming_buffers_iterator& a,
- const consuming_buffers_iterator& b)
- {
- return !a.equal(b);
- }
-
-private:
- void increment()
- {
- if (!at_end_)
- {
- if (begin_remainder_ == end_remainder_
- || offset_ + buffer_size(first_) >= max_size_)
- {
- at_end_ = true;
- }
- else
- {
- offset_ += buffer_size(first_);
- first_ = buffer(*begin_remainder_++, max_size_ - offset_);
- }
- }
- }
-
- bool equal(const consuming_buffers_iterator& other) const
- {
- if (at_end_ && other.at_end_)
- return true;
- return !at_end_ && !other.at_end_
- && buffer_cast<const void*>(first_)
- == buffer_cast<const void*>(other.first_)
- && buffer_size(first_) == buffer_size(other.first_)
- && begin_remainder_ == other.begin_remainder_
- && end_remainder_ == other.end_remainder_;
- }
-
- const Buffer& dereference() const
- {
- return first_;
- }
-
- bool at_end_;
- Buffer first_;
- Buffer_Iterator begin_remainder_;
- Buffer_Iterator end_remainder_;
- std::size_t offset_;
- std::size_t max_size_;
-};
-
-// A proxy for a sub-range in a list of buffers.
-template <typename Buffer, typename Buffers>
-class consuming_buffers
-{
-public:
- // The type for each element in the list of buffers.
- typedef Buffer value_type;
-
- // A forward-only iterator type that may be used to read elements.
- typedef consuming_buffers_iterator<Buffer, typename Buffers::const_iterator>
- const_iterator;
-
- // Construct to represent the entire list of buffers.
- consuming_buffers(const Buffers& buffers)
- : buffers_(buffers),
- at_end_(buffers_.begin() == buffers_.end()),
- begin_remainder_(buffers_.begin()),
- max_size_((std::numeric_limits<std::size_t>::max)())
- {
- if (!at_end_)
- {
- first_ = *buffers_.begin();
- ++begin_remainder_;
- }
- }
-
- // Copy constructor.
- consuming_buffers(const consuming_buffers& other)
- : buffers_(other.buffers_),
- at_end_(other.at_end_),
- first_(other.first_),
- begin_remainder_(buffers_.begin()),
- max_size_(other.max_size_)
- {
- typename Buffers::const_iterator first = other.buffers_.begin();
- typename Buffers::const_iterator second = other.begin_remainder_;
- std::advance(begin_remainder_, std::distance(first, second));
- }
-
- // Assignment operator.
- consuming_buffers& operator=(const consuming_buffers& other)
- {
- buffers_ = other.buffers_;
- at_end_ = other.at_end_;
- first_ = other.first_;
- begin_remainder_ = buffers_.begin();
- typename Buffers::const_iterator first = other.buffers_.begin();
- typename Buffers::const_iterator second = other.begin_remainder_;
- std::advance(begin_remainder_, std::distance(first, second));
- max_size_ = other.max_size_;
- return *this;
- }
-
- // Get a forward-only iterator to the first element.
- const_iterator begin() const
- {
- return const_iterator(at_end_, first_,
- begin_remainder_, buffers_.end(), max_size_);
- }
-
- // Get a forward-only iterator for one past the last element.
- const_iterator end() const
- {
- return const_iterator();
- }
-
- // Set the maximum size for a single transfer.
- void prepare(std::size_t max_size)
- {
- max_size_ = max_size;
- }
-
- // Consume the specified number of bytes from the buffers.
- void consume(std::size_t size)
- {
- // Remove buffers from the start until the specified size is reached.
- while (size > 0 && !at_end_)
- {
- if (buffer_size(first_) <= size)
- {
- size -= buffer_size(first_);
- if (begin_remainder_ == buffers_.end())
- at_end_ = true;
- else
- first_ = *begin_remainder_++;
- }
- else
- {
- first_ = first_ + size;
- size = 0;
- }
- }
-
- // Remove any more empty buffers at the start.
- while (!at_end_ && buffer_size(first_) == 0)
- {
- if (begin_remainder_ == buffers_.end())
- at_end_ = true;
- else
- first_ = *begin_remainder_++;
- }
- }
-
-private:
- Buffers buffers_;
- bool at_end_;
- Buffer first_;
- typename Buffers::const_iterator begin_remainder_;
- std::size_t max_size_;
-};
-
-// Specialisation for null_buffers to ensure that the null_buffers type is
-// always passed through to the underlying read or write operation.
-template <typename Buffer>
-class consuming_buffers<Buffer, asio::null_buffers>
- : public asio::null_buffers
-{
-public:
- consuming_buffers(const asio::null_buffers&)
- {
- // No-op.
- }
-
- void prepare(std::size_t)
- {
- // No-op.
- }
-
- void consume(std::size_t)
- {
- // No-op.
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_CONSUMING_BUFFERS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/cstdint.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/cstdint.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/cstdint.hpp
deleted file mode 100644
index 897610e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/cstdint.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/cstdint.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_DETAIL_CSTDINT_HPP
-#define ASIO_DETAIL_CSTDINT_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_HAS_CSTDINT)
-# include <cstdint>
-#else // defined(ASIO_HAS_CSTDINT)
-# include <boost/cstdint.hpp>
-#endif // defined(ASIO_HAS_CSTDINT)
-
-namespace asio {
-
-#if defined(ASIO_HAS_CSTDINT)
-using std::int16_t;
-using std::uint16_t;
-using std::int32_t;
-using std::uint32_t;
-using std::int64_t;
-using std::uint64_t;
-#else // defined(ASIO_HAS_CSTDINT)
-using boost::int16_t;
-using boost::uint16_t;
-using boost::int32_t;
-using boost::uint32_t;
-using boost::int64_t;
-using boost::uint64_t;
-#endif // defined(ASIO_HAS_CSTDINT)
-
-} // namespace asio
-
-#endif // ASIO_DETAIL_CSTDINT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/date_time_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/date_time_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/date_time_fwd.hpp
deleted file mode 100644
index a8966c9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/date_time_fwd.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// detail/date_time_fwd.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_DETAIL_DATE_TIME_FWD_HPP
-#define ASIO_DETAIL_DATE_TIME_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace boost {
-namespace date_time {
-
-template<class T, class TimeSystem>
-class base_time;
-
-} // namespace date_time
-namespace posix_time {
-
-class ptime;
-
-} // namespace posix_time
-} // namespace boost
-
-#endif // ASIO_DETAIL_DATE_TIME_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/deadline_timer_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/deadline_timer_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/deadline_timer_service.hpp
deleted file mode 100644
index ddffc2e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/deadline_timer_service.hpp
+++ /dev/null
@@ -1,227 +0,0 @@
-//
-// detail/deadline_timer_service.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_DETAIL_DEADLINE_TIMER_SERVICE_HPP
-#define ASIO_DETAIL_DEADLINE_TIMER_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 "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue.hpp"
-#include "asio/detail/timer_scheduler.hpp"
-#include "asio/detail/wait_handler.hpp"
-#include "asio/detail/wait_op.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include <chrono>
-# include <thread>
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-class deadline_timer_service
-{
-public:
- // The time type.
- typedef typename Time_Traits::time_type time_type;
-
- // The duration type.
- typedef typename Time_Traits::duration_type duration_type;
-
- // The implementation type of the timer. This type is dependent on the
- // underlying implementation of the timer service.
- struct implementation_type
- : private asio::detail::noncopyable
- {
- time_type expiry;
- bool might_have_pending_waits;
- typename timer_queue<Time_Traits>::per_timer_data timer_data;
- };
-
- // Constructor.
- deadline_timer_service(asio::io_service& io_service)
- : scheduler_(asio::use_service<timer_scheduler>(io_service))
- {
- scheduler_.init_task();
- scheduler_.add_timer_queue(timer_queue_);
- }
-
- // Destructor.
- ~deadline_timer_service()
- {
- scheduler_.remove_timer_queue(timer_queue_);
- }
-
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- }
-
- // Construct a new timer implementation.
- void construct(implementation_type& impl)
- {
- impl.expiry = time_type();
- impl.might_have_pending_waits = false;
- }
-
- // Destroy a timer implementation.
- void destroy(implementation_type& impl)
- {
- asio::error_code ec;
- cancel(impl, ec);
- }
-
- // Cancel any asynchronous wait operations associated with the timer.
- std::size_t cancel(implementation_type& impl, asio::error_code& ec)
- {
- if (!impl.might_have_pending_waits)
- {
- ec = asio::error_code();
- return 0;
- }
-
- ASIO_HANDLER_OPERATION(("deadline_timer", &impl, "cancel"));
-
- std::size_t count = scheduler_.cancel_timer(timer_queue_, impl.timer_data);
- impl.might_have_pending_waits = false;
- ec = asio::error_code();
- return count;
- }
-
- // Cancels one asynchronous wait operation associated with the timer.
- std::size_t cancel_one(implementation_type& impl,
- asio::error_code& ec)
- {
- if (!impl.might_have_pending_waits)
- {
- ec = asio::error_code();
- return 0;
- }
-
- ASIO_HANDLER_OPERATION(("deadline_timer", &impl, "cancel_one"));
-
- std::size_t count = scheduler_.cancel_timer(
- timer_queue_, impl.timer_data, 1);
- if (count == 0)
- impl.might_have_pending_waits = false;
- ec = asio::error_code();
- return count;
- }
-
- // Get the expiry time for the timer as an absolute time.
- time_type expires_at(const implementation_type& impl) const
- {
- return impl.expiry;
- }
-
- // Set the expiry time for the timer as an absolute time.
- std::size_t expires_at(implementation_type& impl,
- const time_type& expiry_time, asio::error_code& ec)
- {
- std::size_t count = cancel(impl, ec);
- impl.expiry = expiry_time;
- ec = asio::error_code();
- return count;
- }
-
- // Get the expiry time for the timer relative to now.
- duration_type expires_from_now(const implementation_type& impl) const
- {
- return Time_Traits::subtract(expires_at(impl), Time_Traits::now());
- }
-
- // Set the expiry time for the timer relative to now.
- std::size_t expires_from_now(implementation_type& impl,
- const duration_type& expiry_time, asio::error_code& ec)
- {
- return expires_at(impl,
- Time_Traits::add(Time_Traits::now(), expiry_time), ec);
- }
-
- // Perform a blocking wait on the timer.
- void wait(implementation_type& impl, asio::error_code& ec)
- {
- time_type now = Time_Traits::now();
- ec = asio::error_code();
- while (Time_Traits::less_than(now, impl.expiry) && !ec)
- {
- this->do_wait(Time_Traits::to_posix_duration(
- Time_Traits::subtract(impl.expiry, now)), ec);
- now = Time_Traits::now();
- }
- }
-
- // Start an asynchronous wait on the timer.
- template <typename Handler>
- void async_wait(implementation_type& impl, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef wait_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- impl.might_have_pending_waits = true;
-
- ASIO_HANDLER_CREATION((p.p, "deadline_timer", &impl, "async_wait"));
-
- scheduler_.schedule_timer(timer_queue_, impl.expiry, impl.timer_data, p.p);
- p.v = p.p = 0;
- }
-
-private:
- // Helper function to wait given a duration type. The duration type should
- // either be of type boost::posix_time::time_duration, or implement the
- // required subset of its interface.
- template <typename Duration>
- void do_wait(const Duration& timeout, asio::error_code& ec)
- {
-#if defined(ASIO_WINDOWS_RUNTIME)
- std::this_thread::sleep_for(
- std::chrono::seconds(timeout.total_seconds())
- + std::chrono::microseconds(timeout.total_microseconds()));
- ec = asio::error_code();
-#else // defined(ASIO_WINDOWS_RUNTIME)
- ::timeval tv;
- tv.tv_sec = timeout.total_seconds();
- tv.tv_usec = timeout.total_microseconds() % 1000000;
- socket_ops::select(0, 0, 0, 0, &tv, ec);
-#endif // defined(ASIO_WINDOWS_RUNTIME)
- }
-
- // The queue of timers.
- timer_queue<Time_Traits> timer_queue_;
-
- // The object that schedules and executes timers. Usually a reactor.
- timer_scheduler& scheduler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dependent_type.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dependent_type.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dependent_type.hpp
deleted file mode 100644
index a2014cb..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dependent_type.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// detail/dependent_type.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_DETAIL_DEPENDENT_TYPE_HPP
-#define ASIO_DETAIL_DEPENDENT_TYPE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename DependsOn, typename T>
-struct dependent_type
-{
- typedef T type;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_DEPENDENT_TYPE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_ops.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_ops.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_ops.hpp
deleted file mode 100644
index 25bf7c7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_ops.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// detail/descriptor_ops.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_DETAIL_DESCRIPTOR_OPS_HPP
-#define ASIO_DETAIL_DESCRIPTOR_OPS_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_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
-
-#include <cstddef>
-#include "asio/error_code.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace descriptor_ops {
-
-// Descriptor state bits.
-enum
-{
- // The user wants a non-blocking descriptor.
- user_set_non_blocking = 1,
-
- // The descriptor has been set non-blocking.
- internal_non_blocking = 2,
-
- // Helper "state" used to determine whether the descriptor is non-blocking.
- non_blocking = user_set_non_blocking | internal_non_blocking,
-
- // The descriptor may have been dup()-ed.
- possible_dup = 4
-};
-
-typedef unsigned char state_type;
-
-template <typename ReturnType>
-inline ReturnType error_wrapper(ReturnType return_value,
- asio::error_code& ec)
-{
- ec = asio::error_code(errno,
- asio::error::get_system_category());
- return return_value;
-}
-
-ASIO_DECL int open(const char* path, int flags,
- asio::error_code& ec);
-
-ASIO_DECL int close(int d, state_type& state,
- asio::error_code& ec);
-
-ASIO_DECL bool set_user_non_blocking(int d,
- state_type& state, bool value, asio::error_code& ec);
-
-ASIO_DECL bool set_internal_non_blocking(int d,
- state_type& state, bool value, asio::error_code& ec);
-
-typedef iovec buf;
-
-ASIO_DECL std::size_t sync_read(int d, state_type state, buf* bufs,
- std::size_t count, bool all_empty, asio::error_code& ec);
-
-ASIO_DECL bool non_blocking_read(int d, buf* bufs, std::size_t count,
- asio::error_code& ec, std::size_t& bytes_transferred);
-
-ASIO_DECL std::size_t sync_write(int d, state_type state,
- const buf* bufs, std::size_t count, bool all_empty,
- asio::error_code& ec);
-
-ASIO_DECL bool non_blocking_write(int d,
- const buf* bufs, std::size_t count,
- asio::error_code& ec, std::size_t& bytes_transferred);
-
-ASIO_DECL int ioctl(int d, state_type& state, long cmd,
- ioctl_arg_type* arg, asio::error_code& ec);
-
-ASIO_DECL int fcntl(int d, int cmd, asio::error_code& ec);
-
-ASIO_DECL int fcntl(int d, int cmd,
- long arg, asio::error_code& ec);
-
-ASIO_DECL int poll_read(int d,
- state_type state, asio::error_code& ec);
-
-ASIO_DECL int poll_write(int d,
- state_type state, asio::error_code& ec);
-
-} // namespace descriptor_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/descriptor_ops.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_DESCRIPTOR_OPS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_read_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_read_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_read_op.hpp
deleted file mode 100644
index e833d36..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_read_op.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// detail/descriptor_read_op.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_DETAIL_DESCRIPTOR_READ_OP_HPP
-#define ASIO_DETAIL_DESCRIPTOR_READ_OP_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_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence>
-class descriptor_read_op_base : public reactor_op
-{
-public:
- descriptor_read_op_base(int descriptor,
- const MutableBufferSequence& buffers, func_type complete_func)
- : reactor_op(&descriptor_read_op_base::do_perform, complete_func),
- descriptor_(descriptor),
- buffers_(buffers)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- descriptor_read_op_base* o(static_cast<descriptor_read_op_base*>(base));
-
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(o->buffers_);
-
- return descriptor_ops::non_blocking_read(o->descriptor_,
- bufs.buffers(), bufs.count(), o->ec_, o->bytes_transferred_);
- }
-
-private:
- int descriptor_;
- MutableBufferSequence buffers_;
-};
-
-template <typename MutableBufferSequence, typename Handler>
-class descriptor_read_op
- : public descriptor_read_op_base<MutableBufferSequence>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(descriptor_read_op);
-
- descriptor_read_op(int descriptor,
- const MutableBufferSequence& buffers, Handler& handler)
- : descriptor_read_op_base<MutableBufferSequence>(
- descriptor, buffers, &descriptor_read_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- descriptor_read_op* o(static_cast<descriptor_read_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_write_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_write_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_write_op.hpp
deleted file mode 100644
index 721c263..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/descriptor_write_op.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// detail/descriptor_write_op.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_DETAIL_DESCRIPTOR_WRITE_OP_HPP
-#define ASIO_DETAIL_DESCRIPTOR_WRITE_OP_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_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence>
-class descriptor_write_op_base : public reactor_op
-{
-public:
- descriptor_write_op_base(int descriptor,
- const ConstBufferSequence& buffers, func_type complete_func)
- : reactor_op(&descriptor_write_op_base::do_perform, complete_func),
- descriptor_(descriptor),
- buffers_(buffers)
- {
- }
-
- static bool do_perform(reactor_op* base)
- {
- descriptor_write_op_base* o(static_cast<descriptor_write_op_base*>(base));
-
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(o->buffers_);
-
- return descriptor_ops::non_blocking_write(o->descriptor_,
- bufs.buffers(), bufs.count(), o->ec_, o->bytes_transferred_);
- }
-
-private:
- int descriptor_;
- ConstBufferSequence buffers_;
-};
-
-template <typename ConstBufferSequence, typename Handler>
-class descriptor_write_op
- : public descriptor_write_op_base<ConstBufferSequence>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(descriptor_write_op);
-
- descriptor_write_op(int descriptor,
- const ConstBufferSequence& buffers, Handler& handler)
- : descriptor_write_op_base<ConstBufferSequence>(
- descriptor, buffers, &descriptor_write_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- descriptor_write_op* o(static_cast<descriptor_write_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->bytes_transferred_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dev_poll_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dev_poll_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dev_poll_reactor.hpp
deleted file mode 100644
index 0dab12a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/dev_poll_reactor.hpp
+++ /dev/null
@@ -1,210 +0,0 @@
-//
-// detail/dev_poll_reactor.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_DETAIL_DEV_POLL_REACTOR_HPP
-#define ASIO_DETAIL_DEV_POLL_REACTOR_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_HAS_DEV_POLL)
-
-#include <cstddef>
-#include <vector>
-#include <sys/devpoll.h>
-#include "asio/detail/hash_map.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class dev_poll_reactor
- : public asio::detail::service_base<dev_poll_reactor>
-{
-public:
- enum op_types { read_op = 0, write_op = 1,
- connect_op = 1, except_op = 2, max_ops = 3 };
-
- // Per-descriptor data.
- struct per_descriptor_data
- {
- };
-
- // Constructor.
- ASIO_DECL dev_poll_reactor(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~dev_poll_reactor();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Recreate internal descriptors following a fork.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Initialise the task.
- ASIO_DECL void init_task();
-
- // Register a socket with the reactor. Returns 0 on success, system error
- // code on failure.
- ASIO_DECL int register_descriptor(socket_type, per_descriptor_data&);
-
- // Register a descriptor with an associated single operation. Returns 0 on
- // success, system error code on failure.
- ASIO_DECL int register_internal_descriptor(
- int op_type, socket_type descriptor,
- per_descriptor_data& descriptor_data, reactor_op* op);
-
- // Move descriptor registration from one descriptor_data object to another.
- ASIO_DECL void move_descriptor(socket_type descriptor,
- per_descriptor_data& target_descriptor_data,
- per_descriptor_data& source_descriptor_data);
-
- // Post a reactor operation for immediate completion.
- void post_immediate_completion(reactor_op* op, bool is_continuation)
- {
- io_service_.post_immediate_completion(op, is_continuation);
- }
-
- // Start a new operation. The reactor operation will be performed when the
- // given descriptor is flagged as ready, or an error has occurred.
- ASIO_DECL void start_op(int op_type, socket_type descriptor,
- per_descriptor_data&, reactor_op* op,
- bool is_continuation, bool allow_speculative);
-
- // Cancel all operations associated with the given descriptor. The
- // handlers associated with the descriptor will be invoked with the
- // operation_aborted error.
- ASIO_DECL void cancel_ops(socket_type descriptor, per_descriptor_data&);
-
- // Cancel any operations that are running against the descriptor and remove
- // its registration from the reactor.
- ASIO_DECL void deregister_descriptor(socket_type descriptor,
- per_descriptor_data&, bool closing);
-
- // Cancel any operations that are running against the descriptor and remove
- // its registration from the reactor.
- ASIO_DECL void deregister_internal_descriptor(
- socket_type descriptor, per_descriptor_data&);
-
- // Add a new timer queue to the reactor.
- template <typename Time_Traits>
- void add_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Remove a timer queue from the reactor.
- template <typename Time_Traits>
- void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Schedule a new operation in the given timer queue to expire at the
- // specified absolute time.
- template <typename Time_Traits>
- void schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
- // Cancel the timer operations associated with the given token. Returns the
- // number of operations that have been posted or dispatched.
- template <typename Time_Traits>
- std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
- // Run /dev/poll once until interrupted or events are ready to be dispatched.
- ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
- // Interrupt the select loop.
- ASIO_DECL void interrupt();
-
-private:
- // Create the /dev/poll file descriptor. Throws an exception if the descriptor
- // cannot be created.
- ASIO_DECL static int do_dev_poll_create();
-
- // Helper function to add a new timer queue.
- ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
- // Helper function to remove a timer queue.
- ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
- // Get the timeout value for the /dev/poll DP_POLL operation. The timeout
- // value is returned as a number of milliseconds. A return value of -1
- // indicates that the poll should block indefinitely.
- ASIO_DECL int get_timeout();
-
- // Cancel all operations associated with the given descriptor. The do_cancel
- // function of the handler objects will be invoked. This function does not
- // acquire the dev_poll_reactor's mutex.
- ASIO_DECL void cancel_ops_unlocked(socket_type descriptor,
- const asio::error_code& ec);
-
- // Helper class used to reregister descriptors after a fork.
- class fork_helper;
- friend class fork_helper;
-
- // Add a pending event entry for the given descriptor.
- ASIO_DECL ::pollfd& add_pending_event_change(int descriptor);
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex to protect access to internal data.
- asio::detail::mutex mutex_;
-
- // The /dev/poll file descriptor.
- int dev_poll_fd_;
-
- // Vector of /dev/poll events waiting to be written to the descriptor.
- std::vector< ::pollfd> pending_event_changes_;
-
- // Hash map to associate a descriptor with a pending event change index.
- hash_map<int, std::size_t> pending_event_change_index_;
-
- // The interrupter is used to break a blocking DP_POLL operation.
- select_interrupter interrupter_;
-
- // The queues of read, write and except operations.
- reactor_op_queue<socket_type> op_queue_[max_ops];
-
- // The timer queues.
- timer_queue_set timer_queues_;
-
- // Whether the service has been shut down.
- bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/dev_poll_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/dev_poll_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_DEV_POLL)
-
-#endif // ASIO_DETAIL_DEV_POLL_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/epoll_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/epoll_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/epoll_reactor.hpp
deleted file mode 100644
index 2d5bd76..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/epoll_reactor.hpp
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-// detail/epoll_reactor.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_DETAIL_EPOLL_REACTOR_HPP
-#define ASIO_DETAIL_EPOLL_REACTOR_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_HAS_EPOLL)
-
-#include "asio/io_service.hpp"
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/object_pool.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class epoll_reactor
- : public asio::detail::service_base<epoll_reactor>
-{
-public:
- enum op_types { read_op = 0, write_op = 1,
- connect_op = 1, except_op = 2, max_ops = 3 };
-
- // Per-descriptor queues.
- class descriptor_state : operation
- {
- friend class epoll_reactor;
- friend class object_pool_access;
-
- descriptor_state* next_;
- descriptor_state* prev_;
-
- mutex mutex_;
- epoll_reactor* reactor_;
- int descriptor_;
- uint32_t registered_events_;
- op_queue<reactor_op> op_queue_[max_ops];
- bool shutdown_;
-
- ASIO_DECL descriptor_state();
- void set_ready_events(uint32_t events) { task_result_ = events; }
- ASIO_DECL operation* perform_io(uint32_t events);
- ASIO_DECL static void do_complete(
- io_service_impl* owner, operation* base,
- const asio::error_code& ec, std::size_t bytes_transferred);
- };
-
- // Per-descriptor data.
- typedef descriptor_state* per_descriptor_data;
-
- // Constructor.
- ASIO_DECL epoll_reactor(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~epoll_reactor();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Recreate internal descriptors following a fork.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Initialise the task.
- ASIO_DECL void init_task();
-
- // Register a socket with the reactor. Returns 0 on success, system error
- // code on failure.
- ASIO_DECL int register_descriptor(socket_type descriptor,
- per_descriptor_data& descriptor_data);
-
- // Register a descriptor with an associated single operation. Returns 0 on
- // success, system error code on failure.
- ASIO_DECL int register_internal_descriptor(
- int op_type, socket_type descriptor,
- per_descriptor_data& descriptor_data, reactor_op* op);
-
- // Move descriptor registration from one descriptor_data object to another.
- ASIO_DECL void move_descriptor(socket_type descriptor,
- per_descriptor_data& target_descriptor_data,
- per_descriptor_data& source_descriptor_data);
-
- // Post a reactor operation for immediate completion.
- void post_immediate_completion(reactor_op* op, bool is_continuation)
- {
- io_service_.post_immediate_completion(op, is_continuation);
- }
-
- // Start a new operation. The reactor operation will be performed when the
- // given descriptor is flagged as ready, or an error has occurred.
- ASIO_DECL void start_op(int op_type, socket_type descriptor,
- per_descriptor_data& descriptor_data, reactor_op* op,
- bool is_continuation, bool allow_speculative);
-
- // Cancel all operations associated with the given descriptor. The
- // handlers associated with the descriptor will be invoked with the
- // operation_aborted error.
- ASIO_DECL void cancel_ops(socket_type descriptor,
- per_descriptor_data& descriptor_data);
-
- // Cancel any operations that are running against the descriptor and remove
- // its registration from the reactor.
- ASIO_DECL void deregister_descriptor(socket_type descriptor,
- per_descriptor_data& descriptor_data, bool closing);
-
- // Remote the descriptor's registration from the reactor.
- ASIO_DECL void deregister_internal_descriptor(
- socket_type descriptor, per_descriptor_data& descriptor_data);
-
- // Add a new timer queue to the reactor.
- template <typename Time_Traits>
- void add_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
- // Remove a timer queue from the reactor.
- template <typename Time_Traits>
- void remove_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
- // Schedule a new operation in the given timer queue to expire at the
- // specified absolute time.
- template <typename Time_Traits>
- void schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
- // Cancel the timer operations associated with the given token. Returns the
- // number of operations that have been posted or dispatched.
- template <typename Time_Traits>
- std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
- // Run epoll once until interrupted or events are ready to be dispatched.
- ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
- // Interrupt the select loop.
- ASIO_DECL void interrupt();
-
-private:
- // The hint to pass to epoll_create to size its data structures.
- enum { epoll_size = 20000 };
-
- // Create the epoll file descriptor. Throws an exception if the descriptor
- // cannot be created.
- ASIO_DECL static int do_epoll_create();
-
- // Create the timerfd file descriptor. Does not throw.
- ASIO_DECL static int do_timerfd_create();
-
- // Allocate a new descriptor state object.
- ASIO_DECL descriptor_state* allocate_descriptor_state();
-
- // Free an existing descriptor state object.
- ASIO_DECL void free_descriptor_state(descriptor_state* s);
-
- // Helper function to add a new timer queue.
- ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
- // Helper function to remove a timer queue.
- ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
- // Called to recalculate and update the timeout.
- ASIO_DECL void update_timeout();
-
- // Get the timeout value for the epoll_wait call. The timeout value is
- // returned as a number of milliseconds. A return value of -1 indicates
- // that epoll_wait should block indefinitely.
- ASIO_DECL int get_timeout();
-
-#if defined(ASIO_HAS_TIMERFD)
- // Get the timeout value for the timer descriptor. The return value is the
- // flag argument to be used when calling timerfd_settime.
- ASIO_DECL int get_timeout(itimerspec& ts);
-#endif // defined(ASIO_HAS_TIMERFD)
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex to protect access to internal data.
- mutex mutex_;
-
- // The interrupter is used to break a blocking epoll_wait call.
- select_interrupter interrupter_;
-
- // The epoll file descriptor.
- int epoll_fd_;
-
- // The timer file descriptor.
- int timer_fd_;
-
- // The timer queues.
- timer_queue_set timer_queues_;
-
- // Whether the service has been shut down.
- bool shutdown_;
-
- // Mutex to protect access to the registered descriptors.
- mutex registered_descriptors_mutex_;
-
- // Keep track of all registered descriptors.
- object_pool<descriptor_state> registered_descriptors_;
-
- // Helper class to do post-perform_io cleanup.
- struct perform_io_cleanup_on_block_exit;
- friend struct perform_io_cleanup_on_block_exit;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/epoll_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/epoll_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_EPOLL)
-
-#endif // ASIO_DETAIL_EPOLL_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/event.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/event.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/event.hpp
deleted file mode 100644
index c4a3c2b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/event.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// detail/event.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_DETAIL_EVENT_HPP
-#define ASIO_DETAIL_EVENT_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_HAS_THREADS)
-# include "asio/detail/null_event.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_event.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_event.hpp"
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# include "asio/detail/std_event.hpp"
-#else
-# error Only Windows, POSIX and std::condition_variable are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_event event;
-#elif defined(ASIO_WINDOWS)
-typedef win_event event;
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_event event;
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-typedef std_event event;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_EVENT_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[37/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/async_result.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/async_result.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/async_result.hpp
deleted file mode 100644
index b98d770..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/async_result.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// async_result.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_ASYNC_RESULT_HPP
-#define ASIO_ASYNC_RESULT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/handler_type.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// An interface for customising the behaviour of an initiating function.
-/**
- * This template may be specialised for user-defined handler types.
- */
-template <typename Handler>
-class async_result
-{
-public:
- /// The return type of the initiating function.
- typedef void type;
-
- /// Construct an async result from a given handler.
- /**
- * When using a specalised async_result, the constructor has an opportunity
- * to initialise some state associated with the handler, which is then
- * returned from the initiating function.
- */
- explicit async_result(Handler&)
- {
- }
-
- /// Obtain the value to be returned from the initiating function.
- type get()
- {
- }
-};
-
-namespace detail {
-
-// Helper template to deduce the true type of a handler, capture a local copy
-// of the handler, and then create an async_result for the handler.
-template <typename Handler, typename Signature>
-struct async_result_init
-{
- explicit async_result_init(ASIO_MOVE_ARG(Handler) orig_handler)
- : handler(ASIO_MOVE_CAST(Handler)(orig_handler)),
- result(handler)
- {
- }
-
- typename handler_type<Handler, Signature>::type handler;
- async_result<typename handler_type<Handler, Signature>::type> result;
-};
-
-template <typename Handler, typename Signature>
-struct async_result_type_helper
-{
- typedef typename async_result<
- typename handler_type<Handler, Signature>::type
- >::type type;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(GENERATING_DOCUMENTATION)
-# define ASIO_INITFN_RESULT_TYPE(h, sig) \
- void_or_deduced
-#elif defined(_MSC_VER) && (_MSC_VER < 1500)
-# define ASIO_INITFN_RESULT_TYPE(h, sig) \
- typename ::asio::detail::async_result_type_helper<h, sig>::type
-#else
-# define ASIO_INITFN_RESULT_TYPE(h, sig) \
- typename ::asio::async_result< \
- typename ::asio::handler_type<h, sig>::type>::type
-#endif
-
-#endif // ASIO_ASYNC_RESULT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_datagram_socket.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_datagram_socket.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_datagram_socket.hpp
deleted file mode 100644
index a1356b9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_datagram_socket.hpp
+++ /dev/null
@@ -1,949 +0,0 @@
-//
-// basic_datagram_socket.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_BASIC_DATAGRAM_SOCKET_HPP
-#define ASIO_BASIC_DATAGRAM_SOCKET_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 "asio/basic_socket.hpp"
-#include "asio/datagram_socket_service.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides datagram-oriented socket functionality.
-/**
- * The basic_datagram_socket class template provides asynchronous and blocking
- * datagram-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
- typename DatagramSocketService = datagram_socket_service<Protocol> >
-class basic_datagram_socket
- : public basic_socket<Protocol, DatagramSocketService>
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename DatagramSocketService::native_handle_type native_type;
-
- /// The native representation of a socket.
- typedef typename DatagramSocketService::native_handle_type native_handle_type;
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- /// Construct a basic_datagram_socket without opening it.
- /**
- * This constructor creates a datagram socket without opening it. The open()
- * function must be called before data can be sent or received on the socket.
- *
- * @param io_service The io_service object that the datagram socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- */
- explicit basic_datagram_socket(asio::io_service& io_service)
- : basic_socket<Protocol, DatagramSocketService>(io_service)
- {
- }
-
- /// Construct and open a basic_datagram_socket.
- /**
- * This constructor creates and opens a datagram socket.
- *
- * @param io_service The io_service object that the datagram socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_datagram_socket(asio::io_service& io_service,
- const protocol_type& protocol)
- : basic_socket<Protocol, DatagramSocketService>(io_service, protocol)
- {
- }
-
- /// Construct a basic_datagram_socket, opening it and binding it to the given
- /// local endpoint.
- /**
- * This constructor creates a datagram socket and automatically opens it bound
- * to the specified endpoint on the local machine. The protocol used is the
- * protocol associated with the given endpoint.
- *
- * @param io_service The io_service object that the datagram socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- *
- * @param endpoint An endpoint on the local machine to which the datagram
- * socket will be bound.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_datagram_socket(asio::io_service& io_service,
- const endpoint_type& endpoint)
- : basic_socket<Protocol, DatagramSocketService>(io_service, endpoint)
- {
- }
-
- /// Construct a basic_datagram_socket on an existing native socket.
- /**
- * This constructor creates a datagram socket object to hold an existing
- * native socket.
- *
- * @param io_service The io_service object that the datagram socket will use
- * to dispatch handlers for any asynchronous operations performed on the
- * socket.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @param native_socket The new underlying socket implementation.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_datagram_socket(asio::io_service& io_service,
- const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, DatagramSocketService>(
- io_service, protocol, native_socket)
- {
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_datagram_socket from another.
- /**
- * This constructor moves a datagram socket from one object to another.
- *
- * @param other The other basic_datagram_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
- */
- basic_datagram_socket(basic_datagram_socket&& other)
- : basic_socket<Protocol, DatagramSocketService>(
- ASIO_MOVE_CAST(basic_datagram_socket)(other))
- {
- }
-
- /// Move-assign a basic_datagram_socket from another.
- /**
- * This assignment operator moves a datagram socket from one object to
- * another.
- *
- * @param other The other basic_datagram_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
- */
- basic_datagram_socket& operator=(basic_datagram_socket&& other)
- {
- basic_socket<Protocol, DatagramSocketService>::operator=(
- ASIO_MOVE_CAST(basic_datagram_socket)(other));
- return *this;
- }
-
- /// Move-construct a basic_datagram_socket from a socket of another protocol
- /// type.
- /**
- * This constructor moves a datagram socket from one object to another.
- *
- * @param other The other basic_datagram_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename DatagramSocketService1>
- basic_datagram_socket(
- basic_datagram_socket<Protocol1, DatagramSocketService1>&& other,
- typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, DatagramSocketService>(
- ASIO_MOVE_CAST2(basic_datagram_socket<
- Protocol1, DatagramSocketService1>)(other))
- {
- }
-
- /// Move-assign a basic_datagram_socket from a socket of another protocol
- /// type.
- /**
- * This assignment operator moves a datagram socket from one object to
- * another.
- *
- * @param other The other basic_datagram_socket object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename DatagramSocketService1>
- typename enable_if<is_convertible<Protocol1, Protocol>::value,
- basic_datagram_socket>::type& operator=(
- basic_datagram_socket<Protocol1, DatagramSocketService1>&& other)
- {
- basic_socket<Protocol, DatagramSocketService>::operator=(
- ASIO_MOVE_CAST2(basic_datagram_socket<
- Protocol1, DatagramSocketService1>)(other));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Send some data on a connected socket.
- /**
- * This function is used to send data on the datagram socket. The function
- * call will block until the data has been sent successfully or an error
- * occurs.
- *
- * @param buffers One ore more data buffers to be sent on the socket.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The send operation can only be used with a connected socket. Use
- * the send_to function to send data on an unconnected datagram socket.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code socket.send(asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on a connected socket.
- /**
- * This function is used to send data on the datagram socket. The function
- * call will block until the data has been sent successfully or an error
- * occurs.
- *
- * @param buffers One ore more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The send operation can only be used with a connected socket. Use
- * the send_to function to send data on an unconnected datagram socket.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "send");
- return s;
- }
-
- /// Send some data on a connected socket.
- /**
- * This function is used to send data on the datagram socket. The function
- * call will block until the data has been sent successfully or an error
- * occurs.
- *
- * @param buffers One or more data buffers to be sent on the socket.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes sent.
- *
- * @note The send operation can only be used with a connected socket. Use
- * the send_to function to send data on an unconnected datagram socket.
- */
- template <typename ConstBufferSequence>
- std::size_t send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().send(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous send on a connected socket.
- /**
- * This function is used to asynchronously send data on the datagram socket.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks 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 send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_send operation can only be used with a connected socket.
- * Use the async_send_to function to send data on an unconnected datagram
- * socket.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * socket.async_send(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Start an asynchronous send on a connected socket.
- /**
- * This function is used to asynchronously send data on the datagram socket.
- * The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent on the socket. Although
- * the buffers object may be copied as necessary, ownership of the underlying
- * memory blocks is retained by the caller, which must guarantee that they
- * remain valid until the handler is called.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_send operation can only be used with a connected socket.
- * Use the async_send_to function to send data on an unconnected datagram
- * socket.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send(const ConstBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send(this->get_implementation(),
- buffers, flags, ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Send a datagram to the specified endpoint.
- /**
- * This function is used to send a datagram to the specified remote endpoint.
- * The function call will block until the data has been sent successfully or
- * an error occurs.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- *
- * @param destination The remote endpoint to which the data will be sent.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::ip::udp::endpoint destination(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * socket.send_to(asio::buffer(data, size), destination);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence>
- std::size_t send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send_to(
- this->get_implementation(), buffers, destination, 0, ec);
- asio::detail::throw_error(ec, "send_to");
- return s;
- }
-
- /// Send a datagram to the specified endpoint.
- /**
- * This function is used to send a datagram to the specified remote endpoint.
- * The function call will block until the data has been sent successfully or
- * an error occurs.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- *
- * @param destination The remote endpoint to which the data will be sent.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @returns The number of bytes sent.
- *
- * @throws asio::system_error Thrown on failure.
- */
- template <typename ConstBufferSequence>
- std::size_t send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().send_to(
- this->get_implementation(), buffers, destination, flags, ec);
- asio::detail::throw_error(ec, "send_to");
- return s;
- }
-
- /// Send a datagram to the specified endpoint.
- /**
- * This function is used to send a datagram to the specified remote endpoint.
- * The function call will block until the data has been sent successfully or
- * an error occurs.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- *
- * @param destination The remote endpoint to which the data will be sent.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes sent.
- */
- template <typename ConstBufferSequence>
- std::size_t send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- return this->get_service().send_to(this->get_implementation(),
- buffers, destination, flags, ec);
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send a datagram to the specified
- * remote endpoint. The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param destination The remote endpoint to which the data will be sent.
- * Copies will be made of the endpoint as required.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To send a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::ip::udp::endpoint destination(
- * asio::ip::address::from_string("1.2.3.4"), 12345);
- * socket.async_send_to(
- * asio::buffer(data, size), destination, handler);
- * @endcode
- * See the @ref buffer documentation for information on sending multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send_to(
- this->get_implementation(), buffers, destination, 0,
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Start an asynchronous send.
- /**
- * This function is used to asynchronously send a datagram to the specified
- * remote endpoint. The function call always returns immediately.
- *
- * @param buffers One or more data buffers to be sent to the remote endpoint.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param flags Flags specifying how the send call is to be made.
- *
- * @param destination The remote endpoint to which the data will be sent.
- * Copies will be made of the endpoint as required.
- *
- * @param handler The handler to be called when the send operation completes.
- * Copies will be made of the handler as required. The 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 sent.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_send_to(const ConstBufferSequence& buffers,
- const endpoint_type& destination, socket_base::message_flags flags,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WriteHandler.
- ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
- return this->get_service().async_send_to(
- this->get_implementation(), buffers, destination, flags,
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the datagram socket. The function
- * call will block until data has been received successfully or an error
- * occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The receive operation can only be used with a connected socket. Use
- * the receive_from function to receive data on an unconnected datagram
- * socket.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code socket.receive(asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, 0, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the datagram socket. The function
- * call will block until data has been received successfully or an error
- * occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The receive operation can only be used with a connected socket. Use
- * the receive_from function to receive data on an unconnected datagram
- * socket.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive(
- this->get_implementation(), buffers, flags, ec);
- asio::detail::throw_error(ec, "receive");
- return s;
- }
-
- /// Receive some data on a connected socket.
- /**
- * This function is used to receive data on the datagram socket. The function
- * call will block until data has been received successfully or an error
- * occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes received.
- *
- * @note The receive operation can only be used with a connected socket. Use
- * the receive_from function to receive data on an unconnected datagram
- * socket.
- */
- template <typename MutableBufferSequence>
- std::size_t receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return this->get_service().receive(
- this->get_implementation(), buffers, flags, ec);
- }
-
- /// Start an asynchronous receive on a connected socket.
- /**
- * This function is used to asynchronously receive data from the datagram
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks 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 receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_receive operation can only be used with a connected socket.
- * Use the async_receive_from function to receive data on an unconnected
- * datagram socket.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * socket.async_receive(asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Start an asynchronous receive on a connected socket.
- /**
- * This function is used to asynchronously receive data from the datagram
- * socket. The function call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note The async_receive operation can only be used with a connected socket.
- * Use the async_receive_from function to receive data on an unconnected
- * datagram socket.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive(const MutableBufferSequence& buffers,
- socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive(this->get_implementation(),
- buffers, flags, ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Receive a datagram with the endpoint of the sender.
- /**
- * This function is used to receive a datagram. The function call will block
- * until data has been received successfully or an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the datagram.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code
- * asio::ip::udp::endpoint sender_endpoint;
- * socket.receive_from(
- * asio::buffer(data, size), sender_endpoint);
- * @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence>
- std::size_t receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive_from(
- this->get_implementation(), buffers, sender_endpoint, 0, ec);
- asio::detail::throw_error(ec, "receive_from");
- return s;
- }
-
- /// Receive a datagram with the endpoint of the sender.
- /**
- * This function is used to receive a datagram. The function call will block
- * until data has been received successfully or an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the datagram.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @returns The number of bytes received.
- *
- * @throws asio::system_error Thrown on failure.
- */
- template <typename MutableBufferSequence>
- std::size_t receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags)
- {
- asio::error_code ec;
- std::size_t s = this->get_service().receive_from(
- this->get_implementation(), buffers, sender_endpoint, flags, ec);
- asio::detail::throw_error(ec, "receive_from");
- return s;
- }
-
- /// Receive a datagram with the endpoint of the sender.
- /**
- * This function is used to receive a datagram. The function call will block
- * until data has been received successfully or an error occurs.
- *
- * @param buffers One or more buffers into which the data will be received.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the datagram.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes received.
- */
- template <typename MutableBufferSequence>
- std::size_t receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags,
- asio::error_code& ec)
- {
- return this->get_service().receive_from(this->get_implementation(),
- buffers, sender_endpoint, flags, ec);
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive a datagram. The function
- * call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the datagram. Ownership of the sender_endpoint object
- * is retained by the caller, which must guarantee that it is valid until the
- * handler is called.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To receive into a single data buffer use the @ref buffer function as
- * follows:
- * @code socket.async_receive_from(
- * asio::buffer(data, size), sender_endpoint, handler); @endcode
- * See the @ref buffer documentation for information on receiving into
- * multiple buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive_from(
- this->get_implementation(), buffers, sender_endpoint, 0,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Start an asynchronous receive.
- /**
- * This function is used to asynchronously receive a datagram. The function
- * call always returns immediately.
- *
- * @param buffers One or more buffers into which the data will be received.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param sender_endpoint An endpoint object that receives the endpoint of
- * the remote sender of the datagram. Ownership of the sender_endpoint object
- * is retained by the caller, which must guarantee that it is valid until the
- * handler is called.
- *
- * @param flags Flags specifying how the receive call is to be made.
- *
- * @param handler The handler to be called when the receive operation
- * completes. Copies will be made of the handler as required. The 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 received.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_receive_from(const MutableBufferSequence& buffers,
- endpoint_type& sender_endpoint, socket_base::message_flags flags,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- return this->get_service().async_receive_from(
- this->get_implementation(), buffers, sender_endpoint, flags,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_DATAGRAM_SOCKET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_deadline_timer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_deadline_timer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_deadline_timer.hpp
deleted file mode 100644
index d0fc371..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_deadline_timer.hpp
+++ /dev/null
@@ -1,520 +0,0 @@
-//
-// basic_deadline_timer.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_BASIC_DEADLINE_TIMER_HPP
-#define ASIO_BASIC_DEADLINE_TIMER_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_HAS_BOOST_DATE_TIME) \
- || defined(ASIO_CPP11_DATE_TIME) \
- || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/basic_io_object.hpp"
-#include "asio/deadline_timer_service.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides waitable timer functionality.
-/**
- * The basic_deadline_timer class template provides the ability to perform a
- * blocking or asynchronous wait for a timer to expire.
- *
- * A deadline timer is always in one of two states: "expired" or "not expired".
- * If the wait() or async_wait() function is called on an expired timer, the
- * wait operation will complete immediately.
- *
- * Most applications will use the asio::deadline_timer typedef.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Examples
- * Performing a blocking wait:
- * @code
- * // Construct a timer without setting an expiry time.
- * asio::deadline_timer timer(io_service);
- *
- * // Set an expiry time relative to now.
- * timer.expires_from_now(boost::posix_time::seconds(5));
- *
- * // Wait for the timer to expire.
- * timer.wait();
- * @endcode
- *
- * @par
- * Performing an asynchronous wait:
- * @code
- * void handler(const asio::error_code& error)
- * {
- * if (!error)
- * {
- * // Timer expired.
- * }
- * }
- *
- * ...
- *
- * // Construct a timer with an absolute expiry time.
- * asio::deadline_timer timer(io_service,
- * boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
- *
- * // Start an asynchronous wait.
- * timer.async_wait(handler);
- * @endcode
- *
- * @par Changing an active deadline_timer's expiry time
- *
- * Changing the expiry time of a timer while there are pending asynchronous
- * waits causes those wait operations to be cancelled. To ensure that the action
- * associated with the timer is performed only once, use something like this:
- * used:
- *
- * @code
- * void on_some_event()
- * {
- * if (my_timer.expires_from_now(seconds(5)) > 0)
- * {
- * // We managed to cancel the timer. Start new asynchronous wait.
- * my_timer.async_wait(on_timeout);
- * }
- * else
- * {
- * // Too late, timer has already expired!
- * }
- * }
- *
- * void on_timeout(const asio::error_code& e)
- * {
- * if (e != asio::error::operation_aborted)
- * {
- * // Timer was not cancelled, take necessary action.
- * }
- * }
- * @endcode
- *
- * @li The asio::basic_deadline_timer::expires_from_now() function
- * cancels any pending asynchronous waits, and returns the number of
- * asynchronous waits that were cancelled. If it returns 0 then you were too
- * late and the wait handler has already been executed, or will soon be
- * executed. If it returns 1 then the wait handler was successfully cancelled.
- *
- * @li If a wait handler is cancelled, the asio::error_code passed to
- * it contains the value asio::error::operation_aborted.
- */
-template <typename Time,
- typename TimeTraits = asio::time_traits<Time>,
- typename TimerService = deadline_timer_service<Time, TimeTraits> >
-class basic_deadline_timer
- : public basic_io_object<TimerService>
-{
-public:
- /// The time traits type.
- typedef TimeTraits traits_type;
-
- /// The time type.
- typedef typename traits_type::time_type time_type;
-
- /// The duration type.
- typedef typename traits_type::duration_type duration_type;
-
- /// Constructor.
- /**
- * This constructor creates a timer without setting an expiry time. The
- * expires_at() or expires_from_now() functions must be called to set an
- * expiry time before the timer can be waited on.
- *
- * @param io_service The io_service object that the timer will use to dispatch
- * handlers for any asynchronous operations performed on the timer.
- */
- explicit basic_deadline_timer(asio::io_service& io_service)
- : basic_io_object<TimerService>(io_service)
- {
- }
-
- /// Constructor to set a particular expiry time as an absolute time.
- /**
- * This constructor creates a timer and sets the expiry time.
- *
- * @param io_service The io_service object that the timer will use to dispatch
- * handlers for any asynchronous operations performed on the timer.
- *
- * @param expiry_time The expiry time to be used for the timer, expressed
- * as an absolute time.
- */
- basic_deadline_timer(asio::io_service& io_service,
- const time_type& expiry_time)
- : basic_io_object<TimerService>(io_service)
- {
- asio::error_code ec;
- this->service.expires_at(this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_at");
- }
-
- /// Constructor to set a particular expiry time relative to now.
- /**
- * This constructor creates a timer and sets the expiry time.
- *
- * @param io_service The io_service object that the timer will use to dispatch
- * handlers for any asynchronous operations performed on the timer.
- *
- * @param expiry_time The expiry time to be used for the timer, relative to
- * now.
- */
- basic_deadline_timer(asio::io_service& io_service,
- const duration_type& expiry_time)
- : basic_io_object<TimerService>(io_service)
- {
- asio::error_code ec;
- this->service.expires_from_now(this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_from_now");
- }
-
- /// Cancel any asynchronous operations that are waiting on the timer.
- /**
- * This function forces the completion of any pending asynchronous wait
- * operations against the timer. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when cancel() is called, then the
- * handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel()
- {
- asio::error_code ec;
- std::size_t s = this->service.cancel(this->implementation, ec);
- asio::detail::throw_error(ec, "cancel");
- return s;
- }
-
- /// Cancel any asynchronous operations that are waiting on the timer.
- /**
- * This function forces the completion of any pending asynchronous wait
- * operations against the timer. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @note If the timer has already expired when cancel() is called, then the
- * handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel(asio::error_code& ec)
- {
- return this->service.cancel(this->implementation, ec);
- }
-
- /// Cancels one asynchronous operation that is waiting on the timer.
- /**
- * This function forces the completion of one pending asynchronous wait
- * operation against the timer. Handlers are cancelled in FIFO order. The
- * handler for the cancelled operation will be invoked with the
- * asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @return The number of asynchronous operations that were cancelled. That is,
- * either 0 or 1.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when cancel_one() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel_one()
- {
- asio::error_code ec;
- std::size_t s = this->service.cancel_one(this->implementation, ec);
- asio::detail::throw_error(ec, "cancel_one");
- return s;
- }
-
- /// Cancels one asynchronous operation that is waiting on the timer.
- /**
- * This function forces the completion of one pending asynchronous wait
- * operation against the timer. Handlers are cancelled in FIFO order. The
- * handler for the cancelled operation will be invoked with the
- * asio::error::operation_aborted error code.
- *
- * Cancelling the timer does not change the expiry time.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled. That is,
- * either 0 or 1.
- *
- * @note If the timer has already expired when cancel_one() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t cancel_one(asio::error_code& ec)
- {
- return this->service.cancel_one(this->implementation, ec);
- }
-
- /// Get the timer's expiry time as an absolute time.
- /**
- * This function may be used to obtain the timer's current expiry time.
- * Whether the timer has expired or not does not affect this value.
- */
- time_type expires_at() const
- {
- return this->service.expires_at(this->implementation);
- }
-
- /// Set the timer's expiry time as an absolute time.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when expires_at() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_at(const time_type& expiry_time)
- {
- asio::error_code ec;
- std::size_t s = this->service.expires_at(
- this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_at");
- return s;
- }
-
- /// Set the timer's expiry time as an absolute time.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @note If the timer has already expired when expires_at() is called, then
- * the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_at(const time_type& expiry_time,
- asio::error_code& ec)
- {
- return this->service.expires_at(this->implementation, expiry_time, ec);
- }
-
- /// Get the timer's expiry time relative to now.
- /**
- * This function may be used to obtain the timer's current expiry time.
- * Whether the timer has expired or not does not affect this value.
- */
- duration_type expires_from_now() const
- {
- return this->service.expires_from_now(this->implementation);
- }
-
- /// Set the timer's expiry time relative to now.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note If the timer has already expired when expires_from_now() is called,
- * then the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_from_now(const duration_type& expiry_time)
- {
- asio::error_code ec;
- std::size_t s = this->service.expires_from_now(
- this->implementation, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_from_now");
- return s;
- }
-
- /// Set the timer's expiry time relative to now.
- /**
- * This function sets the expiry time. Any pending asynchronous wait
- * operations will be cancelled. The handler for each cancelled operation will
- * be invoked with the asio::error::operation_aborted error code.
- *
- * @param expiry_time The expiry time to be used for the timer.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @return The number of asynchronous operations that were cancelled.
- *
- * @note If the timer has already expired when expires_from_now() is called,
- * then the handlers for asynchronous wait operations will:
- *
- * @li have already been invoked; or
- *
- * @li have been queued for invocation in the near future.
- *
- * These handlers can no longer be cancelled, and therefore are passed an
- * error code that indicates the successful completion of the wait operation.
- */
- std::size_t expires_from_now(const duration_type& expiry_time,
- asio::error_code& ec)
- {
- return this->service.expires_from_now(
- this->implementation, expiry_time, ec);
- }
-
- /// Perform a blocking wait on the timer.
- /**
- * This function is used to wait for the timer to expire. This function
- * blocks and does not return until the timer has expired.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void wait()
- {
- asio::error_code ec;
- this->service.wait(this->implementation, ec);
- asio::detail::throw_error(ec, "wait");
- }
-
- /// Perform a blocking wait on the timer.
- /**
- * This function is used to wait for the timer to expire. This function
- * blocks and does not return until the timer has expired.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- void wait(asio::error_code& ec)
- {
- this->service.wait(this->implementation, ec);
- }
-
- /// Start an asynchronous wait on the timer.
- /**
- * This function may be used to initiate an asynchronous wait against the
- * timer. It always returns immediately.
- *
- * For each call to async_wait(), the supplied handler will be called exactly
- * once. The handler will be called when:
- *
- * @li The timer has expired.
- *
- * @li The timer was cancelled, in which case the handler is passed the error
- * code asio::error::operation_aborted.
- *
- * @param handler The handler to be called when the timer expires. Copies
- * will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- * const asio::error_code& error // Result of operation.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename WaitHandler>
- ASIO_INITFN_RESULT_TYPE(WaitHandler,
- void (asio::error_code))
- async_wait(ASIO_MOVE_ARG(WaitHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a WaitHandler.
- ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
-
- return this->service.async_wait(this->implementation,
- ASIO_MOVE_CAST(WaitHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
- // || defined(ASIO_CPP11_DATE_TIME)
- // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_BASIC_DEADLINE_TIMER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_io_object.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_io_object.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_io_object.hpp
deleted file mode 100644
index 6154d92..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_io_object.hpp
+++ /dev/null
@@ -1,240 +0,0 @@
-//
-// basic_io_object.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_BASIC_IO_OBJECT_HPP
-#define ASIO_BASIC_IO_OBJECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_MOVE)
-namespace detail
-{
- // Type trait used to determine whether a service supports move.
- template <typename IoObjectService>
- class service_has_move
- {
- private:
- typedef IoObjectService service_type;
- typedef typename service_type::implementation_type implementation_type;
-
- template <typename T, typename U>
- static auto eval(T* t, U* u) -> decltype(t->move_construct(*u, *u), char());
- static char (&eval(...))[2];
-
- public:
- static const bool value =
- sizeof(service_has_move::eval(
- static_cast<service_type*>(0),
- static_cast<implementation_type*>(0))) == 1;
- };
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-/// Base class for all I/O objects.
-/**
- * @note All I/O objects are non-copyable. However, when using C++0x, certain
- * I/O objects do support move construction and move assignment.
- */
-#if !defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-template <typename IoObjectService>
-#else
-template <typename IoObjectService,
- bool Movable = detail::service_has_move<IoObjectService>::value>
-#endif
-class basic_io_object
-{
-public:
- /// The type of the service that will be used to provide I/O operations.
- typedef IoObjectService service_type;
-
- /// The underlying implementation type of I/O object.
- typedef typename service_type::implementation_type implementation_type;
-
- /// Get the io_service associated with the object.
- /**
- * This function may be used to obtain the io_service object that the I/O
- * object uses to dispatch handlers for asynchronous operations.
- *
- * @return A reference to the io_service object that the I/O object will use
- * to dispatch handlers. Ownership is not transferred to the caller.
- */
- asio::io_service& get_io_service()
- {
- return service.get_io_service();
- }
-
-protected:
- /// Construct a basic_io_object.
- /**
- * Performs:
- * @code get_service().construct(get_implementation()); @endcode
- */
- explicit basic_io_object(asio::io_service& io_service)
- : service(asio::use_service<IoObjectService>(io_service))
- {
- service.construct(implementation);
- }
-
-#if defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_io_object.
- /**
- * Performs:
- * @code get_service().move_construct(
- * get_implementation(), other.get_implementation()); @endcode
- *
- * @note Available only for services that support movability,
- */
- basic_io_object(basic_io_object&& other);
-
- /// Move-assign a basic_io_object.
- /**
- * Performs:
- * @code get_service().move_assign(get_implementation(),
- * other.get_service(), other.get_implementation()); @endcode
- *
- * @note Available only for services that support movability,
- */
- basic_io_object& operator=(basic_io_object&& other);
-#endif // defined(GENERATING_DOCUMENTATION)
-
- /// Protected destructor to prevent deletion through this type.
- /**
- * Performs:
- * @code get_service().destroy(get_implementation()); @endcode
- */
- ~basic_io_object()
- {
- service.destroy(implementation);
- }
-
- /// Get the service associated with the I/O object.
- service_type& get_service()
- {
- return service;
- }
-
- /// Get the service associated with the I/O object.
- const service_type& get_service() const
- {
- return service;
- }
-
- /// (Deprecated: Use get_service().) The service associated with the I/O
- /// object.
- /**
- * @note Available only for services that do not support movability.
- */
- service_type& service;
-
- /// Get the underlying implementation of the I/O object.
- implementation_type& get_implementation()
- {
- return implementation;
- }
-
- /// Get the underlying implementation of the I/O object.
- const implementation_type& get_implementation() const
- {
- return implementation;
- }
-
- /// (Deprecated: Use get_implementation().) The underlying implementation of
- /// the I/O object.
- implementation_type implementation;
-
-private:
- basic_io_object(const basic_io_object&);
- basic_io_object& operator=(const basic_io_object&);
-};
-
-#if defined(ASIO_HAS_MOVE)
-// Specialisation for movable objects.
-template <typename IoObjectService>
-class basic_io_object<IoObjectService, true>
-{
-public:
- typedef IoObjectService service_type;
- typedef typename service_type::implementation_type implementation_type;
-
- asio::io_service& get_io_service()
- {
- return service_->get_io_service();
- }
-
-protected:
- explicit basic_io_object(asio::io_service& io_service)
- : service_(&asio::use_service<IoObjectService>(io_service))
- {
- service_->construct(implementation);
- }
-
- basic_io_object(basic_io_object&& other)
- : service_(&other.get_service())
- {
- service_->move_construct(implementation, other.implementation);
- }
-
- ~basic_io_object()
- {
- service_->destroy(implementation);
- }
-
- basic_io_object& operator=(basic_io_object&& other)
- {
- service_->move_assign(implementation,
- *other.service_, other.implementation);
- service_ = other.service_;
- return *this;
- }
-
- service_type& get_service()
- {
- return *service_;
- }
-
- const service_type& get_service() const
- {
- return *service_;
- }
-
- implementation_type& get_implementation()
- {
- return implementation;
- }
-
- const implementation_type& get_implementation() const
- {
- return implementation;
- }
-
- implementation_type implementation;
-
-private:
- basic_io_object(const basic_io_object&);
- void operator=(const basic_io_object&);
-
- IoObjectService* service_;
-};
-#endif // defined(ASIO_HAS_MOVE)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_IO_OBJECT_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[47/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/hdfs.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/hdfs.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/hdfs.cc
deleted file mode 100644
index 9a7c8b4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/hdfs.cc
+++ /dev/null
@@ -1,2007 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/hdfspp.h"
-
-#include "fs/filesystem.h"
-#include "common/hdfs_configuration.h"
-#include "common/configuration_loader.h"
-#include "common/logging.h"
-
-#include <hdfs/hdfs.h>
-#include <hdfspp/hdfs_ext.h>
-
-#include <libgen.h>
-#include "limits.h"
-
-#include <string>
-#include <cstring>
-#include <iostream>
-#include <algorithm>
-#include <functional>
-
-using namespace hdfs;
-using std::experimental::nullopt;
-using namespace std::placeholders;
-
-static constexpr tPort kDefaultPort = 8020;
-
-/** Annotate what parts of the code below are implementatons of API functions
- * and if they are normal vs. extended API.
- */
-#define LIBHDFS_C_API
-#define LIBHDFSPP_EXT_API
-
-/* Separate the handles used by the C api from the C++ API*/
-struct hdfs_internal {
- hdfs_internal(FileSystem *p) : filesystem_(p), working_directory_("/") {}
- hdfs_internal(std::unique_ptr<FileSystem> p)
- : filesystem_(std::move(p)), working_directory_("/") {}
- virtual ~hdfs_internal(){};
- FileSystem *get_impl() { return filesystem_.get(); }
- const FileSystem *get_impl() const { return filesystem_.get(); }
- std::string get_working_directory() {
- std::lock_guard<std::mutex> read_guard(wd_lock_);
- return working_directory_;
- }
- void set_working_directory(std::string new_directory) {
- std::lock_guard<std::mutex> write_guard(wd_lock_);
- working_directory_ = new_directory;
- }
-
- private:
- std::unique_ptr<FileSystem> filesystem_;
- std::string working_directory_; //has to always start and end with '/'
- std::mutex wd_lock_; //synchronize access to the working directory
-};
-
-struct hdfsFile_internal {
- hdfsFile_internal(FileHandle *p) : file_(p) {}
- hdfsFile_internal(std::unique_ptr<FileHandle> p) : file_(std::move(p)) {}
- virtual ~hdfsFile_internal(){};
- FileHandle *get_impl() { return file_.get(); }
- const FileHandle *get_impl() const { return file_.get(); }
-
- private:
- std::unique_ptr<FileHandle> file_;
-};
-
-/* Keep thread local copy of last error string */
-thread_local std::string errstr;
-
-/* Fetch last error that happened in this thread */
-LIBHDFSPP_EXT_API
-int hdfsGetLastError(char *buf, int len) {
- //No error message
- if(errstr.empty()){
- return -1;
- }
-
- //There is an error, but no room for the error message to be copied to
- if(nullptr == buf || len < 1) {
- return -1;
- }
-
- /* leave space for a trailing null */
- size_t copylen = std::min((size_t)errstr.size(), (size_t)len);
- if(copylen == (size_t)len) {
- copylen--;
- }
-
- strncpy(buf, errstr.c_str(), copylen);
-
- /* stick in null */
- buf[copylen] = 0;
-
- return 0;
-}
-
-/* Event callbacks for next open calls */
-thread_local std::experimental::optional<fs_event_callback> fsEventCallback;
-thread_local std::experimental::optional<file_event_callback> fileEventCallback;
-
-struct hdfsBuilder {
- hdfsBuilder();
- hdfsBuilder(const char * directory);
- virtual ~hdfsBuilder() {}
- ConfigurationLoader loader;
- HdfsConfiguration config;
-
- optional<std::string> overrideHost;
- optional<tPort> overridePort;
- optional<std::string> user;
-
- static constexpr tPort kUseDefaultPort = 0;
-};
-
-/* Error handling with optional debug to stderr */
-static void ReportError(int errnum, const std::string & msg) {
- errno = errnum;
- errstr = msg;
-#ifdef LIBHDFSPP_C_API_ENABLE_DEBUG
- std::cerr << "Error: errno=" << strerror(errnum) << " message=\"" << msg
- << "\"" << std::endl;
-#else
- (void)msg;
-#endif
-}
-
-/* Convert Status wrapped error into appropriate errno and return code */
-static int Error(const Status &stat) {
- const char * default_message;
- int errnum;
-
- int code = stat.code();
- switch (code) {
- case Status::Code::kOk:
- return 0;
- case Status::Code::kInvalidArgument:
- errnum = EINVAL;
- default_message = "Invalid argument";
- break;
- case Status::Code::kResourceUnavailable:
- errnum = EAGAIN;
- default_message = "Resource temporarily unavailable";
- break;
- case Status::Code::kUnimplemented:
- errnum = ENOSYS;
- default_message = "Function not implemented";
- break;
- case Status::Code::kException:
- errnum = EINTR;
- default_message = "Exception raised";
- break;
- case Status::Code::kOperationCanceled:
- errnum = EINTR;
- default_message = "Operation canceled";
- break;
- case Status::Code::kPermissionDenied:
- errnum = EACCES;
- default_message = "Permission denied";
- break;
- case Status::Code::kPathNotFound:
- errnum = ENOENT;
- default_message = "No such file or directory";
- break;
- case Status::Code::kNotADirectory:
- errnum = ENOTDIR;
- default_message = "Not a directory";
- break;
- case Status::Code::kFileAlreadyExists:
- errnum = EEXIST;
- default_message = "File already exists";
- break;
- case Status::Code::kPathIsNotEmptyDirectory:
- errnum = ENOTEMPTY;
- default_message = "Directory is not empty";
- break;
- case Status::Code::kInvalidOffset:
- errnum = Status::Code::kInvalidOffset;
- default_message = "Trying to begin a read past the EOF";
- break;
- default:
- errnum = ENOSYS;
- default_message = "Error: unrecognised code";
- }
- if (stat.ToString().empty())
- ReportError(errnum, default_message);
- else
- ReportError(errnum, stat.ToString());
- return -1;
-}
-
-static int ReportException(const std::exception & e)
-{
- return Error(Status::Exception("Uncaught exception", e.what()));
-}
-
-static int ReportCaughtNonException()
-{
- return Error(Status::Exception("Uncaught value not derived from std::exception", ""));
-}
-
-/* return false on failure */
-bool CheckSystem(hdfsFS fs) {
- if (!fs) {
- ReportError(ENODEV, "Cannot perform FS operations with null FS handle.");
- return false;
- }
-
- return true;
-}
-
-/* return false on failure */
-bool CheckHandle(hdfsFile file) {
- if (!file) {
- ReportError(EBADF, "Cannot perform FS operations with null File handle.");
- return false;
- }
- return true;
-}
-
-/* return false on failure */
-bool CheckSystemAndHandle(hdfsFS fs, hdfsFile file) {
- if (!CheckSystem(fs))
- return false;
-
- if (!CheckHandle(file))
- return false;
-
- return true;
-}
-
-optional<std::string> getAbsolutePath(hdfsFS fs, const char* path) {
- //Does not support . (dot) and .. (double dot) semantics
- if (!path || path[0] == '\0') {
- Error(Status::InvalidArgument("getAbsolutePath: argument 'path' cannot be NULL or empty"));
- return optional<std::string>();
- }
- if (path[0] != '/') {
- //we know that working directory always ends with '/'
- return fs->get_working_directory().append(path);
- }
- return optional<std::string>(path);
-}
-
-/**
- * C API implementations
- **/
-
-LIBHDFS_C_API
-int hdfsFileIsOpenForRead(hdfsFile file) {
- /* files can only be open for reads at the moment, do a quick check */
- if (!CheckHandle(file)){
- return 0;
- }
- return 1; // Update implementation when we get file writing
-}
-
-LIBHDFS_C_API
-int hdfsFileIsOpenForWrite(hdfsFile file) {
- /* files can only be open for reads at the moment, so return false */
- CheckHandle(file);
- return -1; // Update implementation when we get file writing
-}
-
-int hdfsConfGetLong(const char *key, int64_t *val)
-{
- try
- {
- errno = 0;
- hdfsBuilder builder;
- return hdfsBuilderConfGetLong(&builder, key, val);
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-hdfsFS doHdfsConnect(optional<std::string> nn, optional<tPort> port, optional<std::string> user, const Options & options) {
- try
- {
- errno = 0;
- IoService * io_service = IoService::New();
-
- FileSystem *fs = FileSystem::New(io_service, user.value_or(""), options);
- if (!fs) {
- ReportError(ENODEV, "Could not create FileSystem object");
- return nullptr;
- }
-
- if (fsEventCallback) {
- fs->SetFsEventCallback(fsEventCallback.value());
- }
-
- Status status;
- if (nn || port) {
- if (!port) {
- port = kDefaultPort;
- }
- std::string port_as_string = std::to_string(*port);
- status = fs->Connect(nn.value_or(""), port_as_string);
- } else {
- status = fs->ConnectToDefaultFs();
- }
-
- if (!status.ok()) {
- Error(status);
-
- // FileSystem's ctor might take ownership of the io_service; if it does,
- // it will null out the pointer
- if (io_service)
- delete io_service;
-
- delete fs;
-
- return nullptr;
- }
- return new hdfs_internal(fs);
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFSPP_EXT_API
-hdfsFS hdfsAllocateFileSystem(struct hdfsBuilder *bld) {
- // Same idea as the first half of doHdfsConnect, but return the wrapped FS before
- // connecting.
- try {
- errno = 0;
- std::shared_ptr<IoService> io_service = IoService::MakeShared();
-
- int io_thread_count = bld->config.GetOptions().io_threads_;
- if(io_thread_count < 1) {
- io_service->InitDefaultWorkers();
- } else {
- io_service->InitWorkers(io_thread_count);
- }
-
- FileSystem *fs = FileSystem::New(io_service, bld->user.value_or(""), bld->config.GetOptions());
- if (!fs) {
- ReportError(ENODEV, "Could not create FileSystem object");
- return nullptr;
- }
-
- if (fsEventCallback) {
- fs->SetFsEventCallback(fsEventCallback.value());
- }
-
- return new hdfs_internal(fs);
- } catch (const std::exception &e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
- return nullptr;
-}
-
-LIBHDFSPP_EXT_API
-int hdfsConnectAllocated(hdfsFS fs, struct hdfsBuilder *bld) {
- if(!CheckSystem(fs)) {
- return ENODEV;
- }
-
- if(!bld) {
- ReportError(ENODEV, "No hdfsBuilder object supplied");
- return ENODEV;
- }
-
- // Get C++ FS to do connect
- FileSystem *fsImpl = fs->get_impl();
- if(!fsImpl) {
- ReportError(ENODEV, "Null FileSystem implementation");
- return ENODEV;
- }
-
- // Unpack the required bits of the hdfsBuilder
- optional<std::string> nn = bld->overrideHost;
- optional<tPort> port = bld->overridePort;
- optional<std::string> user = bld->user;
-
- // try-catch in case some of the third-party stuff throws
- try {
- Status status;
- if (nn || port) {
- if (!port) {
- port = kDefaultPort;
- }
- std::string port_as_string = std::to_string(*port);
- status = fsImpl->Connect(nn.value_or(""), port_as_string);
- } else {
- status = fsImpl->ConnectToDefaultFs();
- }
-
- if (!status.ok()) {
- Error(status);
- return ENODEV;
- }
-
- // 0 to indicate a good connection
- return 0;
- } catch (const std::exception & e) {
- ReportException(e);
- return ENODEV;
- } catch (...) {
- ReportCaughtNonException();
- return ENODEV;
- }
-
- return 0;
-}
-
-LIBHDFS_C_API
-hdfsFS hdfsConnect(const char *nn, tPort port) {
- return hdfsConnectAsUser(nn, port, "");
-}
-
-LIBHDFS_C_API
-hdfsFS hdfsConnectAsUser(const char* nn, tPort port, const char *user) {
- return doHdfsConnect(std::string(nn), port, std::string(user), Options());
-}
-
-LIBHDFS_C_API
-hdfsFS hdfsConnectAsUserNewInstance(const char* nn, tPort port, const char *user ) {
- //libhdfspp always returns a new instance
- return doHdfsConnect(std::string(nn), port, std::string(user), Options());
-}
-
-LIBHDFS_C_API
-hdfsFS hdfsConnectNewInstance(const char* nn, tPort port) {
- //libhdfspp always returns a new instance
- return hdfsConnectAsUser(nn, port, "");
-}
-
-LIBHDFSPP_EXT_API
-int hdfsCancelPendingConnection(hdfsFS fs) {
- // todo: stick an enum in hdfs_internal to check the connect state
- if(!CheckSystem(fs)) {
- return ENODEV;
- }
-
- FileSystem *fsImpl = fs->get_impl();
- if(!fsImpl) {
- ReportError(ENODEV, "Null FileSystem implementation");
- return ENODEV;
- }
-
- bool canceled = fsImpl->CancelPendingConnect();
- if(canceled) {
- return 0;
- } else {
- return EINTR;
- }
-}
-
-LIBHDFS_C_API
-int hdfsDisconnect(hdfsFS fs) {
- try
- {
- errno = 0;
- if (!fs) {
- ReportError(ENODEV, "Cannot disconnect null FS handle.");
- return -1;
- }
-
- delete fs;
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-hdfsFile hdfsOpenFile(hdfsFS fs, const char *path, int flags, int bufferSize,
- short replication, tSize blocksize) {
- try
- {
- errno = 0;
- (void)flags;
- (void)bufferSize;
- (void)replication;
- (void)blocksize;
- if (!fs) {
- ReportError(ENODEV, "Cannot perform FS operations with null FS handle.");
- return nullptr;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return nullptr;
- }
- FileHandle *f = nullptr;
- Status stat = fs->get_impl()->Open(*abs_path, &f);
- if (!stat.ok()) {
- Error(stat);
- return nullptr;
- }
- if (f && fileEventCallback) {
- f->SetFileEventCallback(fileEventCallback.value());
- }
- return new hdfsFile_internal(f);
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFS_C_API
-int hdfsCloseFile(hdfsFS fs, hdfsFile file) {
- try
- {
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
- delete file;
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-char* hdfsGetWorkingDirectory(hdfsFS fs, char *buffer, size_t bufferSize) {
- try
- {
- errno = 0;
- if (!CheckSystem(fs)) {
- return nullptr;
- }
- std::string wd = fs->get_working_directory();
- size_t size = wd.size();
- if (size + 1 > bufferSize) {
- std::stringstream ss;
- ss << "hdfsGetWorkingDirectory: bufferSize is " << bufferSize <<
- ", which is not enough to fit working directory of size " << (size + 1);
- Error(Status::InvalidArgument(ss.str().c_str()));
- return nullptr;
- }
- wd.copy(buffer, size);
- buffer[size] = '\0';
- return buffer;
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFS_C_API
-int hdfsSetWorkingDirectory(hdfsFS fs, const char* path) {
- try
- {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- //Enforce last character to be '/'
- std::string withSlash = *abs_path;
- char last = withSlash.back();
- if (last != '/'){
- withSlash += '/';
- }
- fs->set_working_directory(withSlash);
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsAvailable(hdfsFS fs, hdfsFile file) {
- //Since we do not have read ahead implemented, return 0 if fs and file are good;
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
- return 0;
-}
-
-LIBHDFS_C_API
-tOffset hdfsGetDefaultBlockSize(hdfsFS fs) {
- try {
- errno = 0;
- return fs->get_impl()->get_options().block_size;
- } catch (const std::exception & e) {
- ReportException(e);
- return -1;
- } catch (...) {
- ReportCaughtNonException();
- return -1;
- }
-}
-
-LIBHDFS_C_API
-tOffset hdfsGetDefaultBlockSizeAtPath(hdfsFS fs, const char *path) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- uint64_t block_size;
- Status stat = fs->get_impl()->GetPreferredBlockSize(*abs_path, block_size);
- if (!stat.ok()) {
- if (stat.pathNotFound()){
- return fs->get_impl()->get_options().block_size;
- } else {
- return Error(stat);
- }
- }
- return block_size;
- } catch (const std::exception & e) {
- ReportException(e);
- return -1;
- } catch (...) {
- ReportCaughtNonException();
- return -1;
- }
-}
-
-LIBHDFS_C_API
-int hdfsSetReplication(hdfsFS fs, const char* path, int16_t replication) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- if(replication < 1){
- return Error(Status::InvalidArgument("SetReplication: argument 'replication' cannot be less than 1"));
- }
- Status stat;
- stat = fs->get_impl()->SetReplication(*abs_path, replication);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsUtime(hdfsFS fs, const char* path, tTime mtime, tTime atime) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat;
- stat = fs->get_impl()->SetTimes(*abs_path, mtime, atime);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-tOffset hdfsGetCapacity(hdfsFS fs) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
-
- hdfs::FsInfo fs_info;
- Status stat = fs->get_impl()->GetFsStats(fs_info);
- if (!stat.ok()) {
- Error(stat);
- return -1;
- }
- return fs_info.capacity;
- } catch (const std::exception & e) {
- ReportException(e);
- return -1;
- } catch (...) {
- ReportCaughtNonException();
- return -1;
- }
-}
-
-LIBHDFS_C_API
-tOffset hdfsGetUsed(hdfsFS fs) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
-
- hdfs::FsInfo fs_info;
- Status stat = fs->get_impl()->GetFsStats(fs_info);
- if (!stat.ok()) {
- Error(stat);
- return -1;
- }
- return fs_info.used;
- } catch (const std::exception & e) {
- ReportException(e);
- return -1;
- } catch (...) {
- ReportCaughtNonException();
- return -1;
- }
-}
-
-void StatInfoToHdfsFileInfo(hdfsFileInfo * file_info,
- const hdfs::StatInfo & stat_info) {
- /* file or directory */
- if (stat_info.file_type == StatInfo::IS_DIR) {
- file_info->mKind = kObjectKindDirectory;
- } else if (stat_info.file_type == StatInfo::IS_FILE) {
- file_info->mKind = kObjectKindFile;
- } else {
- file_info->mKind = kObjectKindFile;
- LOG_WARN(kFileSystem, << "Symlink is not supported! Reporting as a file: ");
- }
-
- /* the name of the file */
- char copyOfPath[PATH_MAX];
- strncpy(copyOfPath, stat_info.path.c_str(), PATH_MAX);
- copyOfPath[PATH_MAX - 1] = '\0'; // in case strncpy ran out of space
-
- char * mName = basename(copyOfPath);
- size_t mName_size = strlen(mName);
- file_info->mName = new char[mName_size+1];
- strncpy(file_info->mName, basename(copyOfPath), mName_size + 1);
-
- /* the last modification time for the file in seconds */
- file_info->mLastMod = (tTime) stat_info.modification_time;
-
- /* the size of the file in bytes */
- file_info->mSize = (tOffset) stat_info.length;
-
- /* the count of replicas */
- file_info->mReplication = (short) stat_info.block_replication;
-
- /* the block size for the file */
- file_info->mBlockSize = (tOffset) stat_info.blocksize;
-
- /* the owner of the file */
- file_info->mOwner = new char[stat_info.owner.size() + 1];
- strncpy(file_info->mOwner, stat_info.owner.c_str(), stat_info.owner.size() + 1);
-
- /* the group associated with the file */
- file_info->mGroup = new char[stat_info.group.size() + 1];
- strncpy(file_info->mGroup, stat_info.group.c_str(), stat_info.group.size() + 1);
-
- /* the permissions associated with the file encoded as an octal number (0777)*/
- file_info->mPermissions = (short) stat_info.permissions;
-
- /* the last access time for the file in seconds since the epoch*/
- file_info->mLastAccess = stat_info.access_time;
-}
-
-LIBHDFS_C_API
-int hdfsExists(hdfsFS fs, const char *path) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- hdfs::StatInfo stat_info;
- Status stat = fs->get_impl()->GetFileInfo(*abs_path, stat_info);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-hdfsFileInfo *hdfsGetPathInfo(hdfsFS fs, const char* path) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return nullptr;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return nullptr;
- }
- hdfs::StatInfo stat_info;
- Status stat = fs->get_impl()->GetFileInfo(*abs_path, stat_info);
- if (!stat.ok()) {
- Error(stat);
- return nullptr;
- }
- hdfsFileInfo *file_info = new hdfsFileInfo[1];
- StatInfoToHdfsFileInfo(file_info, stat_info);
- return file_info;
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFS_C_API
-hdfsFileInfo *hdfsListDirectory(hdfsFS fs, const char* path, int *numEntries) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- *numEntries = 0;
- return nullptr;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return nullptr;
- }
- std::vector<StatInfo> stat_infos;
- Status stat = fs->get_impl()->GetListing(*abs_path, &stat_infos);
- if (!stat.ok()) {
- Error(stat);
- *numEntries = 0;
- return nullptr;
- }
- if(stat_infos.empty()){
- *numEntries = 0;
- return nullptr;
- }
- *numEntries = stat_infos.size();
- hdfsFileInfo *file_infos = new hdfsFileInfo[stat_infos.size()];
- for(std::vector<StatInfo>::size_type i = 0; i < stat_infos.size(); i++) {
- StatInfoToHdfsFileInfo(&file_infos[i], stat_infos.at(i));
- }
-
- return file_infos;
- } catch (const std::exception & e) {
- ReportException(e);
- *numEntries = 0;
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- *numEntries = 0;
- return nullptr;
- }
-}
-
-LIBHDFS_C_API
-void hdfsFreeFileInfo(hdfsFileInfo *hdfsFileInfo, int numEntries)
-{
- errno = 0;
- int i;
- for (i = 0; i < numEntries; ++i) {
- delete[] hdfsFileInfo[i].mName;
- delete[] hdfsFileInfo[i].mOwner;
- delete[] hdfsFileInfo[i].mGroup;
- }
- delete[] hdfsFileInfo;
-}
-
-LIBHDFS_C_API
-int hdfsCreateDirectory(hdfsFS fs, const char* path) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat;
- //Use default permissions and set true for creating all non-existant parent directories
- stat = fs->get_impl()->Mkdirs(*abs_path, FileSystem::GetDefaultPermissionMask(), true);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsDelete(hdfsFS fs, const char* path, int recursive) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat;
- stat = fs->get_impl()->Delete(*abs_path, recursive);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsRename(hdfsFS fs, const char* oldPath, const char* newPath) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> old_abs_path = getAbsolutePath(fs, oldPath);
- const optional<std::string> new_abs_path = getAbsolutePath(fs, newPath);
- if(!old_abs_path || !new_abs_path) {
- return -1;
- }
- Status stat;
- stat = fs->get_impl()->Rename(*old_abs_path, *new_abs_path);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsChmod(hdfsFS fs, const char* path, short mode){
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat = FileSystem::CheckValidPermissionMask(mode);
- if (!stat.ok()) {
- return Error(stat);
- }
- stat = fs->get_impl()->SetPermission(*abs_path, mode);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsChown(hdfsFS fs, const char* path, const char *owner, const char *group){
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- std::string own = (owner) ? owner : "";
- std::string grp = (group) ? group : "";
-
- Status stat;
- stat = fs->get_impl()->SetOwner(*abs_path, own, grp);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFSPP_EXT_API
-hdfsFileInfo * hdfsFind(hdfsFS fs, const char* path, const char* name, uint32_t * numEntries){
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- *numEntries = 0;
- return nullptr;
- }
-
- std::vector<StatInfo> stat_infos;
- Status stat = fs->get_impl()->Find(path, name, hdfs::FileSystem::GetDefaultFindMaxDepth(), &stat_infos);
- if (!stat.ok()) {
- Error(stat);
- *numEntries = 0;
- return nullptr;
- }
- //Existing API expects nullptr if size is 0
- if(stat_infos.empty()){
- *numEntries = 0;
- return nullptr;
- }
- *numEntries = stat_infos.size();
- hdfsFileInfo *file_infos = new hdfsFileInfo[stat_infos.size()];
- for(std::vector<StatInfo>::size_type i = 0; i < stat_infos.size(); i++) {
- StatInfoToHdfsFileInfo(&file_infos[i], stat_infos.at(i));
- }
-
- return file_infos;
- } catch (const std::exception & e) {
- ReportException(e);
- *numEntries = 0;
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- *numEntries = 0;
- return nullptr;
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsCreateSnapshot(hdfsFS fs, const char* path, const char* name) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat;
- if(!name){
- stat = fs->get_impl()->CreateSnapshot(*abs_path, "");
- } else {
- stat = fs->get_impl()->CreateSnapshot(*abs_path, name);
- }
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsDeleteSnapshot(hdfsFS fs, const char* path, const char* name) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- if (!name) {
- return Error(Status::InvalidArgument("hdfsDeleteSnapshot: argument 'name' cannot be NULL"));
- }
- Status stat;
- stat = fs->get_impl()->DeleteSnapshot(*abs_path, name);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-
-int hdfsRenameSnapshot(hdfsFS fs, const char* path, const char* old_name, const char* new_name) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- if (!old_name) {
- return Error(Status::InvalidArgument("hdfsRenameSnapshot: argument 'old_name' cannot be NULL"));
- }
- if (!new_name) {
- return Error(Status::InvalidArgument("hdfsRenameSnapshot: argument 'new_name' cannot be NULL"));
- }
- Status stat;
- stat = fs->get_impl()->RenameSnapshot(*abs_path, old_name, new_name);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-
-}
-
-LIBHDFSPP_EXT_API
-int hdfsAllowSnapshot(hdfsFS fs, const char* path) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat;
- stat = fs->get_impl()->AllowSnapshot(*abs_path);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsDisallowSnapshot(hdfsFS fs, const char* path) {
- try {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- Status stat;
- stat = fs->get_impl()->DisallowSnapshot(*abs_path);
- if (!stat.ok()) {
- return Error(stat);
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-tSize hdfsPread(hdfsFS fs, hdfsFile file, tOffset position, void *buffer,
- tSize length) {
- try
- {
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
-
- size_t len = 0;
- Status stat = file->get_impl()->PositionRead(buffer, length, position, &len);
- if(!stat.ok()) {
- return Error(stat);
- }
- return (tSize)len;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-tSize hdfsRead(hdfsFS fs, hdfsFile file, void *buffer, tSize length) {
- try
- {
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
-
- size_t len = 0;
- Status stat = file->get_impl()->Read(buffer, length, &len);
- if (!stat.ok()) {
- return Error(stat);
- }
-
- return (tSize)len;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsUnbufferFile(hdfsFile file) {
- //Currently we are not doing any buffering
- CheckHandle(file);
- return -1;
-}
-
-LIBHDFS_C_API
-int hdfsFileGetReadStatistics(hdfsFile file, struct hdfsReadStatistics **stats) {
- try
- {
- errno = 0;
- if (!CheckHandle(file)) {
- return -1;
- }
- *stats = new hdfsReadStatistics;
- memset(*stats, 0, sizeof(hdfsReadStatistics));
- (*stats)->totalBytesRead = file->get_impl()->get_bytes_read();
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsFileClearReadStatistics(hdfsFile file) {
- try
- {
- errno = 0;
- if (!CheckHandle(file)) {
- return -1;
- }
- file->get_impl()->clear_bytes_read();
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int64_t hdfsReadStatisticsGetRemoteBytesRead(const struct hdfsReadStatistics *stats) {
- return stats->totalBytesRead - stats->totalLocalBytesRead;
-}
-
-LIBHDFS_C_API
-void hdfsFileFreeReadStatistics(struct hdfsReadStatistics *stats) {
- errno = 0;
- delete stats;
-}
-
-/* 0 on success, -1 on error*/
-LIBHDFS_C_API
-int hdfsSeek(hdfsFS fs, hdfsFile file, tOffset desiredPos) {
- try
- {
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
-
- off_t desired = desiredPos;
- Status stat = file->get_impl()->Seek(&desired, std::ios_base::beg);
- if (!stat.ok()) {
- return Error(stat);
- }
-
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-tOffset hdfsTell(hdfsFS fs, hdfsFile file) {
- try
- {
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
-
- off_t offset = 0;
- Status stat = file->get_impl()->Seek(&offset, std::ios_base::cur);
- if (!stat.ok()) {
- return Error(stat);
- }
-
- return (tOffset)offset;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-/* extended API */
-int hdfsCancel(hdfsFS fs, hdfsFile file) {
- try
- {
- errno = 0;
- if (!CheckSystemAndHandle(fs, file)) {
- return -1;
- }
- static_cast<FileHandleImpl*>(file->get_impl())->CancelOperations();
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsGetBlockLocations(hdfsFS fs, const char *path, struct hdfsBlockLocations ** locations_out)
-{
- try
- {
- errno = 0;
- if (!CheckSystem(fs)) {
- return -1;
- }
- if (locations_out == nullptr) {
- ReportError(EINVAL, "Null pointer passed to hdfsGetBlockLocations");
- return -1;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return -1;
- }
- std::shared_ptr<FileBlockLocation> ppLocations;
- Status stat = fs->get_impl()->GetBlockLocations(*abs_path, 0, std::numeric_limits<int64_t>::max(), &ppLocations);
- if (!stat.ok()) {
- return Error(stat);
- }
-
- hdfsBlockLocations *locations = new struct hdfsBlockLocations();
- (*locations_out) = locations;
-
- bzero(locations, sizeof(*locations));
- locations->fileLength = ppLocations->getFileLength();
- locations->isLastBlockComplete = ppLocations->isLastBlockComplete();
- locations->isUnderConstruction = ppLocations->isUnderConstruction();
-
- const std::vector<BlockLocation> & ppBlockLocations = ppLocations->getBlockLocations();
- locations->num_blocks = ppBlockLocations.size();
- locations->blocks = new struct hdfsBlockInfo[locations->num_blocks];
- for (size_t i=0; i < ppBlockLocations.size(); i++) {
- auto ppBlockLocation = ppBlockLocations[i];
- auto block = &locations->blocks[i];
-
- block->num_bytes = ppBlockLocation.getLength();
- block->start_offset = ppBlockLocation.getOffset();
-
- const std::vector<DNInfo> & ppDNInfos = ppBlockLocation.getDataNodes();
- block->num_locations = ppDNInfos.size();
- block->locations = new hdfsDNInfo[block->num_locations];
- for (size_t j=0; j < block->num_locations; j++) {
- auto ppDNInfo = ppDNInfos[j];
- auto dn_info = &block->locations[j];
-
- dn_info->xfer_port = ppDNInfo.getXferPort();
- dn_info->info_port = ppDNInfo.getInfoPort();
- dn_info->IPC_port = ppDNInfo.getIPCPort();
- dn_info->info_secure_port = ppDNInfo.getInfoSecurePort();
-
- char * buf;
- buf = new char[ppDNInfo.getHostname().size() + 1];
- strncpy(buf, ppDNInfo.getHostname().c_str(), ppDNInfo.getHostname().size() + 1);
- dn_info->hostname = buf;
-
- buf = new char[ppDNInfo.getIPAddr().size() + 1];
- strncpy(buf, ppDNInfo.getIPAddr().c_str(), ppDNInfo.getIPAddr().size() + 1);
- dn_info->ip_address = buf;
-
- buf = new char[ppDNInfo.getNetworkLocation().size() + 1];
- strncpy(buf, ppDNInfo.getNetworkLocation().c_str(), ppDNInfo.getNetworkLocation().size() + 1);
- dn_info->network_location = buf;
- }
- }
-
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsFreeBlockLocations(struct hdfsBlockLocations * blockLocations) {
- errno = 0;
- if (blockLocations == nullptr)
- return 0;
-
- for (size_t i=0; i < blockLocations->num_blocks; i++) {
- auto block = &blockLocations->blocks[i];
- for (size_t j=0; j < block->num_locations; j++) {
- auto location = &block->locations[j];
- delete[] location->hostname;
- delete[] location->ip_address;
- delete[] location->network_location;
- }
- }
- delete[] blockLocations->blocks;
- delete blockLocations;
-
- return 0;
-}
-
-LIBHDFS_C_API
-char*** hdfsGetHosts(hdfsFS fs, const char* path, tOffset start, tOffset length) {
- try
- {
- errno = 0;
- if (!CheckSystem(fs)) {
- return nullptr;
- }
- const optional<std::string> abs_path = getAbsolutePath(fs, path);
- if(!abs_path) {
- return nullptr;
- }
- std::shared_ptr<FileBlockLocation> ppLocations;
- Status stat = fs->get_impl()->GetBlockLocations(*abs_path, start, length, &ppLocations);
- if (!stat.ok()) {
- Error(stat);
- return nullptr;
- }
- const std::vector<BlockLocation> & ppBlockLocations = ppLocations->getBlockLocations();
- char ***hosts = new char**[ppBlockLocations.size() + 1];
- for (size_t i=0; i < ppBlockLocations.size(); i++) {
- const std::vector<DNInfo> & ppDNInfos = ppBlockLocations[i].getDataNodes();
- hosts[i] = new char*[ppDNInfos.size() + 1];
- for (size_t j=0; j < ppDNInfos.size(); j++) {
- auto ppDNInfo = ppDNInfos[j];
- hosts[i][j] = new char[ppDNInfo.getHostname().size() + 1];
- strncpy(hosts[i][j], ppDNInfo.getHostname().c_str(), ppDNInfo.getHostname().size() + 1);
- }
- hosts[i][ppDNInfos.size()] = nullptr;
- }
- hosts[ppBlockLocations.size()] = nullptr;
- return hosts;
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFS_C_API
-void hdfsFreeHosts(char ***blockHosts) {
- errno = 0;
- if (blockHosts == nullptr)
- return;
-
- for (size_t i = 0; blockHosts[i]; i++) {
- for (size_t j = 0; blockHosts[i][j]; j++) {
- delete[] blockHosts[i][j];
- }
- delete[] blockHosts[i];
- }
- delete blockHosts;
-}
-
-/*******************************************************************
- * EVENT CALLBACKS
- *******************************************************************/
-
-const char * FS_NN_CONNECT_EVENT = hdfs::FS_NN_CONNECT_EVENT;
-const char * FS_NN_READ_EVENT = hdfs::FS_NN_READ_EVENT;
-const char * FS_NN_WRITE_EVENT = hdfs::FS_NN_WRITE_EVENT;
-
-const char * FILE_DN_CONNECT_EVENT = hdfs::FILE_DN_CONNECT_EVENT;
-const char * FILE_DN_READ_EVENT = hdfs::FILE_DN_READ_EVENT;
-const char * FILE_DN_WRITE_EVENT = hdfs::FILE_DN_WRITE_EVENT;
-
-
-event_response fs_callback_glue(libhdfspp_fs_event_callback handler,
- int64_t cookie,
- const char * event,
- const char * cluster,
- int64_t value) {
- int result = handler(event, cluster, value, cookie);
- if (result == LIBHDFSPP_EVENT_OK) {
- return event_response::make_ok();
- }
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (result == DEBUG_SIMULATE_ERROR) {
- return event_response::test_err(Status::Error("Simulated error"));
- }
-#endif
-
- return event_response::make_ok();
-}
-
-event_response file_callback_glue(libhdfspp_file_event_callback handler,
- int64_t cookie,
- const char * event,
- const char * cluster,
- const char * file,
- int64_t value) {
- int result = handler(event, cluster, file, value, cookie);
- if (result == LIBHDFSPP_EVENT_OK) {
- return event_response::make_ok();
- }
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (result == DEBUG_SIMULATE_ERROR) {
- return event_response::test_err(Status::Error("Simulated error"));
- }
-#endif
-
- return event_response::make_ok();
-}
-
-LIBHDFSPP_EXT_API
-int hdfsPreAttachFSMonitor(libhdfspp_fs_event_callback handler, int64_t cookie)
-{
- fs_event_callback callback = std::bind(fs_callback_glue, handler, cookie, _1, _2, _3);
- fsEventCallback = callback;
- return 0;
-}
-
-LIBHDFSPP_EXT_API
-int hdfsPreAttachFileMonitor(libhdfspp_file_event_callback handler, int64_t cookie)
-{
- file_event_callback callback = std::bind(file_callback_glue, handler, cookie, _1, _2, _3, _4);
- fileEventCallback = callback;
- return 0;
-}
-
-/*******************************************************************
- * BUILDER INTERFACE
- *******************************************************************/
-
-HdfsConfiguration LoadDefault(ConfigurationLoader & loader)
-{
- optional<HdfsConfiguration> result = loader.LoadDefaultResources<HdfsConfiguration>();
- if (result)
- {
- return result.value();
- }
- else
- {
- return loader.NewConfig<HdfsConfiguration>();
- }
-}
-
-hdfsBuilder::hdfsBuilder() : config(loader.NewConfig<HdfsConfiguration>())
-{
- errno = 0;
- config = LoadDefault(loader);
-}
-
-hdfsBuilder::hdfsBuilder(const char * directory) :
- config(loader.NewConfig<HdfsConfiguration>())
-{
- errno = 0;
- loader.SetSearchPath(directory);
- config = LoadDefault(loader);
-}
-
-LIBHDFS_C_API
-struct hdfsBuilder *hdfsNewBuilder(void)
-{
- try
- {
- errno = 0;
- return new struct hdfsBuilder();
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFS_C_API
-void hdfsBuilderSetNameNode(struct hdfsBuilder *bld, const char *nn)
-{
- errno = 0;
- bld->overrideHost = std::string(nn);
-}
-
-LIBHDFS_C_API
-void hdfsBuilderSetNameNodePort(struct hdfsBuilder *bld, tPort port)
-{
- errno = 0;
- bld->overridePort = port;
-}
-
-LIBHDFS_C_API
-void hdfsBuilderSetUserName(struct hdfsBuilder *bld, const char *userName)
-{
- errno = 0;
- if (userName && *userName) {
- bld->user = std::string(userName);
- }
-}
-
-LIBHDFS_C_API
-void hdfsBuilderSetForceNewInstance(struct hdfsBuilder *bld) {
- //libhdfspp always returns a new instance, so nothing to do
- (void)bld;
- errno = 0;
-}
-
-LIBHDFS_C_API
-void hdfsFreeBuilder(struct hdfsBuilder *bld)
-{
- try
- {
- errno = 0;
- delete bld;
- } catch (const std::exception & e) {
- ReportException(e);
- } catch (...) {
- ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsBuilderConfSetStr(struct hdfsBuilder *bld, const char *key,
- const char *val)
-{
- try
- {
- errno = 0;
- optional<HdfsConfiguration> newConfig = bld->loader.OverlayValue(bld->config, key, val);
- if (newConfig)
- {
- bld->config = newConfig.value();
- return 0;
- }
- else
- {
- ReportError(EINVAL, "Could not change Builder value");
- return -1;
- }
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-void hdfsConfStrFree(char *val)
-{
- errno = 0;
- free(val);
-}
-
-LIBHDFS_C_API
-hdfsFS hdfsBuilderConnect(struct hdfsBuilder *bld) {
- hdfsFS fs = doHdfsConnect(bld->overrideHost, bld->overridePort, bld->user, bld->config.GetOptions());
- // Always free the builder
- hdfsFreeBuilder(bld);
- return fs;
-}
-
-LIBHDFS_C_API
-int hdfsConfGetStr(const char *key, char **val)
-{
- try
- {
- errno = 0;
- hdfsBuilder builder;
- return hdfsBuilderConfGetStr(&builder, key, val);
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFS_C_API
-int hdfsConfGetInt(const char *key, int32_t *val)
-{
- try
- {
- errno = 0;
- hdfsBuilder builder;
- return hdfsBuilderConfGetInt(&builder, key, val);
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-//
-// Extended builder interface
-//
-struct hdfsBuilder *hdfsNewBuilderFromDirectory(const char * configDirectory)
-{
- try
- {
- errno = 0;
- return new struct hdfsBuilder(configDirectory);
- } catch (const std::exception & e) {
- ReportException(e);
- return nullptr;
- } catch (...) {
- ReportCaughtNonException();
- return nullptr;
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsBuilderConfGetStr(struct hdfsBuilder *bld, const char *key,
- char **val)
-{
- try
- {
- errno = 0;
- optional<std::string> value = bld->config.Get(key);
- if (value)
- {
- size_t len = value->length() + 1;
- *val = static_cast<char *>(malloc(len));
- strncpy(*val, value->c_str(), len);
- }
- else
- {
- *val = nullptr;
- }
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-// If we're running on a 32-bit platform, we might get 64-bit values that
-// don't fit in an int, and int is specified by the java hdfs.h interface
-bool isValidInt(int64_t value)
-{
- return (value >= std::numeric_limits<int>::min() &&
- value <= std::numeric_limits<int>::max());
-}
-
-LIBHDFSPP_EXT_API
-int hdfsBuilderConfGetInt(struct hdfsBuilder *bld, const char *key, int32_t *val)
-{
- try
- {
- errno = 0;
- // Pull from default configuration
- optional<int64_t> value = bld->config.GetInt(key);
- if (value)
- {
- if (!isValidInt(*value)){
- ReportError(EINVAL, "Builder value is not valid");
- return -1;
- }
- *val = *value;
- return 0;
- }
- // If not found, don't change val
- ReportError(EINVAL, "Could not get Builder value");
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-LIBHDFSPP_EXT_API
-int hdfsBuilderConfGetLong(struct hdfsBuilder *bld, const char *key, int64_t *val)
-{
- try
- {
- errno = 0;
- // Pull from default configuration
- optional<int64_t> value = bld->config.GetInt(key);
- if (value)
- {
- *val = *value;
- return 0;
- }
- // If not found, don't change val
- ReportError(EINVAL, "Could not get Builder value");
- return 0;
- } catch (const std::exception & e) {
- return ReportException(e);
- } catch (...) {
- return ReportCaughtNonException();
- }
-}
-
-/**
- * Logging functions
- **/
-class CForwardingLogger : public LoggerInterface {
- public:
- CForwardingLogger() : callback_(nullptr) {};
-
- // Converts LogMessage into LogData, a POD type,
- // and invokes callback_ if it's not null.
- void Write(const LogMessage& msg);
-
- // pass in NULL to clear the hook
- void SetCallback(void (*callback)(LogData*));
-
- //return a copy, or null on failure.
- static LogData *CopyLogData(const LogData*);
- //free LogData allocated with CopyLogData
- static void FreeLogData(LogData*);
- private:
- void (*callback_)(LogData*);
-};
-
-/**
- * Plugin to forward message to a C function pointer
- **/
-void CForwardingLogger::Write(const LogMessage& msg) {
- if(!callback_)
- return;
-
- const std::string text = msg.MsgString();
-
- LogData data;
- data.level = msg.level();
- data.component = msg.component();
- data.msg = text.c_str();
- data.file_name = msg.file_name();
- data.file_line = msg.file_line();
- callback_(&data);
-}
-
-void CForwardingLogger::SetCallback(void (*callback)(LogData*)) {
- callback_ = callback;
-}
-
-LogData *CForwardingLogger::CopyLogData(const LogData *orig) {
- if(!orig)
- return nullptr;
-
- LogData *copy = (LogData*)malloc(sizeof(LogData));
- if(!copy)
- return nullptr;
-
- copy->level = orig->level;
- copy->component = orig->component;
- if(orig->msg)
- copy->msg = strdup(orig->msg);
- copy->file_name = orig->file_name;
- copy->file_line = orig->file_line;
- return copy;
-}
-
-void CForwardingLogger::FreeLogData(LogData *data) {
- if(!data)
- return;
- if(data->msg)
- free((void*)data->msg);
-
- // Inexpensive way to help catch use-after-free
- memset(data, 0, sizeof(LogData));
- free(data);
-}
-
-LIBHDFSPP_EXT_API
-LogData *hdfsCopyLogData(LogData *data) {
- return CForwardingLogger::CopyLogData(data);
-}
-
-LIBHDFSPP_EXT_API
-void hdfsFreeLogData(LogData *data) {
- CForwardingLogger::FreeLogData(data);
-}
-
-LIBHDFSPP_EXT_API
-void hdfsSetLogFunction(void (*callback)(LogData*)) {
- CForwardingLogger *logger = new CForwardingLogger();
- logger->SetCallback(callback);
- LogManager::SetLoggerImplementation(std::unique_ptr<LoggerInterface>(logger));
-}
-
-static bool IsLevelValid(int component) {
- if(component < HDFSPP_LOG_LEVEL_TRACE || component > HDFSPP_LOG_LEVEL_ERROR)
- return false;
- return true;
-}
-
-
-// should use __builtin_popcnt as optimization on some platforms
-static int popcnt(int val) {
- int bits = sizeof(val) * 8;
- int count = 0;
- for(int i=0; i<bits; i++) {
- if((val >> i) & 0x1)
- count++;
- }
- return count;
-}
-
-static bool IsComponentValid(int component) {
- if(component < HDFSPP_LOG_COMPONENT_UNKNOWN || component > HDFSPP_LOG_COMPONENT_FILESYSTEM)
- return false;
- if(popcnt(component) != 1)
- return false;
- return true;
-}
-
-LIBHDFSPP_EXT_API
-int hdfsEnableLoggingForComponent(int component) {
- errno = 0;
- if(!IsComponentValid(component))
- return -1;
- LogManager::EnableLogForComponent(static_cast<LogSourceComponent>(component));
- return 0;
-}
-
-LIBHDFSPP_EXT_API
-int hdfsDisableLoggingForComponent(int component) {
- errno = 0;
- if(!IsComponentValid(component))
- return -1;
- LogManager::DisableLogForComponent(static_cast<LogSourceComponent>(component));
- return 0;
-}
-
-LIBHDFSPP_EXT_API
-int hdfsSetLoggingLevel(int level) {
- errno = 0;
- if(!IsLevelValid(level))
- return -1;
- LogManager::SetLogLevel(static_cast<LogLevel>(level));
- return 0;
-}
-
-#undef LIBHDFS_C_API
-#undef LIBHDFSPP_EXT_API
-
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/CMakeLists.txt
deleted file mode 100644
index 5d9e52c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-if(NEED_LINK_DL)
- set(LIB_DL dl)
-endif()
-
-add_library(common_obj OBJECT status.cc sasl_digest_md5.cc hdfs_ioservice.cc options.cc configuration.cc configuration_loader.cc hdfs_configuration.cc uri.cc util.cc retry_policy.cc cancel_tracker.cc logging.cc libhdfs_events_impl.cc auth_info.cc namenode_info.cc statinfo.cc fsinfo.cc content_summary.cc locks.cc config_parser.cc)
-add_library(common $<TARGET_OBJECTS:common_obj> $<TARGET_OBJECTS:uriparser2_obj>)
-target_link_libraries(common ${LIB_DL})
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/async_stream.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/async_stream.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/async_stream.h
deleted file mode 100644
index 575904c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/async_stream.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_COMMON_ASYNC_STREAM_H_
-#define LIB_COMMON_ASYNC_STREAM_H_
-
-#include <asio.hpp>
-
-namespace hdfs {
-
-typedef asio::mutable_buffers_1 MutableBuffers;
-typedef asio::const_buffers_1 ConstBuffers;
-
-/*
- * asio-compatible stream implementation.
- *
- * Lifecycle: should be managed using std::shared_ptr so the object can be
- * handed from consumer to consumer
- * Threading model: async_read_some and async_write_some are not thread-safe.
- */
-class AsyncStream {
-public:
- virtual void async_read_some(const MutableBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) = 0;
-
- virtual void async_write_some(const ConstBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) = 0;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.cc
deleted file mode 100644
index fb98329..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.cc
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "auth_info.h"
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.h
deleted file mode 100644
index 2b3f36d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/auth_info.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_FS_AUTHINFO_H
-#define LIB_FS_AUTHINFO_H
-
-#include "common/optional_wrapper.h"
-
-namespace hdfs {
-
-class Token {
-public:
- std::string identifier;
- std::string password;
-};
-
-class AuthInfo {
-public:
- enum AuthMethod {
- kSimple,
- kKerberos,
- kToken,
- kUnknownAuth,
- kAuthFailed
- };
-
- AuthInfo() :
- method(kSimple) {
- }
-
- explicit AuthInfo(AuthMethod mech) :
- method(mech) {
- }
-
- bool useSASL() {
- return method != kSimple;
- }
-
- const std::string & getUser() const {
- return user;
- }
-
- void setUser(const std::string & user) {
- this->user = user;
- }
-
- AuthMethod getMethod() const {
- return method;
- }
-
- void setMethod(AuthMethod method) {
- this->method = method;
- }
-
- const std::experimental::optional<Token> & getToken() const {
- return token;
- }
-
- void setToken(const Token & token) {
- this->token = token;
- }
-
- void clearToken() {
- this->token = std::experimental::nullopt;
- }
-
-private:
- AuthMethod method;
- std::string user;
- std::experimental::optional<Token> token;
-};
-
-}
-
-#endif /* RPCAUTHINFO_H */
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.cc
deleted file mode 100644
index 0f60ed7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- **/
-
-#include "cancel_tracker.h"
-
-namespace hdfs {
-
-CancelTracker::CancelTracker() : canceled_(false) {}
-
-std::shared_ptr<CancelTracker> CancelTracker::New() {
- return std::make_shared<CancelTracker>();
-}
-
-bool CancelTracker::is_canceled() {
- return canceled_;
-}
-
-void CancelTracker::set_canceled() {
- canceled_ = true;
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.h
deleted file mode 100644
index ba61926..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/cancel_tracker.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- **/
-
-#ifndef COMMON_CANCELTRACKER_H
-#define COMMON_CANCELTRACKER_H
-
-#include <memory>
-#include <atomic>
-
-namespace hdfs {
-
-class CancelTracker : public std::enable_shared_from_this<CancelTracker> {
- public:
- CancelTracker();
- static std::shared_ptr<CancelTracker> New();
- void set_canceled();
- bool is_canceled();
- private:
- std::atomic_bool canceled_;
-};
-
-typedef std::shared_ptr<CancelTracker> CancelHandle;
-
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/config_parser.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/config_parser.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/config_parser.cc
deleted file mode 100644
index f7b1c25..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/config_parser.cc
+++ /dev/null
@@ -1,219 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/config_parser.h"
-#include "common/hdfs_configuration.h"
-#include "common/configuration_loader.h"
-
-#include <string>
-#include <memory>
-#include <vector>
-#include <numeric>
-
-namespace hdfs {
-
-static const char kSearchPathSeparator = ':';
-
-HdfsConfiguration LoadDefault(ConfigurationLoader & loader)
-{
- optional<HdfsConfiguration> result = loader.LoadDefaultResources<HdfsConfiguration>();
- if (result)
- {
- return result.value();
- }
- else
- {
- return loader.NewConfig<HdfsConfiguration>();
- }
-}
-
-class ConfigParser::impl {
- public:
- impl() :
- config_(loader_.NewConfig<HdfsConfiguration>()) {
- }
-
- impl(const std::vector<std::string>& dirs) :
- config_(loader_.NewConfig<HdfsConfiguration>()) {
-
- // Convert vector of paths into ':' separated path
- std::string path = std::accumulate(dirs.begin(), dirs.end(), std::string(""),
- [](std::string cumm, std::string elem) {return cumm + kSearchPathSeparator + elem;});
- loader_.SetSearchPath(path);
- config_ = LoadDefault(loader_);
- }
-
- impl(const std::string& path) :
- config_(loader_.NewConfig<HdfsConfiguration>()) {
-
- loader_.SetSearchPath(path);
- config_ = LoadDefault(loader_);
- }
-
- bool LoadDefaultResources() {
- config_ = LoadDefault(loader_);
- return true;
- }
-
- std::vector<std::pair<std::string, Status> > ValidateResources() const {
- return loader_.ValidateDefaultResources<HdfsConfiguration>();
- }
-
- bool get_int(const std::string& key, int& outval) const {
- auto ret = config_.GetInt(key);
- if (!ret) {
- return false;
- } else {
- outval = *ret;
- return true;
- }
- }
-
- bool get_string(const std::string& key, std::string& outval) const {
- auto ret = config_.Get(key);
- if (!ret) {
- return false;
- } else {
- outval = *ret;
- return true;
- }
- }
-
- bool get_bool(const std::string& key, bool& outval) const {
- auto ret = config_.GetBool(key);
- if (!ret) {
- return false;
- } else {
- outval = *ret;
- return true;
- }
- }
-
- bool get_double(const std::string& key, double& outval) const {
- auto ret = config_.GetDouble(key);
- if (!ret) {
- return false;
- } else {
- outval = *ret;
- return true;
- }
- }
-
- bool get_uri(const std::string& key, URI& outval) const {
- auto ret = config_.GetUri(key);
- if (!ret) {
- return false;
- } else {
- outval = *ret;
- return true;
- }
- }
-
- bool get_options(Options& outval) {
- outval = config_.GetOptions();
- return true;
- }
-
- private:
- ConfigurationLoader loader_;
- HdfsConfiguration config_;
-};
-
-
-ConfigParser::ConfigParser() {
- pImpl.reset(new ConfigParser::impl());
-}
-
-ConfigParser::ConfigParser(const std::vector<std::string>& configDirectories) {
- pImpl.reset(new ConfigParser::impl(configDirectories));
-}
-
-ConfigParser::ConfigParser(const std::string& path) {
- pImpl.reset(new ConfigParser::impl(path));
-}
-
-ConfigParser::~ConfigParser() = default;
-ConfigParser::ConfigParser(ConfigParser&&) = default;
-ConfigParser& ConfigParser::operator=(ConfigParser&&) = default;
-
-bool ConfigParser::LoadDefaultResources() { return pImpl->LoadDefaultResources(); }
-std::vector<std::pair<std::string, Status> > ConfigParser::ValidateResources() const { return pImpl->ValidateResources();}
-
-bool ConfigParser::get_int(const std::string& key, int& outval) const { return pImpl->get_int(key, outval); }
-int ConfigParser::get_int_or(const std::string& key, const int defaultval) const {
- int res = 0;
- if(get_int(key, res)) {
- return res;
- } else {
- return defaultval;
- }
-}
-
-bool ConfigParser::get_string(const std::string& key, std::string& outval) const { return pImpl->get_string(key, outval); }
-std::string ConfigParser::get_string_or(const std::string& key, const std::string& defaultval) const {
- std::string res;
- if(get_string(key, res)) {
- return res;
- } else {
- return defaultval;
- }
-}
-
-bool ConfigParser::get_bool(const std::string& key, bool& outval) const { return pImpl->get_bool(key, outval); }
-bool ConfigParser::get_bool_or(const std::string& key, const bool defaultval) const {
- bool res = false;
- if(get_bool(key, res)) {
- return res;
- } else {
- return defaultval;
- }
-}
-
-bool ConfigParser::get_double(const std::string& key, double& outval) const { return pImpl->get_double(key, outval); }
-double ConfigParser::get_double_or(const std::string& key, const double defaultval) const {
- double res = 0;
- if(get_double(key, res)) {
- return res;
- } else {
- return defaultval;
- }
-}
-
-bool ConfigParser::get_uri(const std::string& key, URI& outval) const { return pImpl->get_uri(key, outval); }
-URI ConfigParser::get_uri_or(const std::string& key, const URI& defaultval) const {
- URI res;
- if(get_uri(key, res)) {
- return res;
- } else {
- res = defaultval;
- return res;
- }
-}
-
-bool ConfigParser::get_options(Options& outval) const { return pImpl->get_options(outval); }
-Options ConfigParser::get_options_or(const Options& defaultval) const {
- Options res;
- if(get_options(res)) {
- return res;
- } else {
- res = defaultval;
- return res;
- }
-}
-
-} // end namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.cc
deleted file mode 100644
index 298de1e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.cc
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * The following features are not currently implemented
- * - Deprecated values
- * - Make filename and config file contents unicode-safe
- * - Config redirection/environment substitution
- *
- * - getInts (comma separated))
- * - getStrings (comma separated))
- * - getIntegerRange
- * - getSocketAddr
- * - getTimeDuration
- * - getBytes (e.g. 1M or 1G)
- * - hex values
- */
-
-#include "configuration.h"
-#include "hdfspp/uri.h"
-
-#include <strings.h>
-#include <sstream>
-#include <map>
-#include <rapidxml/rapidxml.hpp>
-#include <rapidxml/rapidxml_utils.hpp>
-
-namespace hdfs {
-
-/*
- * Configuration class
- */
-std::vector<std::string> Configuration::GetDefaultFilenames() {
- auto result = std::vector<std::string>();
- result.push_back("core-site.xml");
- return result;
-}
-
-
-optional<std::string> Configuration::Get(const std::string& key) const {
- std::string caseFixedKey = fixCase(key);
- auto found = raw_values_.find(caseFixedKey);
- if (found != raw_values_.end()) {
- return std::experimental::make_optional(found->second.value);
- } else {
- return optional<std::string>();
- }
-}
-
-std::string Configuration::GetWithDefault(
- const std::string& key, const std::string& default_value) const {
- return Get(key).value_or(default_value);
-}
-
-optional<int64_t> Configuration::GetInt(const std::string& key) const {
- auto raw = Get(key);
- if (raw) {
- errno = 0;
- char* end = nullptr;
- optional<int64_t> result =
- std::experimental::make_optional(static_cast<int64_t>(strtol(raw->c_str(), &end, 10)));
- if (end == raw->c_str()) {
- /* strtoll will set end to input if no conversion was done */
- return optional<int64_t>();
- }
- if (errno == ERANGE) {
- return optional<int64_t>();
- }
-
- return result;
- } else {
- return optional<int64_t>();
- }
-}
-
-int64_t Configuration::GetIntWithDefault(const std::string& key,
- int64_t default_value) const {
- return GetInt(key).value_or(default_value);
-}
-
-optional<double> Configuration::GetDouble(const std::string& key) const {
- auto raw = Get(key);
- if (raw) {
- errno = 0;
- char* end = nullptr;
- auto result = std::experimental::make_optional(strtod(raw->c_str(), &end));
- if (end == raw->c_str()) {
- /* strtod will set end to input if no conversion was done */
- return optional<double>();
- }
- if (errno == ERANGE) {
- return optional<double>();
- }
-
- return result;
- } else {
- return optional<double>();
- }
-}
-
-double Configuration::GetDoubleWithDefault(const std::string& key,
- double default_value) const {
- return GetDouble(key).value_or(default_value);
-}
-
-optional<bool> Configuration::GetBool(const std::string& key) const {
- auto raw = Get(key);
- if (!raw) {
- return optional<bool>();
- }
-
- if (!strcasecmp(raw->c_str(), "true")) {
- return std::experimental::make_optional(true);
- }
- if (!strcasecmp(raw->c_str(), "false")) {
- return std::experimental::make_optional(false);
- }
-
- return optional<bool>();
-}
-
-bool Configuration::GetBoolWithDefault(const std::string& key,
- bool default_value) const {
- return GetBool(key).value_or(default_value);
-}
-
-optional<URI> Configuration::GetUri(const std::string& key) const {
- optional<std::string> raw = Get(key);
- if (raw) {
- try {
- return std::experimental::make_optional(URI::parse_from_string(*raw));
- } catch (const uri_parse_error& e) {
- // Return empty below
- }
- }
- return optional<URI>();
-}
-
-URI Configuration::GetUriWithDefault(const std::string& key,
- std::string default_value) const {
- optional<URI> result = GetUri(key);
- if (result) {
- return *result;
- } else {
- try {
- return URI::parse_from_string(default_value);
- } catch (const uri_parse_error& e) {
- return URI();
- }
- }
-}
-
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.h
deleted file mode 100644
index 734f036..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/configuration.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_CONFIGURATION_H_
-#define COMMON_CONFIGURATION_H_
-
-#include "hdfspp/uri.h"
-
-#include <string>
-#include <map>
-#include <vector>
-#include <set>
-#include <istream>
-#include <stdint.h>
-#include "common/optional_wrapper.h"
-
-namespace hdfs {
-
-template <class T>
-using optional = std::experimental::optional<T>;
-
-/**
- * Configuration class that parses XML.
- *
- * Files should be an XML file of the form
- * <configuration>
- * <property>
- * <name>Name</name>
- * <value>Value</value>
- * </property>
- * <configuration>
- *
- * Configuration objects should be created via the ConfigurationLoader class.
- * Configuration objects are immutable and can be shared between threads.
- *
- * This class is thread-safe.
- */
-class Configuration {
- public:
- // Gets values
- std::string GetWithDefault(const std::string &key,
- const std::string &default_value) const;
- optional<std::string> Get(const std::string &key) const;
- int64_t GetIntWithDefault(const std::string &key,
- int64_t default_value) const;
- optional<int64_t> GetInt(const std::string &key) const;
- double GetDoubleWithDefault(const std::string &key,
- double default_value) const;
- optional<double> GetDouble(const std::string &key) const;
- bool GetBoolWithDefault(const std::string &key,
- bool default_value) const;
- optional<bool> GetBool(const std::string &key) const;
- URI GetUriWithDefault(const std::string &key,
- std::string default_value) const;
- optional<URI> GetUri(const std::string &key) const;
-
-protected:
- friend class ConfigurationLoader;
-
- /* Transparent data holder for property values */
- struct ConfigData {
- std::string value;
- bool final;
- ConfigData() : final(false){}
- ConfigData(const std::string &value_) : value(value_), final(false) {}
- void operator=(const std::string &new_value) {
- value = new_value;
- final = false;
- }
- };
- typedef std::map<std::string, ConfigData> ConfigMap;
-
- Configuration() {}
- Configuration(ConfigMap &src_map) : raw_values_(src_map){}
- Configuration(const ConfigMap &src_map) : raw_values_(src_map){}
-
- static std::vector<std::string> GetDefaultFilenames();
-
- // While we want this to be const, it would preclude copying Configuration
- // objects. The Configuration class must not allow any mutations of
- // the raw_values
- ConfigMap raw_values_;
-
- static std::string fixCase(const std::string &in) {
- std::string result(in);
- for (auto & c: result) c = static_cast<char>(toupper(c));
- return result;
- }
-};
-
-}
-
-#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[13/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_at.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_at.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_at.hpp
deleted file mode 100644
index 0ce36bc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_at.hpp
+++ /dev/null
@@ -1,810 +0,0 @@
-//
-// impl/read_at.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_IMPL_READ_AT_HPP
-#define ASIO_IMPL_READ_AT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <algorithm>
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- ec = asio::error_code();
- asio::detail::consuming_buffers<
- mutable_buffer, MutableBufferSequence> tmp(buffers);
- std::size_t total_transferred = 0;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- while (tmp.begin() != tmp.end())
- {
- std::size_t bytes_transferred = d.read_some_at(
- offset + total_transferred, tmp, ec);
- tmp.consume(bytes_transferred);
- total_transferred += bytes_transferred;
- tmp.prepare(detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred)));
- }
- return total_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_at(
- d, offset, buffers, transfer_all(), ec);
- asio::detail::throw_error(ec, "read_at");
- return bytes_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- asio::error_code& ec)
-{
- return read_at(d, offset, buffers, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename CompletionCondition>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_at(
- d, offset, buffers, completion_condition, ec);
- asio::detail::throw_error(ec, "read_at");
- return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition, asio::error_code& ec)
-{
- ec = asio::error_code();
- std::size_t total_transferred = 0;
- std::size_t max_size = detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred));
- std::size_t bytes_available = read_size_helper(b, max_size);
- while (bytes_available > 0)
- {
- std::size_t bytes_transferred = d.read_some_at(
- offset + total_transferred, b.prepare(bytes_available), ec);
- b.commit(bytes_transferred);
- total_transferred += bytes_transferred;
- max_size = detail::adapt_completion_condition_result(
- completion_condition(ec, total_transferred));
- bytes_available = read_size_helper(b, max_size);
- }
- return total_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_at(
- d, offset, b, transfer_all(), ec);
- asio::detail::throw_error(ec, "read_at");
- return bytes_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- asio::error_code& ec)
-{
- return read_at(d, offset, b, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_at(
- d, offset, b, completion_condition, ec);
- asio::detail::throw_error(ec, "read_at");
- return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- class read_at_op
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_at_op(AsyncRandomAccessReadDevice& device,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_at_op(const read_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_at_op(read_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- switch (start_ = start)
- {
- case 1:
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- for (;;)
- {
- device_.async_read_some_at(offset_ + total_transferred_,
- buffers_, ASIO_MOVE_CAST(read_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- buffers_.consume(bytes_transferred);
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
- if ((!ec && bytes_transferred == 0)
- || buffers_.begin() == buffers_.end())
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessReadDevice& device_;
- uint64_t offset_;
- asio::detail::consuming_buffers<
- mutable_buffer, MutableBufferSequence> buffers_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
- template <typename AsyncRandomAccessReadDevice,
- typename CompletionCondition, typename ReadHandler>
- class read_at_op<AsyncRandomAccessReadDevice,
- asio::mutable_buffers_1, CompletionCondition, ReadHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_at_op(AsyncRandomAccessReadDevice& device,
- uint64_t offset, const asio::mutable_buffers_1& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffer_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_at_op(const read_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_at_op(read_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffer_(other.buffer_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- device_.async_read_some_at(offset_ + total_transferred_,
- asio::buffer(buffer_ + total_transferred_, n),
- ASIO_MOVE_CAST(read_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == asio::buffer_size(buffer_))
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessReadDevice& device_;
- uint64_t offset_;
- asio::mutable_buffer buffer_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
- template <typename AsyncRandomAccessReadDevice, typename Elem,
- typename CompletionCondition, typename ReadHandler>
- class read_at_op<AsyncRandomAccessReadDevice, boost::array<Elem, 2>,
- CompletionCondition, ReadHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_at_op(AsyncRandomAccessReadDevice& device,
- uint64_t offset, const boost::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_at_op(const read_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_at_op(read_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- boost::array<asio::mutable_buffer, 2> >::type bufs = {{
- asio::mutable_buffer(buffers_[0]),
- asio::mutable_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- device_.async_read_some_at(offset_ + total_transferred_,
- bufs, ASIO_MOVE_CAST(read_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessReadDevice& device_;
- uint64_t offset_;
- boost::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncRandomAccessReadDevice, typename Elem,
- typename CompletionCondition, typename ReadHandler>
- class read_at_op<AsyncRandomAccessReadDevice, std::array<Elem, 2>,
- CompletionCondition, ReadHandler>
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_at_op(AsyncRandomAccessReadDevice& device,
- uint64_t offset, const std::array<Elem, 2>& buffers,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- buffers_(buffers),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_at_op(const read_at_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_at_op(read_at_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- buffers_(other.buffers_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- typename asio::detail::dependent_type<Elem,
- std::array<asio::mutable_buffer, 2> >::type bufs = {{
- asio::mutable_buffer(buffers_[0]),
- asio::mutable_buffer(buffers_[1]) }};
- std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
- std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
- std::size_t n = 0;
- switch (start_ = start)
- {
- case 1:
- n = this->check_for_completion(ec, total_transferred_);
- for (;;)
- {
- bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
- bufs[1] = asio::buffer(
- bufs[1] + (total_transferred_ < buffer_size0
- ? 0 : total_transferred_ - buffer_size0),
- n - asio::buffer_size(bufs[0]));
- device_.async_read_some_at(offset_ + total_transferred_,
- bufs, ASIO_MOVE_CAST(read_at_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- if ((!ec && bytes_transferred == 0)
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
- || total_transferred_ == buffer_size0 + buffer_size1)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessReadDevice& device_;
- uint64_t offset_;
- std::array<Elem, 2> buffers_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
- template <typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessReadDevice,
- typename MutableBufferSequence, typename CompletionCondition,
- typename ReadHandler>
- inline read_at_op<AsyncRandomAccessReadDevice,
- MutableBufferSequence, CompletionCondition, ReadHandler>
- make_read_at_op(AsyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition, ReadHandler handler)
- {
- return read_at_op<AsyncRandomAccessReadDevice,
- MutableBufferSequence, CompletionCondition, ReadHandler>(
- d, offset, buffers, completion_condition, handler);
- }
-} // namespace detail
-
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- CompletionCondition, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- d, offset, buffers, completion_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
- typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
- uint64_t offset, const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
- detail::transfer_all_t, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- d, offset, buffers, transfer_all(), init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
- template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- class read_at_streambuf_op
- : detail::base_from_completion_cond<CompletionCondition>
- {
- public:
- read_at_streambuf_op(AsyncRandomAccessReadDevice& device,
- uint64_t offset, basic_streambuf<Allocator>& streambuf,
- CompletionCondition completion_condition, ReadHandler& handler)
- : detail::base_from_completion_cond<
- CompletionCondition>(completion_condition),
- device_(device),
- offset_(offset),
- streambuf_(streambuf),
- start_(0),
- total_transferred_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_at_streambuf_op(const read_at_streambuf_op& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- streambuf_(other.streambuf_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(other.handler_)
- {
- }
-
- read_at_streambuf_op(read_at_streambuf_op&& other)
- : detail::base_from_completion_cond<CompletionCondition>(other),
- device_(other.device_),
- offset_(other.offset_),
- streambuf_(other.streambuf_),
- start_(other.start_),
- total_transferred_(other.total_transferred_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- std::size_t max_size, bytes_available;
- switch (start_ = start)
- {
- case 1:
- max_size = this->check_for_completion(ec, total_transferred_);
- bytes_available = read_size_helper(streambuf_, max_size);
- for (;;)
- {
- device_.async_read_some_at(offset_ + total_transferred_,
- streambuf_.prepare(bytes_available),
- ASIO_MOVE_CAST(read_at_streambuf_op)(*this));
- return; default:
- total_transferred_ += bytes_transferred;
- streambuf_.commit(bytes_transferred);
- max_size = this->check_for_completion(ec, total_transferred_);
- bytes_available = read_size_helper(streambuf_, max_size);
- if ((!ec && bytes_transferred == 0) || bytes_available == 0)
- break;
- }
-
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
- }
- }
-
- //private:
- AsyncRandomAccessReadDevice& device_;
- uint64_t offset_;
- asio::basic_streambuf<Allocator>& streambuf_;
- int start_;
- std::size_t total_transferred_;
- ReadHandler handler_;
- };
-
- template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncRandomAccessReadDevice,
- typename Allocator, typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncRandomAccessReadDevice,
- typename Allocator, typename CompletionCondition, typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- CompletionCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- CompletionCondition completion_condition,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- CompletionCondition, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- d, offset, b, completion_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
- typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
- uint64_t offset, asio::basic_streambuf<Allocator>& b,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
- detail::transfer_all_t, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- d, offset, b, transfer_all(), init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_READ_AT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_until.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_until.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_until.hpp
deleted file mode 100644
index 88f3b50..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/read_until.hpp
+++ /dev/null
@@ -1,1147 +0,0 @@
-//
-// impl/read_until.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_IMPL_READ_UNTIL_HPP
-#define ASIO_IMPL_READ_UNTIL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <algorithm>
-#include <string>
-#include <vector>
-#include <utility>
-#include "asio/buffer.hpp"
-#include "asio/buffers_iterator.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, char delim)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_until(s, b, delim, ec);
- asio::detail::throw_error(ec, "read_until");
- return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, char delim,
- asio::error_code& ec)
-{
- std::size_t search_position = 0;
- for (;;)
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = b.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- iterator iter = std::find(start_pos, end, delim);
- if (iter != end)
- {
- // Found a match. We're done.
- ec = asio::error_code();
- return iter - begin + 1;
- }
- else
- {
- // No match. Next search can start with the new data.
- search_position = end - begin;
- }
-
- // Check if buffer is full.
- if (b.size() == b.max_size())
- {
- ec = error::not_found;
- return 0;
- }
-
- // Need more data.
- std::size_t bytes_to_read = read_size_helper(b, 65536);
- b.commit(s.read_some(b.prepare(bytes_to_read), ec));
- if (ec)
- return 0;
- }
-}
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const std::string& delim)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_until(s, b, delim, ec);
- asio::detail::throw_error(ec, "read_until");
- return bytes_transferred;
-}
-
-namespace detail
-{
- // Algorithm that finds a subsequence of equal values in a sequence. Returns
- // (iterator,true) if a full match was found, in which case the iterator
- // points to the beginning of the match. Returns (iterator,false) if a
- // partial match was found at the end of the first sequence, in which case
- // the iterator points to the beginning of the partial match. Returns
- // (last1,false) if no full or partial match was found.
- template <typename Iterator1, typename Iterator2>
- std::pair<Iterator1, bool> partial_search(
- Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2)
- {
- for (Iterator1 iter1 = first1; iter1 != last1; ++iter1)
- {
- Iterator1 test_iter1 = iter1;
- Iterator2 test_iter2 = first2;
- for (;; ++test_iter1, ++test_iter2)
- {
- if (test_iter2 == last2)
- return std::make_pair(iter1, true);
- if (test_iter1 == last1)
- {
- if (test_iter2 != first2)
- return std::make_pair(iter1, false);
- else
- break;
- }
- if (*test_iter1 != *test_iter2)
- break;
- }
- }
- return std::make_pair(last1, false);
- }
-} // namespace detail
-
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const std::string& delim,
- asio::error_code& ec)
-{
- std::size_t search_position = 0;
- for (;;)
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = b.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- std::pair<iterator, bool> result = detail::partial_search(
- start_pos, end, delim.begin(), delim.end());
- if (result.first != end)
- {
- if (result.second)
- {
- // Full match. We're done.
- ec = asio::error_code();
- return result.first - begin + delim.length();
- }
- else
- {
- // Partial match. Next search needs to start from beginning of match.
- search_position = result.first - begin;
- }
- }
- else
- {
- // No match. Next search can start with the new data.
- search_position = end - begin;
- }
-
- // Check if buffer is full.
- if (b.size() == b.max_size())
- {
- ec = error::not_found;
- return 0;
- }
-
- // Need more data.
- std::size_t bytes_to_read = read_size_helper(b, 65536);
- b.commit(s.read_some(b.prepare(bytes_to_read), ec));
- if (ec)
- return 0;
- }
-}
-
-#if defined(ASIO_HAS_BOOST_REGEX)
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const boost::regex& expr)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_until(s, b, expr, ec);
- asio::detail::throw_error(ec, "read_until");
- return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
- asio::error_code& ec)
-{
- std::size_t search_position = 0;
- for (;;)
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = b.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- boost::match_results<iterator,
- typename std::vector<boost::sub_match<iterator> >::allocator_type>
- match_results;
- if (regex_search(start_pos, end, match_results, expr,
- boost::match_default | boost::match_partial))
- {
- if (match_results[0].matched)
- {
- // Full match. We're done.
- ec = asio::error_code();
- return match_results[0].second - begin;
- }
- else
- {
- // Partial match. Next search needs to start from beginning of match.
- search_position = match_results[0].first - begin;
- }
- }
- else
- {
- // No match. Next search can start with the new data.
- search_position = end - begin;
- }
-
- // Check if buffer is full.
- if (b.size() == b.max_size())
- {
- ec = error::not_found;
- return 0;
- }
-
- // Need more data.
- std::size_t bytes_to_read = read_size_helper(b, 65536);
- b.commit(s.read_some(b.prepare(bytes_to_read), ec));
- if (ec)
- return 0;
- }
-}
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- MatchCondition match_condition, asio::error_code& ec,
- typename enable_if<is_match_condition<MatchCondition>::value>::type*)
-{
- std::size_t search_position = 0;
- for (;;)
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = b.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- std::pair<iterator, bool> result = match_condition(start_pos, end);
- if (result.second)
- {
- // Full match. We're done.
- ec = asio::error_code();
- return result.first - begin;
- }
- else if (result.first != end)
- {
- // Partial match. Next search needs to start from beginning of match.
- search_position = result.first - begin;
- }
- else
- {
- // No match. Next search can start with the new data.
- search_position = end - begin;
- }
-
- // Check if buffer is full.
- if (b.size() == b.max_size())
- {
- ec = error::not_found;
- return 0;
- }
-
- // Need more data.
- std::size_t bytes_to_read = read_size_helper(b, 65536);
- b.commit(s.read_some(b.prepare(bytes_to_read), ec));
- if (ec)
- return 0;
- }
-}
-
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-inline std::size_t read_until(SyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
- typename enable_if<is_match_condition<MatchCondition>::value>::type*)
-{
- asio::error_code ec;
- std::size_t bytes_transferred = read_until(s, b, match_condition, ec);
- asio::detail::throw_error(ec, "read_until");
- return bytes_transferred;
-}
-
-namespace detail
-{
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- class read_until_delim_op
- {
- public:
- read_until_delim_op(AsyncReadStream& stream,
- asio::basic_streambuf<Allocator>& streambuf,
- char delim, ReadHandler& handler)
- : stream_(stream),
- streambuf_(streambuf),
- delim_(delim),
- start_(0),
- search_position_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_until_delim_op(const read_until_delim_op& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- delim_(other.delim_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(other.handler_)
- {
- }
-
- read_until_delim_op(read_until_delim_op&& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- delim_(other.delim_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
- std::size_t bytes_to_read;
- switch (start_ = start)
- {
- case 1:
- for (;;)
- {
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = streambuf_.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position_;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- iterator iter = std::find(start_pos, end, delim_);
- if (iter != end)
- {
- // Found a match. We're done.
- search_position_ = iter - begin + 1;
- bytes_to_read = 0;
- }
-
- // No match yet. Check if buffer is full.
- else if (streambuf_.size() == streambuf_.max_size())
- {
- search_position_ = not_found;
- bytes_to_read = 0;
- }
-
- // Need to read some more data.
- else
- {
- // Next search can start with the new data.
- search_position_ = end - begin;
- bytes_to_read = read_size_helper(streambuf_, 65536);
- }
- }
-
- // Check if we're done.
- if (!start && bytes_to_read == 0)
- break;
-
- // Start a new asynchronous read operation to obtain more data.
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
- ASIO_MOVE_CAST(read_until_delim_op)(*this));
- return; default:
- streambuf_.commit(bytes_transferred);
- if (ec || bytes_transferred == 0)
- break;
- }
-
- const asio::error_code result_ec =
- (search_position_ == not_found)
- ? error::not_found : ec;
-
- const std::size_t result_n =
- (ec || search_position_ == not_found)
- ? 0 : search_position_;
-
- handler_(result_ec, result_n);
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::basic_streambuf<Allocator>& streambuf_;
- char delim_;
- int start_;
- std::size_t search_position_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_until_delim_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_until_delim_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_until_delim_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream, typename Allocator,
- typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_until_delim_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream, typename Allocator,
- typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_until_delim_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, char delim,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_until_delim_op<AsyncReadStream,
- Allocator, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- s, b, delim, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-namespace detail
-{
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- class read_until_delim_string_op
- {
- public:
- read_until_delim_string_op(AsyncReadStream& stream,
- asio::basic_streambuf<Allocator>& streambuf,
- const std::string& delim, ReadHandler& handler)
- : stream_(stream),
- streambuf_(streambuf),
- delim_(delim),
- start_(0),
- search_position_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_until_delim_string_op(const read_until_delim_string_op& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- delim_(other.delim_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(other.handler_)
- {
- }
-
- read_until_delim_string_op(read_until_delim_string_op&& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- delim_(ASIO_MOVE_CAST(std::string)(other.delim_)),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
- std::size_t bytes_to_read;
- switch (start_ = start)
- {
- case 1:
- for (;;)
- {
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = streambuf_.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position_;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- std::pair<iterator, bool> result = detail::partial_search(
- start_pos, end, delim_.begin(), delim_.end());
- if (result.first != end && result.second)
- {
- // Full match. We're done.
- search_position_ = result.first - begin + delim_.length();
- bytes_to_read = 0;
- }
-
- // No match yet. Check if buffer is full.
- else if (streambuf_.size() == streambuf_.max_size())
- {
- search_position_ = not_found;
- bytes_to_read = 0;
- }
-
- // Need to read some more data.
- else
- {
- if (result.first != end)
- {
- // Partial match. Next search needs to start from beginning of
- // match.
- search_position_ = result.first - begin;
- }
- else
- {
- // Next search can start with the new data.
- search_position_ = end - begin;
- }
-
- bytes_to_read = read_size_helper(streambuf_, 65536);
- }
- }
-
- // Check if we're done.
- if (!start && bytes_to_read == 0)
- break;
-
- // Start a new asynchronous read operation to obtain more data.
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
- ASIO_MOVE_CAST(read_until_delim_string_op)(*this));
- return; default:
- streambuf_.commit(bytes_transferred);
- if (ec || bytes_transferred == 0)
- break;
- }
-
- const asio::error_code result_ec =
- (search_position_ == not_found)
- ? error::not_found : ec;
-
- const std::size_t result_n =
- (ec || search_position_ == not_found)
- ? 0 : search_position_;
-
- handler_(result_ec, result_n);
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::basic_streambuf<Allocator>& streambuf_;
- std::string delim_;
- int start_;
- std::size_t search_position_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_until_delim_string_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_until_delim_string_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_until_delim_string_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream,
- typename Allocator, typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_until_delim_string_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream,
- typename Allocator, typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_until_delim_string_op<AsyncReadStream,
- Allocator, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const std::string& delim,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_until_delim_string_op<AsyncReadStream,
- Allocator, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- s, b, delim, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#if defined(ASIO_HAS_BOOST_REGEX)
-
-namespace detail
-{
- template <typename AsyncReadStream, typename Allocator,
- typename RegEx, typename ReadHandler>
- class read_until_expr_op
- {
- public:
- read_until_expr_op(AsyncReadStream& stream,
- asio::basic_streambuf<Allocator>& streambuf,
- const boost::regex& expr, ReadHandler& handler)
- : stream_(stream),
- streambuf_(streambuf),
- expr_(expr),
- start_(0),
- search_position_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_until_expr_op(const read_until_expr_op& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- expr_(other.expr_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(other.handler_)
- {
- }
-
- read_until_expr_op(read_until_expr_op&& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- expr_(other.expr_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
- std::size_t bytes_to_read;
- switch (start_ = start)
- {
- case 1:
- for (;;)
- {
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = streambuf_.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position_;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- boost::match_results<iterator,
- typename std::vector<boost::sub_match<iterator> >::allocator_type>
- match_results;
- bool match = regex_search(start_pos, end, match_results, expr_,
- boost::match_default | boost::match_partial);
- if (match && match_results[0].matched)
- {
- // Full match. We're done.
- search_position_ = match_results[0].second - begin;
- bytes_to_read = 0;
- }
-
- // No match yet. Check if buffer is full.
- else if (streambuf_.size() == streambuf_.max_size())
- {
- search_position_ = not_found;
- bytes_to_read = 0;
- }
-
- // Need to read some more data.
- else
- {
- if (match)
- {
- // Partial match. Next search needs to start from beginning of
- // match.
- search_position_ = match_results[0].first - begin;
- }
- else
- {
- // Next search can start with the new data.
- search_position_ = end - begin;
- }
-
- bytes_to_read = read_size_helper(streambuf_, 65536);
- }
- }
-
- // Check if we're done.
- if (!start && bytes_to_read == 0)
- break;
-
- // Start a new asynchronous read operation to obtain more data.
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
- ASIO_MOVE_CAST(read_until_expr_op)(*this));
- return; default:
- streambuf_.commit(bytes_transferred);
- if (ec || bytes_transferred == 0)
- break;
- }
-
- const asio::error_code result_ec =
- (search_position_ == not_found)
- ? error::not_found : ec;
-
- const std::size_t result_n =
- (ec || search_position_ == not_found)
- ? 0 : search_position_;
-
- handler_(result_ec, result_n);
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::basic_streambuf<Allocator>& streambuf_;
- RegEx expr_;
- int start_;
- std::size_t search_position_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream, typename Allocator,
- typename RegEx, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_until_expr_op<AsyncReadStream,
- Allocator, RegEx, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator,
- typename RegEx, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_until_expr_op<AsyncReadStream,
- Allocator, RegEx, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator,
- typename RegEx, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_until_expr_op<AsyncReadStream,
- Allocator, RegEx, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream, typename Allocator,
- typename RegEx, typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_until_expr_op<AsyncReadStream,
- Allocator, RegEx, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream, typename Allocator,
- typename RegEx, typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_until_expr_op<AsyncReadStream,
- Allocator, RegEx, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
- ASIO_MOVE_ARG(ReadHandler) handler)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_until_expr_op<AsyncReadStream, Allocator,
- boost::regex, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- s, b, expr, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-
-namespace detail
-{
- template <typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
- class read_until_match_op
- {
- public:
- read_until_match_op(AsyncReadStream& stream,
- asio::basic_streambuf<Allocator>& streambuf,
- MatchCondition match_condition, ReadHandler& handler)
- : stream_(stream),
- streambuf_(streambuf),
- match_condition_(match_condition),
- start_(0),
- search_position_(0),
- handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- read_until_match_op(const read_until_match_op& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- match_condition_(other.match_condition_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(other.handler_)
- {
- }
-
- read_until_match_op(read_until_match_op&& other)
- : stream_(other.stream_),
- streambuf_(other.streambuf_),
- match_condition_(other.match_condition_),
- start_(other.start_),
- search_position_(other.search_position_),
- handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred, int start = 0)
- {
- const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
- std::size_t bytes_to_read;
- switch (start_ = start)
- {
- case 1:
- for (;;)
- {
- {
- // Determine the range of the data to be searched.
- typedef typename asio::basic_streambuf<
- Allocator>::const_buffers_type const_buffers_type;
- typedef asio::buffers_iterator<const_buffers_type> iterator;
- const_buffers_type buffers = streambuf_.data();
- iterator begin = iterator::begin(buffers);
- iterator start_pos = begin + search_position_;
- iterator end = iterator::end(buffers);
-
- // Look for a match.
- std::pair<iterator, bool> result = match_condition_(start_pos, end);
- if (result.second)
- {
- // Full match. We're done.
- search_position_ = result.first - begin;
- bytes_to_read = 0;
- }
-
- // No match yet. Check if buffer is full.
- else if (streambuf_.size() == streambuf_.max_size())
- {
- search_position_ = not_found;
- bytes_to_read = 0;
- }
-
- // Need to read some more data.
- else
- {
- if (result.first != end)
- {
- // Partial match. Next search needs to start from beginning of
- // match.
- search_position_ = result.first - begin;
- }
- else
- {
- // Next search can start with the new data.
- search_position_ = end - begin;
- }
-
- bytes_to_read = read_size_helper(streambuf_, 65536);
- }
- }
-
- // Check if we're done.
- if (!start && bytes_to_read == 0)
- break;
-
- // Start a new asynchronous read operation to obtain more data.
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
- ASIO_MOVE_CAST(read_until_match_op)(*this));
- return; default:
- streambuf_.commit(bytes_transferred);
- if (ec || bytes_transferred == 0)
- break;
- }
-
- const asio::error_code result_ec =
- (search_position_ == not_found)
- ? error::not_found : ec;
-
- const std::size_t result_n =
- (ec || search_position_ == not_found)
- ? 0 : search_position_;
-
- handler_(result_ec, result_n);
- }
- }
-
- //private:
- AsyncReadStream& stream_;
- asio::basic_streambuf<Allocator>& streambuf_;
- MatchCondition match_condition_;
- int start_;
- std::size_t search_position_;
- ReadHandler handler_;
- };
-
- template <typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
- inline void* asio_handler_allocate(std::size_t size,
- read_until_match_op<AsyncReadStream,
- Allocator, MatchCondition, ReadHandler>* this_handler)
- {
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
- read_until_match_op<AsyncReadStream,
- Allocator, MatchCondition, ReadHandler>* this_handler)
- {
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
- }
-
- template <typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
- inline bool asio_handler_is_continuation(
- read_until_match_op<AsyncReadStream,
- Allocator, MatchCondition, ReadHandler>* this_handler)
- {
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(
- this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
- inline void asio_handler_invoke(Function& function,
- read_until_match_op<AsyncReadStream,
- Allocator, MatchCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-
- template <typename Function, typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
- inline void asio_handler_invoke(const Function& function,
- read_until_match_op<AsyncReadStream,
- Allocator, MatchCondition, ReadHandler>* this_handler)
- {
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
- }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator,
- typename MatchCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
- asio::basic_streambuf<Allocator>& b,
- MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
- typename enable_if<is_match_condition<MatchCondition>::value>::type*)
-{
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a ReadHandler.
- ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- detail::read_until_match_op<AsyncReadStream, Allocator,
- MatchCondition, ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))>(
- s, b, match_condition, init.handler)(
- asio::error_code(), 0, 1);
-
- return init.result.get();
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_READ_UNTIL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.hpp
deleted file mode 100644
index bfdb08d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// impl/serial_port_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_IMPL_SERIAL_PORT_BASE_HPP
-#define ASIO_IMPL_SERIAL_PORT_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-inline serial_port_base::baud_rate::baud_rate(unsigned int rate)
- : value_(rate)
-{
-}
-
-inline unsigned int serial_port_base::baud_rate::value() const
-{
- return value_;
-}
-
-inline serial_port_base::flow_control::type
-serial_port_base::flow_control::value() const
-{
- return value_;
-}
-
-inline serial_port_base::parity::type serial_port_base::parity::value() const
-{
- return value_;
-}
-
-inline serial_port_base::stop_bits::type
-serial_port_base::stop_bits::value() const
-{
- return value_;
-}
-
-inline unsigned int serial_port_base::character_size::value() const
-{
- return value_;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_SERIAL_PORT_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.ipp
deleted file mode 100644
index 60bed7f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/impl/serial_port_base.ipp
+++ /dev/null
@@ -1,554 +0,0 @@
-//
-// impl/serial_port_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_IMPL_SERIAL_PORT_BASE_IPP
-#define ASIO_IMPL_SERIAL_PORT_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT)
-
-#include <stdexcept>
-#include "asio/error.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#if defined(GENERATING_DOCUMENTATION)
-# define ASIO_OPTION_STORAGE implementation_defined
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# define ASIO_OPTION_STORAGE DCB
-#else
-# define ASIO_OPTION_STORAGE termios
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-asio::error_code serial_port_base::baud_rate::store(
- ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- storage.BaudRate = value_;
-#else
- speed_t baud;
- switch (value_)
- {
- // Do POSIX-specified rates first.
- case 0: baud = B0; break;
- case 50: baud = B50; break;
- case 75: baud = B75; break;
- case 110: baud = B110; break;
- case 134: baud = B134; break;
- case 150: baud = B150; break;
- case 200: baud = B200; break;
- case 300: baud = B300; break;
- case 600: baud = B600; break;
- case 1200: baud = B1200; break;
- case 1800: baud = B1800; break;
- case 2400: baud = B2400; break;
- case 4800: baud = B4800; break;
- case 9600: baud = B9600; break;
- case 19200: baud = B19200; break;
- case 38400: baud = B38400; break;
- // And now the extended ones conditionally.
-# ifdef B7200
- case 7200: baud = B7200; break;
-# endif
-# ifdef B14400
- case 14400: baud = B14400; break;
-# endif
-# ifdef B57600
- case 57600: baud = B57600; break;
-# endif
-# ifdef B115200
- case 115200: baud = B115200; break;
-# endif
-# ifdef B230400
- case 230400: baud = B230400; break;
-# endif
-# ifdef B460800
- case 460800: baud = B460800; break;
-# endif
-# ifdef B500000
- case 500000: baud = B500000; break;
-# endif
-# ifdef B576000
- case 576000: baud = B576000; break;
-# endif
-# ifdef B921600
- case 921600: baud = B921600; break;
-# endif
-# ifdef B1000000
- case 1000000: baud = B1000000; break;
-# endif
-# ifdef B1152000
- case 1152000: baud = B1152000; break;
-# endif
-# ifdef B2000000
- case 2000000: baud = B2000000; break;
-# endif
-# ifdef B3000000
- case 3000000: baud = B3000000; break;
-# endif
-# ifdef B3500000
- case 3500000: baud = B3500000; break;
-# endif
-# ifdef B4000000
- case 4000000: baud = B4000000; break;
-# endif
- default:
- ec = asio::error::invalid_argument;
- return ec;
- }
-# if defined(_BSD_SOURCE)
- ::cfsetspeed(&storage, baud);
-# else
- ::cfsetispeed(&storage, baud);
- ::cfsetospeed(&storage, baud);
-# endif
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code serial_port_base::baud_rate::load(
- const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- value_ = storage.BaudRate;
-#else
- speed_t baud = ::cfgetospeed(&storage);
- switch (baud)
- {
- // First do those specified by POSIX.
- case B0: value_ = 0; break;
- case B50: value_ = 50; break;
- case B75: value_ = 75; break;
- case B110: value_ = 110; break;
- case B134: value_ = 134; break;
- case B150: value_ = 150; break;
- case B200: value_ = 200; break;
- case B300: value_ = 300; break;
- case B600: value_ = 600; break;
- case B1200: value_ = 1200; break;
- case B1800: value_ = 1800; break;
- case B2400: value_ = 2400; break;
- case B4800: value_ = 4800; break;
- case B9600: value_ = 9600; break;
- case B19200: value_ = 19200; break;
- case B38400: value_ = 38400; break;
- // Now conditionally handle a bunch of extended rates.
-# ifdef B7200
- case B7200: value_ = 7200; break;
-# endif
-# ifdef B14400
- case B14400: value_ = 14400; break;
-# endif
-# ifdef B57600
- case B57600: value_ = 57600; break;
-# endif
-# ifdef B115200
- case B115200: value_ = 115200; break;
-# endif
-# ifdef B230400
- case B230400: value_ = 230400; break;
-# endif
-# ifdef B460800
- case B460800: value_ = 460800; break;
-# endif
-# ifdef B500000
- case B500000: value_ = 500000; break;
-# endif
-# ifdef B576000
- case B576000: value_ = 576000; break;
-# endif
-# ifdef B921600
- case B921600: value_ = 921600; break;
-# endif
-# ifdef B1000000
- case B1000000: value_ = 1000000; break;
-# endif
-# ifdef B1152000
- case B1152000: value_ = 1152000; break;
-# endif
-# ifdef B2000000
- case B2000000: value_ = 2000000; break;
-# endif
-# ifdef B3000000
- case B3000000: value_ = 3000000; break;
-# endif
-# ifdef B3500000
- case B3500000: value_ = 3500000; break;
-# endif
-# ifdef B4000000
- case B4000000: value_ = 4000000; break;
-# endif
- default:
- value_ = 0;
- ec = asio::error::invalid_argument;
- return ec;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-serial_port_base::flow_control::flow_control(
- serial_port_base::flow_control::type t)
- : value_(t)
-{
- if (t != none && t != software && t != hardware)
- {
- std::out_of_range ex("invalid flow_control value");
- asio::detail::throw_exception(ex);
- }
-}
-
-asio::error_code serial_port_base::flow_control::store(
- ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- storage.fOutxCtsFlow = FALSE;
- storage.fOutxDsrFlow = FALSE;
- storage.fTXContinueOnXoff = TRUE;
- storage.fDtrControl = DTR_CONTROL_ENABLE;
- storage.fDsrSensitivity = FALSE;
- storage.fOutX = FALSE;
- storage.fInX = FALSE;
- storage.fRtsControl = RTS_CONTROL_ENABLE;
- switch (value_)
- {
- case none:
- break;
- case software:
- storage.fOutX = TRUE;
- storage.fInX = TRUE;
- break;
- case hardware:
- storage.fOutxCtsFlow = TRUE;
- storage.fRtsControl = RTS_CONTROL_HANDSHAKE;
- break;
- default:
- break;
- }
-#else
- switch (value_)
- {
- case none:
- storage.c_iflag &= ~(IXOFF | IXON);
-# if defined(_BSD_SOURCE)
- storage.c_cflag &= ~CRTSCTS;
-# elif defined(__QNXNTO__)
- storage.c_cflag &= ~(IHFLOW | OHFLOW);
-# endif
- break;
- case software:
- storage.c_iflag |= IXOFF | IXON;
-# if defined(_BSD_SOURCE)
- storage.c_cflag &= ~CRTSCTS;
-# elif defined(__QNXNTO__)
- storage.c_cflag &= ~(IHFLOW | OHFLOW);
-# endif
- break;
- case hardware:
-# if defined(_BSD_SOURCE)
- storage.c_iflag &= ~(IXOFF | IXON);
- storage.c_cflag |= CRTSCTS;
- break;
-# elif defined(__QNXNTO__)
- storage.c_iflag &= ~(IXOFF | IXON);
- storage.c_cflag |= (IHFLOW | OHFLOW);
- break;
-# else
- ec = asio::error::operation_not_supported;
- return ec;
-# endif
- default:
- break;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code serial_port_base::flow_control::load(
- const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (storage.fOutX && storage.fInX)
- {
- value_ = software;
- }
- else if (storage.fOutxCtsFlow && storage.fRtsControl == RTS_CONTROL_HANDSHAKE)
- {
- value_ = hardware;
- }
- else
- {
- value_ = none;
- }
-#else
- if (storage.c_iflag & (IXOFF | IXON))
- {
- value_ = software;
- }
-# if defined(_BSD_SOURCE)
- else if (storage.c_cflag & CRTSCTS)
- {
- value_ = hardware;
- }
-# elif defined(__QNXNTO__)
- else if (storage.c_cflag & IHFLOW && storage.c_cflag & OHFLOW)
- {
- value_ = hardware;
- }
-# endif
- else
- {
- value_ = none;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-serial_port_base::parity::parity(serial_port_base::parity::type t)
- : value_(t)
-{
- if (t != none && t != odd && t != even)
- {
- std::out_of_range ex("invalid parity value");
- asio::detail::throw_exception(ex);
- }
-}
-
-asio::error_code serial_port_base::parity::store(
- ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- switch (value_)
- {
- case none:
- storage.fParity = FALSE;
- storage.Parity = NOPARITY;
- break;
- case odd:
- storage.fParity = TRUE;
- storage.Parity = ODDPARITY;
- break;
- case even:
- storage.fParity = TRUE;
- storage.Parity = EVENPARITY;
- break;
- default:
- break;
- }
-#else
- switch (value_)
- {
- case none:
- storage.c_iflag |= IGNPAR;
- storage.c_cflag &= ~(PARENB | PARODD);
- break;
- case even:
- storage.c_iflag &= ~(IGNPAR | PARMRK);
- storage.c_iflag |= INPCK;
- storage.c_cflag |= PARENB;
- storage.c_cflag &= ~PARODD;
- break;
- case odd:
- storage.c_iflag &= ~(IGNPAR | PARMRK);
- storage.c_iflag |= INPCK;
- storage.c_cflag |= (PARENB | PARODD);
- break;
- default:
- break;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code serial_port_base::parity::load(
- const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (storage.Parity == EVENPARITY)
- {
- value_ = even;
- }
- else if (storage.Parity == ODDPARITY)
- {
- value_ = odd;
- }
- else
- {
- value_ = none;
- }
-#else
- if (storage.c_cflag & PARENB)
- {
- if (storage.c_cflag & PARODD)
- {
- value_ = odd;
- }
- else
- {
- value_ = even;
- }
- }
- else
- {
- value_ = none;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-serial_port_base::stop_bits::stop_bits(
- serial_port_base::stop_bits::type t)
- : value_(t)
-{
- if (t != one && t != onepointfive && t != two)
- {
- std::out_of_range ex("invalid stop_bits value");
- asio::detail::throw_exception(ex);
- }
-}
-
-asio::error_code serial_port_base::stop_bits::store(
- ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- switch (value_)
- {
- case one:
- storage.StopBits = ONESTOPBIT;
- break;
- case onepointfive:
- storage.StopBits = ONE5STOPBITS;
- break;
- case two:
- storage.StopBits = TWOSTOPBITS;
- break;
- default:
- break;
- }
-#else
- switch (value_)
- {
- case one:
- storage.c_cflag &= ~CSTOPB;
- break;
- case two:
- storage.c_cflag |= CSTOPB;
- break;
- default:
- ec = asio::error::operation_not_supported;
- return ec;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code serial_port_base::stop_bits::load(
- const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- if (storage.StopBits == ONESTOPBIT)
- {
- value_ = one;
- }
- else if (storage.StopBits == ONE5STOPBITS)
- {
- value_ = onepointfive;
- }
- else if (storage.StopBits == TWOSTOPBITS)
- {
- value_ = two;
- }
- else
- {
- value_ = one;
- }
-#else
- value_ = (storage.c_cflag & CSTOPB) ? two : one;
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-serial_port_base::character_size::character_size(unsigned int t)
- : value_(t)
-{
- if (t < 5 || t > 8)
- {
- std::out_of_range ex("invalid character_size value");
- asio::detail::throw_exception(ex);
- }
-}
-
-asio::error_code serial_port_base::character_size::store(
- ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- storage.ByteSize = value_;
-#else
- storage.c_cflag &= ~CSIZE;
- switch (value_)
- {
- case 5: storage.c_cflag |= CS5; break;
- case 6: storage.c_cflag |= CS6; break;
- case 7: storage.c_cflag |= CS7; break;
- case 8: storage.c_cflag |= CS8; break;
- default: break;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code serial_port_base::character_size::load(
- const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- value_ = storage.ByteSize;
-#else
- if ((storage.c_cflag & CSIZE) == CS5) { value_ = 5; }
- else if ((storage.c_cflag & CSIZE) == CS6) { value_ = 6; }
- else if ((storage.c_cflag & CSIZE) == CS7) { value_ = 7; }
- else if ((storage.c_cflag & CSIZE) == CS8) { value_ = 8; }
- else
- {
- // Hmmm, use 8 for now.
- value_ = 8;
- }
-#endif
- ec = asio::error_code();
- return ec;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#undef ASIO_OPTION_STORAGE
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_IMPL_SERIAL_PORT_BASE_IPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[44/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.h
deleted file mode 100644
index 1d596ad..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- **/
-
-#ifndef LIBHDFSPP_BADDATANODETRACKER_H
-#define LIBHDFSPP_BADDATANODETRACKER_H
-
-#include <mutex>
-#include <chrono>
-#include <map>
-#include <string>
-#include <set>
-
-#include "hdfspp/options.h"
-#include "hdfspp/hdfspp.h"
-
-namespace hdfs {
-
-/**
- * ExclusionSet is a simple override that can be filled with known
- * bad node UUIDs and passed to AsyncPreadSome.
- **/
-class ExclusionSet : public NodeExclusionRule {
- public:
- ExclusionSet(const std::set<std::string>& excluded);
- virtual ~ExclusionSet();
- virtual bool IsBadNode(const std::string& node_uuid);
-
- private:
- std::set<std::string> excluded_;
-};
-
-/**
- * BadDataNodeTracker keeps a timestamped list of datanodes that have
- * failed during past operations. Entries present in this list will
- * not be used for new requests. Entries will be evicted from the list
- * after a period of time has elapsed; the default is 10 minutes.
- */
-class BadDataNodeTracker : public NodeExclusionRule {
- public:
- BadDataNodeTracker(const Options& options = Options());
- virtual ~BadDataNodeTracker();
- /* add a bad DN to the list */
- void AddBadNode(const std::string& dn);
- /* check if a node should be excluded */
- virtual bool IsBadNode(const std::string& dn);
- /* only for tests, shift clock by t milliseconds*/
- void TEST_set_clock_shift(int t);
-
- private:
- typedef std::chrono::steady_clock Clock;
- typedef std::chrono::time_point<Clock> TimePoint;
- bool TimeoutExpired(const TimePoint& t);
- /* after timeout_duration_ elapses remove DN */
- const unsigned int timeout_duration_; /* milliseconds */
- std::map<std::string, TimePoint> datanodes_;
- std::mutex datanodes_update_lock_;
- int test_clock_shift_;
-};
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.cc
deleted file mode 100644
index ba702b0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.cc
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "filehandle.h"
-#include "common/continuation/continuation.h"
-#include "common/logging.h"
-#include "connection/datanodeconnection.h"
-#include "reader/block_reader.h"
-#include "hdfspp/events.h"
-
-#include <future>
-#include <tuple>
-
-#define FMT_THIS_ADDR "this=" << (void*)this
-
-namespace hdfs {
-
-using ::hadoop::hdfs::LocatedBlocksProto;
-
-FileHandle::~FileHandle() {}
-
-FileHandleImpl::FileHandleImpl(const std::string & cluster_name,
- const std::string & path,
- ::asio::io_service *io_service, const std::string &client_name,
- const std::shared_ptr<const struct FileInfo> file_info,
- std::shared_ptr<BadDataNodeTracker> bad_data_nodes,
- std::shared_ptr<LibhdfsEvents> event_handlers)
- : cluster_name_(cluster_name), path_(path), io_service_(io_service), client_name_(client_name), file_info_(file_info),
- bad_node_tracker_(bad_data_nodes), offset_(0), cancel_state_(CancelTracker::New()), event_handlers_(event_handlers), bytes_read_(0) {
- LOG_TRACE(kFileHandle, << "FileHandleImpl::FileHandleImpl("
- << FMT_THIS_ADDR << ", ...) called");
-
-}
-
-void FileHandleImpl::PositionRead(
- void *buf, size_t buf_size, uint64_t offset,
- const std::function<void(const Status &, size_t)> &handler) {
- LOG_DEBUG(kFileHandle, << "FileHandleImpl::PositionRead("
- << FMT_THIS_ADDR << ", buf=" << buf
- << ", buf_size=" << std::to_string(buf_size) << ") called");
-
- /* prevent usage after cancelation */
- if(cancel_state_->is_canceled()) {
- handler(Status::Canceled(), 0);
- return;
- }
-
- auto callback = [this, handler](const Status &status,
- const std::string &contacted_datanode,
- size_t bytes_read) {
- /* determine if DN gets marked bad */
- if (ShouldExclude(status)) {
- bad_node_tracker_->AddBadNode(contacted_datanode);
- }
-
- bytes_read_ += bytes_read;
- handler(status, bytes_read);
- };
-
- AsyncPreadSome(offset, asio::buffer(buf, buf_size), bad_node_tracker_, callback);
-}
-
-Status FileHandleImpl::PositionRead(void *buf, size_t buf_size, off_t offset, size_t *bytes_read) {
- LOG_DEBUG(kFileHandle, << "FileHandleImpl::[sync]PositionRead("
- << FMT_THIS_ADDR << ", buf=" << buf
- << ", buf_size=" << std::to_string(buf_size)
- << ", offset=" << offset << ") called");
-
- auto callstate = std::make_shared<std::promise<std::tuple<Status, size_t>>>();
- std::future<std::tuple<Status, size_t>> future(callstate->get_future());
-
- /* wrap async call with promise/future to make it blocking */
- auto callback = [callstate](const Status &s, size_t bytes) {
- callstate->set_value(std::make_tuple(s,bytes));
- };
-
- PositionRead(buf, buf_size, offset, callback);
-
- /* wait for async to finish */
- auto returnstate = future.get();
- auto stat = std::get<0>(returnstate);
-
- if (!stat.ok()) {
- return stat;
- }
-
- *bytes_read = std::get<1>(returnstate);
- return stat;
-}
-
-Status FileHandleImpl::Read(void *buf, size_t buf_size, size_t *bytes_read) {
- LOG_DEBUG(kFileHandle, << "FileHandleImpl::Read("
- << FMT_THIS_ADDR << ", buf=" << buf
- << ", buf_size=" << std::to_string(buf_size) << ") called");
-
- Status stat = PositionRead(buf, buf_size, offset_, bytes_read);
- if(!stat.ok()) {
- return stat;
- }
-
- offset_ += *bytes_read;
- return Status::OK();
-}
-
-Status FileHandleImpl::Seek(off_t *offset, std::ios_base::seekdir whence) {
- LOG_DEBUG(kFileHandle, << "FileHandleImpl::Seek("
- << ", offset=" << *offset << ", ...) called");
-
- if(cancel_state_->is_canceled()) {
- return Status::Canceled();
- }
-
- off_t new_offset = -1;
-
- switch (whence) {
- case std::ios_base::beg:
- new_offset = *offset;
- break;
- case std::ios_base::cur:
- new_offset = offset_ + *offset;
- break;
- case std::ios_base::end:
- new_offset = file_info_->file_length_ + *offset;
- break;
- default:
- /* unsupported */
- return Status::InvalidArgument("Invalid Seek whence argument");
- }
-
- if(!CheckSeekBounds(new_offset)) {
- return Status::InvalidArgument("Seek offset out of bounds");
- }
- offset_ = new_offset;
-
- *offset = offset_;
- return Status::OK();
-}
-
-/* return false if seek will be out of bounds */
-bool FileHandleImpl::CheckSeekBounds(ssize_t desired_position) {
- ssize_t file_length = file_info_->file_length_;
-
- if (desired_position < 0 || desired_position > file_length) {
- return false;
- }
-
- return true;
-}
-
-/*
- * Note that this method must be thread-safe w.r.t. the unsafe operations occurring
- * on the FileHandle
- */
-void FileHandleImpl::AsyncPreadSome(
- size_t offset, const MutableBuffers &buffers,
- std::shared_ptr<NodeExclusionRule> excluded_nodes,
- const std::function<void(const Status &, const std::string &, size_t)> handler) {
- using ::hadoop::hdfs::DatanodeInfoProto;
- using ::hadoop::hdfs::LocatedBlockProto;
-
- LOG_DEBUG(kFileHandle, << "FileHandleImpl::AsyncPreadSome("
- << FMT_THIS_ADDR << ", ...) called");
-
- if(cancel_state_->is_canceled()) {
- handler(Status::Canceled(), "", 0);
- return;
- }
-
- if(offset == file_info_->file_length_) {
- handler(Status::OK(), "", 0);
- return;
- } else if(offset > file_info_->file_length_){
- handler(Status::InvalidOffset("AsyncPreadSome: trying to begin a read past the EOF"), "", 0);
- return;
- }
-
- /**
- * Note: block and chosen_dn will end up pointing to things inside
- * the blocks_ vector. They shouldn't be directly deleted.
- **/
- auto block = std::find_if(
- file_info_->blocks_.begin(), file_info_->blocks_.end(), [offset](const LocatedBlockProto &p) {
- return p.offset() <= offset && offset < p.offset() + p.b().numbytes();
- });
-
- if (block == file_info_->blocks_.end()) {
- LOG_WARN(kFileHandle, << "FileHandleImpl::AsyncPreadSome(" << FMT_THIS_ADDR
- << ", ...) Cannot find corresponding blocks");
- handler(Status::InvalidArgument("Cannot find corresponding blocks"), "", 0);
- return;
- }
-
- /**
- * If user supplies a rule use it, otherwise use the tracker.
- * User is responsible for making sure one of them isn't null.
- **/
- std::shared_ptr<NodeExclusionRule> rule =
- excluded_nodes != nullptr ? excluded_nodes : bad_node_tracker_;
-
- auto datanodes = block->locs();
- auto it = std::find_if(datanodes.begin(), datanodes.end(),
- [rule](const DatanodeInfoProto &dn) {
- return !rule->IsBadNode(dn.id().datanodeuuid());
- });
-
- if (it == datanodes.end()) {
- LOG_WARN(kFileHandle, << "FileHandleImpl::AsyncPreadSome("
- << FMT_THIS_ADDR << ", ...) No datanodes available");
-
- handler(Status::ResourceUnavailable("No datanodes available"), "", 0);
- return;
- }
-
- DatanodeInfoProto &chosen_dn = *it;
-
- std::string dnIpAddr = chosen_dn.id().ipaddr();
- std::string dnHostName = chosen_dn.id().hostname();
-
- uint64_t offset_within_block = offset - block->offset();
- uint64_t size_within_block = std::min<uint64_t>(
- block->b().numbytes() - offset_within_block, asio::buffer_size(buffers));
-
- LOG_DEBUG(kFileHandle, << "FileHandleImpl::AsyncPreadSome("
- << FMT_THIS_ADDR << "), ...) Datanode hostname=" << dnHostName << ", IP Address=" << dnIpAddr
- << ", file path=\"" << path_ << "\", offset=" << std::to_string(offset) << ", read size=" << size_within_block);
-
- // This is where we will put the logic for re-using a DN connection; we can
- // steal the FileHandle's dn and put it back when we're done
- std::shared_ptr<DataNodeConnection> dn = CreateDataNodeConnection(io_service_, chosen_dn, &block->blocktoken());
- std::string dn_id = dn->uuid_;
- std::string client_name = client_name_;
-
- // Wrap the DN in a block reader to handle the state and logic of the
- // block request protocol
- std::shared_ptr<BlockReader> reader;
- reader = CreateBlockReader(BlockReaderOptions(), dn, event_handlers_);
-
- // Lambdas cannot capture copies of member variables so we'll make explicit
- // copies for it
- auto event_handlers = event_handlers_;
- auto path = path_;
- auto cluster_name = cluster_name_;
-
- auto read_handler = [reader, event_handlers, cluster_name, path, dn_id, handler](const Status & status, size_t transferred) {
- event_response event_resp = event_handlers->call(FILE_DN_READ_EVENT, cluster_name.c_str(), path.c_str(), transferred);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (event_resp.response_type() == event_response::kTest_Error) {
- handler(event_resp.status(), dn_id, transferred);
- return;
- }
-#endif
-
- handler(status, dn_id, transferred);
- };
-
- auto connect_handler = [handler,event_handlers,cluster_name,path,read_handler,block,offset_within_block,size_within_block, buffers, reader, dn_id, client_name]
- (Status status, std::shared_ptr<DataNodeConnection> dn) {
- (void)dn;
- event_response event_resp = event_handlers->call(FILE_DN_CONNECT_EVENT, cluster_name.c_str(), path.c_str(), 0);
-#ifndef LIBHDFSPP_SIMULATE_ERROR_DISABLED
- if (event_resp.response_type() == event_response::kTest_Error) {
- status = event_resp.status();
- }
-#endif
-
- if (status.ok()) {
- reader->AsyncReadBlock(
- client_name, *block, offset_within_block,
- asio::buffer(buffers, size_within_block), read_handler);
- } else {
- handler(status, dn_id, 0);
- }
- };
-
- dn->Connect(connect_handler);
-
- return;
-}
-
-std::shared_ptr<BlockReader> FileHandleImpl::CreateBlockReader(const BlockReaderOptions &options,
- std::shared_ptr<DataNodeConnection> dn,
- std::shared_ptr<LibhdfsEvents> event_handlers)
-{
- std::shared_ptr<BlockReader> reader = std::make_shared<BlockReaderImpl>(options, dn, cancel_state_, event_handlers);
-
- LOG_TRACE(kFileHandle, << "FileHandleImpl::CreateBlockReader(" << FMT_THIS_ADDR
- << ", ..., dnconn=" << dn.get()
- << ") called. New BlockReader = " << reader.get());
-
- readers_.AddReader(reader);
- return reader;
-}
-
-std::shared_ptr<DataNodeConnection> FileHandleImpl::CreateDataNodeConnection(
- ::asio::io_service * io_service,
- const ::hadoop::hdfs::DatanodeInfoProto & dn,
- const hadoop::common::TokenProto * token) {
- LOG_TRACE(kFileHandle, << "FileHandleImpl::CreateDataNodeConnection("
- << FMT_THIS_ADDR << ", ...) called");
- return std::make_shared<DataNodeConnectionImpl>(io_service, dn, token, event_handlers_.get());
-}
-
-std::shared_ptr<LibhdfsEvents> FileHandleImpl::get_event_handlers() {
- return event_handlers_;
-}
-
-void FileHandleImpl::CancelOperations() {
- LOG_INFO(kFileHandle, << "FileHandleImpl::CancelOperations("
- << FMT_THIS_ADDR << ") called");
-
- cancel_state_->set_canceled();
-
- /* Push update to BlockReaders that may be hung in an asio call */
- std::vector<std::shared_ptr<BlockReader>> live_readers = readers_.GetLiveReaders();
- for(auto reader : live_readers) {
- reader->CancelOperation();
- }
-}
-
-void FileHandleImpl::SetFileEventCallback(file_event_callback callback) {
- std::shared_ptr<LibhdfsEvents> new_event_handlers;
- if (event_handlers_) {
- new_event_handlers = std::make_shared<LibhdfsEvents>(*event_handlers_);
- } else {
- new_event_handlers = std::make_shared<LibhdfsEvents>();
- }
- new_event_handlers->set_file_callback(callback);
- event_handlers_ = new_event_handlers;
-}
-
-
-
-bool FileHandle::ShouldExclude(const Status &s) {
- if (s.ok()) {
- return false;
- }
-
- switch (s.code()) {
- /* client side resource exhaustion */
- case Status::kResourceUnavailable:
- case Status::kOperationCanceled:
- return false;
- case Status::kInvalidArgument:
- case Status::kUnimplemented:
- case Status::kException:
- default:
- return true;
- }
-}
-
-uint64_t FileHandleImpl::get_bytes_read() { return bytes_read_.load(); }
-
-void FileHandleImpl::clear_bytes_read() { bytes_read_.store(0); }
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.h
deleted file mode 100644
index 4135156..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filehandle.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_LIB_FS_FILEHANDLE_H_
-#define LIBHDFSPP_LIB_FS_FILEHANDLE_H_
-
-#include "common/hdfs_ioservice.h"
-#include "common/async_stream.h"
-#include "common/cancel_tracker.h"
-#include "common/libhdfs_events_impl.h"
-#include "common/new_delete.h"
-#include "reader/fileinfo.h"
-#include "reader/readergroup.h"
-
-#include "asio.hpp"
-#include "bad_datanode_tracker.h"
-#include "ClientNamenodeProtocol.pb.h"
-
-#include <mutex>
-#include <iostream>
-
-namespace hdfs {
-
-class BlockReader;
-struct BlockReaderOptions;
-class DataNodeConnection;
-
-/*
- * FileHandle: coordinates operations on a particular file in HDFS
- *
- * Threading model: not thread-safe; consumers and io_service should not call
- * concurrently. PositionRead is the exceptions; they can be
- * called concurrently and repeatedly.
- * Lifetime: pointer returned to consumer by FileSystem::Open. Consumer is
- * resonsible for freeing the object.
- */
-class FileHandleImpl : public FileHandle {
-public:
- MEMCHECKED_CLASS(FileHandleImpl)
- FileHandleImpl(const std::string & cluster_name,
- const std::string & path,
- ::asio::io_service *io_service, const std::string &client_name,
- const std::shared_ptr<const struct FileInfo> file_info,
- std::shared_ptr<BadDataNodeTracker> bad_data_nodes,
- std::shared_ptr<LibhdfsEvents> event_handlers);
-
- /*
- * Reads the file at the specified offset into the buffer.
- * bytes_read returns the number of bytes successfully read on success
- * and on error. Status::InvalidOffset is returned when trying to begin
- * a read past the EOF.
- */
- void PositionRead(
- void *buf,
- size_t buf_size,
- uint64_t offset,
- const std::function<void(const Status &status, size_t bytes_read)> &handler
- ) override;
-
- /**
- * Reads the file at the specified offset into the buffer.
- * @param buf output buffer
- * @param buf_size size of the output buffer
- * @param offset offset at which to start reading
- * @param bytes_read number of bytes successfully read
- */
- Status PositionRead(void *buf, size_t buf_size, off_t offset, size_t *bytes_read) override;
- Status Read(void *buf, size_t buf_size, size_t *bytes_read) override;
- Status Seek(off_t *offset, std::ios_base::seekdir whence) override;
-
-
- /*
- * Reads some amount of data into the buffer. Will attempt to find the best
- * datanode and read data from it.
- *
- * If an error occurs during connection or transfer, the callback will be
- * called with bytes_read equal to the number of bytes successfully transferred.
- * If no data nodes can be found, status will be Status::ResourceUnavailable.
- * If trying to begin a read past the EOF, status will be Status::InvalidOffset.
- *
- */
- void AsyncPreadSome(size_t offset, const MutableBuffers &buffers,
- std::shared_ptr<NodeExclusionRule> excluded_nodes,
- const std::function<void(const Status &status,
- const std::string &dn_id, size_t bytes_read)> handler);
-
- /**
- * Cancels all operations instantiated from this FileHandle.
- * Will set a flag to abort continuation pipelines when they try to move to the next step.
- * Closes TCP connections to Datanode in order to abort pipelines waiting on slow IO.
- **/
- virtual void CancelOperations(void) override;
-
- virtual void SetFileEventCallback(file_event_callback callback) override;
-
- /**
- * Ephemeral objects created by the filehandle will need to get the event
- * handler registry owned by the FileSystem.
- **/
- std::shared_ptr<LibhdfsEvents> get_event_handlers();
-
- /* how many bytes have been successfully read */
- virtual uint64_t get_bytes_read() override;
-
- /* resets the number of bytes read to zero */
- virtual void clear_bytes_read() override;
-
-protected:
- virtual std::shared_ptr<BlockReader> CreateBlockReader(const BlockReaderOptions &options,
- std::shared_ptr<DataNodeConnection> dn,
- std::shared_ptr<hdfs::LibhdfsEvents> event_handlers);
- virtual std::shared_ptr<DataNodeConnection> CreateDataNodeConnection(
- ::asio::io_service *io_service,
- const ::hadoop::hdfs::DatanodeInfoProto & dn,
- const hadoop::common::TokenProto * token);
-private:
- const std::string cluster_name_;
- const std::string path_;
- ::asio::io_service * const io_service_;
- const std::string client_name_;
- const std::shared_ptr<const struct FileInfo> file_info_;
- std::shared_ptr<BadDataNodeTracker> bad_node_tracker_;
- bool CheckSeekBounds(ssize_t desired_position);
- off_t offset_;
- CancelHandle cancel_state_;
- ReaderGroup readers_;
- std::shared_ptr<LibhdfsEvents> event_handlers_;
- std::atomic<uint64_t> bytes_read_;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.cc
deleted file mode 100644
index 56d02d8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.cc
+++ /dev/null
@@ -1,859 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "filesystem.h"
-
-#include "common/namenode_info.h"
-
-#include <functional>
-#include <limits>
-#include <future>
-#include <tuple>
-#include <iostream>
-#include <pwd.h>
-#include <fnmatch.h>
-
-#define FMT_THIS_ADDR "this=" << (void*)this
-
-namespace hdfs {
-
-static const char kNamenodeProtocol[] = "org.apache.hadoop.hdfs.protocol.ClientProtocol";
-static const int kNamenodeProtocolVersion = 1;
-
-using ::asio::ip::tcp;
-
-static constexpr uint16_t kDefaultPort = 8020;
-
-// forward declarations
-const std::string get_effective_user_name(const std::string &);
-
-uint32_t FileSystem::GetDefaultFindMaxDepth() {
- return std::numeric_limits<uint32_t>::max();
-}
-
-uint16_t FileSystem::GetDefaultPermissionMask() {
- return 0755;
-}
-
-Status FileSystem::CheckValidPermissionMask(uint16_t permissions) {
- if (permissions > 01777) {
- std::stringstream errormsg;
- errormsg << "CheckValidPermissionMask: argument 'permissions' is " << std::oct
- << std::showbase << permissions << " (should be between 0 and 01777)";
- return Status::InvalidArgument(errormsg.str().c_str());
- }
- return Status::OK();
-}
-
-Status FileSystem::CheckValidReplication(uint16_t replication) {
- if (replication < 1 || replication > 512) {
- std::stringstream errormsg;
- errormsg << "CheckValidReplication: argument 'replication' is "
- << replication << " (should be between 1 and 512)";
- return Status::InvalidArgument(errormsg.str().c_str());
- }
- return Status::OK();
-}
-
-FileSystem::~FileSystem() {}
-
-/*****************************************************************************
- * FILESYSTEM BASE CLASS
- ****************************************************************************/
-
-FileSystem *FileSystem::New(
- IoService *&io_service, const std::string &user_name, const Options &options) {
- return new FileSystemImpl(io_service, user_name, options);
-}
-
-FileSystem *FileSystem::New(
- std::shared_ptr<IoService> io_service, const std::string &user_name, const Options &options) {
- return new FileSystemImpl(io_service, user_name, options);
-}
-
-FileSystem *FileSystem::New() {
- // No, this pointer won't be leaked. The FileSystem takes ownership.
- std::shared_ptr<IoService> io_service = IoService::MakeShared();
- if(!io_service)
- return nullptr;
- int thread_count = io_service->InitDefaultWorkers();
- if(thread_count < 1)
- return nullptr;
-
- std::string user_name = get_effective_user_name("");
- Options options;
- return new FileSystemImpl(io_service, user_name, options);
-}
-
-/*****************************************************************************
- * FILESYSTEM IMPLEMENTATION
- ****************************************************************************/
-
-const std::string get_effective_user_name(const std::string &user_name) {
- if (!user_name.empty())
- return user_name;
-
- // If no user name was provided, try the HADOOP_USER_NAME and USER environment
- // variables
- const char * env = getenv("HADOOP_USER_NAME");
- if (env) {
- return env;
- }
-
- env = getenv("USER");
- if (env) {
- return env;
- }
-
- // If running on POSIX, use the currently logged in user
-#if defined(_POSIX_VERSION)
- uid_t uid = geteuid();
- struct passwd *pw = getpwuid(uid);
- if (pw && pw->pw_name)
- {
- return pw->pw_name;
- }
-#endif
-
- return "unknown_user";
-}
-
-FileSystemImpl::FileSystemImpl(IoService *&io_service, const std::string &user_name, const Options &options) :
- io_service_(static_cast<IoServiceImpl *>(io_service)), options_(options),
- client_name_(GetRandomClientName()),
- nn_(
- &io_service_->io_service(), options, client_name_,
- get_effective_user_name(user_name), kNamenodeProtocol,
- kNamenodeProtocolVersion
- ),
- bad_node_tracker_(std::make_shared<BadDataNodeTracker>()),
- event_handlers_(std::make_shared<LibhdfsEvents>())
-{
-
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::FileSystemImpl("
- << FMT_THIS_ADDR << ") called");
-
- // Poor man's move
- io_service = nullptr;
-
- unsigned int running_workers = 0;
- if(options.io_threads_ < 1) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::FileSystemImpl Initializing default number of worker threads");
- running_workers = io_service_->InitDefaultWorkers();
- } else {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::FileSystenImpl Initializing " << options_.io_threads_ << " worker threads.");
- running_workers = io_service->InitWorkers(options_.io_threads_);
- }
-
- if(running_workers < 1) {
- LOG_WARN(kFileSystem, << "FileSystemImpl::FileSystemImpl was unable to start worker threads");
- }
-}
-
-FileSystemImpl::FileSystemImpl(std::shared_ptr<IoService> io_service, const std::string& user_name, const Options &options) :
- io_service_(std::static_pointer_cast<IoServiceImpl>(io_service)), options_(options),
- client_name_(GetRandomClientName()),
- nn_(
- &io_service_->io_service(), options, client_name_,
- get_effective_user_name(user_name), kNamenodeProtocol,
- kNamenodeProtocolVersion
- ),
- bad_node_tracker_(std::make_shared<BadDataNodeTracker>()),
- event_handlers_(std::make_shared<LibhdfsEvents>())
-{
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::FileSystemImpl("
- << FMT_THIS_ADDR << ", shared IoService@" << io_service_.get() << ") called");
- int worker_thread_count = io_service_->get_worker_thread_count();
- if(worker_thread_count < 1) {
- LOG_WARN(kFileSystem, << "FileSystemImpl::FileSystemImpl IoService provided doesn't have any worker threads. "
- << "It needs at least 1 worker to connect to an HDFS cluster.")
- } else {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::FileSystemImpl using " << worker_thread_count << " worker threads.");
- }
-}
-
-FileSystemImpl::~FileSystemImpl() {
- LOG_TRACE(kFileSystem, << "FileSystemImpl::~FileSystemImpl("
- << FMT_THIS_ADDR << ") called");
-
- /**
- * Note: IoService must be stopped before getting rid of worker threads.
- * Once worker threads are joined and deleted the service can be deleted.
- **/
- io_service_->Stop();
-}
-
-void FileSystemImpl::Connect(const std::string &server,
- const std::string &service,
- const std::function<void(const Status &, FileSystem * fs)> &handler) {
- LOG_INFO(kFileSystem, << "FileSystemImpl::Connect(" << FMT_THIS_ADDR
- << ", server=" << server << ", service="
- << service << ") called");
- connect_callback_.SetCallback(handler);
-
- /* IoService::New can return nullptr */
- if (!io_service_) {
- handler (Status::Error("Null IoService"), this);
- }
-
- // DNS lookup here for namenode(s)
- std::vector<ResolvedNamenodeInfo> resolved_namenodes;
-
- auto name_service = options_.services.find(server);
- if(name_service != options_.services.end()) {
- cluster_name_ = name_service->first;
- resolved_namenodes = BulkResolve(&io_service_->io_service(), name_service->second);
- } else {
- cluster_name_ = server + ":" + service;
-
- // tmp namenode info just to get this in the right format for BulkResolve
- NamenodeInfo tmp_info;
- try {
- tmp_info.uri = URI::parse_from_string("hdfs://" + cluster_name_);
- } catch (const uri_parse_error& e) {
- LOG_ERROR(kFileSystem, << "Unable to use URI for cluster " << cluster_name_);
- handler(Status::Error(("Invalid namenode " + cluster_name_ + " in config").c_str()), this);
- }
-
- resolved_namenodes = BulkResolve(&io_service_->io_service(), {tmp_info});
- }
-
- for(unsigned int i=0;i<resolved_namenodes.size();i++) {
- LOG_DEBUG(kFileSystem, << "Resolved Namenode");
- LOG_DEBUG(kFileSystem, << resolved_namenodes[i].str());
- }
-
-
- nn_.Connect(cluster_name_, /*server, service*/ resolved_namenodes, [this](const Status & s) {
- connect_callback_.GetCallback()(s, this);
- });
-}
-
-
-void FileSystemImpl::ConnectToDefaultFs(const std::function<void(const Status &, FileSystem *)> &handler) {
- std::string scheme = options_.defaultFS.get_scheme();
- if (strcasecmp(scheme.c_str(), "hdfs") != 0) {
- std::string error_message;
- error_message += "defaultFS of [" + options_.defaultFS.str() + "] is not supported";
- handler(Status::InvalidArgument(error_message.c_str()), nullptr);
- return;
- }
-
- std::string host = options_.defaultFS.get_host();
- if (host.empty()) {
- handler(Status::InvalidArgument("defaultFS must specify a hostname"), nullptr);
- return;
- }
-
- int16_t port = options_.defaultFS.get_port_or_default(kDefaultPort);
- std::string port_as_string = std::to_string(port);
-
- Connect(host, port_as_string, handler);
-}
-
-int FileSystemImpl::AddWorkerThread() {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::AddWorkerThread("
- << FMT_THIS_ADDR << ") called."
- << " Existing thread count = " << WorkerThreadCount());
-
- if(!io_service_)
- return -1;
-
- io_service_->AddWorkerThread();
- return 1;
-}
-
-int FileSystemImpl::WorkerThreadCount() {
- if(!io_service_) {
- return -1;
- } else {
- return io_service_->get_worker_thread_count();
- }
-}
-
-bool FileSystemImpl::CancelPendingConnect() {
- if(connect_callback_.IsCallbackAccessed()) {
- // Temp fix for failover hangs, allow CancelPendingConnect to be called so it can push a flag through the RPC engine
- LOG_DEBUG(kFileSystem, << "FileSystemImpl@" << this << "::CancelPendingConnect called after Connect completed");
- return nn_.CancelPendingConnect();
- }
-
- if(!connect_callback_.IsCallbackSet()) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl@" << this << "::CancelPendingConnect called before Connect started");
- return false;
- }
-
- // First invoke callback, then do proper teardown in RpcEngine and RpcConnection
- ConnectCallback noop_callback = [](const Status &stat, FileSystem *fs) {
- LOG_DEBUG(kFileSystem, << "Dummy callback invoked for canceled FileSystem@" << fs << "::Connect with status: " << stat.ToString());
- };
-
- bool callback_swapped = false;
- ConnectCallback original_callback = connect_callback_.AtomicSwapCallback(noop_callback, callback_swapped);
-
- if(callback_swapped) {
- // Take original callback and invoke it as if it was canceled.
- LOG_DEBUG(kFileSystem, << "Swapped in dummy callback. Invoking connect callback with canceled status.");
- std::function<void(void)> wrapped_callback = [original_callback, this](){
- // handling code expected to check status before dereferenceing 'this'
- original_callback(Status::Canceled(), this);
- };
- io_service_->PostTask(wrapped_callback);
- } else {
- LOG_INFO(kFileSystem, << "Unable to cancel FileSystem::Connect. It hasn't been invoked yet or may have already completed.")
- return false;
- }
-
- // Now push cancel down to clean up where possible and make sure the RpcEngine
- // won't try to do retries in the background. The rest of the memory cleanup
- // happens when this FileSystem is deleted by the user.
- return nn_.CancelPendingConnect();
-}
-
-void FileSystemImpl::Open(
- const std::string &path,
- const std::function<void(const Status &, FileHandle *)> &handler) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::Open("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- nn_.GetBlockLocations(path, 0, std::numeric_limits<int64_t>::max(), [this, path, handler](const Status &stat, std::shared_ptr<const struct FileInfo> file_info) {
- if(!stat.ok()) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::Open failed to get block locations. status=" << stat.ToString());
- if(stat.get_server_exception_type() == Status::kStandbyException) {
- LOG_DEBUG(kFileSystem, << "Operation not allowed on standby datanode");
- }
- }
- handler(stat, stat.ok() ? new FileHandleImpl(cluster_name_, path, &io_service_->io_service(), client_name_, file_info, bad_node_tracker_, event_handlers_)
- : nullptr);
- });
-}
-
-
-BlockLocation LocatedBlockToBlockLocation(const hadoop::hdfs::LocatedBlockProto & locatedBlock)
-{
- BlockLocation result;
-
- result.setCorrupt(locatedBlock.corrupt());
- result.setOffset(locatedBlock.offset());
-
- std::vector<DNInfo> dn_info;
- dn_info.reserve(locatedBlock.locs_size());
- for (const hadoop::hdfs::DatanodeInfoProto & datanode_info: locatedBlock.locs()) {
- const hadoop::hdfs::DatanodeIDProto &id = datanode_info.id();
- DNInfo newInfo;
- if (id.has_ipaddr())
- newInfo.setIPAddr(id.ipaddr());
- if (id.has_hostname())
- newInfo.setHostname(id.hostname());
- if (id.has_xferport())
- newInfo.setXferPort(id.xferport());
- if (id.has_infoport())
- newInfo.setInfoPort(id.infoport());
- if (id.has_ipcport())
- newInfo.setIPCPort(id.ipcport());
- if (id.has_infosecureport())
- newInfo.setInfoSecurePort(id.infosecureport());
- if (datanode_info.has_location())
- newInfo.setNetworkLocation(datanode_info.location());
- dn_info.push_back(newInfo);
- }
- result.setDataNodes(dn_info);
-
- if (locatedBlock.has_b()) {
- const hadoop::hdfs::ExtendedBlockProto & b=locatedBlock.b();
- result.setLength(b.numbytes());
- }
-
-
- return result;
-}
-
-void FileSystemImpl::GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- const std::function<void(const Status &, std::shared_ptr<FileBlockLocation> locations)> handler)
-{
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::GetBlockLocations("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- //Protobuf gives an error 'Negative value is not supported'
- //if the high bit is set in uint64 in GetBlockLocations
- if (IsHighBitSet(offset)) {
- handler(Status::InvalidArgument("GetBlockLocations: argument 'offset' cannot have high bit set"), nullptr);
- return;
- }
- if (IsHighBitSet(length)) {
- handler(Status::InvalidArgument("GetBlockLocations: argument 'length' cannot have high bit set"), nullptr);
- return;
- }
-
- auto conversion = [handler](const Status & status, std::shared_ptr<const struct FileInfo> fileInfo) {
- if (status.ok()) {
- auto result = std::make_shared<FileBlockLocation>();
-
- result->setFileLength(fileInfo->file_length_);
- result->setLastBlockComplete(fileInfo->last_block_complete_);
- result->setUnderConstruction(fileInfo->under_construction_);
-
- std::vector<BlockLocation> blocks;
- for (const hadoop::hdfs::LocatedBlockProto & locatedBlock: fileInfo->blocks_) {
- auto newLocation = LocatedBlockToBlockLocation(locatedBlock);
- blocks.push_back(newLocation);
- }
- result->setBlockLocations(blocks);
-
- handler(status, result);
- } else {
- handler(status, std::shared_ptr<FileBlockLocation>());
- }
- };
-
- nn_.GetBlockLocations(path, offset, length, conversion);
-}
-
-void FileSystemImpl::GetPreferredBlockSize(const std::string &path,
- const std::function<void(const Status &, const uint64_t &)> &handler) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::GetPreferredBlockSize("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- nn_.GetPreferredBlockSize(path, handler);
-}
-
-
-void FileSystemImpl::SetReplication(const std::string & path, int16_t replication, std::function<void(const Status &)> handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::SetReplication(" << FMT_THIS_ADDR << ", path=" << path <<
- ", replication=" << replication << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetReplication: argument 'path' cannot be empty"));
- return;
- }
- Status replStatus = FileSystem::CheckValidReplication(replication);
- if (!replStatus.ok()) {
- handler(replStatus);
- return;
- }
-
- nn_.SetReplication(path, replication, handler);
-}
-
-
-void FileSystemImpl::SetTimes(const std::string & path, uint64_t mtime, uint64_t atime,
- std::function<void(const Status &)> handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::SetTimes(" << FMT_THIS_ADDR << ", path=" << path <<
- ", mtime=" << mtime << ", atime=" << atime << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetTimes: argument 'path' cannot be empty"));
- return;
- }
-
- nn_.SetTimes(path, mtime, atime, handler);
-}
-
-
-void FileSystemImpl::GetFileInfo(
- const std::string &path,
- const std::function<void(const Status &, const StatInfo &)> &handler) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::GetFileInfo("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- nn_.GetFileInfo(path, handler);
-}
-
-void FileSystemImpl::GetContentSummary(
- const std::string &path,
- const std::function<void(const Status &, const ContentSummary &)> &handler) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::GetContentSummary("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
-
- nn_.GetContentSummary(path, handler);
-}
-
-void FileSystemImpl::GetFsStats(
- const std::function<void(const Status &, const FsInfo &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::GetFsStats(" << FMT_THIS_ADDR << ") called");
-
- nn_.GetFsStats(handler);
-}
-
-
-/**
- * Helper function for recursive GetListing calls.
- *
- * Some compilers don't like recursive lambdas, so we make the lambda call a
- * method, which in turn creates a lambda calling itself.
- */
-void FileSystemImpl::GetListingShim(const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more,
- std::string path, const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler) {
- bool has_next = !stat_infos.empty();
- bool get_more = handler(stat, stat_infos, has_more && has_next);
- if (get_more && has_more && has_next ) {
- auto callback = [this, path, handler](const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more) {
- GetListingShim(stat, stat_infos, has_more, path, handler);
- };
-
- std::string last = stat_infos.back().path;
- nn_.GetListing(path, callback, last);
- }
-}
-
-void FileSystemImpl::GetListing(
- const std::string &path,
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::GetListing("
- << FMT_THIS_ADDR << ", path="
- << path << ") called");
- std::string path_fixed = path;
- if(path.back() != '/'){
- path_fixed += "/";
- }
- // Caputure the state and push it into the shim
- auto callback = [this, path_fixed, handler](const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more) {
- GetListingShim(stat, stat_infos, has_more, path_fixed, handler);
- };
-
- nn_.GetListing(path_fixed, callback);
-}
-
-
-void FileSystemImpl::Mkdirs(const std::string & path, uint16_t permissions, bool createparent,
- std::function<void(const Status &)> handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::Mkdirs(" << FMT_THIS_ADDR << ", path=" << path <<
- ", permissions=" << permissions << ", createparent=" << createparent << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("Mkdirs: argument 'path' cannot be empty"));
- return;
- }
-
- Status permStatus = FileSystem::CheckValidPermissionMask(permissions);
- if (!permStatus.ok()) {
- handler(permStatus);
- return;
- }
-
- nn_.Mkdirs(path, permissions, createparent, handler);
-}
-
-
-void FileSystemImpl::Delete(const std::string &path, bool recursive,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::Delete(" << FMT_THIS_ADDR << ", path=" << path << ", recursive=" << recursive << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("Delete: argument 'path' cannot be empty"));
- return;
- }
-
- nn_.Delete(path, recursive, handler);
-}
-
-
-void FileSystemImpl::Rename(const std::string &oldPath, const std::string &newPath,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::Rename(" << FMT_THIS_ADDR << ", oldPath=" << oldPath << ", newPath=" << newPath << ") called");
-
- if (oldPath.empty()) {
- handler(Status::InvalidArgument("Rename: argument 'oldPath' cannot be empty"));
- return;
- }
-
- if (newPath.empty()) {
- handler(Status::InvalidArgument("Rename: argument 'newPath' cannot be empty"));
- return;
- }
-
- nn_.Rename(oldPath, newPath, handler);
-}
-
-
-void FileSystemImpl::SetPermission(const std::string & path,
- uint16_t permissions, const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::SetPermission(" << FMT_THIS_ADDR << ", path=" << path << ", permissions=" << permissions << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetPermission: argument 'path' cannot be empty"));
- return;
- }
- Status permStatus = FileSystem::CheckValidPermissionMask(permissions);
- if (!permStatus.ok()) {
- handler(permStatus);
- return;
- }
-
- nn_.SetPermission(path, permissions, handler);
-}
-
-
-void FileSystemImpl::SetOwner(const std::string & path, const std::string & username,
- const std::string & groupname, const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::SetOwner(" << FMT_THIS_ADDR << ", path=" << path << ", username=" << username << ", groupname=" << groupname << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("SetOwner: argument 'path' cannot be empty"));
- return;
- }
-
- nn_.SetOwner(path, username, groupname, handler);
-}
-
-
-/**
- * Helper function for recursive Find calls.
- *
- * Some compilers don't like recursive lambdas, so we make the lambda call a
- * method, which in turn creates a lambda calling itself.
- *
- * ***High-level explanation***
- *
- * Since we are allowing to use wild cards in both path and name, we start by expanding the path first.
- * Boolean search_path is set to true when we search for the path and false when we search for the name.
- * When we search for the path we break the given path pattern into sub-directories. Starting from the
- * first sub-directory we list them one-by-one and recursively continue into directories that matched the
- * path pattern at the current depth. Directories that are large will be requested to continue sending
- * the results. We keep track of the current depth within the path pattern in the 'depth' variable.
- * This continues recursively until the depth reaches the end of the path. Next that we start matching
- * the name pattern. All directories that we find we recurse now, and all names that match the given name
- * pattern are being stored in outputs and later sent back to the user.
- */
-void FileSystemImpl::FindShim(const Status &stat, const std::vector<StatInfo> & stat_infos, bool directory_has_more,
- std::shared_ptr<FindOperationalState> operational_state, std::shared_ptr<FindSharedState> shared_state) {
- //We buffer the outputs then send them back at the end
- std::vector<StatInfo> outputs;
- //Return on error
- if(!stat.ok()){
- std::lock_guard<std::mutex> find_lock(shared_state->lock);
- //We send true becuase we do not want the user code to exit before all our requests finished
- shared_state->handler(stat, outputs, true);
- shared_state->aborted = true;
- }
- if(!shared_state->aborted){
- //User did not abort the operation
- if (directory_has_more) {
- //Directory is large and has more results
- //We launch another async call to get more results
- shared_state->outstanding_requests++;
- auto callback = [this, operational_state, shared_state](const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more) {
- FindShim(stat, stat_infos, has_more, operational_state, shared_state);
- };
- std::string last = stat_infos.back().path;
- nn_.GetListing(operational_state->path, callback, last);
- }
- if(operational_state->search_path && operational_state->depth < shared_state->dirs.size() - 1){
- //We are searching for the path and did not reach the end of the path yet
- for (StatInfo const& si : stat_infos) {
- //If we are at the last depth and it matches both path and name, we need to output it.
- if (operational_state->depth == shared_state->dirs.size() - 2
- && !fnmatch(shared_state->dirs[operational_state->depth + 1].c_str(), si.path.c_str(), 0)
- && !fnmatch(shared_state->name.c_str(), si.path.c_str(), 0)) {
- outputs.push_back(si);
- }
- //Skip if not directory
- if(si.file_type != StatInfo::IS_DIR) {
- continue;
- }
- //Checking for a match with the path at the current depth
- if(!fnmatch(shared_state->dirs[operational_state->depth + 1].c_str(), si.path.c_str(), 0)){
- //Launch a new requests for every matched directory
- shared_state->outstanding_requests++;
- auto callback = [this, si, operational_state, shared_state](const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more) {
- std::shared_ptr<FindOperationalState> new_current_state = std::make_shared<FindOperationalState>(si.full_path, operational_state->depth + 1, true); //true because searching for the path
- FindShim(stat, stat_infos, has_more, new_current_state, shared_state);
- };
- nn_.GetListing(si.full_path, callback);
- }
- }
- }
- else if(shared_state->maxdepth > operational_state->depth - shared_state->dirs.size() + 1){
- //We are searching for the name now and maxdepth has not been reached
- for (StatInfo const& si : stat_infos) {
- //Launch a new request for every directory
- if(si.file_type == StatInfo::IS_DIR) {
- shared_state->outstanding_requests++;
- auto callback = [this, si, operational_state, shared_state](const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more) {
- std::shared_ptr<FindOperationalState> new_current_state = std::make_shared<FindOperationalState>(si.full_path, operational_state->depth + 1, false); //false because searching for the name
- FindShim(stat, stat_infos, has_more, new_current_state, shared_state);
- };
- nn_.GetListing(si.full_path, callback);
- }
- //All names that match the specified name are saved to outputs
- if(!fnmatch(shared_state->name.c_str(), si.path.c_str(), 0)){
- outputs.push_back(si);
- }
- }
- }
- }
- //This section needs a lock to make sure we return the final chunk only once
- //and no results are sent after aborted is set
- std::lock_guard<std::mutex> find_lock(shared_state->lock);
- //Decrement the counter once since we are done with this chunk
- shared_state->outstanding_requests--;
- if(shared_state->outstanding_requests == 0){
- //Send the outputs back to the user and notify that this is the final chunk
- shared_state->handler(stat, outputs, false);
- } else {
- //There will be more results and we are not aborting
- if (outputs.size() > 0 && !shared_state->aborted){
- //Send the outputs back to the user and notify that there is more
- bool user_wants_more = shared_state->handler(stat, outputs, true);
- if(!user_wants_more) {
- //Abort if user doesn't want more
- shared_state->aborted = true;
- }
- }
- }
-}
-
-void FileSystemImpl::Find(
- const std::string &path, const std::string &name, const uint32_t maxdepth,
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler) {
- LOG_DEBUG(kFileSystem, << "FileSystemImpl::Find("
- << FMT_THIS_ADDR << ", path="
- << path << ", name="
- << name << ") called");
-
- //Populating the operational state, which includes:
- //current search path, depth within the path, and the indication that we are currently searching for a path (not name yet).
- std::shared_ptr<FindOperationalState> operational_state = std::make_shared<FindOperationalState>(path, 0, true);
- //Populating the shared state, which includes:
- //vector of sub-directories constructed from path, name to search, handler to use for result returning, outstanding_requests counter, and aborted flag.
- std::shared_ptr<FindSharedState> shared_state = std::make_shared<FindSharedState>(path, name, maxdepth, handler, 1, false);
- auto callback = [this, operational_state, shared_state](const Status &stat, const std::vector<StatInfo> & stat_infos, bool directory_has_more) {
- FindShim(stat, stat_infos, directory_has_more, operational_state, shared_state);
- };
- nn_.GetListing("/", callback);
-}
-
-
-void FileSystemImpl::CreateSnapshot(const std::string &path,
- const std::string &name,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::CreateSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ", name=" << name << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("CreateSnapshot: argument 'path' cannot be empty"));
- return;
- }
-
- nn_.CreateSnapshot(path, name, handler);
-}
-
-
-void FileSystemImpl::DeleteSnapshot(const std::string &path,
- const std::string &name,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::DeleteSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ", name=" << name << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("DeleteSnapshot: argument 'path' cannot be empty"));
- return;
- }
- if (name.empty()) {
- handler(Status::InvalidArgument("DeleteSnapshot: argument 'name' cannot be empty"));
- return;
- }
-
- nn_.DeleteSnapshot(path, name, handler);
-}
-
-void FileSystemImpl::RenameSnapshot(const std::string &path,
- const std::string &old_name, const std::string &new_name,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::RenameSnapshot(" << FMT_THIS_ADDR << ", path=" << path <<
- ", old_name=" << old_name << ", new_name=" << new_name << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("RenameSnapshot: argument 'path' cannot be empty"));
- return;
- }
- if (old_name.empty()) {
- handler(Status::InvalidArgument("RenameSnapshot: argument 'old_name' cannot be empty"));
- return;
- }
- if (new_name.empty()) {
- handler(Status::InvalidArgument("RenameSnapshot: argument 'new_name' cannot be empty"));
- return;
- }
-
- nn_.RenameSnapshot(path, old_name, new_name, handler);
-}
-
-void FileSystemImpl::AllowSnapshot(const std::string &path,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::AllowSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("AllowSnapshot: argument 'path' cannot be empty"));
- return;
- }
-
- nn_.AllowSnapshot(path, handler);
-}
-
-
-void FileSystemImpl::DisallowSnapshot(const std::string &path,
- const std::function<void(const Status &)> &handler) {
- LOG_DEBUG(kFileSystem,
- << "FileSystemImpl::DisallowSnapshot(" << FMT_THIS_ADDR << ", path=" << path << ") called");
-
- if (path.empty()) {
- handler(Status::InvalidArgument("DisallowSnapshot: argument 'path' cannot be empty"));
- return;
- }
-
- nn_.DisallowSnapshot(path, handler);
-}
-
-void FileSystemImpl::SetFsEventCallback(fs_event_callback callback) {
- if (event_handlers_) {
- event_handlers_->set_fs_callback(callback);
- nn_.SetFsEventCallback(callback);
- }
-}
-
-
-
-std::shared_ptr<LibhdfsEvents> FileSystemImpl::get_event_handlers() {
- return event_handlers_;
-}
-
-Options FileSystemImpl::get_options() {
- return options_;
-}
-
-std::string FileSystemImpl::get_cluster_name() {
- return cluster_name_;
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.h
deleted file mode 100644
index f2e9abd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/filesystem.h
+++ /dev/null
@@ -1,291 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_LIB_FS_FILESYSTEM_H_
-#define LIBHDFSPP_LIB_FS_FILESYSTEM_H_
-
-#include "filehandle.h"
-#include "hdfspp/hdfspp.h"
-#include "fs/bad_datanode_tracker.h"
-#include "reader/block_reader.h"
-#include "reader/fileinfo.h"
-
-#include "asio.hpp"
-
-#include <thread>
-#include "namenode_operations.h"
-
-namespace hdfs {
-
-/*
- * FileSystem: The consumer's main point of interaction with the cluster as
- * a whole.
- *
- * Initially constructed in a disconnected state; call Connect before operating
- * on the FileSystem.
- *
- * All open files must be closed before the FileSystem is destroyed.
- *
- * Threading model: thread-safe for all operations
- * Lifetime: pointer created for consumer who is responsible for deleting it
- */
-class FileSystemImpl : public FileSystem {
-public:
- MEMCHECKED_CLASS(FileSystemImpl)
- typedef std::function<void(const Status &, FileSystem *)> ConnectCallback;
-
- explicit FileSystemImpl(IoService *&io_service, const std::string& user_name, const Options &options);
- explicit FileSystemImpl(std::shared_ptr<IoService>, const std::string& user_name, const Options &options);
- ~FileSystemImpl() override;
-
- /* attempt to connect to namenode, return bad status on failure */
- void Connect(const std::string &server, const std::string &service,
- const std::function<void(const Status &, FileSystem *)> &handler) override;
- /* attempt to connect to namenode, return bad status on failure */
- Status Connect(const std::string &server, const std::string &service) override;
-
- /* Connect to the NN indicated in options.defaultFs */
- virtual void ConnectToDefaultFs(
- const std::function<void(const Status &, FileSystem *)> &handler) override;
- virtual Status ConnectToDefaultFs() override;
-
- /* Cancel connection if FS is in the middle of one */
- virtual bool CancelPendingConnect() override;
-
- virtual void Open(const std::string &path,
- const std::function<void(const Status &, FileHandle *)>
- &handler) override;
- Status Open(const std::string &path, FileHandle **handle) override;
-
- virtual void GetPreferredBlockSize(const std::string &path,
- const std::function<void(const Status &, const uint64_t &)> &handler) override;
- virtual Status GetPreferredBlockSize(const std::string &path, uint64_t & block_size) override;
-
- virtual void SetReplication(const std::string & path, int16_t replication, std::function<void(const Status &)> handler) override;
- virtual Status SetReplication(const std::string & path, int16_t replication) override;
-
- void SetTimes(const std::string & path, uint64_t mtime, uint64_t atime, std::function<void(const Status &)> handler) override;
- Status SetTimes(const std::string & path, uint64_t mtime, uint64_t atime) override;
-
- void GetFileInfo(
- const std::string &path,
- const std::function<void(const Status &, const StatInfo &)> &handler) override;
-
- Status GetFileInfo(const std::string &path, StatInfo & stat_info) override;
-
- void GetContentSummary(const std::string &path,
- const std::function<void(const Status &, const ContentSummary &)> &handler) override;
- Status GetContentSummary(const std::string &path, ContentSummary & stat_info) override;
-
- /**
- * Retrieves the file system information such as the total raw size of all files in the filesystem
- * and the raw capacity of the filesystem
- *
- * @param FsInfo struct to be populated by GetFsStats
- **/
- void GetFsStats(
- const std::function<void(const Status &, const FsInfo &)> &handler) override;
-
- Status GetFsStats(FsInfo & fs_info) override;
-
- void GetListing(
- const std::string &path,
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler) override;
-
- Status GetListing(const std::string &path, std::vector<StatInfo> * stat_infos) override;
-
- virtual void GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- const std::function<void(const Status &, std::shared_ptr<FileBlockLocation> locations)> ) override;
- virtual Status GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- std::shared_ptr<FileBlockLocation> * locations) override;
-
- virtual void Mkdirs(const std::string & path, uint16_t permissions, bool createparent,
- std::function<void(const Status &)> handler) override;
- virtual Status Mkdirs(const std::string & path, uint16_t permissions, bool createparent) override;
-
- virtual void Delete(const std::string &path, bool recursive,
- const std::function<void(const Status &)> &handler) override;
- virtual Status Delete(const std::string &path, bool recursive) override;
-
- virtual void Rename(const std::string &oldPath, const std::string &newPath,
- const std::function<void(const Status &)> &handler) override;
- virtual Status Rename(const std::string &oldPath, const std::string &newPath) override;
-
- virtual void SetPermission(const std::string & path, uint16_t permissions,
- const std::function<void(const Status &)> &handler) override;
- virtual Status SetPermission(const std::string & path, uint16_t permissions) override;
-
- virtual void SetOwner(const std::string & path, const std::string & username,
- const std::string & groupname, const std::function<void(const Status &)> &handler) override;
- virtual Status SetOwner(const std::string & path,
- const std::string & username, const std::string & groupname) override;
-
- void Find(
- const std::string &path, const std::string &name, const uint32_t maxdepth,
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler) override;
- Status Find(const std::string &path, const std::string &name, const uint32_t maxdepth, std::vector<StatInfo> * stat_infos) override;
-
- /*****************************************************************************
- * FILE SYSTEM SNAPSHOT FUNCTIONS
- ****************************************************************************/
-
- /**
- * Creates a snapshot of a snapshottable directory specified by path
- *
- * @param path Path to the directory to be snapshotted (must be non-empty)
- * @param name Name to be given to the created snapshot (may be empty)
- **/
- void CreateSnapshot(const std::string &path, const std::string &name,
- const std::function<void(const Status &)> &handler) override;
- Status CreateSnapshot(const std::string &path, const std::string &name) override;
-
- /**
- * Deletes the directory snapshot specified by path and name
- *
- * @param path Path to the snapshotted directory (must be non-empty)
- * @param name Name of the snapshot to be deleted (must be non-empty)
- **/
- void DeleteSnapshot(const std::string &path, const std::string &name,
- const std::function<void(const Status &)> &handler) override;
- Status DeleteSnapshot(const std::string &path, const std::string &name) override;
-
- /**
- * Renames the directory snapshot specified by path from old_name to new_name
- *
- * @param path Path to the snapshotted directory (must be non-blank)
- * @param old_name Current name of the snapshot (must be non-blank)
- * @param new_name New name of the snapshot (must be non-blank)
- **/
- void RenameSnapshot(const std::string &path, const std::string &old_name,
- const std::string &new_name, const std::function<void(const Status &)> &handler) override;
- Status RenameSnapshot(const std::string &path, const std::string &old_name,
- const std::string &new_name) override;
-
- /**
- * Allows snapshots to be made on the specified directory
- *
- * @param path Path to the directory to be made snapshottable (must be non-empty)
- **/
- void AllowSnapshot(const std::string &path, const std::function<void(const Status &)> &handler) override;
- Status AllowSnapshot(const std::string &path) override;
-
- /**
- * Disallows snapshots to be made on the specified directory
- *
- * @param path Path to the directory to be made non-snapshottable (must be non-empty)
- **/
- void DisallowSnapshot(const std::string &path, const std::function<void(const Status &)> &handler) override;
- Status DisallowSnapshot(const std::string &path) override;
-
- void SetFsEventCallback(fs_event_callback callback) override;
-
- /* add a new thread to handle asio requests, return number of threads in pool
- */
- int AddWorkerThread();
-
- /* how many worker threads are servicing asio requests */
- int WorkerThreadCount();
-
- /* all monitored events will need to lookup handlers */
- std::shared_ptr<LibhdfsEvents> get_event_handlers();
-
- Options get_options() override;
-
- std::string get_cluster_name() override;
-
-private:
- /**
- * The IoService must be the first member variable to ensure that it gets
- * destroyed last. This allows other members to dequeue things from the
- * service in their own destructors.
- * A side effect of this is that requests may outlive the RpcEngine they
- * reference.
- **/
- std::shared_ptr<IoServiceImpl> io_service_;
- const Options options_;
- const std::string client_name_;
- std::string cluster_name_;
- NameNodeOperations nn_;
- std::shared_ptr<BadDataNodeTracker> bad_node_tracker_;
-
- // Keep connect callback around in case it needs to be canceled
- SwappableCallbackHolder<ConnectCallback> connect_callback_;
-
- /**
- * Runtime event monitoring handlers.
- * Note: This is really handy to have for advanced usage but
- * exposes implementation details that may change at any time.
- **/
- std::shared_ptr<LibhdfsEvents> event_handlers_;
-
- void GetListingShim(const Status &stat, const std::vector<StatInfo> & stat_infos, bool has_more,
- std::string path, const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler);
-
- struct FindSharedState {
- //Name pattern (can have wild-cards) to find
- const std::string name;
- //Maximum depth to recurse after the end of path is reached.
- //Can be set to 0 for pure path globbing and ignoring name pattern entirely.
- const uint32_t maxdepth;
- //Vector of all sub-directories from the path argument (each can have wild-cards)
- std::vector<std::string> dirs;
- //Callback from Find
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> handler;
- //outstanding_requests is incremented once for every GetListing call.
- std::atomic<uint64_t> outstanding_requests;
- //Boolean needed to abort all recursion on error or on user command
- std::atomic<bool> aborted;
- //Shared variables will need protection with a lock
- std::mutex lock;
- FindSharedState(const std::string path_, const std::string name_, const uint32_t maxdepth_,
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> handler_,
- uint64_t outstanding_recuests_, bool aborted_)
- : name(name_),
- maxdepth(maxdepth_),
- handler(handler_),
- outstanding_requests(outstanding_recuests_),
- aborted(aborted_),
- lock() {
- //Constructing the list of sub-directories
- std::stringstream ss(path_);
- if(path_.back() != '/'){
- ss << "/";
- }
- for (std::string token; std::getline(ss, token, '/'); ) {
- dirs.push_back(token);
- }
- }
- };
-
- struct FindOperationalState {
- const std::string path;
- const uint32_t depth;
- const bool search_path;
- FindOperationalState(const std::string path_, const uint32_t depth_, const bool search_path_)
- : path(path_),
- depth(depth_),
- search_path(search_path_) {
- }
- };
-
- void FindShim(const Status &stat, const std::vector<StatInfo> & stat_infos,
- bool directory_has_more, std::shared_ptr<FindOperationalState> current_state, std::shared_ptr<FindSharedState> shared_state);
-
-};
-}
-
-#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[34/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_acceptor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_acceptor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_acceptor.hpp
deleted file mode 100644
index f69f483..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_acceptor.hpp
+++ /dev/null
@@ -1,1136 +0,0 @@
-//
-// basic_socket_acceptor.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_BASIC_SOCKET_ACCEPTOR_HPP
-#define ASIO_BASIC_SOCKET_ACCEPTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/socket_acceptor_service.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides the ability to accept new connections.
-/**
- * The basic_socket_acceptor class template is used for accepting new socket
- * connections.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * Opening a socket acceptor with the SO_REUSEADDR option enabled:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), port);
- * acceptor.open(endpoint.protocol());
- * acceptor.set_option(asio::ip::tcp::acceptor::reuse_address(true));
- * acceptor.bind(endpoint);
- * acceptor.listen();
- * @endcode
- */
-template <typename Protocol,
- typename SocketAcceptorService = socket_acceptor_service<Protocol> >
-class basic_socket_acceptor
- : public basic_io_object<SocketAcceptorService>,
- public socket_base
-{
-public:
- /// (Deprecated: Use native_handle_type.) The native representation of an
- /// acceptor.
- typedef typename SocketAcceptorService::native_handle_type native_type;
-
- /// The native representation of an acceptor.
- typedef typename SocketAcceptorService::native_handle_type native_handle_type;
-
- /// The protocol type.
- typedef Protocol protocol_type;
-
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- /// Construct an acceptor without opening it.
- /**
- * This constructor creates an acceptor without opening it to listen for new
- * connections. The open() function must be called before the acceptor can
- * accept new socket connections.
- *
- * @param io_service The io_service object that the acceptor will use to
- * dispatch handlers for any asynchronous operations performed on the
- * acceptor.
- */
- explicit basic_socket_acceptor(asio::io_service& io_service)
- : basic_io_object<SocketAcceptorService>(io_service)
- {
- }
-
- /// Construct an open acceptor.
- /**
- * This constructor creates an acceptor and automatically opens it.
- *
- * @param io_service The io_service object that the acceptor will use to
- * dispatch handlers for any asynchronous operations performed on the
- * acceptor.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_socket_acceptor(asio::io_service& io_service,
- const protocol_type& protocol)
- : basic_io_object<SocketAcceptorService>(io_service)
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), protocol, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Construct an acceptor opened on the given endpoint.
- /**
- * This constructor creates an acceptor and automatically opens it to listen
- * for new connections on the specified endpoint.
- *
- * @param io_service The io_service object that the acceptor will use to
- * dispatch handlers for any asynchronous operations performed on the
- * acceptor.
- *
- * @param endpoint An endpoint on the local machine on which the acceptor
- * will listen for new connections.
- *
- * @param reuse_addr Whether the constructor should set the socket option
- * socket_base::reuse_address.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This constructor is equivalent to the following code:
- * @code
- * basic_socket_acceptor<Protocol> acceptor(io_service);
- * acceptor.open(endpoint.protocol());
- * if (reuse_addr)
- * acceptor.set_option(socket_base::reuse_address(true));
- * acceptor.bind(endpoint);
- * acceptor.listen(listen_backlog);
- * @endcode
- */
- basic_socket_acceptor(asio::io_service& io_service,
- const endpoint_type& endpoint, bool reuse_addr = true)
- : basic_io_object<SocketAcceptorService>(io_service)
- {
- asio::error_code ec;
- const protocol_type protocol = endpoint.protocol();
- this->get_service().open(this->get_implementation(), protocol, ec);
- asio::detail::throw_error(ec, "open");
- if (reuse_addr)
- {
- this->get_service().set_option(this->get_implementation(),
- socket_base::reuse_address(true), ec);
- asio::detail::throw_error(ec, "set_option");
- }
- this->get_service().bind(this->get_implementation(), endpoint, ec);
- asio::detail::throw_error(ec, "bind");
- this->get_service().listen(this->get_implementation(),
- socket_base::max_connections, ec);
- asio::detail::throw_error(ec, "listen");
- }
-
- /// Construct a basic_socket_acceptor on an existing native acceptor.
- /**
- * This constructor creates an acceptor object to hold an existing native
- * acceptor.
- *
- * @param io_service The io_service object that the acceptor will use to
- * dispatch handlers for any asynchronous operations performed on the
- * acceptor.
- *
- * @param protocol An object specifying protocol parameters to be used.
- *
- * @param native_acceptor A native acceptor.
- *
- * @throws asio::system_error Thrown on failure.
- */
- basic_socket_acceptor(asio::io_service& io_service,
- const protocol_type& protocol, const native_handle_type& native_acceptor)
- : basic_io_object<SocketAcceptorService>(io_service)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- protocol, native_acceptor, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a basic_socket_acceptor from another.
- /**
- * This constructor moves an acceptor from one object to another.
- *
- * @param other The other basic_socket_acceptor object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket_acceptor(io_service&) constructor.
- */
- basic_socket_acceptor(basic_socket_acceptor&& other)
- : basic_io_object<SocketAcceptorService>(
- ASIO_MOVE_CAST(basic_socket_acceptor)(other))
- {
- }
-
- /// Move-assign a basic_socket_acceptor from another.
- /**
- * This assignment operator moves an acceptor from one object to another.
- *
- * @param other The other basic_socket_acceptor object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket_acceptor(io_service&) constructor.
- */
- basic_socket_acceptor& operator=(basic_socket_acceptor&& other)
- {
- basic_io_object<SocketAcceptorService>::operator=(
- ASIO_MOVE_CAST(basic_socket_acceptor)(other));
- return *this;
- }
-
- // All socket acceptors have access to each other's implementations.
- template <typename Protocol1, typename SocketAcceptorService1>
- friend class basic_socket_acceptor;
-
- /// Move-construct a basic_socket_acceptor from an acceptor of another
- /// protocol type.
- /**
- * This constructor moves an acceptor from one object to another.
- *
- * @param other The other basic_socket_acceptor object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename SocketAcceptorService1>
- basic_socket_acceptor(
- basic_socket_acceptor<Protocol1, SocketAcceptorService1>&& other,
- typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_io_object<SocketAcceptorService>(other.get_io_service())
- {
- this->get_service().template converting_move_construct<Protocol1>(
- this->get_implementation(), other.get_implementation());
- }
-
- /// Move-assign a basic_socket_acceptor from an acceptor of another protocol
- /// type.
- /**
- * This assignment operator moves an acceptor from one object to another.
- *
- * @param other The other basic_socket_acceptor object from which the move
- * will occur.
- *
- * @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
- */
- template <typename Protocol1, typename SocketAcceptorService1>
- typename enable_if<is_convertible<Protocol1, Protocol>::value,
- basic_socket_acceptor>::type& operator=(
- basic_socket_acceptor<Protocol1, SocketAcceptorService1>&& other)
- {
- basic_socket_acceptor tmp(ASIO_MOVE_CAST2(basic_socket_acceptor<
- Protocol1, SocketAcceptorService1>)(other));
- basic_io_object<SocketAcceptorService>::operator=(
- ASIO_MOVE_CAST(basic_socket_acceptor)(tmp));
- return *this;
- }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Open the acceptor using the specified protocol.
- /**
- * This function opens the socket acceptor so that it will use the specified
- * protocol.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * acceptor.open(asio::ip::tcp::v4());
- * @endcode
- */
- void open(const protocol_type& protocol = protocol_type())
- {
- asio::error_code ec;
- this->get_service().open(this->get_implementation(), protocol, ec);
- asio::detail::throw_error(ec, "open");
- }
-
- /// Open the acceptor using the specified protocol.
- /**
- * This function opens the socket acceptor so that it will use the specified
- * protocol.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * asio::error_code ec;
- * acceptor.open(asio::ip::tcp::v4(), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code open(const protocol_type& protocol,
- asio::error_code& ec)
- {
- return this->get_service().open(this->get_implementation(), protocol, ec);
- }
-
- /// Assigns an existing native acceptor to the acceptor.
- /*
- * This function opens the acceptor to hold an existing native acceptor.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @param native_acceptor A native acceptor.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void assign(const protocol_type& protocol,
- const native_handle_type& native_acceptor)
- {
- asio::error_code ec;
- this->get_service().assign(this->get_implementation(),
- protocol, native_acceptor, ec);
- asio::detail::throw_error(ec, "assign");
- }
-
- /// Assigns an existing native acceptor to the acceptor.
- /*
- * This function opens the acceptor to hold an existing native acceptor.
- *
- * @param protocol An object specifying which protocol is to be used.
- *
- * @param native_acceptor A native acceptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code assign(const protocol_type& protocol,
- const native_handle_type& native_acceptor, asio::error_code& ec)
- {
- return this->get_service().assign(this->get_implementation(),
- protocol, native_acceptor, ec);
- }
-
- /// Determine whether the acceptor is open.
- bool is_open() const
- {
- return this->get_service().is_open(this->get_implementation());
- }
-
- /// Bind the acceptor to the given local endpoint.
- /**
- * This function binds the socket acceptor to the specified endpoint on the
- * local machine.
- *
- * @param endpoint An endpoint on the local machine to which the socket
- * acceptor will be bound.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345);
- * acceptor.open(endpoint.protocol());
- * acceptor.bind(endpoint);
- * @endcode
- */
- void bind(const endpoint_type& endpoint)
- {
- asio::error_code ec;
- this->get_service().bind(this->get_implementation(), endpoint, ec);
- asio::detail::throw_error(ec, "bind");
- }
-
- /// Bind the acceptor to the given local endpoint.
- /**
- * This function binds the socket acceptor to the specified endpoint on the
- * local machine.
- *
- * @param endpoint An endpoint on the local machine to which the socket
- * acceptor will be bound.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345);
- * acceptor.open(endpoint.protocol());
- * asio::error_code ec;
- * acceptor.bind(endpoint, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code bind(const endpoint_type& endpoint,
- asio::error_code& ec)
- {
- return this->get_service().bind(this->get_implementation(), endpoint, ec);
- }
-
- /// Place the acceptor into the state where it will listen for new
- /// connections.
- /**
- * This function puts the socket acceptor into the state where it may accept
- * new connections.
- *
- * @param backlog The maximum length of the queue of pending connections.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void listen(int backlog = socket_base::max_connections)
- {
- asio::error_code ec;
- this->get_service().listen(this->get_implementation(), backlog, ec);
- asio::detail::throw_error(ec, "listen");
- }
-
- /// Place the acceptor into the state where it will listen for new
- /// connections.
- /**
- * This function puts the socket acceptor into the state where it may accept
- * new connections.
- *
- * @param backlog The maximum length of the queue of pending connections.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::error_code ec;
- * acceptor.listen(asio::socket_base::max_connections, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code listen(int backlog, asio::error_code& ec)
- {
- return this->get_service().listen(this->get_implementation(), backlog, ec);
- }
-
- /// Close the acceptor.
- /**
- * This function is used to close the acceptor. Any asynchronous accept
- * operations will be cancelled immediately.
- *
- * A subsequent call to open() is required before the acceptor can again be
- * used to again perform socket accept operations.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void close()
- {
- asio::error_code ec;
- this->get_service().close(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "close");
- }
-
- /// Close the acceptor.
- /**
- * This function is used to close the acceptor. Any asynchronous accept
- * operations will be cancelled immediately.
- *
- * A subsequent call to open() is required before the acceptor can again be
- * used to again perform socket accept operations.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::error_code ec;
- * acceptor.close(ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- asio::error_code close(asio::error_code& ec)
- {
- return this->get_service().close(this->get_implementation(), ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native acceptor representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * acceptor. This is intended to allow access to native acceptor functionality
- * that is not otherwise provided.
- */
- native_type native()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Get the native acceptor representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * acceptor. This is intended to allow access to native acceptor functionality
- * that is not otherwise provided.
- */
- native_handle_type native_handle()
- {
- return this->get_service().native_handle(this->get_implementation());
- }
-
- /// Cancel all asynchronous operations associated with the acceptor.
- /**
- * This function causes all outstanding asynchronous connect, send and receive
- * operations to finish immediately, and the handlers for cancelled operations
- * will be passed the asio::error::operation_aborted error.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void cancel()
- {
- asio::error_code ec;
- this->get_service().cancel(this->get_implementation(), ec);
- asio::detail::throw_error(ec, "cancel");
- }
-
- /// Cancel all asynchronous operations associated with the acceptor.
- /**
- * This function causes all outstanding asynchronous connect, send and receive
- * operations to finish immediately, and the handlers for cancelled operations
- * will be passed the asio::error::operation_aborted error.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code cancel(asio::error_code& ec)
- {
- return this->get_service().cancel(this->get_implementation(), ec);
- }
-
- /// Set an option on the acceptor.
- /**
- * This function is used to set an option on the acceptor.
- *
- * @param option The new option value to be set on the acceptor.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa SettableSocketOption @n
- * asio::socket_base::reuse_address
- * asio::socket_base::enable_connection_aborted
- *
- * @par Example
- * Setting the SOL_SOCKET/SO_REUSEADDR option:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::acceptor::reuse_address option(true);
- * acceptor.set_option(option);
- * @endcode
- */
- template <typename SettableSocketOption>
- void set_option(const SettableSocketOption& option)
- {
- asio::error_code ec;
- this->get_service().set_option(this->get_implementation(), option, ec);
- asio::detail::throw_error(ec, "set_option");
- }
-
- /// Set an option on the acceptor.
- /**
- * This function is used to set an option on the acceptor.
- *
- * @param option The new option value to be set on the acceptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa SettableSocketOption @n
- * asio::socket_base::reuse_address
- * asio::socket_base::enable_connection_aborted
- *
- * @par Example
- * Setting the SOL_SOCKET/SO_REUSEADDR option:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::acceptor::reuse_address option(true);
- * asio::error_code ec;
- * acceptor.set_option(option, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- template <typename SettableSocketOption>
- asio::error_code set_option(const SettableSocketOption& option,
- asio::error_code& ec)
- {
- return this->get_service().set_option(
- this->get_implementation(), option, ec);
- }
-
- /// Get an option from the acceptor.
- /**
- * This function is used to get the current value of an option on the
- * acceptor.
- *
- * @param option The option value to be obtained from the acceptor.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa GettableSocketOption @n
- * asio::socket_base::reuse_address
- *
- * @par Example
- * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::acceptor::reuse_address option;
- * acceptor.get_option(option);
- * bool is_set = option.get();
- * @endcode
- */
- template <typename GettableSocketOption>
- void get_option(GettableSocketOption& option)
- {
- asio::error_code ec;
- this->get_service().get_option(this->get_implementation(), option, ec);
- asio::detail::throw_error(ec, "get_option");
- }
-
- /// Get an option from the acceptor.
- /**
- * This function is used to get the current value of an option on the
- * acceptor.
- *
- * @param option The option value to be obtained from the acceptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa GettableSocketOption @n
- * asio::socket_base::reuse_address
- *
- * @par Example
- * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::acceptor::reuse_address option;
- * asio::error_code ec;
- * acceptor.get_option(option, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * bool is_set = option.get();
- * @endcode
- */
- template <typename GettableSocketOption>
- asio::error_code get_option(GettableSocketOption& option,
- asio::error_code& ec)
- {
- return this->get_service().get_option(
- this->get_implementation(), option, ec);
- }
-
- /// Perform an IO control command on the acceptor.
- /**
- * This function is used to execute an IO control command on the acceptor.
- *
- * @param command The IO control command to be performed on the acceptor.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @sa IoControlCommand @n
- * asio::socket_base::non_blocking_io
- *
- * @par Example
- * Getting the number of bytes ready to read:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::acceptor::non_blocking_io command(true);
- * socket.io_control(command);
- * @endcode
- */
- template <typename IoControlCommand>
- void io_control(IoControlCommand& command)
- {
- asio::error_code ec;
- this->get_service().io_control(this->get_implementation(), command, ec);
- asio::detail::throw_error(ec, "io_control");
- }
-
- /// Perform an IO control command on the acceptor.
- /**
- * This function is used to execute an IO control command on the acceptor.
- *
- * @param command The IO control command to be performed on the acceptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @sa IoControlCommand @n
- * asio::socket_base::non_blocking_io
- *
- * @par Example
- * Getting the number of bytes ready to read:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::acceptor::non_blocking_io command(true);
- * asio::error_code ec;
- * socket.io_control(command, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- template <typename IoControlCommand>
- asio::error_code io_control(IoControlCommand& command,
- asio::error_code& ec)
- {
- return this->get_service().io_control(
- this->get_implementation(), command, ec);
- }
-
- /// Gets the non-blocking mode of the acceptor.
- /**
- * @returns @c true if the acceptor's synchronous operations will fail with
- * asio::error::would_block if they are unable to perform the requested
- * operation immediately. If @c false, synchronous operations will block
- * until complete.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- bool non_blocking() const
- {
- return this->get_service().non_blocking(this->get_implementation());
- }
-
- /// Sets the non-blocking mode of the acceptor.
- /**
- * @param mode If @c true, the acceptor's synchronous operations will fail
- * with asio::error::would_block if they are unable to perform the
- * requested operation immediately. If @c false, synchronous operations will
- * block until complete.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- void non_blocking(bool mode)
- {
- asio::error_code ec;
- this->get_service().non_blocking(this->get_implementation(), mode, ec);
- asio::detail::throw_error(ec, "non_blocking");
- }
-
- /// Sets the non-blocking mode of the acceptor.
- /**
- * @param mode If @c true, the acceptor's synchronous operations will fail
- * with asio::error::would_block if they are unable to perform the
- * requested operation immediately. If @c false, synchronous operations will
- * block until complete.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note The non-blocking mode has no effect on the behaviour of asynchronous
- * operations. Asynchronous operations will never fail with the error
- * asio::error::would_block.
- */
- asio::error_code non_blocking(
- bool mode, asio::error_code& ec)
- {
- return this->get_service().non_blocking(
- this->get_implementation(), mode, ec);
- }
-
- /// Gets the non-blocking mode of the native acceptor implementation.
- /**
- * This function is used to retrieve the non-blocking mode of the underlying
- * native acceptor. This mode has no effect on the behaviour of the acceptor
- * object's synchronous operations.
- *
- * @returns @c true if the underlying acceptor is in non-blocking mode and
- * direct system calls may fail with asio::error::would_block (or the
- * equivalent system error).
- *
- * @note The current non-blocking mode is cached by the acceptor object.
- * Consequently, the return value may be incorrect if the non-blocking mode
- * was set directly on the native acceptor.
- */
- bool native_non_blocking() const
- {
- return this->get_service().native_non_blocking(this->get_implementation());
- }
-
- /// Sets the non-blocking mode of the native acceptor implementation.
- /**
- * This function is used to modify the non-blocking mode of the underlying
- * native acceptor. It has no effect on the behaviour of the acceptor object's
- * synchronous operations.
- *
- * @param mode If @c true, the underlying acceptor is put into non-blocking
- * mode and direct system calls may fail with asio::error::would_block
- * (or the equivalent system error).
- *
- * @throws asio::system_error Thrown on failure. If the @c mode is
- * @c false, but the current value of @c non_blocking() is @c true, this
- * function fails with asio::error::invalid_argument, as the
- * combination does not make sense.
- */
- void native_non_blocking(bool mode)
- {
- asio::error_code ec;
- this->get_service().native_non_blocking(
- this->get_implementation(), mode, ec);
- asio::detail::throw_error(ec, "native_non_blocking");
- }
-
- /// Sets the non-blocking mode of the native acceptor implementation.
- /**
- * This function is used to modify the non-blocking mode of the underlying
- * native acceptor. It has no effect on the behaviour of the acceptor object's
- * synchronous operations.
- *
- * @param mode If @c true, the underlying acceptor is put into non-blocking
- * mode and direct system calls may fail with asio::error::would_block
- * (or the equivalent system error).
- *
- * @param ec Set to indicate what error occurred, if any. If the @c mode is
- * @c false, but the current value of @c non_blocking() is @c true, this
- * function fails with asio::error::invalid_argument, as the
- * combination does not make sense.
- */
- asio::error_code native_non_blocking(
- bool mode, asio::error_code& ec)
- {
- return this->get_service().native_non_blocking(
- this->get_implementation(), mode, ec);
- }
-
- /// Get the local endpoint of the acceptor.
- /**
- * This function is used to obtain the locally bound endpoint of the acceptor.
- *
- * @returns An object that represents the local endpoint of the acceptor.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();
- * @endcode
- */
- endpoint_type local_endpoint() const
- {
- asio::error_code ec;
- endpoint_type ep = this->get_service().local_endpoint(
- this->get_implementation(), ec);
- asio::detail::throw_error(ec, "local_endpoint");
- return ep;
- }
-
- /// Get the local endpoint of the acceptor.
- /**
- * This function is used to obtain the locally bound endpoint of the acceptor.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns An object that represents the local endpoint of the acceptor.
- * Returns a default-constructed endpoint object if an error occurred and the
- * error handler did not throw an exception.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::error_code ec;
- * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- endpoint_type local_endpoint(asio::error_code& ec) const
- {
- return this->get_service().local_endpoint(this->get_implementation(), ec);
- }
-
- /// Accept a new connection.
- /**
- * This function is used to accept a new connection from a peer into the
- * given socket. The function call will block until a new connection has been
- * accepted successfully or an error occurs.
- *
- * @param peer The socket into which the new connection will be accepted.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::socket socket(io_service);
- * acceptor.accept(socket);
- * @endcode
- */
- template <typename Protocol1, typename SocketService>
- void accept(basic_socket<Protocol1, SocketService>& peer,
- typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
- {
- asio::error_code ec;
- this->get_service().accept(this->get_implementation(),
- peer, static_cast<endpoint_type*>(0), ec);
- asio::detail::throw_error(ec, "accept");
- }
-
- /// Accept a new connection.
- /**
- * This function is used to accept a new connection from a peer into the
- * given socket. The function call will block until a new connection has been
- * accepted successfully or an error occurs.
- *
- * @param peer The socket into which the new connection will be accepted.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::soocket socket(io_service);
- * asio::error_code ec;
- * acceptor.accept(socket, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- template <typename Protocol1, typename SocketService>
- asio::error_code accept(
- basic_socket<Protocol1, SocketService>& peer,
- asio::error_code& ec,
- typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
- {
- return this->get_service().accept(this->get_implementation(),
- peer, static_cast<endpoint_type*>(0), ec);
- }
-
- /// Start an asynchronous accept.
- /**
- * This function is used to asynchronously accept a new connection into a
- * socket. The function call always returns immediately.
- *
- * @param peer The socket into which the new connection will be accepted.
- * Ownership of the peer object is retained by the caller, which must
- * guarantee that it is valid until the handler is called.
- *
- * @param handler The handler to be called when the accept operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * const asio::error_code& error // Result of operation.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * @code
- * void accept_handler(const asio::error_code& error)
- * {
- * if (!error)
- * {
- * // Accept succeeded.
- * }
- * }
- *
- * ...
- *
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::socket socket(io_service);
- * acceptor.async_accept(socket, accept_handler);
- * @endcode
- */
- template <typename Protocol1, typename SocketService, typename AcceptHandler>
- ASIO_INITFN_RESULT_TYPE(AcceptHandler,
- void (asio::error_code))
- async_accept(basic_socket<Protocol1, SocketService>& peer,
- ASIO_MOVE_ARG(AcceptHandler) handler,
- typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a AcceptHandler.
- ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check;
-
- return this->get_service().async_accept(this->get_implementation(),
- peer, static_cast<endpoint_type*>(0),
- ASIO_MOVE_CAST(AcceptHandler)(handler));
- }
-
- /// Accept a new connection and obtain the endpoint of the peer
- /**
- * This function is used to accept a new connection from a peer into the
- * given socket, and additionally provide the endpoint of the remote peer.
- * The function call will block until a new connection has been accepted
- * successfully or an error occurs.
- *
- * @param peer The socket into which the new connection will be accepted.
- *
- * @param peer_endpoint An endpoint object which will receive the endpoint of
- * the remote peer.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::socket socket(io_service);
- * asio::ip::tcp::endpoint endpoint;
- * acceptor.accept(socket, endpoint);
- * @endcode
- */
- template <typename SocketService>
- void accept(basic_socket<protocol_type, SocketService>& peer,
- endpoint_type& peer_endpoint)
- {
- asio::error_code ec;
- this->get_service().accept(this->get_implementation(),
- peer, &peer_endpoint, ec);
- asio::detail::throw_error(ec, "accept");
- }
-
- /// Accept a new connection and obtain the endpoint of the peer
- /**
- * This function is used to accept a new connection from a peer into the
- * given socket, and additionally provide the endpoint of the remote peer.
- * The function call will block until a new connection has been accepted
- * successfully or an error occurs.
- *
- * @param peer The socket into which the new connection will be accepted.
- *
- * @param peer_endpoint An endpoint object which will receive the endpoint of
- * the remote peer.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @par Example
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::ip::tcp::socket socket(io_service);
- * asio::ip::tcp::endpoint endpoint;
- * asio::error_code ec;
- * acceptor.accept(socket, endpoint, ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * @endcode
- */
- template <typename SocketService>
- asio::error_code accept(
- basic_socket<protocol_type, SocketService>& peer,
- endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- return this->get_service().accept(
- this->get_implementation(), peer, &peer_endpoint, ec);
- }
-
- /// Start an asynchronous accept.
- /**
- * This function is used to asynchronously accept a new connection into a
- * socket, and additionally obtain the endpoint of the remote peer. The
- * function call always returns immediately.
- *
- * @param peer The socket into which the new connection will be accepted.
- * Ownership of the peer object is retained by the caller, which must
- * guarantee that it is valid until the handler is called.
- *
- * @param peer_endpoint An endpoint object into which the endpoint of the
- * remote peer will be written. Ownership of the peer_endpoint object is
- * retained by the caller, which must guarantee that it is valid until the
- * handler is called.
- *
- * @param handler The handler to be called when the accept operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * const asio::error_code& error // Result of operation.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
- template <typename SocketService, typename AcceptHandler>
- ASIO_INITFN_RESULT_TYPE(AcceptHandler,
- void (asio::error_code))
- async_accept(basic_socket<protocol_type, SocketService>& peer,
- endpoint_type& peer_endpoint, ASIO_MOVE_ARG(AcceptHandler) handler)
- {
- // If you get an error on the following line it means that your handler does
- // not meet the documented type requirements for a AcceptHandler.
- ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check;
-
- return this->get_service().async_accept(this->get_implementation(), peer,
- &peer_endpoint, ASIO_MOVE_CAST(AcceptHandler)(handler));
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SOCKET_ACCEPTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_iostream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_iostream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_iostream.hpp
deleted file mode 100644
index 8175402..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_iostream.hpp
+++ /dev/null
@@ -1,286 +0,0 @@
-//
-// basic_socket_iostream.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_BASIC_SOCKET_IOSTREAM_HPP
-#define ASIO_BASIC_SOCKET_IOSTREAM_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_NO_IOSTREAM)
-
-#include <istream>
-#include <ostream>
-#include "asio/basic_socket_streambuf.hpp"
-#include "asio/stream_socket_service.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-# include "asio/detail/variadic_templates.hpp"
-
-// A macro that should expand to:
-// template <typename T1, ..., typename Tn>
-// explicit basic_socket_iostream(T1 x1, ..., Tn xn)
-// : std::basic_iostream<char>(
-// &this->detail::socket_iostream_base<
-// Protocol, StreamSocketService, Time,
-// TimeTraits, TimerService>::streambuf_)
-// {
-// if (rdbuf()->connect(x1, ..., xn) == 0)
-// this->setstate(std::ios_base::failbit);
-// }
-// This macro should only persist within this file.
-
-# define ASIO_PRIVATE_CTR_DEF(n) \
- template <ASIO_VARIADIC_TPARAMS(n)> \
- explicit basic_socket_iostream(ASIO_VARIADIC_PARAMS(n)) \
- : std::basic_iostream<char>( \
- &this->detail::socket_iostream_base< \
- Protocol, StreamSocketService, Time, \
- TimeTraits, TimerService>::streambuf_) \
- { \
- this->setf(std::ios_base::unitbuf); \
- if (rdbuf()->connect(ASIO_VARIADIC_ARGS(n)) == 0) \
- this->setstate(std::ios_base::failbit); \
- } \
- /**/
-
-// A macro that should expand to:
-// template <typename T1, ..., typename Tn>
-// void connect(T1 x1, ..., Tn xn)
-// {
-// if (rdbuf()->connect(x1, ..., xn) == 0)
-// this->setstate(std::ios_base::failbit);
-// }
-// This macro should only persist within this file.
-
-# define ASIO_PRIVATE_CONNECT_DEF(n) \
- template <ASIO_VARIADIC_TPARAMS(n)> \
- void connect(ASIO_VARIADIC_PARAMS(n)) \
- { \
- if (rdbuf()->connect(ASIO_VARIADIC_ARGS(n)) == 0) \
- this->setstate(std::ios_base::failbit); \
- } \
- /**/
-
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// A separate base class is used to ensure that the streambuf is initialised
-// prior to the basic_socket_iostream's basic_iostream base class.
-template <typename Protocol, typename StreamSocketService,
- typename Time, typename TimeTraits, typename TimerService>
-class socket_iostream_base
-{
-protected:
- basic_socket_streambuf<Protocol, StreamSocketService,
- Time, TimeTraits, TimerService> streambuf_;
-};
-
-}
-
-/// Iostream interface for a socket.
-template <typename Protocol,
- typename StreamSocketService = stream_socket_service<Protocol>,
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
- || defined(GENERATING_DOCUMENTATION)
- typename Time = boost::posix_time::ptime,
- typename TimeTraits = asio::time_traits<Time>,
- typename TimerService = deadline_timer_service<Time, TimeTraits> >
-#else
- typename Time = steady_timer::clock_type,
- typename TimeTraits = steady_timer::traits_type,
- typename TimerService = steady_timer::service_type>
-#endif
-class basic_socket_iostream
- : private detail::socket_iostream_base<Protocol,
- StreamSocketService, Time, TimeTraits, TimerService>,
- public std::basic_iostream<char>
-{
-private:
- // These typedefs are intended keep this class's implementation independent
- // of whether it's using Boost.DateTime, Boost.Chrono or std::chrono.
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
- typedef TimeTraits traits_helper;
-#else
- typedef detail::chrono_time_traits<Time, TimeTraits> traits_helper;
-#endif
-
-public:
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// The time type.
- typedef typename TimeTraits::time_type time_type;
-
- /// The duration type.
- typedef typename TimeTraits::duration_type duration_type;
-#else
- typedef typename traits_helper::time_type time_type;
- typedef typename traits_helper::duration_type duration_type;
-#endif
-
- /// Construct a basic_socket_iostream without establishing a connection.
- basic_socket_iostream()
- : std::basic_iostream<char>(
- &this->detail::socket_iostream_base<
- Protocol, StreamSocketService, Time,
- TimeTraits, TimerService>::streambuf_)
- {
- this->setf(std::ios_base::unitbuf);
- }
-
-#if defined(GENERATING_DOCUMENTATION)
- /// Establish a connection to an endpoint corresponding to a resolver query.
- /**
- * This constructor automatically establishes a connection based on the
- * supplied resolver query parameters. The arguments are used to construct
- * a resolver query object.
- */
- template <typename T1, ..., typename TN>
- explicit basic_socket_iostream(T1 t1, ..., TN tn);
-#elif defined(ASIO_HAS_VARIADIC_TEMPLATES)
- template <typename... T>
- explicit basic_socket_iostream(T... x)
- : std::basic_iostream<char>(
- &this->detail::socket_iostream_base<
- Protocol, StreamSocketService, Time,
- TimeTraits, TimerService>::streambuf_)
- {
- this->setf(std::ios_base::unitbuf);
- if (rdbuf()->connect(x...) == 0)
- this->setstate(std::ios_base::failbit);
- }
-#else
- ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CTR_DEF)
-#endif
-
-#if defined(GENERATING_DOCUMENTATION)
- /// Establish a connection to an endpoint corresponding to a resolver query.
- /**
- * This function automatically establishes a connection based on the supplied
- * resolver query parameters. The arguments are used to construct a resolver
- * query object.
- */
- template <typename T1, ..., typename TN>
- void connect(T1 t1, ..., TN tn);
-#elif defined(ASIO_HAS_VARIADIC_TEMPLATES)
- template <typename... T>
- void connect(T... x)
- {
- if (rdbuf()->connect(x...) == 0)
- this->setstate(std::ios_base::failbit);
- }
-#else
- ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CONNECT_DEF)
-#endif
-
- /// Close the connection.
- void close()
- {
- if (rdbuf()->close() == 0)
- this->setstate(std::ios_base::failbit);
- }
-
- /// Return a pointer to the underlying streambuf.
- basic_socket_streambuf<Protocol, StreamSocketService,
- Time, TimeTraits, TimerService>* rdbuf() const
- {
- return const_cast<basic_socket_streambuf<Protocol, StreamSocketService,
- Time, TimeTraits, TimerService>*>(
- &this->detail::socket_iostream_base<
- Protocol, StreamSocketService, Time,
- TimeTraits, TimerService>::streambuf_);
- }
-
- /// Get the last error associated with the stream.
- /**
- * @return An \c error_code corresponding to the last error from the stream.
- *
- * @par Example
- * To print the error associated with a failure to establish a connection:
- * @code tcp::iostream s("www.boost.org", "http");
- * if (!s)
- * {
- * std::cout << "Error: " << s.error().message() << std::endl;
- * } @endcode
- */
- const asio::error_code& error() const
- {
- return rdbuf()->puberror();
- }
-
- /// Get the stream's expiry time as an absolute time.
- /**
- * @return An absolute time value representing the stream's expiry time.
- */
- time_type expires_at() const
- {
- return rdbuf()->expires_at();
- }
-
- /// Set the stream's expiry time as an absolute time.
- /**
- * This function sets the expiry time associated with the stream. Stream
- * operations performed after this time (where the operations cannot be
- * completed using the internal buffers) will fail with the error
- * asio::error::operation_aborted.
- *
- * @param expiry_time The expiry time to be used for the stream.
- */
- void expires_at(const time_type& expiry_time)
- {
- rdbuf()->expires_at(expiry_time);
- }
-
- /// Get the timer's expiry time relative to now.
- /**
- * @return A relative time value representing the stream's expiry time.
- */
- duration_type expires_from_now() const
- {
- return rdbuf()->expires_from_now();
- }
-
- /// Set the stream's expiry time relative to now.
- /**
- * This function sets the expiry time associated with the stream. Stream
- * operations performed after this time (where the operations cannot be
- * completed using the internal buffers) will fail with the error
- * asio::error::operation_aborted.
- *
- * @param expiry_time The expiry time to be used for the timer.
- */
- void expires_from_now(const duration_type& expiry_time)
- {
- rdbuf()->expires_from_now(expiry_time);
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-# undef ASIO_PRIVATE_CTR_DEF
-# undef ASIO_PRIVATE_CONNECT_DEF
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_SOCKET_IOSTREAM_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_streambuf.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_streambuf.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_streambuf.hpp
deleted file mode 100644
index c2f368a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/basic_socket_streambuf.hpp
+++ /dev/null
@@ -1,567 +0,0 @@
-//
-// basic_socket_streambuf.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_BASIC_SOCKET_STREAMBUF_HPP
-#define ASIO_BASIC_SOCKET_STREAMBUF_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_NO_IOSTREAM)
-
-#include <streambuf>
-#include "asio/basic_socket.hpp"
-#include "asio/deadline_timer_service.hpp"
-#include "asio/detail/array.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/stream_socket_service.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/deadline_timer.hpp"
-#else
-# include "asio/steady_timer.hpp"
-#endif
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-# include "asio/detail/variadic_templates.hpp"
-
-// A macro that should expand to:
-// template <typename T1, ..., typename Tn>
-// basic_socket_streambuf<Protocol, StreamSocketService,
-// Time, TimeTraits, TimerService>* connect(
-// T1 x1, ..., Tn xn)
-// {
-// init_buffers();
-// this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-// typedef typename Protocol::resolver resolver_type;
-// typedef typename resolver_type::query resolver_query;
-// resolver_query query(x1, ..., xn);
-// resolve_and_connect(query);
-// return !ec_ ? this : 0;
-// }
-// This macro should only persist within this file.
-
-# define ASIO_PRIVATE_CONNECT_DEF(n) \
- template <ASIO_VARIADIC_TPARAMS(n)> \
- basic_socket_streambuf<Protocol, StreamSocketService, \
- Time, TimeTraits, TimerService>* connect(ASIO_VARIADIC_PARAMS(n)) \
- { \
- init_buffers(); \
- this->basic_socket<Protocol, StreamSocketService>::close(ec_); \
- typedef typename Protocol::resolver resolver_type; \
- typedef typename resolver_type::query resolver_query; \
- resolver_query query(ASIO_VARIADIC_ARGS(n)); \
- resolve_and_connect(query); \
- return !ec_ ? this : 0; \
- } \
- /**/
-
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// A separate base class is used to ensure that the io_service is initialised
-// prior to the basic_socket_streambuf's basic_socket base class.
-class socket_streambuf_base
-{
-protected:
- io_service io_service_;
-};
-
-} // namespace detail
-
-/// Iostream streambuf for a socket.
-template <typename Protocol,
- typename StreamSocketService = stream_socket_service<Protocol>,
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
- || defined(GENERATING_DOCUMENTATION)
- typename Time = boost::posix_time::ptime,
- typename TimeTraits = asio::time_traits<Time>,
- typename TimerService = deadline_timer_service<Time, TimeTraits> >
-#else
- typename Time = steady_timer::clock_type,
- typename TimeTraits = steady_timer::traits_type,
- typename TimerService = steady_timer::service_type>
-#endif
-class basic_socket_streambuf
- : public std::streambuf,
- private detail::socket_streambuf_base,
- public basic_socket<Protocol, StreamSocketService>
-{
-private:
- // These typedefs are intended keep this class's implementation independent
- // of whether it's using Boost.DateTime, Boost.Chrono or std::chrono.
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
- typedef TimeTraits traits_helper;
-#else
- typedef detail::chrono_time_traits<Time, TimeTraits> traits_helper;
-#endif
-
-public:
- /// The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// The time type.
- typedef typename TimeTraits::time_type time_type;
-
- /// The duration type.
- typedef typename TimeTraits::duration_type duration_type;
-#else
- typedef typename traits_helper::time_type time_type;
- typedef typename traits_helper::duration_type duration_type;
-#endif
-
- /// Construct a basic_socket_streambuf without establishing a connection.
- basic_socket_streambuf()
- : basic_socket<Protocol, StreamSocketService>(
- this->detail::socket_streambuf_base::io_service_),
- unbuffered_(false),
- timer_service_(0),
- timer_state_(no_timer)
- {
- init_buffers();
- }
-
- /// Destructor flushes buffered data.
- virtual ~basic_socket_streambuf()
- {
- if (pptr() != pbase())
- overflow(traits_type::eof());
-
- destroy_timer();
- }
-
- /// Establish a connection.
- /**
- * This function establishes a connection to the specified endpoint.
- *
- * @return \c this if a connection was successfully established, a null
- * pointer otherwise.
- */
- basic_socket_streambuf<Protocol, StreamSocketService,
- Time, TimeTraits, TimerService>* connect(
- const endpoint_type& endpoint)
- {
- init_buffers();
-
- this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-
- if (timer_state_ == timer_has_expired)
- {
- ec_ = asio::error::operation_aborted;
- return 0;
- }
-
- io_handler handler = { this };
- this->basic_socket<Protocol, StreamSocketService>::async_connect(
- endpoint, handler);
-
- ec_ = asio::error::would_block;
- this->get_service().get_io_service().reset();
- do this->get_service().get_io_service().run_one();
- while (ec_ == asio::error::would_block);
-
- return !ec_ ? this : 0;
- }
-
-#if defined(GENERATING_DOCUMENTATION)
- /// Establish a connection.
- /**
- * This function automatically establishes a connection based on the supplied
- * resolver query parameters. The arguments are used to construct a resolver
- * query object.
- *
- * @return \c this if a connection was successfully established, a null
- * pointer otherwise.
- */
- template <typename T1, ..., typename TN>
- basic_socket_streambuf<Protocol, StreamSocketService>* connect(
- T1 t1, ..., TN tn);
-#elif defined(ASIO_HAS_VARIADIC_TEMPLATES)
- template <typename... T>
- basic_socket_streambuf<Protocol, StreamSocketService,
- Time, TimeTraits, TimerService>* connect(T... x)
- {
- init_buffers();
- this->basic_socket<Protocol, StreamSocketService>::close(ec_);
- typedef typename Protocol::resolver resolver_type;
- typedef typename resolver_type::query resolver_query;
- resolver_query query(x...);
- resolve_and_connect(query);
- return !ec_ ? this : 0;
- }
-#else
- ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CONNECT_DEF)
-#endif
-
- /// Close the connection.
- /**
- * @return \c this if a connection was successfully established, a null
- * pointer otherwise.
- */
- basic_socket_streambuf<Protocol, StreamSocketService,
- Time, TimeTraits, TimerService>* close()
- {
- sync();
- this->basic_socket<Protocol, StreamSocketService>::close(ec_);
- if (!ec_)
- init_buffers();
- return !ec_ ? this : 0;
- }
-
- /// Get the last error associated with the stream buffer.
- /**
- * @return An \c error_code corresponding to the last error from the stream
- * buffer.
- */
- const asio::error_code& puberror() const
- {
- return error();
- }
-
- /// Get the stream buffer's expiry time as an absolute time.
- /**
- * @return An absolute time value representing the stream buffer's expiry
- * time.
- */
- time_type expires_at() const
- {
- return timer_service_
- ? timer_service_->expires_at(timer_implementation_)
- : time_type();
- }
-
- /// Set the stream buffer's expiry time as an absolute time.
- /**
- * This function sets the expiry time associated with the stream. Stream
- * operations performed after this time (where the operations cannot be
- * completed using the internal buffers) will fail with the error
- * asio::error::operation_aborted.
- *
- * @param expiry_time The expiry time to be used for the stream.
- */
- void expires_at(const time_type& expiry_time)
- {
- construct_timer();
-
- asio::error_code ec;
- timer_service_->expires_at(timer_implementation_, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_at");
-
- start_timer();
- }
-
- /// Get the stream buffer's expiry time relative to now.
- /**
- * @return A relative time value representing the stream buffer's expiry time.
- */
- duration_type expires_from_now() const
- {
- return traits_helper::subtract(expires_at(), traits_helper::now());
- }
-
- /// Set the stream buffer's expiry time relative to now.
- /**
- * This function sets the expiry time associated with the stream. Stream
- * operations performed after this time (where the operations cannot be
- * completed using the internal buffers) will fail with the error
- * asio::error::operation_aborted.
- *
- * @param expiry_time The expiry time to be used for the timer.
- */
- void expires_from_now(const duration_type& expiry_time)
- {
- construct_timer();
-
- asio::error_code ec;
- timer_service_->expires_from_now(timer_implementation_, expiry_time, ec);
- asio::detail::throw_error(ec, "expires_from_now");
-
- start_timer();
- }
-
-protected:
- int_type underflow()
- {
- if (gptr() == egptr())
- {
- if (timer_state_ == timer_has_expired)
- {
- ec_ = asio::error::operation_aborted;
- return traits_type::eof();
- }
-
- io_handler handler = { this };
- this->get_service().async_receive(this->get_implementation(),
- asio::buffer(asio::buffer(get_buffer_) + putback_max),
- 0, handler);
-
- ec_ = asio::error::would_block;
- this->get_service().get_io_service().reset();
- do this->get_service().get_io_service().run_one();
- while (ec_ == asio::error::would_block);
- if (ec_)
- return traits_type::eof();
-
- setg(&get_buffer_[0], &get_buffer_[0] + putback_max,
- &get_buffer_[0] + putback_max + bytes_transferred_);
- return traits_type::to_int_type(*gptr());
- }
- else
- {
- return traits_type::eof();
- }
- }
-
- int_type overflow(int_type c)
- {
- if (unbuffered_)
- {
- if (traits_type::eq_int_type(c, traits_type::eof()))
- {
- // Nothing to do.
- return traits_type::not_eof(c);
- }
- else
- {
- if (timer_state_ == timer_has_expired)
- {
- ec_ = asio::error::operation_aborted;
- return traits_type::eof();
- }
-
- // Send the single character immediately.
- char_type ch = traits_type::to_char_type(c);
- io_handler handler = { this };
- this->get_service().async_send(this->get_implementation(),
- asio::buffer(&ch, sizeof(char_type)), 0, handler);
-
- ec_ = asio::error::would_block;
- this->get_service().get_io_service().reset();
- do this->get_service().get_io_service().run_one();
- while (ec_ == asio::error::would_block);
- if (ec_)
- return traits_type::eof();
-
- return c;
- }
- }
- else
- {
- // Send all data in the output buffer.
- asio::const_buffer buffer =
- asio::buffer(pbase(), pptr() - pbase());
- while (asio::buffer_size(buffer) > 0)
- {
- if (timer_state_ == timer_has_expired)
- {
- ec_ = asio::error::operation_aborted;
- return traits_type::eof();
- }
-
- io_handler handler = { this };
- this->get_service().async_send(this->get_implementation(),
- asio::buffer(buffer), 0, handler);
-
- ec_ = asio::error::would_block;
- this->get_service().get_io_service().reset();
- do this->get_service().get_io_service().run_one();
- while (ec_ == asio::error::would_block);
- if (ec_)
- return traits_type::eof();
-
- buffer = buffer + bytes_transferred_;
- }
- setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size());
-
- // If the new character is eof then our work here is done.
- if (traits_type::eq_int_type(c, traits_type::eof()))
- return traits_type::not_eof(c);
-
- // Add the new character to the output buffer.
- *pptr() = traits_type::to_char_type(c);
- pbump(1);
- return c;
- }
- }
-
- int sync()
- {
- return overflow(traits_type::eof());
- }
-
- std::streambuf* setbuf(char_type* s, std::streamsize n)
- {
- if (pptr() == pbase() && s == 0 && n == 0)
- {
- unbuffered_ = true;
- setp(0, 0);
- return this;
- }
-
- return 0;
- }
-
- /// Get the last error associated with the stream buffer.
- /**
- * @return An \c error_code corresponding to the last error from the stream
- * buffer.
- */
- virtual const asio::error_code& error() const
- {
- return ec_;
- }
-
-private:
- void init_buffers()
- {
- setg(&get_buffer_[0],
- &get_buffer_[0] + putback_max,
- &get_buffer_[0] + putback_max);
- if (unbuffered_)
- setp(0, 0);
- else
- setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size());
- }
-
- template <typename ResolverQuery>
- void resolve_and_connect(const ResolverQuery& query)
- {
- typedef typename Protocol::resolver resolver_type;
- typedef typename resolver_type::iterator iterator_type;
- resolver_type resolver(detail::socket_streambuf_base::io_service_);
- iterator_type i = resolver.resolve(query, ec_);
- if (!ec_)
- {
- iterator_type end;
- ec_ = asio::error::host_not_found;
- while (ec_ && i != end)
- {
- this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-
- if (timer_state_ == timer_has_expired)
- {
- ec_ = asio::error::operation_aborted;
- return;
- }
-
- io_handler handler = { this };
- this->basic_socket<Protocol, StreamSocketService>::async_connect(
- *i, handler);
-
- ec_ = asio::error::would_block;
- this->get_service().get_io_service().reset();
- do this->get_service().get_io_service().run_one();
- while (ec_ == asio::error::would_block);
-
- ++i;
- }
- }
- }
-
- struct io_handler;
- friend struct io_handler;
- struct io_handler
- {
- basic_socket_streambuf* this_;
-
- void operator()(const asio::error_code& ec,
- std::size_t bytes_transferred = 0)
- {
- this_->ec_ = ec;
- this_->bytes_transferred_ = bytes_transferred;
- }
- };
-
- struct timer_handler;
- friend struct timer_handler;
- struct timer_handler
- {
- basic_socket_streambuf* this_;
-
- void operator()(const asio::error_code&)
- {
- time_type now = traits_helper::now();
-
- time_type expiry_time = this_->timer_service_->expires_at(
- this_->timer_implementation_);
-
- if (traits_helper::less_than(now, expiry_time))
- {
- this_->timer_state_ = timer_is_pending;
- this_->timer_service_->async_wait(this_->timer_implementation_, *this);
- }
- else
- {
- this_->timer_state_ = timer_has_expired;
- asio::error_code ec;
- this_->basic_socket<Protocol, StreamSocketService>::close(ec);
- }
- }
- };
-
- void construct_timer()
- {
- if (timer_service_ == 0)
- {
- TimerService& timer_service = use_service<TimerService>(
- detail::socket_streambuf_base::io_service_);
- timer_service.construct(timer_implementation_);
- timer_service_ = &timer_service;
- }
- }
-
- void destroy_timer()
- {
- if (timer_service_)
- timer_service_->destroy(timer_implementation_);
- }
-
- void start_timer()
- {
- if (timer_state_ != timer_is_pending)
- {
- timer_handler handler = { this };
- handler(asio::error_code());
- }
- }
-
- enum { putback_max = 8 };
- enum { buffer_size = 512 };
- asio::detail::array<char, buffer_size> get_buffer_;
- asio::detail::array<char, buffer_size> put_buffer_;
- bool unbuffered_;
- asio::error_code ec_;
- std::size_t bytes_transferred_;
- TimerService* timer_service_;
- typename TimerService::implementation_type timer_implementation_;
- enum state { no_timer, timer_is_pending, timer_has_expired } timer_state_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-# undef ASIO_PRIVATE_CONNECT_DEF
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_SOCKET_STREAMBUF_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[51/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
Revert "Merge branch 'trunk' into HDFS-7240"
This reverts commit 78d94acdced8e04252d0288b495d41371b1fb7b4, reversing
changes made to e0262147d60524d5718b2bfed48391a876dc3662.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7a542fb3
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7a542fb3
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7a542fb3
Branch: refs/heads/HDFS-7240
Commit: 7a542fb3270953fff039c9b1bd7ba7afa35a842c
Parents: b9d3384
Author: Anu Engineer <ae...@apache.org>
Authored: Thu Mar 22 17:47:23 2018 -0700
Committer: Anu Engineer <ae...@apache.org>
Committed: Thu Mar 22 17:47:23 2018 -0700
----------------------------------------------------------------------
BUILDING.txt | 32 +-
dev-support/bin/dist-layout-stitching | 1 -
dev-support/bin/win-vs-upgrade.cmd | 39 -
dev-support/docker/Dockerfile | 3 -
dev-support/win-paths-eg.cmd | 49 -
.../hadoop-annotations/pom.xml | 15 +
hadoop-common-project/hadoop-common/pom.xml | 28 -
.../org/apache/hadoop/conf/Configuration.java | 5 +-
.../java/org/apache/hadoop/util/ThreadUtil.java | 26 +-
.../org/apache/hadoop/util/VersionInfo.java | 3 +-
.../src/main/native/native.vcxproj | 2 -
.../org/apache/hadoop/crypto/OpensslCipher.c | 33 -
.../apache/hadoop/conf/TestConfiguration.java | 31 -
.../apache/hadoop/fs/FileContextTestHelper.java | 4 +-
.../hadoop/fs/contract/ContractTestUtils.java | 32 +-
.../apache/hadoop/test/GenericTestUtils.java | 7 +-
.../hadoop/crypto/key/kms/server/KMSWebApp.java | 6 -
.../java/org/apache/hadoop/hdfs/DFSClient.java | 2 +-
.../hadoop-hdfs-native-client/pom.xml | 116 +-
.../src/CMakeLists.txt | 17 +-
.../main/native/libhdfs-tests/native_mini_dfs.c | 22 +-
.../main/native/libhdfs-tests/native_mini_dfs.h | 11 +-
.../libhdfs-tests/test_libhdfs_mini_stress.c | 350 -
.../libhdfs-tests/test_libhdfs_threaded.c | 70 +-
.../native/libhdfspp/CMake/FindCyrusSASL.cmake | 49 -
.../main/native/libhdfspp/CMake/FindGSasl.cmake | 44 -
.../src/main/native/libhdfspp/CMakeLists.txt | 297 -
.../src/main/native/libhdfspp/CONTRIBUTING.md | 161 -
.../src/main/native/libhdfspp/doc/Doxyfile.in | 35 -
.../src/main/native/libhdfspp/doc/mainpage.dox | 26 -
.../native/libhdfspp/examples/CMakeLists.txt | 20 -
.../native/libhdfspp/examples/c/CMakeLists.txt | 20 -
.../libhdfspp/examples/c/cat/CMakeLists.txt | 27 -
.../main/native/libhdfspp/examples/c/cat/cat.c | 121 -
.../examples/c/connect_cancel/CMakeLists.txt | 27 -
.../examples/c/connect_cancel/connect_cancel.c | 107 -
.../native/libhdfspp/examples/cc/CMakeLists.txt | 24 -
.../libhdfspp/examples/cc/cat/CMakeLists.txt | 27 -
.../native/libhdfspp/examples/cc/cat/cat.cc | 89 -
.../examples/cc/connect_cancel/CMakeLists.txt | 27 -
.../cc/connect_cancel/connect_cancel.cc | 154 -
.../libhdfspp/examples/cc/find/CMakeLists.txt | 27 -
.../native/libhdfspp/examples/cc/find/find.cc | 140 -
.../examples/cc/gendirs/CMakeLists.txt | 27 -
.../libhdfspp/examples/cc/gendirs/gendirs.cc | 122 -
.../libhdfspp/include/hdfspp/block_location.h | 177 -
.../libhdfspp/include/hdfspp/config_parser.h | 68 -
.../libhdfspp/include/hdfspp/content_summary.h | 48 -
.../native/libhdfspp/include/hdfspp/events.h | 141 -
.../native/libhdfspp/include/hdfspp/fsinfo.h | 48 -
.../native/libhdfspp/include/hdfspp/hdfs_ext.h | 394 -
.../native/libhdfspp/include/hdfspp/hdfspp.h | 492 -
.../native/libhdfspp/include/hdfspp/locks.h | 110 -
.../main/native/libhdfspp/include/hdfspp/log.h | 60 -
.../native/libhdfspp/include/hdfspp/options.h | 136 -
.../native/libhdfspp/include/hdfspp/statinfo.h | 59 -
.../native/libhdfspp/include/hdfspp/status.h | 111 -
.../main/native/libhdfspp/include/hdfspp/uri.h | 137 -
.../main/native/libhdfspp/lib/CMakeLists.txt | 25 -
.../libhdfspp/lib/bindings/CMakeLists.txt | 19 -
.../libhdfspp/lib/bindings/c/CMakeLists.txt | 21 -
.../native/libhdfspp/lib/bindings/c/hdfs.cc | 2007 --
.../native/libhdfspp/lib/common/CMakeLists.txt | 24 -
.../native/libhdfspp/lib/common/async_stream.h | 49 -
.../native/libhdfspp/lib/common/auth_info.cc | 18 -
.../native/libhdfspp/lib/common/auth_info.h | 90 -
.../libhdfspp/lib/common/cancel_tracker.cc | 37 -
.../libhdfspp/lib/common/cancel_tracker.h | 40 -
.../libhdfspp/lib/common/config_parser.cc | 219 -
.../libhdfspp/lib/common/configuration.cc | 169 -
.../native/libhdfspp/lib/common/configuration.h | 108 -
.../lib/common/configuration_loader.cc | 328 -
.../libhdfspp/lib/common/configuration_loader.h | 138 -
.../lib/common/configuration_loader_impl.h | 122 -
.../libhdfspp/lib/common/content_summary.cc | 55 -
.../libhdfspp/lib/common/continuation/asio.h | 65 -
.../lib/common/continuation/continuation.h | 137 -
.../lib/common/continuation/protobuf.h | 129 -
.../main/native/libhdfspp/lib/common/fsinfo.cc | 61 -
.../libhdfspp/lib/common/hdfs_configuration.cc | 210 -
.../libhdfspp/lib/common/hdfs_configuration.h | 70 -
.../libhdfspp/lib/common/hdfs_ioservice.cc | 146 -
.../libhdfspp/lib/common/hdfs_ioservice.h | 79 -
.../libhdfspp/lib/common/libhdfs_events_impl.cc | 89 -
.../libhdfspp/lib/common/libhdfs_events_impl.h | 59 -
.../main/native/libhdfspp/lib/common/locks.cc | 100 -
.../main/native/libhdfspp/lib/common/logging.cc | 227 -
.../main/native/libhdfspp/lib/common/logging.h | 217 -
.../libhdfspp/lib/common/namenode_info.cc | 178 -
.../native/libhdfspp/lib/common/namenode_info.h | 49 -
.../native/libhdfspp/lib/common/new_delete.h | 52 -
.../libhdfspp/lib/common/optional_wrapper.h | 43 -
.../main/native/libhdfspp/lib/common/options.cc | 61 -
.../native/libhdfspp/lib/common/retry_policy.cc | 87 -
.../native/libhdfspp/lib/common/retry_policy.h | 160 -
.../libhdfspp/lib/common/sasl_authenticator.h | 66 -
.../libhdfspp/lib/common/sasl_digest_md5.cc | 240 -
.../native/libhdfspp/lib/common/statinfo.cc | 74 -
.../main/native/libhdfspp/lib/common/status.cc | 192 -
.../src/main/native/libhdfspp/lib/common/uri.cc | 454 -
.../main/native/libhdfspp/lib/common/util.cc | 170 -
.../src/main/native/libhdfspp/lib/common/util.h | 185 -
.../main/native/libhdfspp/lib/common/util_c.h | 31 -
.../libhdfspp/lib/connection/CMakeLists.txt | 21 -
.../lib/connection/datanodeconnection.cc | 72 -
.../lib/connection/datanodeconnection.h | 97 -
.../main/native/libhdfspp/lib/fs/CMakeLists.txt | 21 -
.../libhdfspp/lib/fs/bad_datanode_tracker.cc | 71 -
.../libhdfspp/lib/fs/bad_datanode_tracker.h | 75 -
.../main/native/libhdfspp/lib/fs/filehandle.cc | 370 -
.../main/native/libhdfspp/lib/fs/filehandle.h | 147 -
.../main/native/libhdfspp/lib/fs/filesystem.cc | 859 -
.../main/native/libhdfspp/lib/fs/filesystem.h | 291 -
.../native/libhdfspp/lib/fs/filesystem_sync.cc | 607 -
.../libhdfspp/lib/fs/namenode_operations.cc | 727 -
.../libhdfspp/lib/fs/namenode_operations.h | 136 -
.../native/libhdfspp/lib/proto/CMakeLists.txt | 87 -
.../libhdfspp/lib/proto/protoc_gen_hrpc.cc | 95 -
.../native/libhdfspp/lib/reader/CMakeLists.txt | 21 -
.../native/libhdfspp/lib/reader/block_reader.cc | 571 -
.../native/libhdfspp/lib/reader/block_reader.h | 159 -
.../native/libhdfspp/lib/reader/datatransfer.cc | 52 -
.../native/libhdfspp/lib/reader/datatransfer.h | 75 -
.../libhdfspp/lib/reader/datatransfer_impl.h | 136 -
.../main/native/libhdfspp/lib/reader/fileinfo.h | 38 -
.../native/libhdfspp/lib/reader/readergroup.cc | 55 -
.../native/libhdfspp/lib/reader/readergroup.h | 52 -
.../native/libhdfspp/lib/rpc/CMakeLists.txt | 31 -
.../libhdfspp/lib/rpc/cyrus_sasl_engine.cc | 469 -
.../libhdfspp/lib/rpc/cyrus_sasl_engine.h | 50 -
.../native/libhdfspp/lib/rpc/gsasl_engine.cc | 230 -
.../native/libhdfspp/lib/rpc/gsasl_engine.h | 47 -
.../libhdfspp/lib/rpc/namenode_tracker.cc | 142 -
.../native/libhdfspp/lib/rpc/namenode_tracker.h | 84 -
.../main/native/libhdfspp/lib/rpc/request.cc | 179 -
.../src/main/native/libhdfspp/lib/rpc/request.h | 87 -
.../native/libhdfspp/lib/rpc/rpc_connection.h | 182 -
.../libhdfspp/lib/rpc/rpc_connection_impl.cc | 506 -
.../libhdfspp/lib/rpc/rpc_connection_impl.h | 463 -
.../main/native/libhdfspp/lib/rpc/rpc_engine.cc | 334 -
.../main/native/libhdfspp/lib/rpc/rpc_engine.h | 190 -
.../native/libhdfspp/lib/rpc/sasl_engine.cc | 80 -
.../main/native/libhdfspp/lib/rpc/sasl_engine.h | 104 -
.../native/libhdfspp/lib/rpc/sasl_protocol.cc | 407 -
.../native/libhdfspp/lib/rpc/sasl_protocol.h | 84 -
.../main/native/libhdfspp/tests/CMakeLists.txt | 170 -
.../native/libhdfspp/tests/bad_datanode_test.cc | 330 -
.../libhdfspp/tests/configuration_test.cc | 573 -
.../native/libhdfspp/tests/configuration_test.h | 158 -
.../native/libhdfspp/tests/hdfs_builder_test.cc | 137 -
.../libhdfspp/tests/hdfs_config_connect_bugs.cc | 136 -
.../libhdfspp/tests/hdfs_configuration_test.cc | 172 -
.../native/libhdfspp/tests/hdfs_ext_test.cc | 771 -
.../libhdfspp/tests/hdfs_ioservice_test.cc | 105 -
.../src/main/native/libhdfspp/tests/hdfs_shim.c | 524 -
.../native/libhdfspp/tests/hdfspp_errors.cc | 116 -
.../native/libhdfspp/tests/hdfspp_mini_dfs.h | 194 -
.../libhdfspp/tests/hdfspp_mini_dfs_smoke.cc | 49 -
.../native/libhdfspp/tests/libhdfs_wrapper.c | 22 -
.../native/libhdfspp/tests/libhdfs_wrapper.h | 28 -
.../libhdfspp/tests/libhdfs_wrapper_defines.h | 97 -
.../libhdfspp/tests/libhdfs_wrapper_undefs.h | 107 -
.../native/libhdfspp/tests/libhdfspp_wrapper.cc | 22 -
.../native/libhdfspp/tests/libhdfspp_wrapper.h | 29 -
.../libhdfspp/tests/libhdfspp_wrapper_defines.h | 107 -
.../main/native/libhdfspp/tests/logging_test.cc | 374 -
.../native/libhdfspp/tests/mock_connection.cc | 40 -
.../native/libhdfspp/tests/mock_connection.h | 140 -
.../libhdfspp/tests/node_exclusion_test.cc | 86 -
.../libhdfspp/tests/remote_block_reader_test.cc | 536 -
.../native/libhdfspp/tests/retry_policy_test.cc | 63 -
.../native/libhdfspp/tests/rpc_engine_test.cc | 505 -
.../libhdfspp/tests/sasl_digest_md5_test.cc | 47 -
.../src/main/native/libhdfspp/tests/uri_test.cc | 293 -
.../native/libhdfspp/tests/user_lock_test.cc | 225 -
.../libhdfspp/third_party/asio-1.10.2/COPYING | 4 -
.../third_party/asio-1.10.2/include/asio.hpp | 122 -
.../asio-1.10.2/include/asio/async_result.hpp | 94 -
.../include/asio/basic_datagram_socket.hpp | 949 -
.../include/asio/basic_deadline_timer.hpp | 520 -
.../include/asio/basic_io_object.hpp | 240 -
.../include/asio/basic_raw_socket.hpp | 940 -
.../include/asio/basic_seq_packet_socket.hpp | 565 -
.../include/asio/basic_serial_port.hpp | 695 -
.../include/asio/basic_signal_set.hpp | 384 -
.../asio-1.10.2/include/asio/basic_socket.hpp | 1518 --
.../include/asio/basic_socket_acceptor.hpp | 1136 -
.../include/asio/basic_socket_iostream.hpp | 286 -
.../include/asio/basic_socket_streambuf.hpp | 567 -
.../include/asio/basic_stream_socket.hpp | 852 -
.../include/asio/basic_streambuf.hpp | 369 -
.../include/asio/basic_streambuf_fwd.hpp | 33 -
.../include/asio/basic_waitable_timer.hpp | 519 -
.../asio-1.10.2/include/asio/buffer.hpp | 2239 --
.../include/asio/buffered_read_stream.hpp | 244 -
.../include/asio/buffered_read_stream_fwd.hpp | 25 -
.../include/asio/buffered_stream.hpp | 258 -
.../include/asio/buffered_stream_fwd.hpp | 25 -
.../include/asio/buffered_write_stream.hpp | 236 -
.../include/asio/buffered_write_stream_fwd.hpp | 25 -
.../include/asio/buffers_iterator.hpp | 481 -
.../include/asio/completion_condition.hpp | 218 -
.../asio-1.10.2/include/asio/connect.hpp | 823 -
.../asio-1.10.2/include/asio/coroutine.hpp | 328 -
.../include/asio/datagram_socket_service.hpp | 432 -
.../asio-1.10.2/include/asio/deadline_timer.hpp | 63 -
.../include/asio/deadline_timer_service.hpp | 173 -
.../include/asio/detail/addressof.hpp | 38 -
.../asio-1.10.2/include/asio/detail/array.hpp | 38 -
.../include/asio/detail/array_fwd.hpp | 34 -
.../asio-1.10.2/include/asio/detail/assert.hpp | 32 -
.../include/asio/detail/atomic_count.hpp | 45 -
.../asio/detail/base_from_completion_cond.hpp | 68 -
.../include/asio/detail/bind_handler.hpp | 489 -
.../include/asio/detail/buffer_resize_guard.hpp | 66 -
.../asio/detail/buffer_sequence_adapter.hpp | 383 -
.../asio/detail/buffered_stream_storage.hpp | 126 -
.../include/asio/detail/call_stack.hpp | 125 -
.../include/asio/detail/chrono_time_traits.hpp | 190 -
.../include/asio/detail/completion_handler.hpp | 81 -
.../asio-1.10.2/include/asio/detail/config.hpp | 895 -
.../include/asio/detail/consuming_buffers.hpp | 292 -
.../asio-1.10.2/include/asio/detail/cstdint.hpp | 46 -
.../include/asio/detail/date_time_fwd.hpp | 34 -
.../asio/detail/deadline_timer_service.hpp | 227 -
.../include/asio/detail/dependent_type.hpp | 36 -
.../include/asio/detail/descriptor_ops.hpp | 117 -
.../include/asio/detail/descriptor_read_op.hpp | 119 -
.../include/asio/detail/descriptor_write_op.hpp | 119 -
.../include/asio/detail/dev_poll_reactor.hpp | 210 -
.../include/asio/detail/epoll_reactor.hpp | 242 -
.../asio-1.10.2/include/asio/detail/event.hpp | 48 -
.../asio/detail/eventfd_select_interrupter.hpp | 83 -
.../include/asio/detail/fd_set_adapter.hpp | 39 -
.../include/asio/detail/fenced_block.hpp | 76 -
.../include/asio/detail/function.hpp | 38 -
.../asio/detail/gcc_arm_fenced_block.hpp | 89 -
.../asio/detail/gcc_hppa_fenced_block.hpp | 66 -
.../asio/detail/gcc_sync_fenced_block.hpp | 63 -
.../asio/detail/gcc_x86_fenced_block.hpp | 89 -
.../asio/detail/handler_alloc_helpers.hpp | 82 -
.../asio/detail/handler_cont_helpers.hpp | 45 -
.../asio/detail/handler_invoke_helpers.hpp | 57 -
.../include/asio/detail/handler_tracking.hpp | 159 -
.../asio/detail/handler_type_requirements.hpp | 488 -
.../include/asio/detail/hash_map.hpp | 331 -
.../detail/impl/buffer_sequence_adapter.ipp | 118 -
.../include/asio/detail/impl/descriptor_ops.ipp | 451 -
.../asio/detail/impl/dev_poll_reactor.hpp | 78 -
.../asio/detail/impl/dev_poll_reactor.ipp | 445 -
.../include/asio/detail/impl/epoll_reactor.hpp | 76 -
.../include/asio/detail/impl/epoll_reactor.ipp | 662 -
.../detail/impl/eventfd_select_interrupter.ipp | 165 -
.../asio/detail/impl/handler_tracking.ipp | 305 -
.../include/asio/detail/impl/kqueue_reactor.hpp | 80 -
.../include/asio/detail/impl/kqueue_reactor.ipp | 463 -
.../detail/impl/pipe_select_interrupter.ipp | 124 -
.../include/asio/detail/impl/posix_event.ipp | 47 -
.../include/asio/detail/impl/posix_mutex.ipp | 46 -
.../include/asio/detail/impl/posix_thread.ipp | 74 -
.../include/asio/detail/impl/posix_tss_ptr.ipp | 46 -
.../detail/impl/reactive_descriptor_service.ipp | 208 -
.../impl/reactive_serial_port_service.ipp | 151 -
.../impl/reactive_socket_service_base.ipp | 267 -
.../asio/detail/impl/resolver_service_base.ipp | 130 -
.../include/asio/detail/impl/select_reactor.hpp | 87 -
.../include/asio/detail/impl/select_reactor.ipp | 313 -
.../asio/detail/impl/service_registry.hpp | 88 -
.../asio/detail/impl/service_registry.ipp | 188 -
.../asio/detail/impl/signal_set_service.ipp | 647 -
.../include/asio/detail/impl/socket_ops.ipp | 3394 ---
.../detail/impl/socket_select_interrupter.ipp | 175 -
.../include/asio/detail/impl/strand_service.hpp | 118 -
.../include/asio/detail/impl/strand_service.ipp | 176 -
.../asio/detail/impl/task_io_service.hpp | 78 -
.../asio/detail/impl/task_io_service.ipp | 474 -
.../include/asio/detail/impl/throw_error.ipp | 60 -
.../asio/detail/impl/timer_queue_ptime.ipp | 84 -
.../asio/detail/impl/timer_queue_set.ipp | 101 -
.../include/asio/detail/impl/win_event.ipp | 67 -
.../detail/impl/win_iocp_handle_service.ipp | 528 -
.../asio/detail/impl/win_iocp_io_service.hpp | 130 -
.../asio/detail/impl/win_iocp_io_service.ipp | 531 -
.../impl/win_iocp_serial_port_service.ipp | 180 -
.../impl/win_iocp_socket_service_base.ipp | 728 -
.../include/asio/detail/impl/win_mutex.ipp | 78 -
.../detail/impl/win_object_handle_service.ipp | 444 -
.../asio/detail/impl/win_static_mutex.ipp | 118 -
.../include/asio/detail/impl/win_thread.ipp | 139 -
.../include/asio/detail/impl/win_tss_ptr.ipp | 57 -
.../detail/impl/winrt_ssocket_service_base.ipp | 612 -
.../asio/detail/impl/winrt_timer_scheduler.hpp | 79 -
.../asio/detail/impl/winrt_timer_scheduler.ipp | 122 -
.../include/asio/detail/impl/winsock_init.ipp | 82 -
.../include/asio/detail/io_control.hpp | 134 -
.../include/asio/detail/keyword_tss_ptr.hpp | 70 -
.../include/asio/detail/kqueue_reactor.hpp | 219 -
.../asio-1.10.2/include/asio/detail/limits.hpp | 26 -
.../asio/detail/local_free_on_block_exit.hpp | 57 -
.../include/asio/detail/macos_fenced_block.hpp | 61 -
.../asio-1.10.2/include/asio/detail/mutex.hpp | 48 -
.../include/asio/detail/noncopyable.hpp | 43 -
.../include/asio/detail/null_event.hpp | 88 -
.../include/asio/detail/null_fenced_block.hpp | 45 -
.../include/asio/detail/null_mutex.hpp | 64 -
.../include/asio/detail/null_reactor.hpp | 67 -
.../include/asio/detail/null_signal_blocker.hpp | 69 -
.../include/asio/detail/null_socket_service.hpp | 497 -
.../include/asio/detail/null_static_mutex.hpp | 60 -
.../include/asio/detail/null_thread.hpp | 61 -
.../include/asio/detail/null_tss_ptr.hpp | 68 -
.../include/asio/detail/object_pool.hpp | 146 -
.../include/asio/detail/old_win_sdk_compat.hpp | 214 -
.../include/asio/detail/op_queue.hpp | 156 -
.../include/asio/detail/operation.hpp | 38 -
.../asio/detail/pipe_select_interrupter.hpp | 89 -
.../include/asio/detail/pop_options.hpp | 105 -
.../include/asio/detail/posix_event.hpp | 126 -
.../asio/detail/posix_fd_set_adapter.hpp | 118 -
.../include/asio/detail/posix_mutex.hpp | 76 -
.../asio/detail/posix_signal_blocker.hpp | 85 -
.../include/asio/detail/posix_static_mutex.hpp | 64 -
.../include/asio/detail/posix_thread.hpp | 105 -
.../include/asio/detail/posix_tss_ptr.hpp | 79 -
.../include/asio/detail/push_options.hpp | 138 -
.../asio/detail/reactive_descriptor_service.hpp | 322 -
.../asio/detail/reactive_null_buffers_op.hpp | 88 -
.../detail/reactive_serial_port_service.hpp | 234 -
.../asio/detail/reactive_socket_accept_op.hpp | 136 -
.../asio/detail/reactive_socket_connect_op.hpp | 106 -
.../asio/detail/reactive_socket_recv_op.hpp | 123 -
.../asio/detail/reactive_socket_recvfrom_op.hpp | 133 -
.../asio/detail/reactive_socket_recvmsg_op.hpp | 125 -
.../asio/detail/reactive_socket_send_op.hpp | 120 -
.../asio/detail/reactive_socket_sendto_op.hpp | 123 -
.../asio/detail/reactive_socket_service.hpp | 457 -
.../detail/reactive_socket_service_base.hpp | 450 -
.../asio-1.10.2/include/asio/detail/reactor.hpp | 32 -
.../include/asio/detail/reactor_fwd.hpp | 40 -
.../include/asio/detail/reactor_op.hpp | 61 -
.../include/asio/detail/reactor_op_queue.hpp | 168 -
.../include/asio/detail/regex_fwd.hpp | 35 -
.../include/asio/detail/resolve_endpoint_op.hpp | 121 -
.../include/asio/detail/resolve_op.hpp | 131 -
.../include/asio/detail/resolver_service.hpp | 129 -
.../asio/detail/resolver_service_base.hpp | 129 -
.../include/asio/detail/scoped_lock.hpp | 101 -
.../include/asio/detail/scoped_ptr.hpp | 79 -
.../include/asio/detail/select_interrupter.hpp | 46 -
.../include/asio/detail/select_reactor.hpp | 219 -
.../include/asio/detail/service_registry.hpp | 156 -
.../include/asio/detail/shared_ptr.hpp | 38 -
.../include/asio/detail/signal_blocker.hpp | 44 -
.../include/asio/detail/signal_handler.hpp | 82 -
.../include/asio/detail/signal_init.hpp | 47 -
.../include/asio/detail/signal_op.hpp | 49 -
.../include/asio/detail/signal_set_service.hpp | 216 -
.../include/asio/detail/socket_holder.hpp | 98 -
.../include/asio/detail/socket_ops.hpp | 334 -
.../include/asio/detail/socket_option.hpp | 316 -
.../asio/detail/socket_select_interrupter.hpp | 91 -
.../include/asio/detail/socket_types.hpp | 404 -
.../asio/detail/solaris_fenced_block.hpp | 61 -
.../include/asio/detail/static_mutex.hpp | 52 -
.../include/asio/detail/std_event.hpp | 176 -
.../include/asio/detail/std_mutex.hpp | 73 -
.../include/asio/detail/std_static_mutex.hpp | 81 -
.../include/asio/detail/std_thread.hpp | 65 -
.../include/asio/detail/strand_service.hpp | 142 -
.../include/asio/detail/task_io_service.hpp | 201 -
.../asio/detail/task_io_service_operation.hpp | 76 -
.../asio/detail/task_io_service_thread_info.hpp | 40 -
.../asio-1.10.2/include/asio/detail/thread.hpp | 56 -
.../include/asio/detail/thread_info_base.hpp | 91 -
.../include/asio/detail/throw_error.hpp | 53 -
.../include/asio/detail/throw_exception.hpp | 51 -
.../include/asio/detail/timer_queue.hpp | 332 -
.../include/asio/detail/timer_queue_base.hpp | 68 -
.../include/asio/detail/timer_queue_ptime.hpp | 93 -
.../include/asio/detail/timer_queue_set.hpp | 66 -
.../include/asio/detail/timer_scheduler.hpp | 35 -
.../include/asio/detail/timer_scheduler_fwd.hpp | 40 -
.../asio-1.10.2/include/asio/detail/tss_ptr.hpp | 69 -
.../include/asio/detail/type_traits.hpp | 58 -
.../include/asio/detail/variadic_templates.hpp | 63 -
.../include/asio/detail/wait_handler.hpp | 83 -
.../asio-1.10.2/include/asio/detail/wait_op.hpp | 45 -
.../include/asio/detail/weak_ptr.hpp | 38 -
.../include/asio/detail/win_event.hpp | 126 -
.../include/asio/detail/win_fd_set_adapter.hpp | 149 -
.../include/asio/detail/win_fenced_block.hpp | 89 -
.../asio/detail/win_iocp_handle_read_op.hpp | 109 -
.../asio/detail/win_iocp_handle_service.hpp | 322 -
.../asio/detail/win_iocp_handle_write_op.hpp | 101 -
.../include/asio/detail/win_iocp_io_service.hpp | 315 -
.../asio/detail/win_iocp_null_buffers_op.hpp | 119 -
.../include/asio/detail/win_iocp_operation.hpp | 95 -
.../asio/detail/win_iocp_overlapped_op.hpp | 88 -
.../asio/detail/win_iocp_overlapped_ptr.hpp | 144 -
.../detail/win_iocp_serial_port_service.hpp | 228 -
.../asio/detail/win_iocp_socket_accept_op.hpp | 165 -
.../asio/detail/win_iocp_socket_connect_op.hpp | 124 -
.../asio/detail/win_iocp_socket_recv_op.hpp | 115 -
.../asio/detail/win_iocp_socket_recvfrom_op.hpp | 123 -
.../asio/detail/win_iocp_socket_recvmsg_op.hpp | 116 -
.../asio/detail/win_iocp_socket_send_op.hpp | 109 -
.../asio/detail/win_iocp_socket_service.hpp | 525 -
.../detail/win_iocp_socket_service_base.hpp | 524 -
.../asio/detail/win_iocp_thread_info.hpp | 34 -
.../include/asio/detail/win_mutex.hpp | 78 -
.../asio/detail/win_object_handle_service.hpp | 183 -
.../include/asio/detail/win_static_mutex.hpp | 74 -
.../include/asio/detail/win_thread.hpp | 139 -
.../include/asio/detail/win_tss_ptr.hpp | 79 -
.../include/asio/detail/wince_thread.hpp | 116 -
.../include/asio/detail/winrt_async_manager.hpp | 294 -
.../include/asio/detail/winrt_async_op.hpp | 65 -
.../include/asio/detail/winrt_resolve_op.hpp | 117 -
.../asio/detail/winrt_resolver_service.hpp | 183 -
.../asio/detail/winrt_socket_connect_op.hpp | 90 -
.../asio/detail/winrt_socket_recv_op.hpp | 110 -
.../asio/detail/winrt_socket_send_op.hpp | 101 -
.../asio/detail/winrt_ssocket_service.hpp | 232 -
.../asio/detail/winrt_ssocket_service_base.hpp | 355 -
.../asio/detail/winrt_timer_scheduler.hpp | 131 -
.../include/asio/detail/winrt_utils.hpp | 106 -
.../include/asio/detail/winsock_init.hpp | 128 -
.../include/asio/detail/wrapped_handler.hpp | 291 -
.../asio-1.10.2/include/asio/error.hpp | 331 -
.../asio-1.10.2/include/asio/error_code.hpp | 188 -
.../include/asio/generic/basic_endpoint.hpp | 193 -
.../include/asio/generic/datagram_protocol.hpp | 123 -
.../include/asio/generic/detail/endpoint.hpp | 133 -
.../asio/generic/detail/impl/endpoint.ipp | 109 -
.../include/asio/generic/raw_protocol.hpp | 121 -
.../asio/generic/seq_packet_protocol.hpp | 122 -
.../include/asio/generic/stream_protocol.hpp | 127 -
.../include/asio/handler_alloc_hook.hpp | 81 -
.../include/asio/handler_continuation_hook.hpp | 54 -
.../include/asio/handler_invoke_hook.hpp | 85 -
.../asio-1.10.2/include/asio/handler_type.hpp | 112 -
.../include/asio/high_resolution_timer.hpp | 63 -
.../include/asio/impl/buffered_read_stream.hpp | 358 -
.../include/asio/impl/buffered_write_stream.hpp | 338 -
.../asio-1.10.2/include/asio/impl/connect.hpp | 428 -
.../asio-1.10.2/include/asio/impl/error.ipp | 128 -
.../include/asio/impl/error_code.ipp | 128 -
.../include/asio/impl/handler_alloc_hook.ipp | 77 -
.../include/asio/impl/io_service.hpp | 152 -
.../include/asio/impl/io_service.ipp | 155 -
.../asio-1.10.2/include/asio/impl/read.hpp | 753 -
.../asio-1.10.2/include/asio/impl/read_at.hpp | 810 -
.../include/asio/impl/read_until.hpp | 1147 -
.../include/asio/impl/serial_port_base.hpp | 59 -
.../include/asio/impl/serial_port_base.ipp | 554 -
.../asio-1.10.2/include/asio/impl/spawn.hpp | 336 -
.../asio-1.10.2/include/asio/impl/src.cpp | 25 -
.../asio-1.10.2/include/asio/impl/src.hpp | 74 -
.../include/asio/impl/use_future.hpp | 172 -
.../asio-1.10.2/include/asio/impl/write.hpp | 765 -
.../asio-1.10.2/include/asio/impl/write_at.hpp | 825 -
.../asio-1.10.2/include/asio/io_service.hpp | 770 -
.../asio-1.10.2/include/asio/ip/address.hpp | 200 -
.../asio-1.10.2/include/asio/ip/address_v4.hpp | 241 -
.../asio-1.10.2/include/asio/ip/address_v6.hpp | 246 -
.../include/asio/ip/basic_endpoint.hpp | 263 -
.../include/asio/ip/basic_resolver.hpp | 268 -
.../include/asio/ip/basic_resolver_entry.hpp | 94 -
.../include/asio/ip/basic_resolver_iterator.hpp | 260 -
.../include/asio/ip/basic_resolver_query.hpp | 244 -
.../include/asio/ip/detail/endpoint.hpp | 139 -
.../include/asio/ip/detail/impl/endpoint.ipp | 204 -
.../include/asio/ip/detail/socket_option.hpp | 569 -
.../asio-1.10.2/include/asio/ip/host_name.hpp | 42 -
.../asio-1.10.2/include/asio/ip/icmp.hpp | 115 -
.../include/asio/ip/impl/address.hpp | 53 -
.../include/asio/ip/impl/address.ipp | 226 -
.../include/asio/ip/impl/address_v4.hpp | 53 -
.../include/asio/ip/impl/address_v4.ipp | 178 -
.../include/asio/ip/impl/address_v6.hpp | 53 -
.../include/asio/ip/impl/address_v6.ipp | 298 -
.../include/asio/ip/impl/basic_endpoint.hpp | 55 -
.../include/asio/ip/impl/host_name.ipp | 54 -
.../asio-1.10.2/include/asio/ip/multicast.hpp | 191 -
.../include/asio/ip/resolver_query_base.hpp | 130 -
.../include/asio/ip/resolver_service.hpp | 176 -
.../asio-1.10.2/include/asio/ip/tcp.hpp | 155 -
.../asio-1.10.2/include/asio/ip/udp.hpp | 111 -
.../asio-1.10.2/include/asio/ip/unicast.hpp | 70 -
.../asio-1.10.2/include/asio/ip/v6_only.hpp | 69 -
.../include/asio/is_read_buffered.hpp | 59 -
.../include/asio/is_write_buffered.hpp | 59 -
.../include/asio/local/basic_endpoint.hpp | 239 -
.../include/asio/local/connect_pair.hpp | 104 -
.../include/asio/local/datagram_protocol.hpp | 80 -
.../include/asio/local/detail/endpoint.hpp | 133 -
.../include/asio/local/detail/impl/endpoint.ipp | 128 -
.../include/asio/local/stream_protocol.hpp | 90 -
.../asio-1.10.2/include/asio/placeholders.hpp | 123 -
.../include/asio/posix/basic_descriptor.hpp | 490 -
.../asio/posix/basic_stream_descriptor.hpp | 362 -
.../include/asio/posix/descriptor_base.hpp | 97 -
.../include/asio/posix/stream_descriptor.hpp | 37 -
.../asio/posix/stream_descriptor_service.hpp | 260 -
.../include/asio/raw_socket_service.hpp | 432 -
.../asio-1.10.2/include/asio/read.hpp | 631 -
.../asio-1.10.2/include/asio/read_at.hpp | 664 -
.../asio-1.10.2/include/asio/read_until.hpp | 923 -
.../include/asio/seq_packet_socket_service.hpp | 380 -
.../asio-1.10.2/include/asio/serial_port.hpp | 36 -
.../include/asio/serial_port_base.hpp | 167 -
.../include/asio/serial_port_service.hpp | 253 -
.../asio-1.10.2/include/asio/signal_set.hpp | 28 -
.../include/asio/signal_set_service.hpp | 134 -
.../include/asio/socket_acceptor_service.hpp | 302 -
.../asio-1.10.2/include/asio/socket_base.hpp | 520 -
.../asio-1.10.2/include/asio/spawn.hpp | 265 -
.../asio-1.10.2/include/asio/ssl.hpp | 30 -
.../include/asio/ssl/basic_context.hpp | 40 -
.../asio-1.10.2/include/asio/ssl/context.hpp | 787 -
.../include/asio/ssl/context_base.hpp | 167 -
.../include/asio/ssl/context_service.hpp | 40 -
.../asio/ssl/detail/buffered_handshake_op.hpp | 110 -
.../include/asio/ssl/detail/engine.hpp | 164 -
.../include/asio/ssl/detail/handshake_op.hpp | 68 -
.../include/asio/ssl/detail/impl/engine.ipp | 326 -
.../asio/ssl/detail/impl/openssl_init.ipp | 145 -
.../asio-1.10.2/include/asio/ssl/detail/io.hpp | 347 -
.../include/asio/ssl/detail/openssl_init.hpp | 101 -
.../include/asio/ssl/detail/openssl_types.hpp | 28 -
.../asio/ssl/detail/password_callback.hpp | 72 -
.../include/asio/ssl/detail/read_op.hpp | 73 -
.../include/asio/ssl/detail/shutdown_op.hpp | 60 -
.../include/asio/ssl/detail/stream_core.hpp | 126 -
.../include/asio/ssl/detail/verify_callback.hpp | 68 -
.../include/asio/ssl/detail/write_op.hpp | 73 -
.../asio-1.10.2/include/asio/ssl/error.hpp | 68 -
.../include/asio/ssl/impl/context.hpp | 71 -
.../include/asio/ssl/impl/context.ipp | 950 -
.../asio-1.10.2/include/asio/ssl/impl/error.ipp | 57 -
.../asio/ssl/impl/rfc2818_verification.ipp | 166 -
.../asio-1.10.2/include/asio/ssl/impl/src.hpp | 28 -
.../include/asio/ssl/old/basic_context.hpp | 434 -
.../include/asio/ssl/old/context_service.hpp | 174 -
.../ssl/old/detail/openssl_context_service.hpp | 386 -
.../asio/ssl/old/detail/openssl_operation.hpp | 524 -
.../ssl/old/detail/openssl_stream_service.hpp | 571 -
.../asio-1.10.2/include/asio/ssl/old/stream.hpp | 501 -
.../include/asio/ssl/old/stream_service.hpp | 184 -
.../include/asio/ssl/rfc2818_verification.hpp | 100 -
.../asio-1.10.2/include/asio/ssl/stream.hpp | 756 -
.../include/asio/ssl/stream_base.hpp | 52 -
.../include/asio/ssl/stream_service.hpp | 40 -
.../include/asio/ssl/verify_context.hpp | 73 -
.../include/asio/ssl/verify_mode.hpp | 63 -
.../asio-1.10.2/include/asio/steady_timer.hpp | 61 -
.../asio-1.10.2/include/asio/strand.hpp | 251 -
.../include/asio/stream_socket_service.hpp | 376 -
.../asio-1.10.2/include/asio/streambuf.hpp | 33 -
.../asio-1.10.2/include/asio/system_error.hpp | 131 -
.../asio-1.10.2/include/asio/system_timer.hpp | 57 -
.../asio-1.10.2/include/asio/thread.hpp | 92 -
.../asio-1.10.2/include/asio/time_traits.hpp | 96 -
.../asio-1.10.2/include/asio/unyield.hpp | 21 -
.../asio-1.10.2/include/asio/use_future.hpp | 92 -
.../asio-1.10.2/include/asio/version.hpp | 23 -
.../asio-1.10.2/include/asio/wait_traits.hpp | 41 -
.../include/asio/waitable_timer_service.hpp | 168 -
.../include/asio/windows/basic_handle.hpp | 281 -
.../asio/windows/basic_object_handle.hpp | 178 -
.../asio/windows/basic_random_access_handle.hpp | 376 -
.../asio/windows/basic_stream_handle.hpp | 359 -
.../include/asio/windows/object_handle.hpp | 38 -
.../asio/windows/object_handle_service.hpp | 177 -
.../include/asio/windows/overlapped_ptr.hpp | 116 -
.../asio/windows/random_access_handle.hpp | 37 -
.../windows/random_access_handle_service.hpp | 220 -
.../include/asio/windows/stream_handle.hpp | 37 -
.../asio/windows/stream_handle_service.hpp | 218 -
.../asio-1.10.2/include/asio/write.hpp | 618 -
.../asio-1.10.2/include/asio/write_at.hpp | 670 -
.../asio-1.10.2/include/asio/yield.hpp | 23 -
.../third_party/asio-1.10.2/src/asio.cpp | 11 -
.../third_party/asio-1.10.2/src/asio_ssl.cpp | 11 -
.../third_party/gmock-1.7.0/CMakeLists.txt | 21 -
.../libhdfspp/third_party/gmock-1.7.0/LICENSE | 28 -
.../third_party/gmock-1.7.0/gmock-gtest-all.cc | 11443 ----------
.../third_party/gmock-1.7.0/gmock/gmock.h | 14198 ------------
.../third_party/gmock-1.7.0/gmock_main.cc | 54 -
.../third_party/gmock-1.7.0/gtest/gtest.h | 20061 -----------------
.../third_party/protobuf/protobuf/cpp_helpers.h | 82 -
.../rapidxml-1.13/rapidxml/license.txt | 52 -
.../rapidxml-1.13/rapidxml/rapidxml.hpp | 2596 ---
.../rapidxml/rapidxml_iterators.hpp | 174 -
.../rapidxml-1.13/rapidxml/rapidxml_print.hpp | 421 -
.../rapidxml-1.13/rapidxml/rapidxml_utils.hpp | 122 -
.../libhdfspp/third_party/tr2/optional.hpp | 1068 -
.../third_party/uriparser2/CMakeLists.txt | 27 -
.../uriparser2/uriparser2/.gitignore | 4 -
.../third_party/uriparser2/uriparser2/LICENSE | 19 -
.../third_party/uriparser2/uriparser2/Makefile | 20 -
.../third_party/uriparser2/uriparser2/README.md | 103 -
.../uriparser2/uriparser2/test-uriparser2.c | 108 -
.../uriparser2/uriparser2/uriparser/AUTHORS | 2 -
.../uriparser2/uriparser2/uriparser/COPYING | 36 -
.../uriparser2/uriparser2/uriparser/Uri.h | 752 -
.../uriparser2/uriparser2/uriparser/UriBase.h | 188 -
.../uriparser2/uriparser2/uriparser/UriCommon.c | 527 -
.../uriparser2/uriparser2/uriparser/UriCommon.h | 96 -
.../uriparser2/uriparser/UriCompare.c | 191 -
.../uriparser2/uriparser/UriDefsAnsi.h | 82 -
.../uriparser2/uriparser/UriDefsConfig.h | 105 -
.../uriparser2/uriparser/UriDefsUnicode.h | 82 -
.../uriparser2/uriparser2/uriparser/UriEscape.c | 449 -
.../uriparser2/uriparser2/uriparser/UriFile.c | 182 -
.../uriparser2/uriparser2/uriparser/UriIp4.c | 325 -
.../uriparser2/uriparser2/uriparser/UriIp4.h | 87 -
.../uriparser2/uriparser/UriIp4Base.c | 96 -
.../uriparser2/uriparser/UriIp4Base.h | 59 -
.../uriparser2/uriparser/UriNormalize.c | 722 -
.../uriparser2/uriparser/UriNormalizeBase.c | 119 -
.../uriparser2/uriparser/UriNormalizeBase.h | 53 -
.../uriparser2/uriparser2/uriparser/UriParse.c | 2205 --
.../uriparser2/uriparser/UriParseBase.c | 90 -
.../uriparser2/uriparser/UriParseBase.h | 55 -
.../uriparser2/uriparser2/uriparser/UriQuery.c | 456 -
.../uriparser2/uriparser/UriRecompose.c | 573 -
.../uriparser2/uriparser/UriResolve.c | 255 -
.../uriparser2/uriparser/UriShorten.c | 316 -
.../uriparser2/uriparser2/uriparser2.c | 273 -
.../uriparser2/uriparser2/uriparser2.h | 101 -
.../main/native/libhdfspp/tools/CMakeLists.txt | 93 -
.../libhdfspp/tools/hdfs_allowSnapshot.cc | 86 -
.../src/main/native/libhdfspp/tools/hdfs_cat.cc | 83 -
.../main/native/libhdfspp/tools/hdfs_chgrp.cc | 185 -
.../main/native/libhdfspp/tools/hdfs_chmod.cc | 183 -
.../main/native/libhdfspp/tools/hdfs_chown.cc | 195 -
.../native/libhdfspp/tools/hdfs_copyToLocal.cc | 88 -
.../main/native/libhdfspp/tools/hdfs_count.cc | 93 -
.../libhdfspp/tools/hdfs_createSnapshot.cc | 95 -
.../libhdfspp/tools/hdfs_deleteSnapshot.cc | 87 -
.../src/main/native/libhdfspp/tools/hdfs_df.cc | 89 -
.../libhdfspp/tools/hdfs_disallowSnapshot.cc | 86 -
.../src/main/native/libhdfspp/tools/hdfs_du.cc | 176 -
.../main/native/libhdfspp/tools/hdfs_find.cc | 146 -
.../src/main/native/libhdfspp/tools/hdfs_get.cc | 88 -
.../src/main/native/libhdfspp/tools/hdfs_ls.cc | 130 -
.../main/native/libhdfspp/tools/hdfs_mkdir.cc | 98 -
.../native/libhdfspp/tools/hdfs_moveToLocal.cc | 90 -
.../libhdfspp/tools/hdfs_renameSnapshot.cc | 88 -
.../src/main/native/libhdfspp/tools/hdfs_rm.cc | 90 -
.../main/native/libhdfspp/tools/hdfs_setrep.cc | 172 -
.../main/native/libhdfspp/tools/hdfs_stat.cc | 87 -
.../main/native/libhdfspp/tools/hdfs_tail.cc | 124 -
.../main/native/libhdfspp/tools/tools_common.cc | 142 -
.../main/native/libhdfspp/tools/tools_common.h | 37 -
.../dev-support/findbugsExcludeFile.xml | 22 -
hadoop-hdfs-project/hadoop-hdfs-rbf/pom.xml | 236 -
.../hdfs/protocolPB/RouterAdminProtocolPB.java | 44 -
...uterAdminProtocolServerSideTranslatorPB.java | 211 -
.../RouterAdminProtocolTranslatorPB.java | 208 -
.../hadoop/hdfs/protocolPB/package-info.java | 18 -
.../federation/metrics/FederationMBean.java | 223 -
.../federation/metrics/FederationMetrics.java | 766 -
.../federation/metrics/FederationRPCMBean.java | 92 -
.../metrics/FederationRPCMetrics.java | 250 -
.../FederationRPCPerformanceMonitor.java | 221 -
.../federation/metrics/NamenodeBeanMetrics.java | 634 -
.../federation/metrics/StateStoreMBean.java | 45 -
.../federation/metrics/StateStoreMetrics.java | 149 -
.../server/federation/metrics/package-info.java | 27 -
.../resolver/ActiveNamenodeResolver.java | 118 -
.../resolver/FederationNamenodeContext.java | 87 -
.../FederationNamenodeServiceState.java | 46 -
.../resolver/FederationNamespaceInfo.java | 73 -
.../resolver/FileSubclusterResolver.java | 75 -
.../resolver/MembershipNamenodeResolver.java | 317 -
.../federation/resolver/MountTableManager.java | 80 -
.../federation/resolver/MountTableResolver.java | 597 -
.../MultipleDestinationMountTableResolver.java | 116 -
.../resolver/NamenodePriorityComparator.java | 66 -
.../resolver/NamenodeStatusReport.java | 406 -
.../federation/resolver/PathLocation.java | 212 -
.../federation/resolver/RemoteLocation.java | 76 -
.../resolver/order/DestinationOrder.java | 30 -
.../resolver/order/HashFirstResolver.java | 71 -
.../federation/resolver/order/HashResolver.java | 137 -
.../resolver/order/LocalResolver.java | 297 -
.../resolver/order/OrderedResolver.java | 37 -
.../resolver/order/RandomResolver.java | 62 -
.../federation/resolver/order/package-info.java | 29 -
.../federation/resolver/package-info.java | 41 -
.../federation/router/ConnectionContext.java | 104 -
.../federation/router/ConnectionManager.java | 435 -
.../federation/router/ConnectionPool.java | 337 -
.../federation/router/ConnectionPoolId.java | 123 -
.../server/federation/router/DFSRouter.java | 76 -
.../server/federation/router/ErasureCoding.java | 198 -
.../federation/router/FederationUtil.java | 208 -
.../router/NamenodeHeartbeatService.java | 362 -
.../federation/router/PeriodicService.java | 198 -
.../hdfs/server/federation/router/Quota.java | 208 -
.../server/federation/router/RBFConfigKeys.java | 229 -
.../router/RemoteLocationContext.java | 68 -
.../server/federation/router/RemoteMethod.java | 164 -
.../server/federation/router/RemoteParam.java | 71 -
.../hdfs/server/federation/router/Router.java | 655 -
.../federation/router/RouterAdminServer.java | 298 -
.../server/federation/router/RouterClient.java | 80 -
.../router/RouterHeartbeatService.java | 166 -
.../federation/router/RouterHttpServer.java | 124 -
.../server/federation/router/RouterMetrics.java | 73 -
.../federation/router/RouterMetricsService.java | 108 -
.../router/RouterPermissionChecker.java | 82 -
.../federation/router/RouterQuotaManager.java | 172 -
.../router/RouterQuotaUpdateService.java | 227 -
.../federation/router/RouterQuotaUsage.java | 119 -
.../federation/router/RouterRpcClient.java | 1081 -
.../federation/router/RouterRpcMonitor.java | 108 -
.../federation/router/RouterRpcServer.java | 2330 --
.../router/RouterSafeModeException.java | 53 -
.../router/RouterSafemodeService.java | 149 -
.../federation/router/RouterServiceState.java | 31 -
.../federation/router/RouterStateManager.java | 50 -
.../server/federation/router/package-info.java | 31 -
.../federation/store/CachedRecordStore.java | 242 -
.../federation/store/MembershipStore.java | 126 -
.../federation/store/MountTableStore.java | 49 -
.../server/federation/store/RecordStore.java | 100 -
.../server/federation/store/RouterStore.java | 78 -
.../federation/store/StateStoreCache.java | 36 -
.../store/StateStoreCacheUpdateService.java | 70 -
.../StateStoreConnectionMonitorService.java | 67 -
.../federation/store/StateStoreService.java | 450 -
.../store/StateStoreUnavailableException.java | 33 -
.../federation/store/StateStoreUtils.java | 109 -
.../store/driver/StateStoreDriver.java | 203 -
.../driver/StateStoreRecordOperations.java | 148 -
.../store/driver/StateStoreSerializer.java | 119 -
.../store/driver/impl/StateStoreBaseImpl.java | 86 -
.../driver/impl/StateStoreFileBaseImpl.java | 462 -
.../store/driver/impl/StateStoreFileImpl.java | 148 -
.../driver/impl/StateStoreFileSystemImpl.java | 178 -
.../driver/impl/StateStoreSerializableImpl.java | 98 -
.../driver/impl/StateStoreSerializerPBImpl.java | 115 -
.../driver/impl/StateStoreZooKeeperImpl.java | 328 -
.../store/driver/impl/package-info.java | 39 -
.../federation/store/driver/package-info.java | 37 -
.../store/impl/MembershipStoreImpl.java | 310 -
.../store/impl/MountTableStoreImpl.java | 154 -
.../federation/store/impl/RouterStoreImpl.java | 93 -
.../federation/store/impl/package-info.java | 31 -
.../server/federation/store/package-info.java | 62 -
.../protocol/AddMountTableEntryRequest.java | 47 -
.../protocol/AddMountTableEntryResponse.java | 42 -
.../store/protocol/EnterSafeModeRequest.java | 32 -
.../store/protocol/EnterSafeModeResponse.java | 50 -
.../protocol/GetMountTableEntriesRequest.java | 49 -
.../protocol/GetMountTableEntriesResponse.java | 53 -
.../GetNamenodeRegistrationsRequest.java | 52 -
.../GetNamenodeRegistrationsResponse.java | 55 -
.../store/protocol/GetNamespaceInfoRequest.java | 30 -
.../protocol/GetNamespaceInfoResponse.java | 52 -
.../protocol/GetRouterRegistrationRequest.java | 47 -
.../protocol/GetRouterRegistrationResponse.java | 44 -
.../protocol/GetRouterRegistrationsRequest.java | 34 -
.../GetRouterRegistrationsResponse.java | 55 -
.../store/protocol/GetSafeModeRequest.java | 31 -
.../store/protocol/GetSafeModeResponse.java | 49 -
.../store/protocol/LeaveSafeModeRequest.java | 32 -
.../store/protocol/LeaveSafeModeResponse.java | 50 -
.../protocol/NamenodeHeartbeatRequest.java | 52 -
.../protocol/NamenodeHeartbeatResponse.java | 49 -
.../protocol/RemoveMountTableEntryRequest.java | 49 -
.../protocol/RemoveMountTableEntryResponse.java | 42 -
.../store/protocol/RouterHeartbeatRequest.java | 50 -
.../store/protocol/RouterHeartbeatResponse.java | 49 -
.../protocol/UpdateMountTableEntryRequest.java | 51 -
.../protocol/UpdateMountTableEntryResponse.java | 43 -
.../UpdateNamenodeRegistrationRequest.java | 72 -
.../UpdateNamenodeRegistrationResponse.java | 51 -
.../pb/AddMountTableEntryRequestPBImpl.java | 84 -
.../pb/AddMountTableEntryResponsePBImpl.java | 76 -
.../impl/pb/EnterSafeModeRequestPBImpl.java | 62 -
.../impl/pb/EnterSafeModeResponsePBImpl.java | 73 -
.../impl/pb/FederationProtocolPBTranslator.java | 145 -
.../pb/GetMountTableEntriesRequestPBImpl.java | 76 -
.../pb/GetMountTableEntriesResponsePBImpl.java | 104 -
.../GetNamenodeRegistrationsRequestPBImpl.java | 87 -
.../GetNamenodeRegistrationsResponsePBImpl.java | 99 -
.../impl/pb/GetNamespaceInfoRequestPBImpl.java | 60 -
.../impl/pb/GetNamespaceInfoResponsePBImpl.java | 95 -
.../pb/GetRouterRegistrationRequestPBImpl.java | 70 -
.../pb/GetRouterRegistrationResponsePBImpl.java | 79 -
.../pb/GetRouterRegistrationsRequestPBImpl.java | 61 -
.../GetRouterRegistrationsResponsePBImpl.java | 102 -
.../impl/pb/GetSafeModeRequestPBImpl.java | 62 -
.../impl/pb/GetSafeModeResponsePBImpl.java | 73 -
.../impl/pb/LeaveSafeModeRequestPBImpl.java | 62 -
.../impl/pb/LeaveSafeModeResponsePBImpl.java | 73 -
.../impl/pb/NamenodeHeartbeatRequestPBImpl.java | 93 -
.../pb/NamenodeHeartbeatResponsePBImpl.java | 71 -
.../pb/RemoveMountTableEntryRequestPBImpl.java | 76 -
.../pb/RemoveMountTableEntryResponsePBImpl.java | 76 -
.../impl/pb/RouterHeartbeatRequestPBImpl.java | 78 -
.../impl/pb/RouterHeartbeatResponsePBImpl.java | 70 -
.../pb/UpdateMountTableEntryRequestPBImpl.java | 96 -
.../pb/UpdateMountTableEntryResponsePBImpl.java | 76 -
...UpdateNamenodeRegistrationRequestPBImpl.java | 95 -
...pdateNamenodeRegistrationResponsePBImpl.java | 73 -
.../store/protocol/impl/pb/package-info.java | 29 -
.../federation/store/protocol/package-info.java | 31 -
.../federation/store/records/BaseRecord.java | 215 -
.../store/records/MembershipState.java | 336 -
.../store/records/MembershipStats.java | 130 -
.../federation/store/records/MountTable.java | 437 -
.../server/federation/store/records/Query.java | 66 -
.../federation/store/records/QueryResult.java | 56 -
.../federation/store/records/RouterState.java | 168 -
.../store/records/StateStoreVersion.java | 91 -
.../records/impl/pb/MembershipStatePBImpl.java | 335 -
.../records/impl/pb/MembershipStatsPBImpl.java | 201 -
.../store/records/impl/pb/MountTablePBImpl.java | 317 -
.../store/records/impl/pb/PBRecord.java | 47 -
.../records/impl/pb/RouterStatePBImpl.java | 202 -
.../impl/pb/StateStoreVersionPBImpl.java | 79 -
.../store/records/impl/pb/package-info.java | 29 -
.../federation/store/records/package-info.java | 36 -
.../federation/utils/ConsistentHashRing.java | 144 -
.../server/federation/utils/package-info.java | 28 -
.../hdfs/tools/federation/RouterAdmin.java | 640 -
.../hdfs/tools/federation/package-info.java | 28 -
.../src/main/proto/FederationProtocol.proto | 244 -
.../src/main/proto/RouterProtocol.proto | 62 -
.../src/main/resources/hdfs-rbf-default.xml | 434 -
.../src/main/webapps/proto-web.xml | 16 -
.../main/webapps/router/federationhealth.html | 424 -
.../src/main/webapps/router/federationhealth.js | 381 -
.../src/main/webapps/router/index.html | 24 -
.../src/main/webapps/router/robots.txt | 2 -
.../src/site/markdown/HDFSRouterFederation.md | 373 -
.../src/site/resources/css/site.css | 30 -
.../site/resources/images/routerfederation.png | Bin 24961 -> 0 bytes
.../hadoop-hdfs-rbf/src/site/site.xml | 28 -
.../fs/contract/router/RouterHDFSContract.java | 98 -
.../router/TestRouterHDFSContractAppend.java | 44 -
.../router/TestRouterHDFSContractConcat.java | 51 -
.../router/TestRouterHDFSContractCreate.java | 48 -
.../router/TestRouterHDFSContractDelete.java | 48 -
.../TestRouterHDFSContractGetFileStatus.java | 49 -
.../router/TestRouterHDFSContractMkdir.java | 48 -
.../router/TestRouterHDFSContractOpen.java | 48 -
.../router/TestRouterHDFSContractRename.java | 48 -
.../TestRouterHDFSContractRootDirectory.java | 64 -
.../router/TestRouterHDFSContractSeek.java | 49 -
.../router/TestRouterHDFSContractSetTimes.java | 49 -
.../server/federation/FederationTestUtils.java | 277 -
.../server/federation/MiniRouterDFSCluster.java | 1028 -
.../hdfs/server/federation/MockResolver.java | 313 -
.../server/federation/RouterConfigBuilder.java | 163 -
.../server/federation/StateStoreDFSCluster.java | 148 -
.../metrics/TestFederationMetrics.java | 293 -
.../federation/metrics/TestMetricsBase.java | 196 -
.../resolver/TestMountTableResolver.java | 528 -
.../TestMultipleDestinationResolver.java | 419 -
.../resolver/TestNamenodeResolver.java | 284 -
.../resolver/order/TestLocalResolver.java | 143 -
.../router/TestConnectionManager.java | 157 -
.../federation/router/TestRBFConfigFields.java | 51 -
.../server/federation/router/TestRouter.java | 150 -
.../federation/router/TestRouterAdmin.java | 340 -
.../federation/router/TestRouterAdminCLI.java | 479 -
.../router/TestRouterAllResolver.java | 402 -
.../router/TestRouterHeartbeatService.java | 146 -
.../federation/router/TestRouterMountTable.java | 143 -
.../router/TestRouterNamenodeHeartbeat.java | 168 -
.../router/TestRouterNamenodeMonitoring.java | 143 -
.../federation/router/TestRouterQuota.java | 451 -
.../router/TestRouterQuotaManager.java | 125 -
.../router/TestRouterRPCClientRetries.java | 160 -
.../server/federation/router/TestRouterRpc.java | 1072 -
.../router/TestRouterRpcMultiDestination.java | 216 -
.../federation/router/TestRouterSafemode.java | 200 -
.../store/FederationStateStoreTestUtils.java | 274 -
.../federation/store/TestStateStoreBase.java | 81 -
.../store/TestStateStoreMembershipState.java | 463 -
.../store/TestStateStoreMountTable.java | 250 -
.../store/TestStateStoreRouterState.java | 195 -
.../store/driver/TestStateStoreDriverBase.java | 613 -
.../store/driver/TestStateStoreFile.java | 76 -
.../store/driver/TestStateStoreFileBase.java | 47 -
.../store/driver/TestStateStoreFileSystem.java | 94 -
.../store/driver/TestStateStoreZK.java | 105 -
.../store/records/TestMembershipState.java | 129 -
.../store/records/TestMountTable.java | 259 -
.../store/records/TestRouterState.java | 85 -
.../src/test/resources/contract/hdfs.xml | 114 -
.../src/test/resources/hdfs-site.xml | 29 -
.../src/test/resources/log4j.properties | 23 -
.../dev-support/findbugsExcludeFile.xml | 3 +
hadoop-hdfs-project/hadoop-hdfs/pom.xml | 6 +
.../org/apache/hadoop/hdfs/DFSConfigKeys.java | 204 +
.../hdfs/protocolPB/RouterAdminProtocolPB.java | 44 +
...uterAdminProtocolServerSideTranslatorPB.java | 211 +
.../RouterAdminProtocolTranslatorPB.java | 208 +
.../server/blockmanagement/BlockManager.java | 7 -
.../BlockUnderConstructionFeature.java | 6 +-
.../server/datanode/web/DatanodeHttpServer.java | 1 -
.../federation/metrics/FederationMBean.java | 223 +
.../federation/metrics/FederationMetrics.java | 766 +
.../federation/metrics/FederationRPCMBean.java | 92 +
.../metrics/FederationRPCMetrics.java | 250 +
.../FederationRPCPerformanceMonitor.java | 221 +
.../federation/metrics/NamenodeBeanMetrics.java | 634 +
.../federation/metrics/StateStoreMBean.java | 45 +
.../federation/metrics/StateStoreMetrics.java | 149 +
.../server/federation/metrics/package-info.java | 27 +
.../resolver/ActiveNamenodeResolver.java | 118 +
.../resolver/FederationNamenodeContext.java | 87 +
.../FederationNamenodeServiceState.java | 46 +
.../resolver/FederationNamespaceInfo.java | 73 +
.../resolver/FileSubclusterResolver.java | 75 +
.../resolver/MembershipNamenodeResolver.java | 317 +
.../federation/resolver/MountTableManager.java | 80 +
.../federation/resolver/MountTableResolver.java | 597 +
.../resolver/NamenodePriorityComparator.java | 63 +
.../resolver/NamenodeStatusReport.java | 406 +
.../federation/resolver/PathLocation.java | 212 +
.../federation/resolver/RemoteLocation.java | 76 +
.../resolver/order/DestinationOrder.java | 29 +
.../federation/resolver/order/package-info.java | 29 +
.../federation/resolver/package-info.java | 41 +
.../federation/router/ConnectionContext.java | 104 +
.../federation/router/ConnectionManager.java | 436 +
.../federation/router/ConnectionPool.java | 337 +
.../federation/router/ConnectionPoolId.java | 123 +
.../server/federation/router/DFSRouter.java | 76 +
.../server/federation/router/ErasureCoding.java | 198 +
.../federation/router/FederationUtil.java | 209 +
.../router/NamenodeHeartbeatService.java | 362 +
.../federation/router/PeriodicService.java | 198 +
.../hdfs/server/federation/router/Quota.java | 208 +
.../router/RemoteLocationContext.java | 68 +
.../server/federation/router/RemoteMethod.java | 164 +
.../server/federation/router/RemoteParam.java | 71 +
.../hdfs/server/federation/router/Router.java | 656 +
.../federation/router/RouterAdminServer.java | 298 +
.../server/federation/router/RouterClient.java | 80 +
.../router/RouterHeartbeatService.java | 167 +
.../federation/router/RouterHttpServer.java | 124 +
.../server/federation/router/RouterMetrics.java | 73 +
.../federation/router/RouterMetricsService.java | 108 +
.../router/RouterPermissionChecker.java | 82 +
.../federation/router/RouterQuotaManager.java | 172 +
.../router/RouterQuotaUpdateService.java | 228 +
.../federation/router/RouterQuotaUsage.java | 119 +
.../federation/router/RouterRpcClient.java | 1022 +
.../federation/router/RouterRpcMonitor.java | 108 +
.../federation/router/RouterRpcServer.java | 2189 ++
.../router/RouterSafeModeException.java | 53 +
.../router/RouterSafemodeService.java | 150 +
.../federation/router/RouterServiceState.java | 31 +
.../federation/router/RouterStateManager.java | 50 +
.../server/federation/router/package-info.java | 31 +
.../federation/store/CachedRecordStore.java | 242 +
.../federation/store/MembershipStore.java | 126 +
.../federation/store/MountTableStore.java | 49 +
.../server/federation/store/RecordStore.java | 100 +
.../server/federation/store/RouterStore.java | 78 +
.../federation/store/StateStoreCache.java | 36 +
.../store/StateStoreCacheUpdateService.java | 70 +
.../StateStoreConnectionMonitorService.java | 67 +
.../federation/store/StateStoreService.java | 450 +
.../store/StateStoreUnavailableException.java | 33 +
.../federation/store/StateStoreUtils.java | 109 +
.../store/driver/StateStoreDriver.java | 203 +
.../driver/StateStoreRecordOperations.java | 148 +
.../store/driver/StateStoreSerializer.java | 119 +
.../store/driver/impl/StateStoreBaseImpl.java | 86 +
.../driver/impl/StateStoreFileBaseImpl.java | 462 +
.../store/driver/impl/StateStoreFileImpl.java | 148 +
.../driver/impl/StateStoreFileSystemImpl.java | 178 +
.../driver/impl/StateStoreSerializableImpl.java | 98 +
.../driver/impl/StateStoreSerializerPBImpl.java | 115 +
.../driver/impl/StateStoreZooKeeperImpl.java | 328 +
.../store/driver/impl/package-info.java | 39 +
.../federation/store/driver/package-info.java | 37 +
.../store/impl/MembershipStoreImpl.java | 310 +
.../store/impl/MountTableStoreImpl.java | 154 +
.../federation/store/impl/RouterStoreImpl.java | 93 +
.../federation/store/impl/package-info.java | 31 +
.../server/federation/store/package-info.java | 62 +
.../protocol/AddMountTableEntryRequest.java | 47 +
.../protocol/AddMountTableEntryResponse.java | 42 +
.../store/protocol/EnterSafeModeRequest.java | 32 +
.../store/protocol/EnterSafeModeResponse.java | 50 +
.../protocol/GetMountTableEntriesRequest.java | 49 +
.../protocol/GetMountTableEntriesResponse.java | 53 +
.../GetNamenodeRegistrationsRequest.java | 52 +
.../GetNamenodeRegistrationsResponse.java | 55 +
.../store/protocol/GetNamespaceInfoRequest.java | 30 +
.../protocol/GetNamespaceInfoResponse.java | 52 +
.../protocol/GetRouterRegistrationRequest.java | 47 +
.../protocol/GetRouterRegistrationResponse.java | 44 +
.../protocol/GetRouterRegistrationsRequest.java | 34 +
.../GetRouterRegistrationsResponse.java | 55 +
.../store/protocol/GetSafeModeRequest.java | 31 +
.../store/protocol/GetSafeModeResponse.java | 49 +
.../store/protocol/LeaveSafeModeRequest.java | 32 +
.../store/protocol/LeaveSafeModeResponse.java | 50 +
.../protocol/NamenodeHeartbeatRequest.java | 52 +
.../protocol/NamenodeHeartbeatResponse.java | 49 +
.../protocol/RemoveMountTableEntryRequest.java | 49 +
.../protocol/RemoveMountTableEntryResponse.java | 42 +
.../store/protocol/RouterHeartbeatRequest.java | 50 +
.../store/protocol/RouterHeartbeatResponse.java | 49 +
.../protocol/UpdateMountTableEntryRequest.java | 51 +
.../protocol/UpdateMountTableEntryResponse.java | 43 +
.../UpdateNamenodeRegistrationRequest.java | 72 +
.../UpdateNamenodeRegistrationResponse.java | 51 +
.../pb/AddMountTableEntryRequestPBImpl.java | 84 +
.../pb/AddMountTableEntryResponsePBImpl.java | 76 +
.../impl/pb/EnterSafeModeRequestPBImpl.java | 62 +
.../impl/pb/EnterSafeModeResponsePBImpl.java | 73 +
.../impl/pb/FederationProtocolPBTranslator.java | 145 +
.../pb/GetMountTableEntriesRequestPBImpl.java | 76 +
.../pb/GetMountTableEntriesResponsePBImpl.java | 104 +
.../GetNamenodeRegistrationsRequestPBImpl.java | 87 +
.../GetNamenodeRegistrationsResponsePBImpl.java | 99 +
.../impl/pb/GetNamespaceInfoRequestPBImpl.java | 60 +
.../impl/pb/GetNamespaceInfoResponsePBImpl.java | 95 +
.../pb/GetRouterRegistrationRequestPBImpl.java | 70 +
.../pb/GetRouterRegistrationResponsePBImpl.java | 79 +
.../pb/GetRouterRegistrationsRequestPBImpl.java | 61 +
.../GetRouterRegistrationsResponsePBImpl.java | 102 +
.../impl/pb/GetSafeModeRequestPBImpl.java | 62 +
.../impl/pb/GetSafeModeResponsePBImpl.java | 73 +
.../impl/pb/LeaveSafeModeRequestPBImpl.java | 62 +
.../impl/pb/LeaveSafeModeResponsePBImpl.java | 73 +
.../impl/pb/NamenodeHeartbeatRequestPBImpl.java | 93 +
.../pb/NamenodeHeartbeatResponsePBImpl.java | 71 +
.../pb/RemoveMountTableEntryRequestPBImpl.java | 76 +
.../pb/RemoveMountTableEntryResponsePBImpl.java | 76 +
.../impl/pb/RouterHeartbeatRequestPBImpl.java | 78 +
.../impl/pb/RouterHeartbeatResponsePBImpl.java | 70 +
.../pb/UpdateMountTableEntryRequestPBImpl.java | 96 +
.../pb/UpdateMountTableEntryResponsePBImpl.java | 76 +
...UpdateNamenodeRegistrationRequestPBImpl.java | 95 +
...pdateNamenodeRegistrationResponsePBImpl.java | 73 +
.../store/protocol/impl/pb/package-info.java | 29 +
.../federation/store/protocol/package-info.java | 31 +
.../federation/store/records/BaseRecord.java | 215 +
.../store/records/MembershipState.java | 336 +
.../store/records/MembershipStats.java | 130 +
.../federation/store/records/MountTable.java | 430 +
.../server/federation/store/records/Query.java | 66 +
.../federation/store/records/QueryResult.java | 56 +
.../federation/store/records/RouterState.java | 168 +
.../store/records/StateStoreVersion.java | 91 +
.../records/impl/pb/MembershipStatePBImpl.java | 335 +
.../records/impl/pb/MembershipStatsPBImpl.java | 201 +
.../store/records/impl/pb/MountTablePBImpl.java | 313 +
.../store/records/impl/pb/PBRecord.java | 47 +
.../records/impl/pb/RouterStatePBImpl.java | 202 +
.../impl/pb/StateStoreVersionPBImpl.java | 79 +
.../store/records/impl/pb/package-info.java | 29 +
.../federation/store/records/package-info.java | 36 +
.../hdfs/server/namenode/FSDirTruncateOp.java | 5 +-
.../hdfs/server/namenode/FSNamesystem.java | 2 +-
.../hadoop/hdfs/server/namenode/INode.java | 6 +-
.../server/namenode/snapshot/FileDiffList.java | 3 +-
.../hdfs/tools/federation/RouterAdmin.java | 626 +
.../hdfs/tools/federation/package-info.java | 28 +
.../hdfs/tools/snapshot/SnapshotDiff.java | 1 -
.../org/apache/hadoop/hdfs/web/JsonUtil.java | 3 -
.../src/main/proto/FederationProtocol.proto | 243 +
.../src/main/proto/RouterProtocol.proto | 62 +
.../src/main/resources/hdfs-default.xml | 408 +
.../main/webapps/router/federationhealth.html | 424 +
.../src/main/webapps/router/federationhealth.js | 381 +
.../src/main/webapps/router/index.html | 24 +
.../src/main/webapps/router/robots.txt | 2 +
.../src/site/markdown/HDFSRouterFederation.md | 373 +
.../site/resources/images/routerfederation.png | Bin 0 -> 24961 bytes
.../org/apache/hadoop/hdfs/DFSTestUtil.java | 37 -
.../apache/hadoop/hdfs/TestEncryptionZones.java | 41 -
.../hdfs/server/datanode/TestBlockRecovery.java | 83 -
.../server/federation/FederationTestUtils.java | 246 +
.../hdfs/server/federation/MockResolver.java | 313 +
.../server/federation/RouterConfigBuilder.java | 163 +
.../server/federation/RouterDFSCluster.java | 1005 +
.../server/federation/StateStoreDFSCluster.java | 148 +
.../metrics/TestFederationMetrics.java | 293 +
.../federation/metrics/TestMetricsBase.java | 196 +
.../resolver/TestMountTableResolver.java | 528 +
.../resolver/TestNamenodeResolver.java | 284 +
.../router/TestConnectionManager.java | 157 +
.../router/TestNamenodeHeartbeat.java | 168 +
.../server/federation/router/TestRouter.java | 150 +
.../federation/router/TestRouterAdmin.java | 292 +
.../federation/router/TestRouterAdminCLI.java | 444 +
.../router/TestRouterHeartbeatService.java | 147 +
.../federation/router/TestRouterMountTable.java | 143 +
.../router/TestRouterNamenodeMonitoring.java | 143 +
.../federation/router/TestRouterQuota.java | 452 +
.../router/TestRouterQuotaManager.java | 125 +
.../router/TestRouterRPCClientRetries.java | 160 +
.../server/federation/router/TestRouterRpc.java | 1072 +
.../router/TestRouterRpcMultiDestination.java | 216 +
.../federation/router/TestRouterSafemode.java | 201 +
.../store/FederationStateStoreTestUtils.java | 274 +
.../federation/store/TestStateStoreBase.java | 81 +
.../store/TestStateStoreMembershipState.java | 463 +
.../store/TestStateStoreMountTable.java | 250 +
.../store/TestStateStoreRouterState.java | 195 +
.../store/driver/TestStateStoreDriverBase.java | 613 +
.../store/driver/TestStateStoreFile.java | 76 +
.../store/driver/TestStateStoreFileBase.java | 47 +
.../store/driver/TestStateStoreFileSystem.java | 94 +
.../store/driver/TestStateStoreZK.java | 105 +
.../store/records/TestMembershipState.java | 129 +
.../store/records/TestMountTable.java | 259 +
.../store/records/TestRouterState.java | 85 +
.../snapshot/TestSnapshotDiffReport.java | 25 +-
.../org/apache/hadoop/hdfs/web/TestWebHDFS.java | 6 +-
.../hadoop/hdfs/web/TestWebHdfsTimeouts.java | 6 +-
hadoop-hdfs-project/pom.xml | 1 -
.../org/apache/hadoop/mapred/TestQueue.java | 7 +-
hadoop-project/pom.xml | 7 +-
hadoop-project/src/site/site.xml | 3 +-
.../fs/aliyun/oss/AliyunOSSCopyFileContext.java | 70 -
.../fs/aliyun/oss/AliyunOSSCopyFileTask.java | 65 -
.../fs/aliyun/oss/AliyunOSSFileSystem.java | 51 +-
.../apache/hadoop/fs/aliyun/oss/Constants.java | 16 -
.../oss/TestAliyunOSSFileSystemContract.java | 130 -
.../apache/hadoop/tools/HadoopArchiveLogs.java | 214 +-
.../hadoop/tools/TestHadoopArchiveLogs.java | 82 +-
.../tools/hadoop-aws/committer_architecture.md | 76 +-
.../markdown/tools/hadoop-aws/committers.md | 18 +-
.../markdown/tools/hadoop-aws/encryption.md | 8 +-
.../src/site/markdown/tools/hadoop-aws/index.md | 34 +-
.../site/markdown/tools/hadoop-aws/s3guard.md | 4 +-
.../site/markdown/tools/hadoop-aws/testing.md | 20 +-
.../tools/hadoop-aws/troubleshooting_s3a.md | 2 +-
.../fs/contract/s3a/ITestS3AContractDistCp.java | 17 -
hadoop-tools/hadoop-azure-datalake/pom.xml | 19 -
.../fs/adl/live/TestAdlContractDistCpLive.java | 36 -
.../org/apache/hadoop/tools/CopyListing.java | 3 +-
.../hadoop/tools/CopyListingFileStatus.java | 13 +-
.../apache/hadoop/tools/DistCpConstants.java | 20 +-
.../apache/hadoop/tools/DistCpOptionSwitch.java | 20 +-
.../org/apache/hadoop/tools/DistCpOptions.java | 23 -
.../org/apache/hadoop/tools/OptionsParser.java | 6 -
.../hadoop/tools/mapred/CopyCommitter.java | 219 +-
.../hadoop/tools/mapred/DeletedDirTracker.java | 181 -
.../apache/hadoop/tools/util/DistCpUtils.java | 41 +-
.../contract/AbstractContractDistCpTest.java | 453 +-
.../tools/contract/TestLocalContractDistCp.java | 36 -
.../hadoop/tools/mapred/TestCopyCommitter.java | 165 +-
.../tools/mapred/TestDeletedDirTracker.java | 250 -
.../hadoop/tools/util/TestDistCpUtils.java | 46 +-
.../src/test/resources/contract/localfs.xml | 128 -
.../src/test/resources/log4j.properties | 13 +-
.../api/records/AllocationTagNamespace.java | 336 +
.../api/records/AllocationTagNamespaceType.java | 29 +
.../hadoop/yarn/api/records/AllocationTags.java | 50 +
.../hadoop/yarn/api/records/Evaluable.java | 38 +
.../yarn/api/records/TargetApplications.java | 53 +
.../yarn/api/resource/PlacementConstraints.java | 58 +-
.../hadoop/yarn/conf/YarnConfiguration.java | 5 +-
.../InvalidAllocationTagException.java | 34 +
.../src/main/resources/yarn-default.xml | 4 +-
.../RegisterNodeManagerRequest.java | 5 -
.../pb/RegisterNodeManagerRequestPBImpl.java | 80 -
.../yarn_server_common_service_protos.proto | 1 -
.../hadoop/yarn/server/nodemanager/Context.java | 4 +-
.../nodemanager/LocalDirsHandlerService.java | 7 +-
.../yarn/server/nodemanager/NodeManager.java | 24 -
.../nodemanager/NodeStatusUpdaterImpl.java | 14 -
.../runtime/DockerLinuxContainerRuntime.java | 10 +-
.../logaggregation/AppLogAggregatorImpl.java | 11 +-
.../tracker/NMLogAggregationStatusTracker.java | 270 -
.../TestLinuxContainerExecutorWithMocks.java | 4 +-
.../amrmproxy/BaseAMRMProxyTest.java | 6 -
.../BaseContainerManagerTest.java | 19 -
.../runtime/TestDockerContainerRuntime.java | 98 +-
.../TestNMLogAggregationStatusTracker.java | 151 -
.../resourcemanager/ResourceTrackerService.java | 17 +-
.../resourcemanager/rmnode/RMNodeImpl.java | 6 -
.../rmnode/RMNodeStartedEvent.java | 11 -
.../scheduler/SchedulerApplicationAttempt.java | 15 +-
.../constraint/AllocationTagNamespace.java | 312 -
.../scheduler/constraint/AllocationTags.java | 82 -
.../constraint/AllocationTagsManager.java | 146 +-
.../scheduler/constraint/Evaluable.java | 38 -
.../constraint/PlacementConstraintsUtil.java | 55 +-
.../constraint/TargetApplications.java | 51 -
.../algorithm/LocalAllocationTagsManager.java | 27 +-
.../SingleConstraintAppPlacementAllocator.java | 17 +-
.../security/QueueACLsManager.java | 1 +
.../resourcemanager/webapp/RMWSConsts.java | 8 -
.../webapp/RMWebServiceProtocol.java | 18 -
.../resourcemanager/webapp/RMWebServices.java | 55 +-
.../yarn/server/resourcemanager/MockAM.java | 11 +-
.../rmcontainer/TestRMContainerImpl.java | 47 +-
...estSchedulingRequestContainerAllocation.java | 126 -
.../constraint/TestAllocationTagsManager.java | 272 +-
.../constraint/TestAllocationTagsNamespace.java | 36 +-
.../TestPlacementConstraintsUtil.java | 247 +-
.../TestLocalAllocationTagsManager.java | 33 +-
...stSingleConstraintAppPlacementAllocator.java | 9 +-
.../webapp/TestRMWebServices.java | 84 -
.../webapp/DefaultRequestInterceptorREST.java | 9 -
.../webapp/FederationInterceptorREST.java | 6 -
.../server/router/webapp/RouterWebServices.java | 17 -
.../webapp/MockRESTRequestInterceptor.java | 6 -
.../PassThroughRESTRequestInterceptor.java | 8 -
.../pom.xml | 8 -
.../pom.xml | 4 -
.../storage/reader/ApplicationEntityReader.java | 14 +-
.../reader/FlowActivityEntityReader.java | 4 +-
.../storage/reader/FlowRunEntityReader.java | 7 +-
.../storage/reader/GenericEntityReader.java | 12 +-
.../reader/SubApplicationEntityReader.java | 15 +-
.../storage/reader/TimelineEntityReader.java | 46 +-
.../pom.xml | 4 -
.../src/main/webapp/app/initializers/loader.js | 7 +-
1227 files changed, 37636 insertions(+), 219630 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/BUILDING.txt
----------------------------------------------------------------------
diff --git a/BUILDING.txt b/BUILDING.txt
index f1df194..6c266e5 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -11,8 +11,6 @@ Requirements:
* Zlib devel (if compiling native code)
* openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)
* Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs)
-* Jansson C XML parsing library ( if compiling libwebhdfs )
-* Doxygen ( if compiling libhdfspp and generating the documents )
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* python (for releasedocs)
* bats (for shell code testing)
@@ -350,7 +348,7 @@ Requirements:
* Maven 3.0 or later
* ProtocolBuffer 2.5.0
* CMake 3.1 or newer
-* Visual Studio 2010 Professional or Higher
+* Windows SDK 7.1 or Visual Studio 2010 Professional
* Windows SDK 8.1 (if building CPU rate control for the container executor)
* zlib headers (if building native code bindings for zlib)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
@@ -361,15 +359,18 @@ Requirements:
Unix command-line tools are also included with the Windows Git package which
can be downloaded from http://git-scm.com/downloads
-If using Visual Studio, it must be Professional level or higher.
+If using Visual Studio, it must be Visual Studio 2010 Professional (not 2012).
Do not use Visual Studio Express. It does not support compiling for 64-bit,
-which is problematic if running a 64-bit system.
+which is problematic if running a 64-bit system. The Windows SDK 7.1 is free to
+download here:
+
+http://www.microsoft.com/en-us/download/details.aspx?id=8279
The Windows SDK 8.1 is available to download at:
http://msdn.microsoft.com/en-us/windows/bg162891.aspx
-Cygwin is not required.
+Cygwin is neither required nor supported.
----------------------------------------------------------------------------------
Building:
@@ -377,12 +378,21 @@ Building:
Keep the source code tree in a short path to avoid running into problems related
to Windows maximum path length limitation (for example, C:\hdc).
-There is one support command file located in dev-support called win-paths-eg.cmd.
-It should be copied somewhere convenient and modified to fit your needs.
+Run builds from a Windows SDK Command Prompt. (Start, All Programs,
+Microsoft Windows SDK v7.1, Windows SDK 7.1 Command Prompt).
+
+JAVA_HOME must be set, and the path must not contain spaces. If the full path
+would contain spaces, then use the Windows short path instead.
+
+You must set the Platform environment variable to either x64 or Win32 depending
+on whether you're running a 64-bit or 32-bit system. Note that this is
+case-sensitive. It must be "Platform", not "PLATFORM" or "platform".
+Environment variables on Windows are usually case-insensitive, but Maven treats
+them as case-sensitive. Failure to set this environment variable correctly will
+cause msbuild to fail while building the native code in hadoop-common.
-win-paths-eg.cmd sets up the environment for use. You will need to modify this
-file. It will put all of the required components in the command path,
-configure the bit-ness of the build, and set several optional components.
+set Platform=x64 (when building on a 64-bit system)
+set Platform=Win32 (when building on a 32-bit system)
Several tests require that the user must have the Create Symbolic Links
privilege.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/dev-support/bin/dist-layout-stitching
----------------------------------------------------------------------
diff --git a/dev-support/bin/dist-layout-stitching b/dev-support/bin/dist-layout-stitching
index cff2ce7..c0787be 100755
--- a/dev-support/bin/dist-layout-stitching
+++ b/dev-support/bin/dist-layout-stitching
@@ -128,7 +128,6 @@ run copy "${ROOT}/hadoop-hdfs-project/hadoop-hdfs/target/hadoop-hdfs-${VERSION}"
run copy "${ROOT}/hadoop-hdfs-project/hadoop-hdfs-nfs/target/hadoop-hdfs-nfs-${VERSION}" .
run copy "${ROOT}/hadoop-hdfs-project/hadoop-hdfs-client/target/hadoop-hdfs-client-${VERSION}" .
run copy "${ROOT}/hadoop-hdfs-project/hadoop-hdfs-native-client/target/hadoop-hdfs-native-client-${VERSION}" .
-run copy "${ROOT}/hadoop-hdfs-project/hadoop-hdfs-rbf/target/hadoop-hdfs-rbf-${VERSION}" .
run copy "${ROOT}/hadoop-yarn-project/target/hadoop-yarn-project-${VERSION}" .
run copy "${ROOT}/hadoop-mapreduce-project/target/hadoop-mapreduce-${VERSION}" .
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/dev-support/bin/win-vs-upgrade.cmd
----------------------------------------------------------------------
diff --git a/dev-support/bin/win-vs-upgrade.cmd b/dev-support/bin/win-vs-upgrade.cmd
deleted file mode 100644
index d8c9d73..0000000
--- a/dev-support/bin/win-vs-upgrade.cmd
+++ /dev/null
@@ -1,39 +0,0 @@
-@ECHO OFF
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@WHERE devenv
-IF %ERRORLEVEL% NEQ 0 (
- @ECHO "devenv command was not found. Verify your compiler installation level."
- EXIT /b 1
-)
-
-@REM Need to save output to a file because for loop will just
-@REM loop forever... :(
-
-SET srcdir=%1
-SET workdir=%2
-
-IF EXIST %srcdir%\Backup (
- @ECHO "Solution files already upgraded."
- EXIT /b 0
-)
-
-CD %srcdir%
-DIR /B *.sln > %workdir%\HADOOP-SLN-UPGRADE.TXT
-
-FOR /F %%f IN (%workdir%\HADOOP-SLN-UPGRADE.TXT) DO (
- devenv %%f /upgrade
-)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/dev-support/docker/Dockerfile
----------------------------------------------------------------------
diff --git a/dev-support/docker/Dockerfile b/dev-support/docker/Dockerfile
index 369c606..cefb3dd 100644
--- a/dev-support/docker/Dockerfile
+++ b/dev-support/docker/Dockerfile
@@ -42,7 +42,6 @@ RUN apt-get -q update && apt-get -q install -y \
apt-utils \
build-essential \
bzip2 \
- clang \
curl \
doxygen \
fuse \
@@ -55,7 +54,6 @@ RUN apt-get -q update && apt-get -q install -y \
libfuse-dev \
libprotobuf-dev \
libprotoc-dev \
- libsasl2-dev \
libsnappy-dev \
libssl-dev \
libtool \
@@ -73,7 +71,6 @@ RUN apt-get -q update && apt-get -q install -y \
software-properties-common \
snappy \
sudo \
- valgrind \
zlib1g-dev
#######
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/dev-support/win-paths-eg.cmd
----------------------------------------------------------------------
diff --git a/dev-support/win-paths-eg.cmd b/dev-support/win-paths-eg.cmd
deleted file mode 100644
index f9acae0..0000000
--- a/dev-support/win-paths-eg.cmd
+++ /dev/null
@@ -1,49 +0,0 @@
-@ECHO OFF
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@REM *************************************************
-@REM JDK and these settings MUST MATCH
-@REM
-@REM 64-bit : Platform = x64, VCVARSPLAT = amd64
-@REM
-@REM 32-bit : Platform = Win32, VCVARSPLAT = x86
-@REM
-
-SET Platform=x64
-SET VCVARSPLAT=amd64
-
-@REM ******************
-@REM Forcibly move the Maven local repo
-
-SET MAVEN_OPTS=-Dmaven.repo.local=C:\Tools\m2
-
-@REM *******************************************
-@REM
-@REM Locations of your bits and pieces
-@REM
-@REM NOTE: cmake is assumed to already be on the
-@REM command path
-@REM
-
-SET MAVEN_HOME=C:\Tools\apache-maven-3.5.0
-SET JAVA_HOME=C:\Tools\jdk
-SET MSVS=C:\Program Files (x86)\Microsoft Visual Studio 12.0
-SET PROTO_BIN=C:\Tools\protobuf-2.5.0
-SET GIT_HOME=C:\Program Files\Git
-
-SET PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PROTO_BIN%;%GIT_HOME%\bin;%PATH%
-
-CALL "%MSVS%\VC\vcvarsall.bat" %VCVARSPLAT%
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-annotations/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-annotations/pom.xml b/hadoop-common-project/hadoop-annotations/pom.xml
index 64dde71..4506551 100644
--- a/hadoop-common-project/hadoop-annotations/pom.xml
+++ b/hadoop-common-project/hadoop-annotations/pom.xml
@@ -39,6 +39,21 @@
<profiles>
<profile>
+ <id>jdk1.7</id>
+ <activation>
+ <jdk>1.7</jdk>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>jdk.tools</groupId>
+ <artifactId>jdk.tools</artifactId>
+ <version>1.7</version>
+ <scope>system</scope>
+ <systemPath>${java.home}/../lib/tools.jar</systemPath>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
<id>jdk1.8</id>
<activation>
<jdk>1.8</jdk>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/pom.xml b/hadoop-common-project/hadoop-common/pom.xml
index 1a16dc4..49d3575 100644
--- a/hadoop-common-project/hadoop-common/pom.xml
+++ b/hadoop-common-project/hadoop-common/pom.xml
@@ -839,20 +839,6 @@
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
- <id>convert-ms-winutils</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <executable>${basedir}\..\..\dev-support\bin\win-vs-upgrade.cmd</executable>
- <arguments>
- <argument>${basedir}\src\main\winutils</argument>
- <argument>${project.build.directory}</argument>
- </arguments>
- </configuration>
- </execution>
- <execution>
<id>compile-ms-winutils</id>
<phase>compile</phase>
<goals>
@@ -872,20 +858,6 @@
</configuration>
</execution>
<execution>
- <id>convert-ms-native-dll</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <executable>${basedir}\..\..\dev-support\bin\win-vs-upgrade.cmd</executable>
- <arguments>
- <argument>${basedir}\src\main\native</argument>
- <argument>${project.build.directory}</argument>
- </arguments>
- </configuration>
- </execution>
- <execution>
<id>compile-ms-native-dll</id>
<phase>compile</phase>
<goals>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
index e0a5866..00b4702 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
@@ -816,11 +816,8 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
*/
@SuppressWarnings("unchecked")
public Configuration(Configuration other) {
+ this.resources = (ArrayList<Resource>) other.resources.clone();
synchronized(other) {
- // Make sure we clone a finalized state
- // Resources like input streams can be processed only once
- other.getProps();
- this.resources = (ArrayList<Resource>) other.resources.clone();
if (other.properties != null) {
this.properties = (Properties)other.properties.clone();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ThreadUtil.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ThreadUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ThreadUtil.java
index 2cda8a4..6444428 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ThreadUtil.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ThreadUtil.java
@@ -53,7 +53,8 @@ public class ThreadUtil {
* Convenience method that returns a resource as inputstream from the
* classpath.
* <p>
- * Uses the Thread's context classloader to load resource.
+ * It first attempts to use the Thread's context classloader and if not
+ * set it uses the class' classloader.
*
* @param resourceName resource to retrieve.
*
@@ -67,27 +68,6 @@ public class ThreadUtil {
throw new IOException("Can not read resource file '" + resourceName +
"' because class loader of the current thread is null");
}
- return getResourceAsStream(cl, resourceName);
- }
-
- /**
- * Convenience method that returns a resource as inputstream from the
- * classpath using given classloader.
- * <p>
- *
- * @param cl ClassLoader to be used to retrieve resource.
- * @param resourceName resource to retrieve.
- *
- * @throws IOException thrown if resource cannot be loaded
- * @return inputstream with the resource.
- */
- public static InputStream getResourceAsStream(ClassLoader cl,
- String resourceName)
- throws IOException {
- if (cl == null) {
- throw new IOException("Can not read resource file '" + resourceName +
- "' because given class loader is null");
- }
InputStream is = cl.getResourceAsStream(resourceName);
if (is == null) {
throw new IOException("Can not read resource file '" +
@@ -95,6 +75,4 @@ public class ThreadUtil {
}
return is;
}
-
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[06/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_base.hpp
deleted file mode 100644
index 5412162..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/socket_base.hpp
+++ /dev/null
@@ -1,520 +0,0 @@
-//
-// socket_base.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_SOCKET_BASE_HPP
-#define ASIO_SOCKET_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/io_control.hpp"
-#include "asio/detail/socket_option.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// The socket_base class is used as a base for the basic_stream_socket and
-/// basic_datagram_socket class templates so that we have a common place to
-/// define the shutdown_type and enum.
-class socket_base
-{
-public:
- /// Different ways a socket may be shutdown.
- enum shutdown_type
- {
-#if defined(GENERATING_DOCUMENTATION)
- /// Shutdown the receive side of the socket.
- shutdown_receive = implementation_defined,
-
- /// Shutdown the send side of the socket.
- shutdown_send = implementation_defined,
-
- /// Shutdown both send and receive on the socket.
- shutdown_both = implementation_defined
-#else
- shutdown_receive = ASIO_OS_DEF(SHUT_RD),
- shutdown_send = ASIO_OS_DEF(SHUT_WR),
- shutdown_both = ASIO_OS_DEF(SHUT_RDWR)
-#endif
- };
-
- /// Bitmask type for flags that can be passed to send and receive operations.
- typedef int message_flags;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// Peek at incoming data without removing it from the input queue.
- static const int message_peek = implementation_defined;
-
- /// Process out-of-band data.
- static const int message_out_of_band = implementation_defined;
-
- /// Specify that the data should not be subject to routing.
- static const int message_do_not_route = implementation_defined;
-
- /// Specifies that the data marks the end of a record.
- static const int message_end_of_record = implementation_defined;
-#else
- ASIO_STATIC_CONSTANT(int,
- message_peek = ASIO_OS_DEF(MSG_PEEK));
- ASIO_STATIC_CONSTANT(int,
- message_out_of_band = ASIO_OS_DEF(MSG_OOB));
- ASIO_STATIC_CONSTANT(int,
- message_do_not_route = ASIO_OS_DEF(MSG_DONTROUTE));
- ASIO_STATIC_CONSTANT(int,
- message_end_of_record = ASIO_OS_DEF(MSG_EOR));
-#endif
-
- /// Socket option to permit sending of broadcast messages.
- /**
- * Implements the SOL_SOCKET/SO_BROADCAST socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::socket_base::broadcast option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::socket_base::broadcast option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined broadcast;
-#else
- typedef asio::detail::socket_option::boolean<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_BROADCAST)>
- broadcast;
-#endif
-
- /// Socket option to enable socket-level debugging.
- /**
- * Implements the SOL_SOCKET/SO_DEBUG socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::debug option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::debug option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined debug;
-#else
- typedef asio::detail::socket_option::boolean<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_DEBUG)> debug;
-#endif
-
- /// Socket option to prevent routing, use local interfaces only.
- /**
- * Implements the SOL_SOCKET/SO_DONTROUTE socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::socket_base::do_not_route option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service);
- * ...
- * asio::socket_base::do_not_route option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined do_not_route;
-#else
- typedef asio::detail::socket_option::boolean<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_DONTROUTE)>
- do_not_route;
-#endif
-
- /// Socket option to send keep-alives.
- /**
- * Implements the SOL_SOCKET/SO_KEEPALIVE socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::keep_alive option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::keep_alive option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined keep_alive;
-#else
- typedef asio::detail::socket_option::boolean<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_KEEPALIVE)> keep_alive;
-#endif
-
- /// Socket option for the send buffer size of a socket.
- /**
- * Implements the SOL_SOCKET/SO_SNDBUF socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::send_buffer_size option(8192);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::send_buffer_size option;
- * socket.get_option(option);
- * int size = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Integer_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined send_buffer_size;
-#else
- typedef asio::detail::socket_option::integer<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_SNDBUF)>
- send_buffer_size;
-#endif
-
- /// Socket option for the send low watermark.
- /**
- * Implements the SOL_SOCKET/SO_SNDLOWAT socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::send_low_watermark option(1024);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::send_low_watermark option;
- * socket.get_option(option);
- * int size = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Integer_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined send_low_watermark;
-#else
- typedef asio::detail::socket_option::integer<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_SNDLOWAT)>
- send_low_watermark;
-#endif
-
- /// Socket option for the receive buffer size of a socket.
- /**
- * Implements the SOL_SOCKET/SO_RCVBUF socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::receive_buffer_size option(8192);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::receive_buffer_size option;
- * socket.get_option(option);
- * int size = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Integer_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined receive_buffer_size;
-#else
- typedef asio::detail::socket_option::integer<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_RCVBUF)>
- receive_buffer_size;
-#endif
-
- /// Socket option for the receive low watermark.
- /**
- * Implements the SOL_SOCKET/SO_RCVLOWAT socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::receive_low_watermark option(1024);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::receive_low_watermark option;
- * socket.get_option(option);
- * int size = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Integer_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined receive_low_watermark;
-#else
- typedef asio::detail::socket_option::integer<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_RCVLOWAT)>
- receive_low_watermark;
-#endif
-
- /// Socket option to allow the socket to be bound to an address that is
- /// already in use.
- /**
- * Implements the SOL_SOCKET/SO_REUSEADDR socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::socket_base::reuse_address option(true);
- * acceptor.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::socket_base::reuse_address option;
- * acceptor.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined reuse_address;
-#else
- typedef asio::detail::socket_option::boolean<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_REUSEADDR)>
- reuse_address;
-#endif
-
- /// Socket option to specify whether the socket lingers on close if unsent
- /// data is present.
- /**
- * Implements the SOL_SOCKET/SO_LINGER socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::linger option(true, 30);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::linger option;
- * socket.get_option(option);
- * bool is_set = option.enabled();
- * unsigned short timeout = option.timeout();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Linger_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined linger;
-#else
- typedef asio::detail::socket_option::linger<
- ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_LINGER)>
- linger;
-#endif
-
- /// Socket option to report aborted connections on accept.
- /**
- * Implements a custom socket option that determines whether or not an accept
- * operation is permitted to fail with asio::error::connection_aborted.
- * By default the option is false.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::socket_base::enable_connection_aborted option(true);
- * acceptor.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * ...
- * asio::socket_base::enable_connection_aborted option;
- * acceptor.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * Socket_Option, Boolean_Socket_Option.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined enable_connection_aborted;
-#else
- typedef asio::detail::socket_option::boolean<
- asio::detail::custom_socket_option_level,
- asio::detail::enable_connection_aborted_option>
- enable_connection_aborted;
-#endif
-
- /// (Deprecated: Use non_blocking().) IO control command to
- /// set the blocking mode of the socket.
- /**
- * Implements the FIONBIO IO control command.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::non_blocking_io command(true);
- * socket.io_control(command);
- * @endcode
- *
- * @par Concepts:
- * IO_Control_Command, Boolean_IO_Control_Command.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined non_blocking_io;
-#else
- typedef asio::detail::io_control::non_blocking_io non_blocking_io;
-#endif
-
- /// IO control command to get the amount of data that can be read without
- /// blocking.
- /**
- * Implements the FIONREAD IO control command.
- *
- * @par Example
- * @code
- * asio::ip::tcp::socket socket(io_service);
- * ...
- * asio::socket_base::bytes_readable command(true);
- * socket.io_control(command);
- * std::size_t bytes_readable = command.get();
- * @endcode
- *
- * @par Concepts:
- * IO_Control_Command, Size_IO_Control_Command.
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined bytes_readable;
-#else
- typedef asio::detail::io_control::bytes_readable bytes_readable;
-#endif
-
- /// The maximum length of the queue of pending incoming connections.
-#if defined(GENERATING_DOCUMENTATION)
- static const int max_connections = implementation_defined;
-#else
- ASIO_STATIC_CONSTANT(int, max_connections
- = ASIO_OS_DEF(SOMAXCONN));
-#endif
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~socket_base()
- {
- }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SOCKET_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/spawn.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/spawn.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/spawn.hpp
deleted file mode 100644
index 078ef88..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/spawn.hpp
+++ /dev/null
@@ -1,265 +0,0 @@
-//
-// spawn.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_SPAWN_HPP
-#define ASIO_SPAWN_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <boost/coroutine/all.hpp>
-#include "asio/detail/weak_ptr.hpp"
-#include "asio/detail/wrapped_handler.hpp"
-#include "asio/io_service.hpp"
-#include "asio/strand.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Context object the represents the currently executing coroutine.
-/**
- * The basic_yield_context class is used to represent the currently executing
- * stackful coroutine. A basic_yield_context may be passed as a handler to an
- * asynchronous operation. For example:
- *
- * @code template <typename Handler>
- * void my_coroutine(basic_yield_context<Handler> yield)
- * {
- * ...
- * std::size_t n = my_socket.async_read_some(buffer, yield);
- * ...
- * } @endcode
- *
- * The initiating function (async_read_some in the above example) suspends the
- * current coroutine. The coroutine is resumed when the asynchronous operation
- * completes, and the result of the operation is returned.
- */
-template <typename Handler>
-class basic_yield_context
-{
-public:
- /// The coroutine callee type, used by the implementation.
- /**
- * When using Boost.Coroutine v1, this type is:
- * @code typename coroutine<void()> @endcode
- * When using Boost.Coroutine v2 (unidirectional coroutines), this type is:
- * @code push_coroutine<void> @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined callee_type;
-#elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2)
- typedef boost::coroutines::push_coroutine<void> callee_type;
-#else
- typedef boost::coroutines::coroutine<void()> callee_type;
-#endif
-
- /// The coroutine caller type, used by the implementation.
- /**
- * When using Boost.Coroutine v1, this type is:
- * @code typename coroutine<void()>::caller_type @endcode
- * When using Boost.Coroutine v2 (unidirectional coroutines), this type is:
- * @code pull_coroutine<void> @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
- typedef implementation_defined caller_type;
-#elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2)
- typedef boost::coroutines::pull_coroutine<void> caller_type;
-#else
- typedef boost::coroutines::coroutine<void()>::caller_type caller_type;
-#endif
-
- /// Construct a yield context to represent the specified coroutine.
- /**
- * Most applications do not need to use this constructor. Instead, the
- * spawn() function passes a yield context as an argument to the coroutine
- * function.
- */
- basic_yield_context(
- const detail::weak_ptr<callee_type>& coro,
- caller_type& ca, Handler& handler)
- : coro_(coro),
- ca_(ca),
- handler_(handler),
- ec_(0)
- {
- }
-
- /// Return a yield context that sets the specified error_code.
- /**
- * By default, when a yield context is used with an asynchronous operation, a
- * non-success error_code is converted to system_error and thrown. This
- * operator may be used to specify an error_code object that should instead be
- * set with the asynchronous operation's result. For example:
- *
- * @code template <typename Handler>
- * void my_coroutine(basic_yield_context<Handler> yield)
- * {
- * ...
- * std::size_t n = my_socket.async_read_some(buffer, yield[ec]);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * ...
- * } @endcode
- */
- basic_yield_context operator[](asio::error_code& ec) const
- {
- basic_yield_context tmp(*this);
- tmp.ec_ = &ec;
- return tmp;
- }
-
-#if defined(GENERATING_DOCUMENTATION)
-private:
-#endif // defined(GENERATING_DOCUMENTATION)
- detail::weak_ptr<callee_type> coro_;
- caller_type& ca_;
- Handler& handler_;
- asio::error_code* ec_;
-};
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Context object that represents the currently executing coroutine.
-typedef basic_yield_context<unspecified> yield_context;
-#else // defined(GENERATING_DOCUMENTATION)
-typedef basic_yield_context<
- detail::wrapped_handler<
- io_service::strand, void(*)(),
- detail::is_continuation_if_running> > yield_context;
-#endif // defined(GENERATING_DOCUMENTATION)
-
-/**
- * @defgroup spawn asio::spawn
- *
- * @brief Start a new stackful coroutine.
- *
- * The spawn() function is a high-level wrapper over the Boost.Coroutine
- * library. This function enables programs to implement asynchronous logic in a
- * synchronous manner, as illustrated by the following example:
- *
- * @code asio::spawn(my_strand, do_echo);
- *
- * // ...
- *
- * void do_echo(asio::yield_context yield)
- * {
- * try
- * {
- * char data[128];
- * for (;;)
- * {
- * std::size_t length =
- * my_socket.async_read_some(
- * asio::buffer(data), yield);
- *
- * asio::async_write(my_socket,
- * asio::buffer(data, length), yield);
- * }
- * }
- * catch (std::exception& e)
- * {
- * // ...
- * }
- * } @endcode
- */
-/*@{*/
-
-/// Start a new stackful coroutine, calling the specified handler when it
-/// completes.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param handler A handler to be called when the coroutine exits. More
- * importantly, the handler provides an execution context (via the the handler
- * invocation hook) for the coroutine. The handler must have the signature:
- * @code void handler(); @endcode
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(basic_yield_context<Handler> yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Handler, typename Function>
-void spawn(ASIO_MOVE_ARG(Handler) handler,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes
- = boost::coroutines::attributes());
-
-/// Start a new stackful coroutine, inheriting the execution context of another.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param ctx Identifies the current coroutine as a parent of the new
- * coroutine. This specifies that the new coroutine should inherit the
- * execution context of the parent. For example, if the parent coroutine is
- * executing in a particular strand, then the new coroutine will execute in the
- * same strand.
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(basic_yield_context<Handler> yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Handler, typename Function>
-void spawn(basic_yield_context<Handler> ctx,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes
- = boost::coroutines::attributes());
-
-/// Start a new stackful coroutine that executes in the context of a strand.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param strand Identifies a strand. By starting multiple coroutines on the
- * same strand, the implementation ensures that none of those coroutines can
- * execute simultaneously.
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(yield_context yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Function>
-void spawn(asio::io_service::strand strand,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes
- = boost::coroutines::attributes());
-
-/// Start a new stackful coroutine that executes on a given io_service.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param io_service Identifies the io_service that will run the coroutine. The
- * new coroutine is implicitly given its own strand within this io_service.
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(yield_context yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Function>
-void spawn(asio::io_service& io_service,
- ASIO_MOVE_ARG(Function) function,
- const boost::coroutines::attributes& attributes
- = boost::coroutines::attributes());
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/spawn.hpp"
-
-#endif // ASIO_SPAWN_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl.hpp
deleted file mode 100644
index 06102fc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// ssl.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_HPP
-#define ASIO_SSL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/ssl/basic_context.hpp"
-#include "asio/ssl/context.hpp"
-#include "asio/ssl/context_base.hpp"
-#include "asio/ssl/context_service.hpp"
-#include "asio/ssl/error.hpp"
-#include "asio/ssl/rfc2818_verification.hpp"
-#include "asio/ssl/stream.hpp"
-#include "asio/ssl/stream_base.hpp"
-#include "asio/ssl/stream_service.hpp"
-#include "asio/ssl/verify_context.hpp"
-#include "asio/ssl/verify_mode.hpp"
-
-#endif // ASIO_SSL_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/basic_context.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/basic_context.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/basic_context.hpp
deleted file mode 100644
index 17d5380..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/basic_context.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// ssl/basic_context.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_BASIC_CONTEXT_HPP
-#define ASIO_SSL_BASIC_CONTEXT_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 "asio/ssl/old/basic_context.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::basic_context;
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_BASIC_CONTEXT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context.hpp
deleted file mode 100644
index 87a01e7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context.hpp
+++ /dev/null
@@ -1,787 +0,0 @@
-//
-// ssl/context.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_CONTEXT_HPP
-#define ASIO_SSL_CONTEXT_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 "asio/ssl/basic_context.hpp"
-# include "asio/ssl/context_service.hpp"
-#else // defined(ASIO_ENABLE_OLD_SSL)
-# include <string>
-# include "asio/buffer.hpp"
-# include "asio/io_service.hpp"
-# include "asio/ssl/context_base.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-# include "asio/ssl/detail/openssl_init.hpp"
-# include "asio/ssl/detail/password_callback.hpp"
-# include "asio/ssl/detail/verify_callback.hpp"
-# include "asio/ssl/verify_mode.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-/// Typedef for the typical usage of context.
-typedef basic_context<context_service> context;
-
-#else // defined(ASIO_ENABLE_OLD_SSL)
-
-class context
- : public context_base,
- private noncopyable
-{
-public:
- /// The native handle type of the SSL context.
- typedef SSL_CTX* native_handle_type;
-
- /// (Deprecated: Use native_handle_type.) The native type of the SSL context.
- typedef SSL_CTX* impl_type;
-
- /// Constructor.
- ASIO_DECL explicit context(method m);
-
- /// Deprecated constructor taking a reference to an io_service object.
- ASIO_DECL context(asio::io_service&, method m);
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
- /// Move-construct a context from another.
- /**
- * This constructor moves an SSL context from one object to another.
- *
- * @param other The other context object from which the move will occur.
- *
- * @note Following the move, the following operations only are valid for the
- * moved-from object:
- * @li Destruction.
- * @li As a target for move-assignment.
- */
- ASIO_DECL context(context&& other);
-
- /// Move-assign a context from another.
- /**
- * This assignment operator moves an SSL context from one object to another.
- *
- * @param other The other context object from which the move will occur.
- *
- * @note Following the move, the following operations only are valid for the
- * moved-from object:
- * @li Destruction.
- * @li As a target for move-assignment.
- */
- ASIO_DECL context& operator=(context&& other);
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
- /// Destructor.
- ASIO_DECL ~context();
-
- /// 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 context functionality that is
- * not otherwise provided.
- */
- ASIO_DECL native_handle_type native_handle();
-
- /// (Deprecated: Use native_handle().) 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 context functionality that is
- * not otherwise provided.
- */
- ASIO_DECL impl_type impl();
-
- /// Clear options on the context.
- /**
- * This function may be used to configure the SSL options used by the context.
- *
- * @param o A bitmask of options. The available option values are defined in
- * the context_base class. The specified options, if currently enabled on the
- * context, are cleared.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_clear_options.
- */
- ASIO_DECL void clear_options(options o);
-
- /// Clear options on the context.
- /**
- * This function may be used to configure the SSL options used by the context.
- *
- * @param o A bitmask of options. The available option values are defined in
- * the context_base class. The specified options, if currently enabled on the
- * context, are cleared.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_clear_options.
- */
- ASIO_DECL asio::error_code clear_options(options o,
- asio::error_code& ec);
-
- /// Set options on the context.
- /**
- * This function may be used to configure the SSL options used by the context.
- *
- * @param o A bitmask of options. The available option values are defined in
- * the context_base class. The options are bitwise-ored with any existing
- * value for the options.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_options.
- */
- ASIO_DECL void set_options(options o);
-
- /// Set options on the context.
- /**
- * This function may be used to configure the SSL options used by the context.
- *
- * @param o A bitmask of options. The available option values are defined in
- * the context_base class. The options are bitwise-ored with any existing
- * value for the options.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_options.
- */
- ASIO_DECL asio::error_code set_options(options o,
- asio::error_code& ec);
-
- /// Set the peer verification mode.
- /**
- * This function may be used to configure the peer verification mode used by
- * the context.
- *
- * @param v A bitmask of peer verification modes. See @ref verify_mode for
- * available values.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_verify.
- */
- ASIO_DECL void set_verify_mode(verify_mode v);
-
- /// Set the peer verification mode.
- /**
- * This function may be used to configure the peer verification mode used by
- * the context.
- *
- * @param v A bitmask of peer verification modes. See @ref verify_mode for
- * available values.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_verify.
- */
- ASIO_DECL asio::error_code set_verify_mode(
- verify_mode v, asio::error_code& ec);
-
- /// Set the peer verification depth.
- /**
- * This function may be used to configure the maximum verification depth
- * allowed by the context.
- *
- * @param depth Maximum depth for the certificate chain verification that
- * shall be allowed.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_verify_depth.
- */
- ASIO_DECL void set_verify_depth(int depth);
-
- /// Set the peer verification depth.
- /**
- * This function may be used to configure the maximum verification depth
- * allowed by the context.
- *
- * @param depth Maximum depth for the certificate chain verification that
- * shall be allowed.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_verify_depth.
- */
- ASIO_DECL asio::error_code set_verify_depth(
- int depth, asio::error_code& ec);
-
- /// Set the callback used to verify peer certificates.
- /**
- * This function is used to specify a callback function that will be called
- * by the implementation when it needs to verify a peer certificate.
- *
- * @param callback The function object to be used for verifying a certificate.
- * The function signature of the handler must be:
- * @code bool verify_callback(
- * bool preverified, // True if the certificate passed pre-verification.
- * verify_context& ctx // The peer certificate and other context.
- * ); @endcode
- * The return value of the callback is true if the certificate has passed
- * verification, false otherwise.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_verify.
- */
- template <typename VerifyCallback>
- void set_verify_callback(VerifyCallback callback);
-
- /// Set the callback used to verify peer certificates.
- /**
- * This function is used to specify a callback function that will be called
- * by the implementation when it needs to verify a peer certificate.
- *
- * @param callback The function object to be used for verifying a certificate.
- * The function signature of the handler must be:
- * @code bool verify_callback(
- * bool preverified, // True if the certificate passed pre-verification.
- * verify_context& ctx // The peer certificate and other context.
- * ); @endcode
- * The return value of the callback is true if the certificate has passed
- * verification, false otherwise.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_verify.
- */
- template <typename VerifyCallback>
- asio::error_code set_verify_callback(VerifyCallback callback,
- asio::error_code& ec);
-
- /// Load a certification authority file for performing verification.
- /**
- * This function is used to load one or more trusted certification authorities
- * from a file.
- *
- * @param filename The name of a file containing certification authority
- * certificates in PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_load_verify_locations.
- */
- ASIO_DECL void load_verify_file(const std::string& filename);
-
- /// Load a certification authority file for performing verification.
- /**
- * This function is used to load the certificates for one or more trusted
- * certification authorities from a file.
- *
- * @param filename The name of a file containing certification authority
- * certificates in PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_load_verify_locations.
- */
- ASIO_DECL asio::error_code load_verify_file(
- const std::string& filename, asio::error_code& ec);
-
- /// Add certification authority for performing verification.
- /**
- * This function is used to add one trusted certification authority
- * from a memory buffer.
- *
- * @param ca The buffer containing the certification authority certificate.
- * The certificate must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_get_cert_store and @c X509_STORE_add_cert.
- */
- ASIO_DECL void add_certificate_authority(const const_buffer& ca);
-
- /// Add certification authority for performing verification.
- /**
- * This function is used to add one trusted certification authority
- * from a memory buffer.
- *
- * @param ca The buffer containing the certification authority certificate.
- * The certificate must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_get_cert_store and @c X509_STORE_add_cert.
- */
- ASIO_DECL asio::error_code add_certificate_authority(
- const const_buffer& ca, asio::error_code& ec);
-
- /// Configures the context to use the default directories for finding
- /// certification authority certificates.
- /**
- * This function specifies that the context should use the default,
- * system-dependent directories for locating certification authority
- * certificates.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_default_verify_paths.
- */
- ASIO_DECL void set_default_verify_paths();
-
- /// Configures the context to use the default directories for finding
- /// certification authority certificates.
- /**
- * This function specifies that the context should use the default,
- * system-dependent directories for locating certification authority
- * certificates.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_default_verify_paths.
- */
- ASIO_DECL asio::error_code set_default_verify_paths(
- asio::error_code& ec);
-
- /// Add a directory containing certificate authority files to be used for
- /// performing verification.
- /**
- * This function is used to specify the name of a directory containing
- * certification authority certificates. Each file in the directory must
- * contain a single certificate. The files must be named using the subject
- * name's hash and an extension of ".0".
- *
- * @param path The name of a directory containing the certificates.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_load_verify_locations.
- */
- ASIO_DECL void add_verify_path(const std::string& path);
-
- /// Add a directory containing certificate authority files to be used for
- /// performing verification.
- /**
- * This function is used to specify the name of a directory containing
- * certification authority certificates. Each file in the directory must
- * contain a single certificate. The files must be named using the subject
- * name's hash and an extension of ".0".
- *
- * @param path The name of a directory containing the certificates.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_load_verify_locations.
- */
- ASIO_DECL asio::error_code add_verify_path(
- const std::string& path, asio::error_code& ec);
-
- /// Use a certificate from a memory buffer.
- /**
- * This function is used to load a certificate into the context from a buffer.
- *
- * @param certificate The buffer containing the certificate.
- *
- * @param format The certificate format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_certificate or SSL_CTX_use_certificate_ASN1.
- */
- ASIO_DECL void use_certificate(
- const const_buffer& certificate, file_format format);
-
- /// Use a certificate from a memory buffer.
- /**
- * This function is used to load a certificate into the context from a buffer.
- *
- * @param certificate The buffer containing the certificate.
- *
- * @param format The certificate format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_certificate or SSL_CTX_use_certificate_ASN1.
- */
- ASIO_DECL asio::error_code use_certificate(
- const const_buffer& certificate, file_format format,
- asio::error_code& ec);
-
- /// Use a certificate from a file.
- /**
- * This function is used to load a certificate into the context from a file.
- *
- * @param filename The name of the file containing the certificate.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_certificate_file.
- */
- ASIO_DECL void use_certificate_file(
- const std::string& filename, file_format format);
-
- /// Use a certificate from a file.
- /**
- * This function is used to load a certificate into the context from a file.
- *
- * @param filename The name of the file containing the certificate.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_certificate_file.
- */
- ASIO_DECL asio::error_code use_certificate_file(
- const std::string& filename, file_format format,
- asio::error_code& ec);
-
- /// Use a certificate chain from a memory buffer.
- /**
- * This function is used to load a certificate chain into the context from a
- * buffer.
- *
- * @param chain The buffer containing the certificate chain. The certificate
- * chain must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_certificate and SSL_CTX_add_extra_chain_cert.
- */
- ASIO_DECL void use_certificate_chain(const const_buffer& chain);
-
- /// Use a certificate chain from a memory buffer.
- /**
- * This function is used to load a certificate chain into the context from a
- * buffer.
- *
- * @param chain The buffer containing the certificate chain. The certificate
- * chain must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_certificate and SSL_CTX_add_extra_chain_cert.
- */
- ASIO_DECL asio::error_code use_certificate_chain(
- const const_buffer& chain, asio::error_code& ec);
-
- /// Use a certificate chain from a file.
- /**
- * This function is used to load a certificate chain into the context from a
- * file.
- *
- * @param filename The name of the file containing the certificate. The file
- * must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_certificate_chain_file.
- */
- ASIO_DECL void use_certificate_chain_file(const std::string& filename);
-
- /// Use a certificate chain from a file.
- /**
- * This function is used to load a certificate chain into the context from a
- * file.
- *
- * @param filename The name of the file containing the certificate. The file
- * must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_certificate_chain_file.
- */
- ASIO_DECL asio::error_code use_certificate_chain_file(
- const std::string& filename, asio::error_code& ec);
-
- /// Use a private key from a memory buffer.
- /**
- * This function is used to load a private key into the context from a buffer.
- *
- * @param private_key The buffer containing the private key.
- *
- * @param format The private key format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_PrivateKey or SSL_CTX_use_PrivateKey_ASN1.
- */
- ASIO_DECL void use_private_key(
- const const_buffer& private_key, file_format format);
-
- /// Use a private key from a memory buffer.
- /**
- * This function is used to load a private key into the context from a buffer.
- *
- * @param private_key The buffer containing the private key.
- *
- * @param format The private key format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_PrivateKey or SSL_CTX_use_PrivateKey_ASN1.
- */
- ASIO_DECL asio::error_code use_private_key(
- const const_buffer& private_key, file_format format,
- asio::error_code& ec);
-
- /// Use a private key from a file.
- /**
- * This function is used to load a private key into the context from a file.
- *
- * @param filename The name of the file containing the private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_PrivateKey_file.
- */
- ASIO_DECL void use_private_key_file(
- const std::string& filename, file_format format);
-
- /// Use a private key from a file.
- /**
- * This function is used to load a private key into the context from a file.
- *
- * @param filename The name of the file containing the private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_PrivateKey_file.
- */
- ASIO_DECL asio::error_code use_private_key_file(
- const std::string& filename, file_format format,
- asio::error_code& ec);
-
- /// Use an RSA private key from a memory buffer.
- /**
- * This function is used to load an RSA private key into the context from a
- * buffer.
- *
- * @param private_key The buffer containing the RSA private key.
- *
- * @param format The private key format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_RSAPrivateKey or SSL_CTX_use_RSAPrivateKey_ASN1.
- */
- ASIO_DECL void use_rsa_private_key(
- const const_buffer& private_key, file_format format);
-
- /// Use an RSA private key from a memory buffer.
- /**
- * This function is used to load an RSA private key into the context from a
- * buffer.
- *
- * @param private_key The buffer containing the RSA private key.
- *
- * @param format The private key format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_RSAPrivateKey or SSL_CTX_use_RSAPrivateKey_ASN1.
- */
- ASIO_DECL asio::error_code use_rsa_private_key(
- const const_buffer& private_key, file_format format,
- asio::error_code& ec);
-
- /// Use an RSA private key from a file.
- /**
- * This function is used to load an RSA private key into the context from a
- * file.
- *
- * @param filename The name of the file containing the RSA private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_use_RSAPrivateKey_file.
- */
- ASIO_DECL void use_rsa_private_key_file(
- const std::string& filename, file_format format);
-
- /// Use an RSA private key from a file.
- /**
- * This function is used to load an RSA private key into the context from a
- * file.
- *
- * @param filename The name of the file containing the RSA private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_use_RSAPrivateKey_file.
- */
- ASIO_DECL asio::error_code use_rsa_private_key_file(
- const std::string& filename, file_format format,
- asio::error_code& ec);
-
- /// Use the specified memory buffer to obtain the temporary Diffie-Hellman
- /// parameters.
- /**
- * This function is used to load Diffie-Hellman parameters into the context
- * from a buffer.
- *
- * @param dh The memory buffer containing the Diffie-Hellman parameters. The
- * buffer must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_tmp_dh.
- */
- ASIO_DECL void use_tmp_dh(const const_buffer& dh);
-
- /// Use the specified memory buffer to obtain the temporary Diffie-Hellman
- /// parameters.
- /**
- * This function is used to load Diffie-Hellman parameters into the context
- * from a buffer.
- *
- * @param dh The memory buffer containing the Diffie-Hellman parameters. The
- * buffer must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_tmp_dh.
- */
- ASIO_DECL asio::error_code use_tmp_dh(
- const const_buffer& dh, asio::error_code& ec);
-
- /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
- /**
- * This function is used to load Diffie-Hellman parameters into the context
- * from a file.
- *
- * @param filename The name of the file containing the Diffie-Hellman
- * parameters. The file must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_tmp_dh.
- */
- ASIO_DECL void use_tmp_dh_file(const std::string& filename);
-
- /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
- /**
- * This function is used to load Diffie-Hellman parameters into the context
- * from a file.
- *
- * @param filename The name of the file containing the Diffie-Hellman
- * parameters. The file must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_tmp_dh.
- */
- ASIO_DECL asio::error_code use_tmp_dh_file(
- const std::string& filename, asio::error_code& ec);
-
- /// Set the password callback.
- /**
- * This function is used to specify a callback function to obtain password
- * information about an encrypted key in PEM format.
- *
- * @param callback The function object to be used for obtaining the password.
- * The function signature of the handler must be:
- * @code std::string password_callback(
- * std::size_t max_length, // The maximum size for a password.
- * password_purpose purpose // Whether password is for reading or writing.
- * ); @endcode
- * The return value of the callback is a string containing the password.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note Calls @c SSL_CTX_set_default_passwd_cb.
- */
- template <typename PasswordCallback>
- void set_password_callback(PasswordCallback callback);
-
- /// Set the password callback.
- /**
- * This function is used to specify a callback function to obtain password
- * information about an encrypted key in PEM format.
- *
- * @param callback The function object to be used for obtaining the password.
- * The function signature of the handler must be:
- * @code std::string password_callback(
- * std::size_t max_length, // The maximum size for a password.
- * password_purpose purpose // Whether password is for reading or writing.
- * ); @endcode
- * The return value of the callback is a string containing the password.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @note Calls @c SSL_CTX_set_default_passwd_cb.
- */
- template <typename PasswordCallback>
- asio::error_code set_password_callback(PasswordCallback callback,
- asio::error_code& ec);
-
-private:
- struct bio_cleanup;
- struct x509_cleanup;
- struct evp_pkey_cleanup;
- struct rsa_cleanup;
- struct dh_cleanup;
-
- // Helper function used to set a peer certificate verification callback.
- ASIO_DECL asio::error_code do_set_verify_callback(
- detail::verify_callback_base* callback, asio::error_code& ec);
-
- // Callback used when the SSL implementation wants to verify a certificate.
- ASIO_DECL static int verify_callback_function(
- int preverified, X509_STORE_CTX* ctx);
-
- // Helper function used to set a password callback.
- ASIO_DECL asio::error_code do_set_password_callback(
- detail::password_callback_base* callback, asio::error_code& ec);
-
- // Callback used when the SSL implementation wants a password.
- ASIO_DECL static int password_callback_function(
- char* buf, int size, int purpose, void* data);
-
- // Helper function to set the temporary Diffie-Hellman parameters from a BIO.
- ASIO_DECL asio::error_code do_use_tmp_dh(
- BIO* bio, asio::error_code& ec);
-
- // Helper function to make a BIO from a memory buffer.
- ASIO_DECL BIO* make_buffer_bio(const const_buffer& b);
-
- // The underlying native implementation.
- native_handle_type handle_;
-
- // Ensure openssl is initialised.
- asio::ssl::detail::openssl_init<> init_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ssl/impl/context.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/impl/context.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_CONTEXT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_base.hpp
deleted file mode 100644
index 3fc400e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_base.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// ssl/context_base.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_CONTEXT_BASE_HPP
-#define ASIO_SSL_CONTEXT_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-/// The context_base class is used as a base for the basic_context class
-/// template so that we have a common place to define various enums.
-class context_base
-{
-public:
- /// Different methods supported by a context.
- enum method
- {
- /// Generic SSL version 2.
- sslv2,
-
- /// SSL version 2 client.
- sslv2_client,
-
- /// SSL version 2 server.
- sslv2_server,
-
- /// Generic SSL version 3.
- sslv3,
-
- /// SSL version 3 client.
- sslv3_client,
-
- /// SSL version 3 server.
- sslv3_server,
-
- /// Generic TLS version 1.
- tlsv1,
-
- /// TLS version 1 client.
- tlsv1_client,
-
- /// TLS version 1 server.
- tlsv1_server,
-
- /// Generic SSL/TLS.
- sslv23,
-
- /// SSL/TLS client.
- sslv23_client,
-
- /// SSL/TLS server.
- sslv23_server,
-
- /// Generic TLS version 1.1.
- tlsv11,
-
- /// TLS version 1.1 client.
- tlsv11_client,
-
- /// TLS version 1.1 server.
- tlsv11_server,
-
- /// Generic TLS version 1.2.
- tlsv12,
-
- /// TLS version 1.2 client.
- tlsv12_client,
-
- /// TLS version 1.2 server.
- tlsv12_server
- };
-
- /// Bitmask type for SSL options.
- typedef long options;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// Implement various bug workarounds.
- static const long default_workarounds = implementation_defined;
-
- /// Always create a new key when using tmp_dh parameters.
- static const long single_dh_use = implementation_defined;
-
- /// Disable SSL v2.
- static const long no_sslv2 = implementation_defined;
-
- /// Disable SSL v3.
- static const long no_sslv3 = implementation_defined;
-
- /// Disable TLS v1.
- static const long no_tlsv1 = implementation_defined;
-
- /// Disable compression. Compression is disabled by default.
- static const long no_compression = implementation_defined;
-#else
- ASIO_STATIC_CONSTANT(long, default_workarounds = SSL_OP_ALL);
- ASIO_STATIC_CONSTANT(long, single_dh_use = SSL_OP_SINGLE_DH_USE);
- ASIO_STATIC_CONSTANT(long, no_sslv2 = SSL_OP_NO_SSLv2);
- ASIO_STATIC_CONSTANT(long, no_sslv3 = SSL_OP_NO_SSLv3);
- ASIO_STATIC_CONSTANT(long, no_tlsv1 = SSL_OP_NO_TLSv1);
-# if defined(SSL_OP_NO_COMPRESSION)
- ASIO_STATIC_CONSTANT(long, no_compression = SSL_OP_NO_COMPRESSION);
-# else // defined(SSL_OP_NO_COMPRESSION)
- ASIO_STATIC_CONSTANT(long, no_compression = 0x20000L);
-# endif // defined(SSL_OP_NO_COMPRESSION)
-#endif
-
- /// File format types.
- enum file_format
- {
- /// ASN.1 file.
- asn1,
-
- /// PEM file.
- pem
- };
-
-#if !defined(GENERATING_DOCUMENTATION)
- // The following types and constants are preserved for backward compatibility.
- // New programs should use the equivalents of the same names that are defined
- // in the asio::ssl namespace.
- typedef int verify_mode;
- ASIO_STATIC_CONSTANT(int, verify_none = SSL_VERIFY_NONE);
- ASIO_STATIC_CONSTANT(int, verify_peer = SSL_VERIFY_PEER);
- ASIO_STATIC_CONSTANT(int,
- verify_fail_if_no_peer_cert = SSL_VERIFY_FAIL_IF_NO_PEER_CERT);
- ASIO_STATIC_CONSTANT(int, verify_client_once = SSL_VERIFY_CLIENT_ONCE);
-#endif
-
- /// Purpose of PEM password.
- enum password_purpose
- {
- /// The password is needed for reading/decryption.
- for_reading,
-
- /// The password is needed for writing/encryption.
- for_writing
- };
-
-protected:
- /// Protected destructor to prevent deletion through this type.
- ~context_base()
- {
- }
-};
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_CONTEXT_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_service.hpp
deleted file mode 100644
index af293a1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/context_service.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// ssl/context_service.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_CONTEXT_SERVICE_HPP
-#define ASIO_SSL_CONTEXT_SERVICE_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 "asio/ssl/old/context_service.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::context_service;
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_CONTEXT_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/buffered_handshake_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/buffered_handshake_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/buffered_handshake_op.hpp
deleted file mode 100644
index aed99dd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/buffered_handshake_op.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// ssl/detail/buffered_handshake_op.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_DETAIL_BUFFERED_HANDSHAKE_OP_HPP
-#define ASIO_SSL_DETAIL_BUFFERED_HANDSHAKE_OP_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 "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename ConstBufferSequence>
-class buffered_handshake_op
-{
-public:
- buffered_handshake_op(stream_base::handshake_type type,
- const ConstBufferSequence& buffers)
- : type_(type),
- buffers_(buffers),
- total_buffer_size_(asio::buffer_size(buffers_))
- {
- }
-
- engine::want operator()(engine& eng,
- asio::error_code& ec,
- std::size_t& bytes_transferred) const
- {
- typename ConstBufferSequence::const_iterator iter = buffers_.begin();
- typename ConstBufferSequence::const_iterator end = buffers_.end();
- std::size_t accumulated_size = 0;
-
- for (;;)
- {
- engine::want want = eng.handshake(type_, ec);
- if (want != engine::want_input_and_retry
- || bytes_transferred == total_buffer_size_)
- return want;
-
- // Find the next buffer piece to be fed to the engine.
- while (iter != end)
- {
- const_buffer buffer(*iter);
-
- // Skip over any buffers which have already been consumed by the engine.
- if (bytes_transferred >= accumulated_size + buffer_size(buffer))
- {
- accumulated_size += buffer_size(buffer);
- ++iter;
- continue;
- }
-
- // The current buffer may have been partially consumed by the engine on
- // a previous iteration. If so, adjust the buffer to point to the
- // unused portion.
- if (bytes_transferred > accumulated_size)
- buffer = buffer + (bytes_transferred - accumulated_size);
-
- // Pass the buffer to the engine, and update the bytes transferred to
- // reflect the total number of bytes consumed so far.
- bytes_transferred += buffer_size(buffer);
- buffer = eng.put_input(buffer);
- bytes_transferred -= buffer_size(buffer);
- break;
- }
- }
- }
-
- template <typename Handler>
- void call_handler(Handler& handler,
- const asio::error_code& ec,
- const std::size_t& bytes_transferred) const
- {
- handler(ec, bytes_transferred);
- }
-
-private:
- stream_base::handshake_type type_;
- ConstBufferSequence buffers_;
- std::size_t total_buffer_size_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_BUFFERED_HANDSHAKE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/engine.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/engine.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/engine.hpp
deleted file mode 100644
index 9bb42b6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/engine.hpp
+++ /dev/null
@@ -1,164 +0,0 @@
-//
-// ssl/detail/engine.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_DETAIL_ENGINE_HPP
-#define ASIO_SSL_DETAIL_ENGINE_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 "asio/buffer.hpp"
-# include "asio/detail/static_mutex.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-# include "asio/ssl/detail/verify_callback.hpp"
-# include "asio/ssl/stream_base.hpp"
-# include "asio/ssl/verify_mode.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class engine
-{
-public:
- enum want
- {
- // Returned by functions to indicate that the engine wants input. The input
- // buffer should be updated to point to the data. The engine then needs to
- // be called again to retry the operation.
- want_input_and_retry = -2,
-
- // Returned by functions to indicate that the engine wants to write output.
- // The output buffer points to the data to be written. The engine then
- // needs to be called again to retry the operation.
- want_output_and_retry = -1,
-
- // Returned by functions to indicate that the engine doesn't need input or
- // output.
- want_nothing = 0,
-
- // Returned by functions to indicate that the engine wants to write output.
- // The output buffer points to the data to be written. After that the
- // operation is complete, and the engine does not need to be called again.
- want_output = 1
- };
-
- // Construct a new engine for the specified context.
- ASIO_DECL explicit engine(SSL_CTX* context);
-
- // Destructor.
- ASIO_DECL ~engine();
-
- // Get the underlying implementation in the native type.
- ASIO_DECL SSL* native_handle();
-
- // Set the peer verification mode.
- ASIO_DECL asio::error_code set_verify_mode(
- verify_mode v, asio::error_code& ec);
-
- // Set the peer verification depth.
- ASIO_DECL asio::error_code set_verify_depth(
- int depth, asio::error_code& ec);
-
- // Set a peer certificate verification callback.
- ASIO_DECL asio::error_code set_verify_callback(
- verify_callback_base* callback, asio::error_code& ec);
-
- // Perform an SSL handshake using either SSL_connect (client-side) or
- // SSL_accept (server-side).
- ASIO_DECL want handshake(
- stream_base::handshake_type type, asio::error_code& ec);
-
- // Perform a graceful shutdown of the SSL session.
- ASIO_DECL want shutdown(asio::error_code& ec);
-
- // Write bytes to the SSL session.
- ASIO_DECL want write(const asio::const_buffer& data,
- asio::error_code& ec, std::size_t& bytes_transferred);
-
- // Read bytes from the SSL session.
- ASIO_DECL want read(const asio::mutable_buffer& data,
- asio::error_code& ec, std::size_t& bytes_transferred);
-
- // Get output data to be written to the transport.
- ASIO_DECL asio::mutable_buffers_1 get_output(
- const asio::mutable_buffer& data);
-
- // Put input data that was read from the transport.
- ASIO_DECL asio::const_buffer put_input(
- const asio::const_buffer& data);
-
- // Map an error::eof code returned by the underlying transport according to
- // the type and state of the SSL session. Returns a const reference to the
- // error code object, suitable for passing to a completion handler.
- ASIO_DECL const asio::error_code& map_error_code(
- asio::error_code& ec) const;
-
-private:
- // Disallow copying and assignment.
- engine(const engine&);
- engine& operator=(const engine&);
-
- // Callback used when the SSL implementation wants to verify a certificate.
- ASIO_DECL static int verify_callback_function(
- int preverified, X509_STORE_CTX* ctx);
-
- // The SSL_accept function may not be thread safe. This mutex is used to
- // protect all calls to the SSL_accept function.
- ASIO_DECL static asio::detail::static_mutex& accept_mutex();
-
- // Perform one operation. Returns >= 0 on success or error, want_read if the
- // operation needs more input, or want_write if it needs to write some output
- // before the operation can complete.
- ASIO_DECL want perform(int (engine::* op)(void*, std::size_t),
- void* data, std::size_t length, asio::error_code& ec,
- std::size_t* bytes_transferred);
-
- // Adapt the SSL_accept function to the signature needed for perform().
- ASIO_DECL int do_accept(void*, std::size_t);
-
- // Adapt the SSL_connect function to the signature needed for perform().
- ASIO_DECL int do_connect(void*, std::size_t);
-
- // Adapt the SSL_shutdown function to the signature needed for perform().
- ASIO_DECL int do_shutdown(void*, std::size_t);
-
- // Adapt the SSL_read function to the signature needed for perform().
- ASIO_DECL int do_read(void* data, std::size_t length);
-
- // Adapt the SSL_write function to the signature needed for perform().
- ASIO_DECL int do_write(void* data, std::size_t length);
-
- SSL* ssl_;
- BIO* ext_bio_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/detail/impl/engine.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_DETAIL_ENGINE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/handshake_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/handshake_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/handshake_op.hpp
deleted file mode 100644
index 25c110f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/handshake_op.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ssl/detail/handshake_op.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_DETAIL_HANDSHAKE_OP_HPP
-#define ASIO_SSL_DETAIL_HANDSHAKE_OP_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 "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class handshake_op
-{
-public:
- handshake_op(stream_base::handshake_type type)
- : type_(type)
- {
- }
-
- engine::want operator()(engine& eng,
- asio::error_code& ec,
- std::size_t& bytes_transferred) const
- {
- bytes_transferred = 0;
- return eng.handshake(type_, ec);
- }
-
- template <typename Handler>
- void call_handler(Handler& handler,
- const asio::error_code& ec,
- const std::size_t&) const
- {
- handler(ec);
- }
-
-private:
- stream_base::handshake_type type_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_HANDSHAKE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/engine.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/engine.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/engine.ipp
deleted file mode 100644
index 59f8283..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/engine.ipp
+++ /dev/null
@@ -1,326 +0,0 @@
-//
-// ssl/detail/impl/engine.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_ENGINE_IPP
-#define ASIO_SSL_DETAIL_IMPL_ENGINE_IPP
-
-#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 "asio/detail/throw_error.hpp"
-# include "asio/error.hpp"
-# include "asio/ssl/detail/engine.hpp"
-# include "asio/ssl/error.hpp"
-# include "asio/ssl/verify_context.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-engine::engine(SSL_CTX* context)
- : ssl_(::SSL_new(context))
-{
- if (!ssl_)
- {
- asio::error_code ec(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- asio::detail::throw_error(ec, "engine");
- }
-
- accept_mutex().init();
-
- ::SSL_set_mode(ssl_, SSL_MODE_ENABLE_PARTIAL_WRITE);
- ::SSL_set_mode(ssl_, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
-#if defined(SSL_MODE_RELEASE_BUFFERS)
- ::SSL_set_mode(ssl_, SSL_MODE_RELEASE_BUFFERS);
-#endif // defined(SSL_MODE_RELEASE_BUFFERS)
-
- ::BIO* int_bio = 0;
- ::BIO_new_bio_pair(&int_bio, 0, &ext_bio_, 0);
- ::SSL_set_bio(ssl_, int_bio, int_bio);
-}
-
-engine::~engine()
-{
- if (SSL_get_app_data(ssl_))
- {
- delete static_cast<verify_callback_base*>(SSL_get_app_data(ssl_));
- SSL_set_app_data(ssl_, 0);
- }
-
- ::BIO_free(ext_bio_);
- ::SSL_free(ssl_);
-}
-
-SSL* engine::native_handle()
-{
- return ssl_;
-}
-
-asio::error_code engine::set_verify_mode(
- verify_mode v, asio::error_code& ec)
-{
- ::SSL_set_verify(ssl_, v, ::SSL_get_verify_callback(ssl_));
-
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code engine::set_verify_depth(
- int depth, asio::error_code& ec)
-{
- ::SSL_set_verify_depth(ssl_, depth);
-
- ec = asio::error_code();
- return ec;
-}
-
-asio::error_code engine::set_verify_callback(
- verify_callback_base* callback, asio::error_code& ec)
-{
- if (SSL_get_app_data(ssl_))
- delete static_cast<verify_callback_base*>(SSL_get_app_data(ssl_));
-
- SSL_set_app_data(ssl_, callback);
-
- ::SSL_set_verify(ssl_, ::SSL_get_verify_mode(ssl_),
- &engine::verify_callback_function);
-
- ec = asio::error_code();
- return ec;
-}
-
-int engine::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
-{
- if (ctx)
- {
- if (SSL* ssl = static_cast<SSL*>(
- ::X509_STORE_CTX_get_ex_data(
- ctx, ::SSL_get_ex_data_X509_STORE_CTX_idx())))
- {
- if (SSL_get_app_data(ssl))
- {
- verify_callback_base* callback =
- static_cast<verify_callback_base*>(
- SSL_get_app_data(ssl));
-
- verify_context verify_ctx(ctx);
- return callback->call(preverified != 0, verify_ctx) ? 1 : 0;
- }
- }
- }
-
- return 0;
-}
-
-engine::want engine::handshake(
- stream_base::handshake_type type, asio::error_code& ec)
-{
- return perform((type == asio::ssl::stream_base::client)
- ? &engine::do_connect : &engine::do_accept, 0, 0, ec, 0);
-}
-
-engine::want engine::shutdown(asio::error_code& ec)
-{
- return perform(&engine::do_shutdown, 0, 0, ec, 0);
-}
-
-engine::want engine::write(const asio::const_buffer& data,
- asio::error_code& ec, std::size_t& bytes_transferred)
-{
- if (asio::buffer_size(data) == 0)
- {
- ec = asio::error_code();
- return engine::want_nothing;
- }
-
- return perform(&engine::do_write,
- const_cast<void*>(asio::buffer_cast<const void*>(data)),
- asio::buffer_size(data), ec, &bytes_transferred);
-}
-
-engine::want engine::read(const asio::mutable_buffer& data,
- asio::error_code& ec, std::size_t& bytes_transferred)
-{
- if (asio::buffer_size(data) == 0)
- {
- ec = asio::error_code();
- return engine::want_nothing;
- }
-
- return perform(&engine::do_read,
- asio::buffer_cast<void*>(data),
- asio::buffer_size(data), ec, &bytes_transferred);
-}
-
-asio::mutable_buffers_1 engine::get_output(
- const asio::mutable_buffer& data)
-{
- int length = ::BIO_read(ext_bio_,
- asio::buffer_cast<void*>(data),
- static_cast<int>(asio::buffer_size(data)));
-
- return asio::buffer(data,
- length > 0 ? static_cast<std::size_t>(length) : 0);
-}
-
-asio::const_buffer engine::put_input(
- const asio::const_buffer& data)
-{
- int length = ::BIO_write(ext_bio_,
- asio::buffer_cast<const void*>(data),
- static_cast<int>(asio::buffer_size(data)));
-
- return asio::buffer(data +
- (length > 0 ? static_cast<std::size_t>(length) : 0));
-}
-
-const asio::error_code& engine::map_error_code(
- asio::error_code& ec) const
-{
- // We only want to map the error::eof code.
- if (ec != asio::error::eof)
- return ec;
-
- // If there's data yet to be read, it's an error.
- if (BIO_wpending(ext_bio_))
- {
- ec = asio::error_code(
- ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ),
- asio::error::get_ssl_category());
- return ec;
- }
-
- // SSL v2 doesn't provide a protocol-level shutdown, so an eof on the
- // underlying transport is passed through.
- if (ssl_ && ssl_->version == SSL2_VERSION)
- return ec;
-
- // Otherwise, the peer should have negotiated a proper shutdown.
- if ((::SSL_get_shutdown(ssl_) & SSL_RECEIVED_SHUTDOWN) == 0)
- {
- ec = asio::error_code(
- ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ),
- asio::error::get_ssl_category());
- }
-
- return ec;
-}
-
-asio::detail::static_mutex& engine::accept_mutex()
-{
- static asio::detail::static_mutex mutex = ASIO_STATIC_MUTEX_INIT;
- return mutex;
-}
-
-engine::want engine::perform(int (engine::* op)(void*, std::size_t),
- void* data, std::size_t length, asio::error_code& ec,
- std::size_t* bytes_transferred)
-{
- std::size_t pending_output_before = ::BIO_ctrl_pending(ext_bio_);
- int result = (this->*op)(data, length);
- int ssl_error = ::SSL_get_error(ssl_, result);
- int sys_error = static_cast<int>(::ERR_get_error());
- std::size_t pending_output_after = ::BIO_ctrl_pending(ext_bio_);
-
- if (ssl_error == SSL_ERROR_SSL)
- {
- ec = asio::error_code(sys_error,
- asio::error::get_ssl_category());
- return want_nothing;
- }
-
- if (ssl_error == SSL_ERROR_SYSCALL)
- {
- ec = asio::error_code(sys_error,
- asio::error::get_system_category());
- return want_nothing;
- }
-
- if (result > 0 && bytes_transferred)
- *bytes_transferred = static_cast<std::size_t>(result);
-
- if (ssl_error == SSL_ERROR_WANT_WRITE)
- {
- ec = asio::error_code();
- return want_output_and_retry;
- }
- else if (pending_output_after > pending_output_before)
- {
- ec = asio::error_code();
- return result > 0 ? want_output : want_output_and_retry;
- }
- else if (ssl_error == SSL_ERROR_WANT_READ)
- {
- ec = asio::error_code();
- return want_input_and_retry;
- }
- else if (::SSL_get_shutdown(ssl_) & SSL_RECEIVED_SHUTDOWN)
- {
- ec = asio::error::eof;
- return want_nothing;
- }
- else
- {
- ec = asio::error_code();
- return want_nothing;
- }
-}
-
-int engine::do_accept(void*, std::size_t)
-{
- asio::detail::static_mutex::scoped_lock lock(accept_mutex());
- return ::SSL_accept(ssl_);
-}
-
-int engine::do_connect(void*, std::size_t)
-{
- return ::SSL_connect(ssl_);
-}
-
-int engine::do_shutdown(void*, std::size_t)
-{
- int result = ::SSL_shutdown(ssl_);
- if (result == 0)
- result = ::SSL_shutdown(ssl_);
- return result;
-}
-
-int engine::do_read(void* data, std::size_t length)
-{
- return ::SSL_read(ssl_, data,
- length < INT_MAX ? static_cast<int>(length) : INT_MAX);
-}
-
-int engine::do_write(void* data, std::size_t length)
-{
- return ::SSL_write(ssl_, data,
- length < INT_MAX ? static_cast<int>(length) : INT_MAX);
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_IMPL_ENGINE_IPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[20/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service_base.hpp
deleted file mode 100644
index 28e52d7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactive_socket_service_base.hpp
+++ /dev/null
@@ -1,450 +0,0 @@
-//
-// detail/reactive_socket_service_base.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_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_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_HAS_IOCP) \
- && !defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/reactive_null_buffers_op.hpp"
-#include "asio/detail/reactive_socket_recv_op.hpp"
-#include "asio/detail/reactive_socket_recvmsg_op.hpp"
-#include "asio/detail/reactive_socket_send_op.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactive_socket_service_base
-{
-public:
- // The native type of a socket.
- typedef socket_type native_handle_type;
-
- // The implementation type of the socket.
- struct base_implementation_type
- {
- // The native socket representation.
- socket_type socket_;
-
- // The current state of the socket.
- socket_ops::state_type state_;
-
- // Per-descriptor data used by the reactor.
- reactor::per_descriptor_data reactor_data_;
- };
-
- // Constructor.
- ASIO_DECL reactive_socket_service_base(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new socket implementation.
- ASIO_DECL void construct(base_implementation_type& impl);
-
- // Move-construct a new socket implementation.
- ASIO_DECL void base_move_construct(base_implementation_type& impl,
- base_implementation_type& other_impl);
-
- // Move-assign from another socket implementation.
- ASIO_DECL void base_move_assign(base_implementation_type& impl,
- reactive_socket_service_base& other_service,
- base_implementation_type& other_impl);
-
- // Destroy a socket implementation.
- ASIO_DECL void destroy(base_implementation_type& impl);
-
- // Determine whether the socket is open.
- bool is_open(const base_implementation_type& impl) const
- {
- return impl.socket_ != invalid_socket;
- }
-
- // Destroy a socket implementation.
- ASIO_DECL asio::error_code close(
- base_implementation_type& impl, asio::error_code& ec);
-
- // Get the native socket representation.
- native_handle_type native_handle(base_implementation_type& impl)
- {
- return impl.socket_;
- }
-
- // Cancel all operations associated with the socket.
- ASIO_DECL asio::error_code cancel(
- base_implementation_type& impl, asio::error_code& ec);
-
- // Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const base_implementation_type& impl,
- asio::error_code& ec) const
- {
- return socket_ops::sockatmark(impl.socket_, ec);
- }
-
- // Determine the number of bytes available for reading.
- std::size_t available(const base_implementation_type& impl,
- asio::error_code& ec) const
- {
- return socket_ops::available(impl.socket_, ec);
- }
-
- // Place the socket into the state where it will listen for new connections.
- asio::error_code listen(base_implementation_type& impl,
- int backlog, asio::error_code& ec)
- {
- socket_ops::listen(impl.socket_, backlog, ec);
- return ec;
- }
-
- // Perform an IO control command on the socket.
- template <typename IO_Control_Command>
- asio::error_code io_control(base_implementation_type& impl,
- IO_Control_Command& command, asio::error_code& ec)
- {
- socket_ops::ioctl(impl.socket_, impl.state_, command.name(),
- static_cast<ioctl_arg_type*>(command.data()), ec);
- return ec;
- }
-
- // Gets the non-blocking mode of the socket.
- bool non_blocking(const base_implementation_type& impl) const
- {
- return (impl.state_ & socket_ops::user_set_non_blocking) != 0;
- }
-
- // Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(base_implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- socket_ops::set_user_non_blocking(impl.socket_, impl.state_, mode, ec);
- return ec;
- }
-
- // Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const base_implementation_type& impl) const
- {
- return (impl.state_ & socket_ops::internal_non_blocking) != 0;
- }
-
- // Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(base_implementation_type& impl,
- bool mode, asio::error_code& ec)
- {
- socket_ops::set_internal_non_blocking(impl.socket_, impl.state_, mode, ec);
- return ec;
- }
-
- // Disable sends or receives on the socket.
- asio::error_code shutdown(base_implementation_type& impl,
- socket_base::shutdown_type what, asio::error_code& ec)
- {
- socket_ops::shutdown(impl.socket_, what, ec);
- return ec;
- }
-
- // Send the given data to the peer.
- template <typename ConstBufferSequence>
- size_t send(base_implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence> bufs(buffers);
-
- return socket_ops::sync_send(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
- }
-
- // Wait until data can be sent without blocking.
- size_t send(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send(base_implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_send_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, buffers, flags, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send"));
-
- start_op(impl, reactor::write_op, p.p, is_continuation, true,
- ((impl.state_ & socket_ops::stream_oriented)
- && buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::all_empty(buffers)));
- p.v = p.p = 0;
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_send(null_buffers)"));
-
- start_op(impl, reactor::write_op, p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
- // Receive some data from the peer. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- size_t receive(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- return socket_ops::sync_recv(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
- }
-
- // Wait until data can be received without blocking.
- size_t receive(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_recv_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, impl.state_, buffers, flags, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive"));
-
- start_op(impl,
- (flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- p.p, is_continuation,
- (flags & socket_base::message_out_of_band) == 0,
- ((impl.state_ & socket_ops::stream_oriented)
- && buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::all_empty(buffers)));
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive(base_implementation_type& impl, const null_buffers&,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_receive(null_buffers)"));
-
- start_op(impl,
- (flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
- // Receive some data with associated flags. Returns the number of bytes
- // received.
- template <typename MutableBufferSequence>
- size_t receive_with_flags(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, asio::error_code& ec)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence> bufs(buffers);
-
- return socket_ops::sync_recvmsg(impl.socket_, impl.state_,
- bufs.buffers(), bufs.count(), in_flags, out_flags, ec);
- }
-
- // Wait until data can be received without blocking.
- size_t receive_with_flags(base_implementation_type& impl,
- const null_buffers&, socket_base::message_flags,
- socket_base::message_flags& out_flags, asio::error_code& ec)
- {
- // Wait for socket to become ready.
- socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
- // Clear out_flags, since we cannot give it any other sensible value when
- // performing a null_buffers operation.
- out_flags = 0;
-
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive_with_flags(base_implementation_type& impl,
- const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_socket_recvmsg_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl.socket_, buffers, in_flags, out_flags, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket",
- &impl, "async_receive_with_flags"));
-
- start_op(impl,
- (in_flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- p.p, is_continuation,
- (in_flags & socket_base::message_out_of_band) == 0, false);
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive_with_flags(base_implementation_type& impl,
- const null_buffers&, socket_base::message_flags in_flags,
- socket_base::message_flags& out_flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef reactive_null_buffers_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl,
- "async_receive_with_flags(null_buffers)"));
-
- // Clear out_flags, since we cannot give it any other sensible value when
- // performing a null_buffers operation.
- out_flags = 0;
-
- start_op(impl,
- (in_flags & socket_base::message_out_of_band)
- ? reactor::except_op : reactor::read_op,
- p.p, is_continuation, false, false);
- p.v = p.p = 0;
- }
-
-protected:
- // Open a new socket implementation.
- ASIO_DECL asio::error_code do_open(
- base_implementation_type& impl, int af,
- int type, int protocol, asio::error_code& ec);
-
- // Assign a native socket to a socket implementation.
- ASIO_DECL asio::error_code do_assign(
- base_implementation_type& impl, int type,
- const native_handle_type& native_socket, asio::error_code& ec);
-
- // Start the asynchronous read or write operation.
- ASIO_DECL void start_op(base_implementation_type& impl, int op_type,
- reactor_op* op, bool is_continuation, bool is_non_blocking, bool noop);
-
- // Start the asynchronous accept operation.
- ASIO_DECL void start_accept_op(base_implementation_type& impl,
- reactor_op* op, bool is_continuation, bool peer_is_open);
-
- // Start the asynchronous connect operation.
- ASIO_DECL void start_connect_op(base_implementation_type& impl,
- reactor_op* op, bool is_continuation,
- const socket_addr_type* addr, size_t addrlen);
-
- // The selector that performs event demultiplexing for the service.
- reactor& reactor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/reactive_socket_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_HAS_IOCP)
- // && !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor.hpp
deleted file mode 100644
index 7ee1368..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// detail/reactor.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_DETAIL_REACTOR_HPP
-#define ASIO_DETAIL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/reactor_fwd.hpp"
-
-#if defined(ASIO_HAS_EPOLL)
-# include "asio/detail/epoll_reactor.hpp"
-#elif defined(ASIO_HAS_KQUEUE)
-# include "asio/detail/kqueue_reactor.hpp"
-#elif defined(ASIO_HAS_DEV_POLL)
-# include "asio/detail/dev_poll_reactor.hpp"
-#elif defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_reactor.hpp"
-#else
-# include "asio/detail/select_reactor.hpp"
-#endif
-
-#endif // ASIO_DETAIL_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_fwd.hpp
deleted file mode 100644
index cddedc7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_fwd.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// detail/reactor_fwd.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_DETAIL_REACTOR_FWD_HPP
-#define ASIO_DETAIL_REACTOR_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-typedef class null_reactor reactor;
-#elif defined(ASIO_HAS_IOCP)
-typedef class select_reactor reactor;
-#elif defined(ASIO_HAS_EPOLL)
-typedef class epoll_reactor reactor;
-#elif defined(ASIO_HAS_KQUEUE)
-typedef class kqueue_reactor reactor;
-#elif defined(ASIO_HAS_DEV_POLL)
-typedef class dev_poll_reactor reactor;
-#else
-typedef class select_reactor reactor;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_REACTOR_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op.hpp
deleted file mode 100644
index 7183565..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/reactor_op.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_DETAIL_REACTOR_OP_HPP
-#define ASIO_DETAIL_REACTOR_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactor_op
- : public operation
-{
-public:
- // The error code to be passed to the completion handler.
- asio::error_code ec_;
-
- // The number of bytes transferred, to be passed to the completion handler.
- std::size_t bytes_transferred_;
-
- // Perform the operation. Returns true if it is finished.
- bool perform()
- {
- return perform_func_(this);
- }
-
-protected:
- typedef bool (*perform_func_type)(reactor_op*);
-
- reactor_op(perform_func_type perform_func, func_type complete_func)
- : operation(complete_func),
- bytes_transferred_(0),
- perform_func_(perform_func)
- {
- }
-
-private:
- perform_func_type perform_func_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTOR_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op_queue.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op_queue.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op_queue.hpp
deleted file mode 100644
index 14f5fb0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/reactor_op_queue.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// detail/reactor_op_queue.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_DETAIL_REACTOR_OP_QUEUE_HPP
-#define ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/hash_map.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Descriptor>
-class reactor_op_queue
- : private noncopyable
-{
-public:
- typedef Descriptor key_type;
-
- struct mapped_type : op_queue<reactor_op>
- {
- mapped_type() {}
- mapped_type(const mapped_type&) {}
- void operator=(const mapped_type&) {}
- };
-
- typedef typename hash_map<key_type, mapped_type>::value_type value_type;
- typedef typename hash_map<key_type, mapped_type>::iterator iterator;
-
- // Constructor.
- reactor_op_queue()
- : operations_()
- {
- }
-
- // Obtain iterators to all registered descriptors.
- iterator begin() { return operations_.begin(); }
- iterator end() { return operations_.end(); }
-
- // Add a new operation to the queue. Returns true if this is the only
- // operation for the given descriptor, in which case the reactor's event
- // demultiplexing function call may need to be interrupted and restarted.
- bool enqueue_operation(Descriptor descriptor, reactor_op* op)
- {
- std::pair<iterator, bool> entry =
- operations_.insert(value_type(descriptor, mapped_type()));
- entry.first->second.push(op);
- return entry.second;
- }
-
- // Cancel all operations associated with the descriptor identified by the
- // supplied iterator. Any operations pending for the descriptor will be
- // cancelled. Returns true if any operations were cancelled, in which case
- // the reactor's event demultiplexing function may need to be interrupted and
- // restarted.
- bool cancel_operations(iterator i, op_queue<operation>& ops,
- const asio::error_code& ec =
- asio::error::operation_aborted)
- {
- if (i != operations_.end())
- {
- while (reactor_op* op = i->second.front())
- {
- op->ec_ = ec;
- i->second.pop();
- ops.push(op);
- }
- operations_.erase(i);
- return true;
- }
-
- return false;
- }
-
- // Cancel all operations associated with the descriptor. Any operations
- // pending for the descriptor will be cancelled. Returns true if any
- // operations were cancelled, in which case the reactor's event
- // demultiplexing function may need to be interrupted and restarted.
- bool cancel_operations(Descriptor descriptor, op_queue<operation>& ops,
- const asio::error_code& ec =
- asio::error::operation_aborted)
- {
- return this->cancel_operations(operations_.find(descriptor), ops, ec);
- }
-
- // Whether there are no operations in the queue.
- bool empty() const
- {
- return operations_.empty();
- }
-
- // Determine whether there are any operations associated with the descriptor.
- bool has_operation(Descriptor descriptor) const
- {
- return operations_.find(descriptor) != operations_.end();
- }
-
- // Perform the operations corresponding to the descriptor identified by the
- // supplied iterator. Returns true if there are still unfinished operations
- // queued for the descriptor.
- bool perform_operations(iterator i, op_queue<operation>& ops)
- {
- if (i != operations_.end())
- {
- while (reactor_op* op = i->second.front())
- {
- if (op->perform())
- {
- i->second.pop();
- ops.push(op);
- }
- else
- {
- return true;
- }
- }
- operations_.erase(i);
- }
- return false;
- }
-
- // Perform the operations corresponding to the descriptor. Returns true if
- // there are still unfinished operations queued for the descriptor.
- bool perform_operations(Descriptor descriptor, op_queue<operation>& ops)
- {
- return this->perform_operations(operations_.find(descriptor), ops);
- }
-
- // Get all operations owned by the queue.
- void get_all_operations(op_queue<operation>& ops)
- {
- iterator i = operations_.begin();
- while (i != operations_.end())
- {
- iterator op_iter = i++;
- ops.push(op_iter->second);
- operations_.erase(op_iter);
- }
- }
-
-private:
- // The operations that are currently executing asynchronously.
- hash_map<key_type, mapped_type> operations_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/regex_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/regex_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/regex_fwd.hpp
deleted file mode 100644
index c332ea0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/regex_fwd.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// detail/regex_fwd.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_DETAIL_REGEX_FWD_HPP
-#define ASIO_DETAIL_REGEX_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if defined(ASIO_HAS_BOOST_REGEX)
-
-#include <boost/regex_fwd.hpp>
-#include <boost/regex/v4/match_flags.hpp>
-
-namespace boost {
-
-template <class BidiIterator>
-struct sub_match;
-
-template <class BidiIterator, class Allocator>
-class match_results;
-
-} // namespace boost
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-
-#endif // ASIO_DETAIL_REGEX_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_endpoint_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_endpoint_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_endpoint_op.hpp
deleted file mode 100644
index 7b6d2df..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_endpoint_op.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// detail/resolve_endpoint_op.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_DETAIL_RESOLVER_ENDPOINT_OP_HPP
-#define ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol, typename Handler>
-class resolve_endpoint_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(resolve_endpoint_op);
-
- typedef typename Protocol::endpoint endpoint_type;
- typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
- resolve_endpoint_op(socket_ops::weak_cancel_token_type cancel_token,
- const endpoint_type& endpoint, io_service_impl& ios, Handler& handler)
- : operation(&resolve_endpoint_op::do_complete),
- cancel_token_(cancel_token),
- endpoint_(endpoint),
- io_service_impl_(ios),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the operation object.
- resolve_endpoint_op* o(static_cast<resolve_endpoint_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- if (owner && owner != &o->io_service_impl_)
- {
- // The operation is being run on the worker io_service. Time to perform
- // the resolver operation.
-
- // Perform the blocking endpoint resolution operation.
- char host_name[NI_MAXHOST];
- char service_name[NI_MAXSERV];
- socket_ops::background_getnameinfo(o->cancel_token_, o->endpoint_.data(),
- o->endpoint_.size(), host_name, NI_MAXHOST, service_name, NI_MAXSERV,
- o->endpoint_.protocol().type(), o->ec_);
- o->iter_ = iterator_type::create(o->endpoint_, host_name, service_name);
-
- // Pass operation back to main io_service for completion.
- o->io_service_impl_.post_deferred_completion(o);
- p.v = p.p = 0;
- }
- else
- {
- // The operation has been returned to the main io_service. The completion
- // handler is ready to be delivered.
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated
- // before the upcall is made. Even if we're not about to make an upcall,
- // a sub-object of the handler may be the true owner of the memory
- // associated with the handler. Consequently, a local copy of the handler
- // is required to ensure that any owning sub-object remains valid until
- // after we have deallocated the memory here.
- detail::binder2<Handler, asio::error_code, iterator_type>
- handler(o->handler_, o->ec_, o->iter_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "..."));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
- }
-
-private:
- socket_ops::weak_cancel_token_type cancel_token_;
- endpoint_type endpoint_;
- io_service_impl& io_service_impl_;
- Handler handler_;
- asio::error_code ec_;
- iterator_type iter_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_op.hpp
deleted file mode 100644
index 93cc04b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolve_op.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// detail/resolve_op.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_DETAIL_RESOLVE_OP_HPP
-#define ASIO_DETAIL_RESOLVE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol, typename Handler>
-class resolve_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(resolve_op);
-
- typedef asio::ip::basic_resolver_query<Protocol> query_type;
- typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
- resolve_op(socket_ops::weak_cancel_token_type cancel_token,
- const query_type& query, io_service_impl& ios, Handler& handler)
- : operation(&resolve_op::do_complete),
- cancel_token_(cancel_token),
- query_(query),
- io_service_impl_(ios),
- handler_(ASIO_MOVE_CAST(Handler)(handler)),
- addrinfo_(0)
- {
- }
-
- ~resolve_op()
- {
- if (addrinfo_)
- socket_ops::freeaddrinfo(addrinfo_);
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the operation object.
- resolve_op* o(static_cast<resolve_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- if (owner && owner != &o->io_service_impl_)
- {
- // The operation is being run on the worker io_service. Time to perform
- // the resolver operation.
-
- // Perform the blocking host resolution operation.
- socket_ops::background_getaddrinfo(o->cancel_token_,
- o->query_.host_name().c_str(), o->query_.service_name().c_str(),
- o->query_.hints(), &o->addrinfo_, o->ec_);
-
- // Pass operation back to main io_service for completion.
- o->io_service_impl_.post_deferred_completion(o);
- p.v = p.p = 0;
- }
- else
- {
- // The operation has been returned to the main io_service. The completion
- // handler is ready to be delivered.
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated
- // before the upcall is made. Even if we're not about to make an upcall,
- // a sub-object of the handler may be the true owner of the memory
- // associated with the handler. Consequently, a local copy of the handler
- // is required to ensure that any owning sub-object remains valid until
- // after we have deallocated the memory here.
- detail::binder2<Handler, asio::error_code, iterator_type>
- handler(o->handler_, o->ec_, iterator_type());
- p.h = asio::detail::addressof(handler.handler_);
- if (o->addrinfo_)
- {
- handler.arg2_ = iterator_type::create(o->addrinfo_,
- o->query_.host_name(), o->query_.service_name());
- }
- p.reset();
-
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "..."));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
- }
-
-private:
- socket_ops::weak_cancel_token_type cancel_token_;
- query_type query_;
- io_service_impl& io_service_impl_;
- Handler handler_;
- asio::error_code ec_;
- asio::detail::addrinfo_type* addrinfo_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_RESOLVE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service.hpp
deleted file mode 100644
index 5c0234b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service.hpp
+++ /dev/null
@@ -1,129 +0,0 @@
-//
-// detail/resolver_service.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_DETAIL_RESOLVER_SERVICE_HPP
-#define ASIO_DETAIL_RESOLVER_SERVICE_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_WINDOWS_RUNTIME)
-
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/resolve_endpoint_op.hpp"
-#include "asio/detail/resolve_op.hpp"
-#include "asio/detail/resolver_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class resolver_service : public resolver_service_base
-{
-public:
- // The implementation type of the resolver. A cancellation token is used to
- // indicate to the background thread that the operation has been cancelled.
- typedef socket_ops::shared_cancel_token_type implementation_type;
-
- // The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- // The query type.
- typedef asio::ip::basic_resolver_query<Protocol> query_type;
-
- // The iterator type.
- typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
- // Constructor.
- resolver_service(asio::io_service& io_service)
- : resolver_service_base(io_service)
- {
- }
-
- // Resolve a query to a list of entries.
- iterator_type resolve(implementation_type&, const query_type& query,
- asio::error_code& ec)
- {
- asio::detail::addrinfo_type* address_info = 0;
-
- socket_ops::getaddrinfo(query.host_name().c_str(),
- query.service_name().c_str(), query.hints(), &address_info, ec);
- auto_addrinfo auto_address_info(address_info);
-
- return ec ? iterator_type() : iterator_type::create(
- address_info, query.host_name(), query.service_name());
- }
-
- // Asynchronously resolve a query to a list of entries.
- template <typename Handler>
- void async_resolve(implementation_type& impl,
- const query_type& query, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef resolve_op<Protocol, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl, query, io_service_impl_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve"));
-
- start_resolve_op(p.p);
- p.v = p.p = 0;
- }
-
- // Resolve an endpoint to a list of entries.
- iterator_type resolve(implementation_type&,
- const endpoint_type& endpoint, asio::error_code& ec)
- {
- char host_name[NI_MAXHOST];
- char service_name[NI_MAXSERV];
- socket_ops::sync_getnameinfo(endpoint.data(), endpoint.size(),
- host_name, NI_MAXHOST, service_name, NI_MAXSERV,
- endpoint.protocol().type(), ec);
-
- return ec ? iterator_type() : iterator_type::create(
- endpoint, host_name, service_name);
- }
-
- // Asynchronously resolve an endpoint to a list of entries.
- template <typename Handler>
- void async_resolve(implementation_type& impl,
- const endpoint_type& endpoint, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef resolve_endpoint_op<Protocol, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(impl, endpoint, io_service_impl_, handler);
-
- ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve"));
-
- start_resolve_op(p.p);
- p.v = p.p = 0;
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_RESOLVER_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service_base.hpp
deleted file mode 100644
index a8e6d12..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/resolver_service_base.hpp
+++ /dev/null
@@ -1,129 +0,0 @@
-//
-// detail/resolver_service_base.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_DETAIL_RESOLVER_SERVICE_BASE_HPP
-#define ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-#include "asio/detail/thread.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class resolver_service_base
-{
-public:
- // The implementation type of the resolver. A cancellation token is used to
- // indicate to the background thread that the operation has been cancelled.
- typedef socket_ops::shared_cancel_token_type implementation_type;
-
- // Constructor.
- ASIO_DECL resolver_service_base(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~resolver_service_base();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Perform any fork-related housekeeping.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Construct a new resolver implementation.
- ASIO_DECL void construct(implementation_type& impl);
-
- // Destroy a resolver implementation.
- ASIO_DECL void destroy(implementation_type&);
-
- // Cancel pending asynchronous operations.
- ASIO_DECL void cancel(implementation_type& impl);
-
-protected:
- // Helper function to start an asynchronous resolve operation.
- ASIO_DECL void start_resolve_op(operation* op);
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
- // Helper class to perform exception-safe cleanup of addrinfo objects.
- class auto_addrinfo
- : private asio::detail::noncopyable
- {
- public:
- explicit auto_addrinfo(asio::detail::addrinfo_type* ai)
- : ai_(ai)
- {
- }
-
- ~auto_addrinfo()
- {
- if (ai_)
- socket_ops::freeaddrinfo(ai_);
- }
-
- operator asio::detail::addrinfo_type*()
- {
- return ai_;
- }
-
- private:
- asio::detail::addrinfo_type* ai_;
- };
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
- // Helper class to run the work io_service in a thread.
- class work_io_service_runner;
-
- // Start the work thread if it's not already running.
- ASIO_DECL void start_work_thread();
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_impl_;
-
-private:
- // Mutex to protect access to internal data.
- asio::detail::mutex mutex_;
-
- // Private io_service used for performing asynchronous host resolution.
- asio::detail::scoped_ptr<asio::io_service> work_io_service_;
-
- // The work io_service implementation used to post completions.
- io_service_impl& work_io_service_impl_;
-
- // Work for the private io_service to perform.
- asio::detail::scoped_ptr<asio::io_service::work> work_;
-
- // Thread used for running the work io_service's run loop.
- asio::detail::scoped_ptr<asio::detail::thread> work_thread_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/resolver_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_lock.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_lock.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_lock.hpp
deleted file mode 100644
index 643ed18..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_lock.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/scoped_lock.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_DETAIL_SCOPED_LOCK_HPP
-#define ASIO_DETAIL_SCOPED_LOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper class to lock and unlock a mutex automatically.
-template <typename Mutex>
-class scoped_lock
- : private noncopyable
-{
-public:
- // Tag type used to distinguish constructors.
- enum adopt_lock_t { adopt_lock };
-
- // Constructor adopts a lock that is already held.
- scoped_lock(Mutex& m, adopt_lock_t)
- : mutex_(m),
- locked_(true)
- {
- }
-
- // Constructor acquires the lock.
- explicit scoped_lock(Mutex& m)
- : mutex_(m)
- {
- mutex_.lock();
- locked_ = true;
- }
-
- // Destructor releases the lock.
- ~scoped_lock()
- {
- if (locked_)
- mutex_.unlock();
- }
-
- // Explicitly acquire the lock.
- void lock()
- {
- if (!locked_)
- {
- mutex_.lock();
- locked_ = true;
- }
- }
-
- // Explicitly release the lock.
- void unlock()
- {
- if (locked_)
- {
- mutex_.unlock();
- locked_ = false;
- }
- }
-
- // Test whether the lock is held.
- bool locked() const
- {
- return locked_;
- }
-
- // Get the underlying mutex.
- Mutex& mutex()
- {
- return mutex_;
- }
-
-private:
- // The underlying mutex.
- Mutex& mutex_;
-
- // Whether the mutex is currently locked or unlocked.
- bool locked_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SCOPED_LOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_ptr.hpp
deleted file mode 100644
index 8d63c84..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/scoped_ptr.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/scoped_ptr.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_DETAIL_SCOPED_PTR_HPP
-#define ASIO_DETAIL_SCOPED_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class scoped_ptr
-{
-public:
- // Constructor.
- explicit scoped_ptr(T* p = 0)
- : p_(p)
- {
- }
-
- // Destructor.
- ~scoped_ptr()
- {
- delete p_;
- }
-
- // Access.
- T* get()
- {
- return p_;
- }
-
- // Access.
- T* operator->()
- {
- return p_;
- }
-
- // Dereference.
- T& operator*()
- {
- return *p_;
- }
-
- // Reset pointer.
- void reset(T* p = 0)
- {
- delete p_;
- p_ = p;
- }
-
-private:
- // Disallow copying and assignment.
- scoped_ptr(const scoped_ptr&);
- scoped_ptr& operator=(const scoped_ptr&);
-
- T* p_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SCOPED_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_interrupter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_interrupter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_interrupter.hpp
deleted file mode 100644
index 5a02499..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_interrupter.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/select_interrupter.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_DETAIL_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_SELECT_INTERRUPTER_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_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-# include "asio/detail/socket_select_interrupter.hpp"
-#elif defined(ASIO_HAS_EVENTFD)
-# include "asio/detail/eventfd_select_interrupter.hpp"
-#else
-# include "asio/detail/pipe_select_interrupter.hpp"
-#endif
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-typedef socket_select_interrupter select_interrupter;
-#elif defined(ASIO_HAS_EVENTFD)
-typedef eventfd_select_interrupter select_interrupter;
-#else
-typedef pipe_select_interrupter select_interrupter;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_SELECT_INTERRUPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_reactor.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_reactor.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_reactor.hpp
deleted file mode 100644
index 9f0e4a487..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/select_reactor.hpp
+++ /dev/null
@@ -1,219 +0,0 @@
-//
-// detail/select_reactor.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_DETAIL_SELECT_REACTOR_HPP
-#define ASIO_DETAIL_SELECT_REACTOR_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_HAS_IOCP) \
- || (!defined(ASIO_HAS_DEV_POLL) \
- && !defined(ASIO_HAS_EPOLL) \
- && !defined(ASIO_HAS_KQUEUE) \
- && !defined(ASIO_WINDOWS_RUNTIME))
-
-#include <cstddef>
-#include "asio/detail/fd_set_adapter.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/thread.hpp"
-#endif // defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class select_reactor
- : public asio::detail::service_base<select_reactor>
-{
-public:
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- enum op_types { read_op = 0, write_op = 1, except_op = 2,
- max_select_ops = 3, connect_op = 3, max_ops = 4 };
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- enum op_types { read_op = 0, write_op = 1, except_op = 2,
- max_select_ops = 3, connect_op = 1, max_ops = 3 };
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
- // Per-descriptor data.
- struct per_descriptor_data
- {
- };
-
- // Constructor.
- ASIO_DECL select_reactor(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~select_reactor();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Recreate internal descriptors following a fork.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Initialise the task, but only if the reactor is not in its own thread.
- ASIO_DECL void init_task();
-
- // Register a socket with the reactor. Returns 0 on success, system error
- // code on failure.
- ASIO_DECL int register_descriptor(socket_type, per_descriptor_data&);
-
- // Register a descriptor with an associated single operation. Returns 0 on
- // success, system error code on failure.
- ASIO_DECL int register_internal_descriptor(
- int op_type, socket_type descriptor,
- per_descriptor_data& descriptor_data, reactor_op* op);
-
- // Post a reactor operation for immediate completion.
- void post_immediate_completion(reactor_op* op, bool is_continuation)
- {
- io_service_.post_immediate_completion(op, is_continuation);
- }
-
- // Start a new operation. The reactor operation will be performed when the
- // given descriptor is flagged as ready, or an error has occurred.
- ASIO_DECL void start_op(int op_type, socket_type descriptor,
- per_descriptor_data&, reactor_op* op, bool is_continuation, bool);
-
- // Cancel all operations associated with the given descriptor. The
- // handlers associated with the descriptor will be invoked with the
- // operation_aborted error.
- ASIO_DECL void cancel_ops(socket_type descriptor, per_descriptor_data&);
-
- // Cancel any operations that are running against the descriptor and remove
- // its registration from the reactor.
- ASIO_DECL void deregister_descriptor(socket_type descriptor,
- per_descriptor_data&, bool closing);
-
- // Remote the descriptor's registration from the reactor.
- ASIO_DECL void deregister_internal_descriptor(
- socket_type descriptor, per_descriptor_data& descriptor_data);
-
- // Move descriptor registration from one descriptor_data object to another.
- ASIO_DECL void move_descriptor(socket_type descriptor,
- per_descriptor_data& target_descriptor_data,
- per_descriptor_data& source_descriptor_data);
-
- // Add a new timer queue to the reactor.
- template <typename Time_Traits>
- void add_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Remove a timer queue from the reactor.
- template <typename Time_Traits>
- void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Schedule a new operation in the given timer queue to expire at the
- // specified absolute time.
- template <typename Time_Traits>
- void schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
- // Cancel the timer operations associated with the given token. Returns the
- // number of operations that have been posted or dispatched.
- template <typename Time_Traits>
- std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
- // Run select once until interrupted or events are ready to be dispatched.
- ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
- // Interrupt the select loop.
- ASIO_DECL void interrupt();
-
-private:
-#if defined(ASIO_HAS_IOCP)
- // Run the select loop in the thread.
- ASIO_DECL void run_thread();
-
- // Entry point for the select loop thread.
- ASIO_DECL static void call_run_thread(select_reactor* reactor);
-#endif // defined(ASIO_HAS_IOCP)
-
- // Helper function to add a new timer queue.
- ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
- // Helper function to remove a timer queue.
- ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
- // Get the timeout value for the select call.
- ASIO_DECL timeval* get_timeout(timeval& tv);
-
- // Cancel all operations associated with the given descriptor. This function
- // does not acquire the select_reactor's mutex.
- ASIO_DECL void cancel_ops_unlocked(socket_type descriptor,
- const asio::error_code& ec);
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex to protect access to internal data.
- asio::detail::mutex mutex_;
-
- // The interrupter is used to break a blocking select call.
- select_interrupter interrupter_;
-
- // The queues of read, write and except operations.
- reactor_op_queue<socket_type> op_queue_[max_ops];
-
- // The file descriptor sets to be passed to the select system call.
- fd_set_adapter fd_sets_[max_select_ops];
-
- // The timer queues.
- timer_queue_set timer_queues_;
-
-#if defined(ASIO_HAS_IOCP)
- // Does the reactor loop thread need to stop.
- bool stop_thread_;
-
- // The thread that is running the reactor loop.
- asio::detail::thread* thread_;
-#endif // defined(ASIO_HAS_IOCP)
-
- // Whether the service has been shut down.
- bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/select_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/select_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
- // || (!defined(ASIO_HAS_DEV_POLL)
- // && !defined(ASIO_HAS_EPOLL)
- // && !defined(ASIO_HAS_KQUEUE)
- // && !defined(ASIO_WINDOWS_RUNTIME))
-
-#endif // ASIO_DETAIL_SELECT_REACTOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/service_registry.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/service_registry.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/service_registry.hpp
deleted file mode 100644
index 2a179bc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/service_registry.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// detail/service_registry.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_DETAIL_SERVICE_REGISTRY_HPP
-#define ASIO_DETAIL_SERVICE_REGISTRY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <typeinfo>
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility push (default)
-# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-#endif // defined(__GNUC__)
-
-template <typename T>
-class typeid_wrapper {};
-
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility pop
-# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-#endif // defined(__GNUC__)
-
-class service_registry
- : private noncopyable
-{
-public:
- // Constructor. Adds the initial service.
- template <typename Service, typename Arg>
- service_registry(asio::io_service& o,
- Service* initial_service, Arg arg);
-
- // Destructor.
- ASIO_DECL ~service_registry();
-
- // Notify all services of a fork event.
- ASIO_DECL void notify_fork(asio::io_service::fork_event fork_ev);
-
- // Get the first service object cast to the specified type. Called during
- // io_service construction and so performs no locking or type checking.
- template <typename Service>
- Service& first_service();
-
- // Get the service object corresponding to the specified service type. Will
- // create a new service object automatically if no such object already
- // exists. Ownership of the service object is not transferred to the caller.
- template <typename Service>
- Service& use_service();
-
- // Add a service object. Throws on error, in which case ownership of the
- // object is retained by the caller.
- template <typename Service>
- void add_service(Service* new_service);
-
- // Check whether a service object of the specified type already exists.
- template <typename Service>
- bool has_service() const;
-
-private:
- // Initialise a service's key based on its id.
- ASIO_DECL static void init_key(
- asio::io_service::service::key& key,
- const asio::io_service::id& id);
-
-#if !defined(ASIO_NO_TYPEID)
- // Initialise a service's key based on its id.
- template <typename Service>
- static void init_key(asio::io_service::service::key& key,
- const asio::detail::service_id<Service>& /*id*/);
-#endif // !defined(ASIO_NO_TYPEID)
-
- // Check if a service matches the given id.
- ASIO_DECL static bool keys_match(
- const asio::io_service::service::key& key1,
- const asio::io_service::service::key& key2);
-
- // The type of a factory function used for creating a service instance.
- typedef asio::io_service::service*
- (*factory_type)(asio::io_service&);
-
- // Factory function for creating a service instance.
- template <typename Service>
- static asio::io_service::service* create(
- asio::io_service& owner);
-
- // Destroy a service instance.
- ASIO_DECL static void destroy(
- asio::io_service::service* service);
-
- // Helper class to manage service pointers.
- struct auto_service_ptr;
- friend struct auto_service_ptr;
- struct auto_service_ptr
- {
- asio::io_service::service* ptr_;
- ~auto_service_ptr() { destroy(ptr_); }
- };
-
- // Get the service object corresponding to the specified service key. Will
- // create a new service object automatically if no such object already
- // exists. Ownership of the service object is not transferred to the caller.
- ASIO_DECL asio::io_service::service* do_use_service(
- const asio::io_service::service::key& key,
- factory_type factory);
-
- // Add a service object. Throws on error, in which case ownership of the
- // object is retained by the caller.
- ASIO_DECL void do_add_service(
- const asio::io_service::service::key& key,
- asio::io_service::service* new_service);
-
- // Check whether a service object with the specified key already exists.
- ASIO_DECL bool do_has_service(
- const asio::io_service::service::key& key) const;
-
- // Mutex to protect access to internal data.
- mutable asio::detail::mutex mutex_;
-
- // The owner of this service registry and the services it contains.
- asio::io_service& owner_;
-
- // The first service in the list of contained services.
- asio::io_service::service* first_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/service_registry.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/service_registry.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_SERVICE_REGISTRY_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/shared_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/shared_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/shared_ptr.hpp
deleted file mode 100644
index 8d4894c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/shared_ptr.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/shared_ptr.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_DETAIL_SHARED_PTR_HPP
-#define ASIO_DETAIL_SHARED_PTR_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_HAS_STD_SHARED_PTR)
-# include <memory>
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-# include <boost/shared_ptr.hpp>
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_SHARED_PTR)
-using std::shared_ptr;
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-using boost::shared_ptr;
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_SHARED_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_blocker.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_blocker.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_blocker.hpp
deleted file mode 100644
index 464e964..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_blocker.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// detail/signal_blocker.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_DETAIL_SIGNAL_BLOCKER_HPP
-#define ASIO_DETAIL_SIGNAL_BLOCKER_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_HAS_THREADS) || defined(ASIO_WINDOWS) \
- || defined(ASIO_WINDOWS_RUNTIME) \
- || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-# include "asio/detail/null_signal_blocker.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_signal_blocker.hpp"
-#else
-# error Only Windows and POSIX are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS) || defined(ASIO_WINDOWS) \
- || defined(ASIO_WINDOWS_RUNTIME) \
- || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-typedef null_signal_blocker signal_blocker;
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_signal_blocker signal_blocker;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_SIGNAL_BLOCKER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_handler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_handler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_handler.hpp
deleted file mode 100644
index 394f2a4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_handler.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// detail/signal_handler.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_DETAIL_SIGNAL_HANDLER_HPP
-#define ASIO_DETAIL_SIGNAL_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/signal_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class signal_handler : public signal_op
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(signal_handler);
-
- signal_handler(Handler& h)
- : signal_op(&signal_handler::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(h))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- signal_handler* h(static_cast<signal_handler*>(base));
- ptr p = { asio::detail::addressof(h->handler_), h, h };
-
- ASIO_HANDLER_COMPLETION((h));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, int>
- handler(h->handler_, h->ec_, h->signal_number_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SIGNAL_HANDLER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_init.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_init.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_init.hpp
deleted file mode 100644
index 08706ea..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_init.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// detail/signal_init.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_DETAIL_SIGNAL_INIT_HPP
-#define ASIO_DETAIL_SIGNAL_INIT_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_WINDOWS) && !defined(__CYGWIN__)
-
-#include <csignal>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <int Signal = SIGPIPE>
-class signal_init
-{
-public:
- // Constructor.
- signal_init()
- {
- std::signal(Signal, SIG_IGN);
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_SIGNAL_INIT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_op.hpp
deleted file mode 100644
index 4ebc65d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_op.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// detail/signal_op.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_DETAIL_SIGNAL_OP_HPP
-#define ASIO_DETAIL_SIGNAL_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class signal_op
- : public operation
-{
-public:
- // The error code to be passed to the completion handler.
- asio::error_code ec_;
-
- // The signal number to be passed to the completion handler.
- int signal_number_;
-
-protected:
- signal_op(func_type func)
- : operation(func),
- signal_number_(0)
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SIGNAL_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_set_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_set_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_set_service.hpp
deleted file mode 100644
index e409b9b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/signal_set_service.hpp
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// detail/signal_set_service.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_DETAIL_SIGNAL_SET_SERVICE_HPP
-#define ASIO_DETAIL_SIGNAL_SET_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 <signal.h>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/signal_handler.hpp"
-#include "asio/detail/signal_op.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-# include "asio/detail/reactor.hpp"
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(NSIG) && (NSIG > 0)
-enum { max_signal_number = NSIG };
-#else
-enum { max_signal_number = 128 };
-#endif
-
-extern ASIO_DECL struct signal_state* get_signal_state();
-
-extern "C" ASIO_DECL void asio_signal_handler(int signal_number);
-
-class signal_set_service
-{
-public:
- // Type used for tracking an individual signal registration.
- class registration
- {
- public:
- // Default constructor.
- registration()
- : signal_number_(0),
- queue_(0),
- undelivered_(0),
- next_in_table_(0),
- prev_in_table_(0),
- next_in_set_(0)
- {
- }
-
- private:
- // Only this service will have access to the internal values.
- friend class signal_set_service;
-
- // The signal number that is registered.
- int signal_number_;
-
- // The waiting signal handlers.
- op_queue<signal_op>* queue_;
-
- // The number of undelivered signals.
- std::size_t undelivered_;
-
- // Pointers to adjacent registrations in the registrations_ table.
- registration* next_in_table_;
- registration* prev_in_table_;
-
- // Link to next registration in the signal set.
- registration* next_in_set_;
- };
-
- // The implementation type of the signal_set.
- class implementation_type
- {
- public:
- // Default constructor.
- implementation_type()
- : signals_(0)
- {
- }
-
- private:
- // Only this service will have access to the internal values.
- friend class signal_set_service;
-
- // The pending signal handlers.
- op_queue<signal_op> queue_;
-
- // Linked list of registered signals.
- registration* signals_;
- };
-
- // Constructor.
- ASIO_DECL signal_set_service(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~signal_set_service();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Perform fork-related housekeeping.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Construct a new signal_set implementation.
- ASIO_DECL void construct(implementation_type& impl);
-
- // Destroy a signal_set implementation.
- ASIO_DECL void destroy(implementation_type& impl);
-
- // Add a signal to a signal_set.
- ASIO_DECL asio::error_code add(implementation_type& impl,
- int signal_number, asio::error_code& ec);
-
- // Remove a signal to a signal_set.
- ASIO_DECL asio::error_code remove(implementation_type& impl,
- int signal_number, asio::error_code& ec);
-
- // Remove all signals from a signal_set.
- ASIO_DECL asio::error_code clear(implementation_type& impl,
- asio::error_code& ec);
-
- // Cancel all operations associated with the signal set.
- ASIO_DECL asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec);
-
- // Start an asynchronous operation to wait for a signal to be delivered.
- template <typename Handler>
- void async_wait(implementation_type& impl, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef signal_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "signal_set", &impl, "async_wait"));
-
- start_wait_op(impl, p.p);
- p.v = p.p = 0;
- }
-
- // Deliver notification that a particular signal occurred.
- ASIO_DECL static void deliver_signal(int signal_number);
-
-private:
- // Helper function to add a service to the global signal state.
- ASIO_DECL static void add_service(signal_set_service* service);
-
- // Helper function to remove a service from the global signal state.
- ASIO_DECL static void remove_service(signal_set_service* service);
-
- // Helper function to create the pipe descriptors.
- ASIO_DECL static void open_descriptors();
-
- // Helper function to close the pipe descriptors.
- ASIO_DECL static void close_descriptors();
-
- // Helper function to start a wait operation.
- ASIO_DECL void start_wait_op(implementation_type& impl, signal_op* op);
-
- // The io_service instance used for dispatching handlers.
- io_service_impl& io_service_;
-
-#if !defined(ASIO_WINDOWS) \
- && !defined(ASIO_WINDOWS_RUNTIME) \
- && !defined(__CYGWIN__)
- // The type used for registering for pipe reactor notifications.
- class pipe_read_op;
-
- // The reactor used for waiting for pipe readiness.
- reactor& reactor_;
-
- // The per-descriptor reactor data used for the pipe.
- reactor::per_descriptor_data reactor_data_;
-#endif // !defined(ASIO_WINDOWS)
- // && !defined(ASIO_WINDOWS_RUNTIME)
- // && !defined(__CYGWIN__)
-
- // A mapping from signal number to the registered signal sets.
- registration* registrations_[max_signal_number];
-
- // Pointers to adjacent services in linked list.
- signal_set_service* next_;
- signal_set_service* prev_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/signal_set_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[42/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.cc
deleted file mode 100644
index c3cbf7e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "datatransfer.h"
-
-#include "hdfspp/status.h"
-
-namespace hdfs {
-
-namespace DataTransferSaslStreamUtil {
-
-static const auto kSUCCESS = hadoop::hdfs::DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_SUCCESS;
-
-using hadoop::hdfs::DataTransferEncryptorMessageProto;
-
-Status ConvertToStatus(const DataTransferEncryptorMessageProto *msg, std::string *payload) {
- using namespace hadoop::hdfs;
- auto s = msg->status();
- if (s == DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_ERROR_UNKNOWN_KEY) {
- payload->clear();
- return Status::Exception("InvalidEncryptionKeyException", msg->message().c_str());
- } else if (s == DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_ERROR) {
- payload->clear();
- return Status::Error(msg->message().c_str());
- } else {
- *payload = msg->payload();
- return Status::OK();
- }
-}
-
-void PrepareInitialHandshake(DataTransferEncryptorMessageProto *msg) {
- msg->set_status(kSUCCESS);
- msg->set_payload("");
-}
-
-}
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.h
deleted file mode 100644
index 93103c5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_READER_DATA_TRANSFER_H_
-#define LIB_READER_DATA_TRANSFER_H_
-
-#include "common/sasl_authenticator.h"
-#include "common/async_stream.h"
-#include "connection/datanodeconnection.h"
-#include <memory>
-
-
-namespace hdfs {
-
-enum {
- kDataTransferVersion = 28,
- kDataTransferSasl = 0xdeadbeef,
-};
-
-enum Operation {
- kWriteBlock = 80,
- kReadBlock = 81,
-};
-
-template <class Stream> class DataTransferSaslStream : public DataNodeConnection {
-public:
- DataTransferSaslStream(std::shared_ptr<Stream> stream, const std::string &username,
- const std::string &password)
- : stream_(stream), authenticator_(username, password) {}
-
- template <class Handler> void Handshake(const Handler &next);
-
- void async_read_some(const MutableBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- stream_->async_read_some(buf, handler);
- }
-
- void async_write_some(const ConstBuffers &buf,
- std::function<void (const asio::error_code & error,
- std::size_t bytes_transferred) > handler) override {
- stream_->async_write_some(buf, handler);
- }
-
- void Connect(std::function<void(Status status, std::shared_ptr<DataNodeConnection> dn)> handler) override
- {(void)handler; /*TODO: Handshaking goes here*/};
-
- void Cancel();
-private:
- DataTransferSaslStream(const DataTransferSaslStream &) = delete;
- DataTransferSaslStream &operator=(const DataTransferSaslStream &) = delete;
- std::shared_ptr<Stream> stream_;
- DigestMD5Authenticator authenticator_;
- struct ReadSaslMessage;
- struct Authenticator;
-};
-}
-
-#include "datatransfer_impl.h"
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer_impl.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer_impl.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer_impl.h
deleted file mode 100644
index 77e618d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/datatransfer_impl.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_READER_DATATRANFER_IMPL_H_
-#define LIB_READER_DATATRANFER_IMPL_H_
-
-#include "datatransfer.pb.h"
-#include "common/continuation/continuation.h"
-#include "common/continuation/asio.h"
-#include "common/continuation/protobuf.h"
-
-#include <asio/read.hpp>
-#include <asio/buffer.hpp>
-
-namespace hdfs {
-
-namespace DataTransferSaslStreamUtil {
-Status
-ConvertToStatus(const ::hadoop::hdfs::DataTransferEncryptorMessageProto *msg,
- std::string *payload);
-void PrepareInitialHandshake(
- ::hadoop::hdfs::DataTransferEncryptorMessageProto *msg);
-}
-
-template <class Stream>
-struct DataTransferSaslStream<Stream>::Authenticator
- : continuation::Continuation {
- Authenticator(DigestMD5Authenticator *authenticator,
- const std::string *request,
- hadoop::hdfs::DataTransferEncryptorMessageProto *msg)
- : authenticator_(authenticator), request_(request), msg_(msg) {}
-
- virtual void Run(const Next &next) override {
- using namespace ::hadoop::hdfs;
- std::string response;
- Status status = authenticator_->EvaluateResponse(*request_, &response);
- msg_->Clear();
- if (status.ok()) {
- // TODO: Handle encryption scheme
- msg_->set_payload(response);
- msg_->set_status(
- DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_SUCCESS);
- } else {
- msg_->set_status(
- DataTransferEncryptorMessageProto_DataTransferEncryptorStatus_ERROR);
- }
- next(Status::OK());
- }
-
-private:
- DigestMD5Authenticator *authenticator_;
- const std::string *request_;
- hadoop::hdfs::DataTransferEncryptorMessageProto *msg_;
-};
-
-template <class Stream>
-struct DataTransferSaslStream<Stream>::ReadSaslMessage
- : continuation::Continuation {
- ReadSaslMessage(std::shared_ptr<Stream> stream, std::string *data)
- : stream_(stream), data_(data), read_pb_(stream, &resp_) {}
-
- virtual void Run(const Next &next) override {
- auto handler = [this, next](const Status &status) {
- if (status.ok()) {
- Status new_stat =
- DataTransferSaslStreamUtil::ConvertToStatus(&resp_, data_);
- next(new_stat);
- } else {
- next(status);
- }
- };
- read_pb_.Run(handler);
- }
-
-private:
- std::shared_ptr<Stream> stream_;
- std::string *data_;
- hadoop::hdfs::DataTransferEncryptorMessageProto resp_;
- continuation::ReadDelimitedPBMessageContinuation<Stream, 1024> read_pb_;
-};
-
-template <class Stream>
-template <class Handler>
-void DataTransferSaslStream<Stream>::Handshake(const Handler &next) {
- using ::hadoop::hdfs::DataTransferEncryptorMessageProto;
- using ::hdfs::asio_continuation::Write;
- using ::hdfs::continuation::WriteDelimitedPBMessage;
-
- static const int kMagicNumber = htonl(kDataTransferSasl);
- static const asio::const_buffers_1 kMagicNumberBuffer = asio::buffer(
- reinterpret_cast<const char *>(kMagicNumber), sizeof(kMagicNumber));
-
- struct State {
- DataTransferEncryptorMessageProto req0;
- std::string resp0;
- DataTransferEncryptorMessageProto req1;
- std::string resp1;
- std::shared_ptr<Stream> stream;
- };
- auto m = continuation::Pipeline<State>::Create();
- State *s = &m->state();
- s->stream = stream_;
-
- DataTransferSaslStreamUtil::PrepareInitialHandshake(&s->req0);
-
- m->Push(Write(stream_, kMagicNumberBuffer))
- .Push(WriteDelimitedPBMessage(stream_, &s->req0))
- .Push(new ReadSaslMessage(stream_, &s->resp0))
- .Push(new Authenticator(&authenticator_, &s->resp0, &s->req1))
- .Push(WriteDelimitedPBMessage(stream_, &s->req1))
- .Push(new ReadSaslMessage(stream_, &s->resp1));
- m->Run([next](const Status &status, const State &) { next(status); });
-}
-
-template <class Stream>
-void DataTransferSaslStream<Stream>::Cancel() {
- /* implement with secured reads */
-}
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/fileinfo.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/fileinfo.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/fileinfo.h
deleted file mode 100644
index 2fb42a6..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/fileinfo.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_READER_FILEINFO_H_
-#define LIB_READER_FILEINFO_H_
-
-#include "ClientNamenodeProtocol.pb.h"
-
-namespace hdfs {
-
-/**
- * Information that is assumed to be unchanging about a file for the duration of
- * the operations.
- */
-struct FileInfo {
- unsigned long long file_length_;
- bool under_construction_;
- bool last_block_complete_;
- std::vector<::hadoop::hdfs::LocatedBlockProto> blocks_;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.cc
deleted file mode 100644
index a64800a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "readergroup.h"
-
-#include <algorithm>
-
-namespace hdfs {
-
-void ReaderGroup::AddReader(std::shared_ptr<BlockReader> reader) {
- std::lock_guard<std::recursive_mutex> state_lock(state_lock_);
- ClearDeadReaders();
- std::weak_ptr<BlockReader> weak_ref = reader;
- readers_.push_back(weak_ref);
-}
-
-std::vector<std::shared_ptr<BlockReader>> ReaderGroup::GetLiveReaders() {
- std::lock_guard<std::recursive_mutex> state_lock(state_lock_);
-
- std::vector<std::shared_ptr<BlockReader>> live_readers;
- for(auto it=readers_.begin(); it != readers_.end(); it++) {
- std::shared_ptr<BlockReader> live_reader = it->lock();
- if(live_reader) {
- live_readers.push_back(live_reader);
- }
- }
- return live_readers;
-}
-
-void ReaderGroup::ClearDeadReaders() {
- std::lock_guard<std::recursive_mutex> state_lock(state_lock_);
-
- auto reader_is_dead = [](const std::weak_ptr<BlockReader> &ptr) {
- return ptr.expired();
- };
-
- auto it = std::remove_if(readers_.begin(), readers_.end(), reader_is_dead);
- readers_.erase(it, readers_.end());
-}
-
-} // end namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.h
deleted file mode 100644
index e6173f7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/reader/readergroup.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef READER_READER_GROUP_H_
-#define READER_READER_GROUP_H_
-
-#include "block_reader.h"
-
-#include <memory>
-#include <vector>
-#include <mutex>
-
-namespace hdfs {
-
-/**
- * Provide a way of logically grouping ephemeral block readers
- * so that their status can be monitored or changed.
- *
- * Note: This does not attempt to extend the reader life
- * cycle. Readers are assumed to be owned by something else
- * using a shared_ptr.
- **/
-
-class ReaderGroup {
- public:
- ReaderGroup() {};
- void AddReader(std::shared_ptr<BlockReader> reader);
- /* find live readers, promote to shared_ptr */
- std::vector<std::shared_ptr<BlockReader>> GetLiveReaders();
- private:
- /* remove weak_ptrs that don't point to live object */
- void ClearDeadReaders();
- std::recursive_mutex state_lock_;
- std::vector<std::weak_ptr<BlockReader>> readers_;
-};
-
-} // end namespace hdfs
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/CMakeLists.txt
deleted file mode 100644
index e5a26fb..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-list(APPEND rpc_object_items rpc_connection_impl.cc rpc_engine.cc namenode_tracker.cc request.cc sasl_protocol.cc sasl_engine.cc)
-if (CMAKE_USING_CYRUS_SASL)
- list(APPEND rpc_object_items cyrus_sasl_engine.cc)
-endif (CMAKE_USING_CYRUS_SASL)
-if (CMAKE_USING_GSASL)
- list(APPEND rpc_object_items gsasl_engine.cc)
-endif (CMAKE_USING_GSASL)
-
-add_library(rpc_obj OBJECT ${rpc_object_items})
-
-
-add_dependencies(rpc_obj proto)
-add_library(rpc $<TARGET_OBJECTS:rpc_obj>)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.cc
deleted file mode 100644
index 5c96ede..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.cc
+++ /dev/null
@@ -1,469 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/locks.h"
-
-#include <sys/types.h>
-#include "sasl/sasl.h"
-#include "sasl/saslutil.h"
-#include <string.h>
-#include <string>
-#include <sstream>
-#include <unistd.h> // getpass() ( deprecated)
-
-#include "common/logging.h"
-
-#include "sasl_engine.h"
-#include "cyrus_sasl_engine.h"
-
-namespace hdfs {
-
-static Mutex *getSaslMutex() {
- return LockManager::getGssapiMutex();
-}
-
-// Forward decls of sasl callback functions
-typedef int (*sasl_callback_ft)(void);
-int get_name(void *context,
- int id,
- const char **result,
- unsigned *len);
-
-int getrealm(void *context,
- int id,
- const char **availrealms,
- const char **result);
-
-// This should be constructed once per process, and destroyed once per process
-
-class CyrusPerProcessData
-{
-public:
- static Status Init(); // Can be called many times
-private:
- CyrusPerProcessData();
- ~CyrusPerProcessData();
- Status init_status_;
-
- static CyrusPerProcessData & GetInstance();
-};
-
-
-/*****************************************************************************
- * CYRUS UTILITY FUNCTIONS
- */
-
-// Cyrus-specific error messages:
-// errStr() is the non-method version, to
-// be called by utility routines.
-std::string errStr( int rc) {
- switch (rc) {
- case SASL_NOTINIT: /* -12 */ return "SASL library not initialized";
- case SASL_WRONGMECH:/* -11 */ return "mechanism doesn't support requested feature";
- case SASL_BADSERV: /* -10 */ return "server failed mutual authentication step";
- case SASL_BADMAC: /* -9 */ return "integrity check failed";
- case SASL_TRYAGAIN: /* -8 */ return "transient failure (e.g., weak key)";
- case SASL_BADPARAM: /* -7 */ return "invalid parameter supplied";
- case SASL_NOTDONE: /* -6 */ return "can't request info until later in exchange";
- case SASL_BADPROT: /* -5 */ return "bad protocol / cancel";
- case SASL_NOMECH: /* -4 */ return "mechanism not supported";
- case SASL_BUFOVER: /* -3 */ return "overflowed buffer";
- case SASL_NOMEM: /* -2 */ return "memory shortage failure";
- case SASL_FAIL: /* -1 */ return "generic failure";
- case SASL_OK: /* 0 */ return "successful result";
- case SASL_CONTINUE: /* 1 */ return "another step is needed in authentication";
- case SASL_INTERACT: /* 2 */ return "needs user interaction";
- default: return "unknown error";
- } // switch(rc)
-} // errStr()
-
-Status make_status(int rc) {
- if (rc != SASL_OK &&
- rc != SASL_CONTINUE &&
- rc != SASL_INTERACT) {
- return Status::AuthenticationFailed(errStr(rc).c_str());
- }
- return Status::OK();
-}
-
-// SaslError() method: Use this when a method needs
-// to update the engine's state.
-Status CySaslEngine::SaslError( int rc) {
- Status status = make_status(rc);
- if (!status.ok())
- state_ = kErrorState;
-
- return status;
-}
-
-
-/*****************************************************************************
-* Cyrus SASL ENGINE
-*/
-
-CySaslEngine::CySaslEngine() : SaslEngine(), conn_(nullptr)
-{
- // Create an array of callbacks that embed a pointer to this
- // so we can call methods of the engine
- per_connection_callbacks_ = {
- { SASL_CB_USER, (sasl_callback_ft) & get_name, this}, // userid for authZ
- { SASL_CB_AUTHNAME, (sasl_callback_ft) & get_name, this}, // authid for authT
- { SASL_CB_GETREALM, (sasl_callback_ft) & getrealm, this}, // krb/gssapi realm
- // { SASL_CB_PASS, (sasl_callback_ft)&getsecret, this
- { SASL_CB_LIST_END, (sasl_callback_ft) NULL, NULL}
- };
-}
-
-// Cleanup of last resort. Call Finish to allow a safer check on disposal
-CySaslEngine::~CySaslEngine()
-{
-
- if (conn_) {
- try {
- LockGuard saslGuard(getSaslMutex());
- sasl_dispose( &conn_); // undo sasl_client_new()
- } catch (const LockFailure& e) {
- LOG_ERROR(kRPC, << "Unable to dispose of SASL context due to " << e.what());
- }
- }
-} // destructor
-
-// initialize some cyrus sasl context stuff:
-
-Status CySaslEngine::InitCyrusSasl()
-{
- int rc = SASL_OK;
-
- // set up some callbacks once per process:
- Status init_status = CyrusPerProcessData::Init();
- if (!init_status.ok())
- return init_status;
-
- // Initialize the sasl_li brary with per-connection configuration:
- const char * fqdn = chosen_mech_.serverid.c_str();
- const char * proto = chosen_mech_.protocol.c_str();
-
- try {
- LockGuard saslGuard(getSaslMutex());
- rc = sasl_client_new(proto, fqdn, NULL, NULL, &per_connection_callbacks_[0], 0, &conn_);
- if (rc != SASL_OK) {
- return SaslError(rc);
- }
- } catch (const LockFailure& e) {
- return Status::MutexError("mutex that guards sasl_client_new unable to lock");
- }
-
- return Status::OK();
-} // cysasl_new()
-
-// start() method: Ask the Sasl ibrary, "How do we
-// ask the hdfs server for service?
-std::pair<Status, std::string>
-CySaslEngine::Start()
-{
- int rc;
- Status status;
-
- if (state_ != kUnstarted)
- LOG_WARN(kRPC, << "CySaslEngine::start() when state is " << state_);
-
- status = InitCyrusSasl();
-
- if ( !status.ok()) {
- state_ = kErrorState;
- return std::make_pair( status, "");
- }
-
- sasl_interact_t * client_interact = NULL;
- char * buf;
- unsigned int buflen;
- const char * chosen_mech;
- std::string token;
-
- try {
- LockGuard saslGuard(getSaslMutex());
- rc = sasl_client_start(conn_, chosen_mech_.mechanism.c_str(), &client_interact,
- (const char **) &buf, &buflen, &chosen_mech);
- } catch (const LockFailure& e) {
- state_ = kFailure;
- return std::make_pair( Status::MutexError("mutex that guards sasl_client_new unable to lock"), "" );
- }
-
-
- switch (rc) {
- case SASL_OK: state_ = kSuccess;
- break;
- case SASL_CONTINUE: state_ = kWaitingForData;
- break;
- default: state_ = kFailure;
- return std::make_pair( SaslError(rc), "");
- break;
- } // switch( rc)
-
- // Cyrus will free this buffer when the connection is shut down
- token = std::string( buf, buflen);
- return std::make_pair( Status::OK(), token);
-
-} // start() method
-
-std::pair<Status, std::string> CySaslEngine::Step(const std::string data)
-{
- char * output = NULL;
- unsigned int outlen = 0;
- sasl_interact_t * client_interact = NULL;
-
- if (state_ != kWaitingForData)
- LOG_WARN(kRPC, << "CySaslEngine::step when state is " << state_);
-
- int rc = 0;
- try {
- LockGuard saslGuard(getSaslMutex());
- rc = sasl_client_step(conn_, data.c_str(), data.size(), &client_interact,
- (const char **) &output, &outlen);
- } catch (const LockFailure& e) {
- state_ = kFailure;
- return std::make_pair( Status::MutexError("mutex that guards sasl_client_new unable to lock"), "" );
- }
- // right now, state_ == kWaitingForData,
- // so update state_, to reflect _step()'s result:
- switch (rc) {
- case SASL_OK: state_ = kSuccess; break;
- case SASL_CONTINUE: state_ = kWaitingForData; break;
- default: state_ = kFailure;
- return std::make_pair(SaslError(rc), "");
- break;
- } // switch( rc)
- return std::make_pair(Status::OK(), std::string( output,outlen));
-} // step() method
-
-Status CySaslEngine::Finish()
-{
- if (state_ != kSuccess && state_ != kFailure && state_ != kErrorState )
- LOG_WARN(kRPC, << "CySaslEngine::finish when state is " << state_);
-
- if (conn_ != nullptr) {
- try {
- LockGuard saslGuard(getSaslMutex());
- sasl_dispose( &conn_);
- conn_ = NULL;
- } catch (const LockFailure& e) {
- return Status::MutexError("mutex that guards sasl_dispose unable to lock");
- }
- }
-
- return Status::OK();
-}
-
-//////////////////////////////////////////////////
-// Internal callbacks, for sasl_init_client(). //
-// Mostly lifted from cyrus' sample_client.c . //
-// Implicitly called in a context that already //
-// holds the SASL/GSSAPI lock. //
-//////////////////////////////////////////////////
-
-static int
-sasl_my_log(void *context __attribute__((unused)),
- int priority,
- const char *message)
-{
- if (! message)
- return SASL_BADPARAM;
-
- //TODO: get client, connection ID in here
- switch (priority) {
- case SASL_LOG_NONE: return SASL_OK; // no-op
- case SASL_LOG_ERR: // fall through to FAIL
- case SASL_LOG_FAIL:
- LOG_ERROR(kRPC, << "SASL Error: " << message);
- break;
- case SASL_LOG_WARN:
- LOG_ERROR(kRPC, << message);
- break;
- case SASL_LOG_NOTE:
- LOG_INFO(kRPC, << message);
- break;
- case SASL_LOG_DEBUG:
- LOG_DEBUG(kRPC, << message);
- break;
- case SASL_LOG_TRACE:
- LOG_TRACE(kRPC, << message);
- break;
- case SASL_LOG_PASS: return SASL_OK; // don't log password-info
- default:
- LOG_WARN(kRPC, << "Unknown SASL log level(" << priority << "): " << message);
- break;
- }
-
- return SASL_OK;
-} // sasl_my_log() callback
-
-static int
-sasl_getopt(void *context, const char *plugin_name,
- const char *option,
- const char **result, unsigned *len)
-{
- if (plugin_name) {
- LOG_WARN(kRPC, << "CySaslEngine: Unexpected plugin_name " << plugin_name);
- return SASL_OK;
- } // 123456789012345678
- if (! strncmp( option, "canon_user_plugin", 18)) {
- // TODO: maybe write a canon_user_plugin to do user-to-principal mapping
- *result = "INTERNAL";
- if (len) *len = strlen( *result);
- return SASL_OK;
- } // 12345678901234567
- if (! strncmp( option, "client_mech_list", 17)) {
- *result = "GSSAPI";
- if (len) *len = strlen( *result);
- return SASL_OK;
- }
-
- (void) context; // unused
- return SASL_OK; }
-
-#define PLUGINDIR "/usr/local/lib/sasl2" // where the mechanisms are
-
-static int
-get_path(void *context, const char ** path)
-{
- const char *searchpath = (const char *) context;
-
- if (! path)
- return SASL_BADPARAM;
-
- // TODO: check the SASL_PATH environment, or will Cyrus pass that in in the context?
- if (searchpath) {
- *path = searchpath;
- } else {
- *path = PLUGINDIR;
- }
-
- return SASL_OK;
-} // getpath() callback
-
-int get_name(void *context,
- int id,
- const char **result,
- unsigned *len)
-{
- const CySaslEngine * pThis = (const CySaslEngine *) context;
-
- if (!result)
- return SASL_BADPARAM;
-
- switch (id) {
- case SASL_CB_AUTHNAME:
- if (!pThis->id_)
- break;
- if (len)
- *len = pThis->id_->size();
- *result = pThis->id_->c_str();
- break;
- case SASL_CB_USER:
- if (!pThis->principal_)
- break;
- if (len)
- *len = pThis->principal_->size();
- *result = pThis->principal_->c_str();
- break;
- case SASL_CB_LANGUAGE:
- *result = NULL;
- if (len)
- *len = 0;
- break;
- default:
- return SASL_BADPARAM;
- }
-
- LOG_DEBUG(kRPC, << "Cyrus::get_name: returning " << *result);
-
- return SASL_OK;
-} // simple() callback
-
-int getrealm(void *context,
- int id,
- const char **availrealms,
- const char **result)
-{
- (void)availrealms; // unused
- const CySaslEngine * pThis = (const CySaslEngine *) context;
-
- if (!result)
- return SASL_BADPARAM;
-
- if (id != SASL_CB_GETREALM) return SASL_FAIL;
- if (pThis->realm_)
- *result = pThis->realm_->c_str();
-
- return SASL_OK;
-} // getrealm() callback
-
-
-/*****************************************************************************
-* CYRUS PER-PROCESS INITIALIZATION
-*/
-
-
-const sasl_callback_t per_process_callbacks[] = {
- { SASL_CB_LOG, (sasl_callback_ft) & sasl_my_log, NULL},
- { SASL_CB_GETOPT, (sasl_callback_ft) & sasl_getopt, NULL},
- { SASL_CB_GETPATH, (sasl_callback_ft) & get_path, NULL}, // to find th mechanisms
- { SASL_CB_LIST_END, (sasl_callback_ft) NULL, NULL}
- }; // callbacks_ array
-
-CyrusPerProcessData::CyrusPerProcessData()
-{
- try {
- LockGuard saslGuard(getSaslMutex());
- int init_rc = sasl_client_init(per_process_callbacks);
- init_status_ = make_status(init_rc);
- } catch (const LockFailure& e) {
- init_status_ = Status::MutexError("mutex protecting process-wide sasl_client_init unable to lock");
- }
-}
-
-CyrusPerProcessData::~CyrusPerProcessData()
-{
- // Undo sasl_client_init())
- try {
- LockGuard saslGuard(getSaslMutex());
- sasl_done();
- } catch (const LockFailure& e) {
- // Not can be done at this point, but the process is most likely shutting down anyway.
- LOG_ERROR(kRPC, << "mutex protecting process-wide sasl_done unable to lock");
- }
-
-}
-
-Status CyrusPerProcessData::Init()
-{
- return GetInstance().init_status_;
-}
-
-CyrusPerProcessData & CyrusPerProcessData::GetInstance()
-{
- // Meyer's singleton, thread safe and lazily initialized in C++11
- //
- // Must be lazily initialized to allow client code to plug in a GSSAPI mutex
- // implementation.
- static CyrusPerProcessData per_process_data;
- return per_process_data;
-}
-
-
-} // namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.h
deleted file mode 100644
index 7c0f4e1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/cyrus_sasl_engine.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_RPC_CYRUS_SASLENGINE_H
-#define LIB_RPC_CYRUS_SASLENGINE_H
-
-#include "sasl/sasl.h"
-#include "sasl_engine.h"
-
-namespace hdfs
-{
-
-class CySaslEngine : public SaslEngine
-{
-public:
- CySaslEngine();
- virtual ~CySaslEngine();
-
- virtual std::pair<Status, std::string> Start();
- virtual std::pair<Status, std::string> Step(const std::string data);
- virtual Status Finish();
-private:
- Status InitCyrusSasl();
- Status SaslError(int rc);
-
- friend int get_name(void *, int, const char **, unsigned *);
- friend int getrealm(void *, int, const char **availrealms, const char **);
-
- sasl_conn_t * conn_;
- std::vector<sasl_callback_t> per_connection_callbacks_;
-}; //class CySaslEngine
-
-} // namespace hdfs
-
-#endif /* LIB_RPC_CYRUS_SASLENGINE_H */
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.cc
deleted file mode 100644
index 7705c81..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.cc
+++ /dev/null
@@ -1,230 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/locks.h"
-
-#include <sstream>
-#include <gsasl.h>
-#include "sasl_engine.h"
-#include "gsasl_engine.h"
-#include "common/logging.h"
-
-
-namespace hdfs {
-
-
-/*****************************************************************************
- * GSASL UTILITY FUNCTIONS
- */
-
-static Mutex *getSaslMutex() {
- return LockManager::getGssapiMutex();
-}
-
-static Status rc_to_status(int rc)
-{
- if (rc == GSASL_OK) {
- return Status::OK();
- } else {
- std::ostringstream ss;
- ss << "Cannot initialize client (" << rc << "): " << gsasl_strerror(rc);
- return Status::Error(ss.str().c_str());
- }
-}
-
-static
-std::pair<Status, std::string> base64_encode(const std::string & in) {
- char * temp;
- size_t len;
- std::string retval;
- (void)base64_encode;
-
- int rc = gsasl_base64_to(in.c_str(), in.size(), &temp, &len);
-
- if (rc != GSASL_OK) {
- return std::make_pair(rc_to_status(rc), "");
- }
-
- if (temp) {
- retval = temp;
- free(temp);
- }
-
- if (!temp || retval.length() != len) {
- return std::make_pair(Status::Error("SaslEngine: Failed to encode string to base64"), "");
- }
-
- return std::make_pair(Status::OK(), retval);
-}
-
-/*****************************************************************************
- * GSASL ENGINE
- */
-
-GSaslEngine::~GSaslEngine()
-{
- // These should already be called in this->Finish
- try {
- LockGuard saslGuard(getSaslMutex());
- if (session_ != nullptr) {
- gsasl_finish(session_);
- }
-
- if (ctx_ != nullptr) {
- gsasl_done(ctx_);
- }
- } catch (const LockFailure& e) {
- if(session_ || ctx_) {
- LOG_ERROR(kRPC, << "GSaslEngine::~GSaslEngine@" << this << " unable to dispose of gsasl state: " << e.what());
- }
- }
-}
-
-Status GSaslEngine::gsasl_new() {
- int status = GSASL_OK;
-
- if (ctx_) return Status::OK();
-
- try {
- LockGuard saslGuard(getSaslMutex());
- status = gsasl_init( & ctx_);
- } catch (const LockFailure& e) {
- return Status::MutexError("Mutex that guards gsasl_init unable to lock");
- }
-
- switch ( status) {
- case GSASL_OK:
- return Status::OK();
- case GSASL_MALLOC_ERROR:
- LOG_WARN(kRPC, << "GSaslEngine: Out of memory.");
- return Status::Error("SaslEngine: Out of memory.");
- default:
- LOG_WARN(kRPC, << "GSaslEngine: Unexpected error." << status);
- return Status::Error("SaslEngine: Unexpected error.");
- }
-} // gsasl_new()
-
-std::pair<Status, std::string>
-GSaslEngine::Start()
-{
- int rc;
- Status status;
-
- this->gsasl_new();
-
- /* Create new authentication session. */
- try {
- LockGuard saslGuard(getSaslMutex());
- rc = gsasl_client_start(ctx_, chosen_mech_.mechanism.c_str(), &session_);
- } catch (const LockFailure& e) {
- state_ = kErrorState;
- return std::make_pair(Status::MutexError("Mutex that guards gsasl_client_start unable to lock"), "");
- }
- if (rc != GSASL_OK) {
- state_ = kErrorState;
- return std::make_pair( rc_to_status( rc), std::string(""));
- }
- Status init_status = init_kerberos();
- if(!init_status.ok()) {
- state_ = kErrorState;
- return std::make_pair(init_status, "");
- }
-
- state_ = kWaitingForData;
-
- // get from the sasl library the initial token
- // that we'll send to the application server:
- return this->Step( chosen_mech_.challenge.c_str());
-} // start() method
-
-Status GSaslEngine::init_kerberos() {
-
- //TODO: check that we have a principal
- try {
- LockGuard saslGuard(getSaslMutex());
- // these don't return anything that indicates failure
- gsasl_property_set(session_, GSASL_AUTHID, principal_.value().c_str());
- gsasl_property_set(session_, GSASL_HOSTNAME, chosen_mech_.serverid.c_str());
- gsasl_property_set(session_, GSASL_SERVICE, chosen_mech_.protocol.c_str());
- } catch (const LockFailure& e) {
- return Status::MutexError("Mutex that guards gsasl_property_set in GSaslEngine::init_kerberos unable to lock");
- }
- return Status::OK();
-}
-
-std::pair<Status, std::string> GSaslEngine::Step(const std::string data) {
- if (state_ != kWaitingForData)
- LOG_WARN(kRPC, << "GSaslEngine::step when state is " << state_);
-
- char * output = NULL;
- size_t outputSize;
-
- int rc = 0;
- try {
- LockGuard saslGuard(getSaslMutex());
- rc = gsasl_step(session_, data.c_str(), data.size(), &output,
- &outputSize);
- } catch (const LockFailure& e) {
- state_ = kFailure;
- return std::make_pair(Status::MutexError("Mutex that guards gsasl_client_start unable to lock"), "");
- }
-
- if (rc == GSASL_NEEDS_MORE || rc == GSASL_OK) {
- std::string retval(output, output ? outputSize : 0);
- if (output) {
- free(output);
- }
-
- if (rc == GSASL_OK) {
- state_ = kSuccess;
- }
-
- return std::make_pair(Status::OK(), retval);
- }
- else {
- if (output) {
- free(output);
- }
- state_ = kFailure;
- return std::make_pair(rc_to_status(rc), "");
- }
-}
-
-Status GSaslEngine::Finish()
-{
- if (state_ != kSuccess && state_ != kFailure && state_ != kErrorState )
- LOG_WARN(kRPC, << "GSaslEngine::finish when state is " << state_);
-
- try {
- LockGuard saslGuard(getSaslMutex());
- if (session_ != nullptr) {
- gsasl_finish(session_);
- session_ = NULL;
- }
-
- if (ctx_ != nullptr) {
- gsasl_done(ctx_);
- ctx_ = nullptr;
- }
- } catch (const LockFailure& e) {
- return Status::MutexError("Mutex that guards sasl state cleanup in GSaslEngine::Finish unable to lock");
- }
- return Status::OK();
-} // finish() method
-
-} // namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.h
deleted file mode 100644
index 331b3fd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/gsasl_engine.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_RPC_GSASLENGINE_H
-#define LIB_RPC_GSASLENGINE_H
-
-#include <gsasl.h>
-
-#include "sasl_engine.h"
-
-namespace hdfs {
-
-class GSaslEngine : public SaslEngine
-{
-public:
- GSaslEngine() : SaslEngine(), ctx_(nullptr), session_(nullptr) {}
- virtual ~GSaslEngine();
-
- virtual std::pair<Status,std::string> Start();
- virtual std::pair<Status,std::string> Step(const std::string data);
- virtual Status Finish();
-private:
- Status gsasl_new();
- Gsasl * ctx_;
- Gsasl_session * session_;
-
- Status init_kerberos();
-};
-
-} // namespace hdfs
-
-#endif /* LIB_RPC_GSASLENGINE_H */
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.cc
deleted file mode 100644
index e83a28c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "namenode_tracker.h"
-
-#include "common/logging.h"
-#include "common/libhdfs_events_impl.h"
-#include "common/util.h"
-
-namespace hdfs {
-
-static std::string format_endpoints(const std::vector<::asio::ip::tcp::endpoint> &pts) {
- std::stringstream ss;
- for(unsigned int i=0; i<pts.size(); i++)
- if(i == pts.size() - 1)
- ss << pts[i];
- else
- ss << pts[i] << ", ";
- return ss.str();
-}
-
-HANamenodeTracker::HANamenodeTracker(const std::vector<ResolvedNamenodeInfo> &servers,
- ::asio::io_service *ioservice,
- std::shared_ptr<LibhdfsEvents> event_handlers)
- : enabled_(false), resolved_(false),
- ioservice_(ioservice), event_handlers_(event_handlers)
-{
- LOG_TRACE(kRPC, << "HANamenodeTracker got the following nodes");
- for(unsigned int i=0;i<servers.size();i++)
- LOG_TRACE(kRPC, << servers[i].str());
-
- if(servers.size() >= 2) {
- LOG_TRACE(kRPC, << "Creating HA namenode tracker");
- if(servers.size() > 2) {
- LOG_WARN(kRPC, << "Nameservice declares more than two nodes. Some won't be used.");
- }
-
- active_info_ = servers[0];
- standby_info_ = servers[1];
- LOG_INFO(kRPC, << "HA enabled. Using the following namenodes from the configuration."
- << "\nNote: Active namenode cannot be determined until a connection has been made.")
- LOG_INFO(kRPC, << "First namenode url = " << active_info_.uri.str());
- LOG_INFO(kRPC, << "Second namenode url = " << standby_info_.uri.str());
-
- enabled_ = true;
- if(!active_info_.endpoints.empty() || !standby_info_.endpoints.empty()) {
- resolved_ = true;
- }
- }
-}
-
-HANamenodeTracker::~HANamenodeTracker() {}
-
-bool HANamenodeTracker::GetFailoverAndUpdate(const std::vector<::asio::ip::tcp::endpoint>& current_endpoints,
- ResolvedNamenodeInfo& out)
-{
- mutex_guard swap_lock(swap_lock_);
-
- // Cannot look up without a key.
- if(current_endpoints.size() == 0) {
- event_handlers_->call(FS_NN_EMPTY_ENDPOINTS_EVENT, active_info_.nameservice.c_str(),
- 0 /*Not much to say about context without endpoints*/);
- LOG_ERROR(kRPC, << "HANamenodeTracker@" << this << "::GetFailoverAndUpdate requires at least 1 endpoint.");
- return false;
- }
-
- LOG_TRACE(kRPC, << "Swapping from endpoint " << current_endpoints[0]);
-
- if(IsCurrentActive_locked(current_endpoints[0])) {
- std::swap(active_info_, standby_info_);
- if(event_handlers_)
- event_handlers_->call(FS_NN_FAILOVER_EVENT, active_info_.nameservice.c_str(),
- reinterpret_cast<int64_t>(active_info_.uri.str().c_str()));
- out = active_info_;
- } else if(IsCurrentStandby_locked(current_endpoints[0])) {
- // Connected to standby
- if(event_handlers_)
- event_handlers_->call(FS_NN_FAILOVER_EVENT, active_info_.nameservice.c_str(),
- reinterpret_cast<int64_t>(active_info_.uri.str().c_str()));
- out = active_info_;
- } else {
- // Invalid state (or a NIC was added that didn't show up during DNS)
- std::stringstream errorMsg; // asio specializes endpoing operator<< for stringstream
- errorMsg << "Unable to find RPC connection in config. Looked for " << current_endpoints[0] << " in\n"
- << format_endpoints(active_info_.endpoints) << " and\n"
- << format_endpoints(standby_info_.endpoints) << std::endl;
- LOG_ERROR(kRPC, << errorMsg.str());
- return false;
- }
-
- // Extra DNS on swapped node to try and get EPs if it didn't already have them
- if(out.endpoints.empty()) {
- LOG_WARN(kRPC, << "No endpoints for node " << out.uri.str() << " attempting to resolve again");
- if(!ResolveInPlace(ioservice_, out)) {
- // Stuck retrying against the same NN that was able to be resolved in this case
- LOG_ERROR(kRPC, << "Fallback endpoint resolution for node " << out.uri.str()
- << " failed. Please make sure your configuration is up to date.");
- }
- }
-
- return true;
-}
-
-
-bool HANamenodeTracker::IsCurrentActive_locked(const ::asio::ip::tcp::endpoint &ep) const {
- for(unsigned int i=0;i<active_info_.endpoints.size();i++) {
- if(ep.address() == active_info_.endpoints[i].address()) {
- if(ep.port() != active_info_.endpoints[i].port())
- LOG_WARN(kRPC, << "Port mismatch: " << ep << " vs " << active_info_.endpoints[i] << " trying anyway..");
- return true;
- }
- }
- return false;
-}
-
-bool HANamenodeTracker::IsCurrentStandby_locked(const ::asio::ip::tcp::endpoint &ep) const {
- for(unsigned int i=0;i<standby_info_.endpoints.size();i++) {
- if(ep.address() == standby_info_.endpoints[i].address()) {
- if(ep.port() != standby_info_.endpoints[i].port())
- LOG_WARN(kRPC, << "Port mismatch: " << ep << " vs " << standby_info_.endpoints[i] << " trying anyway..");
- return true;
- }
- }
- return false;
-}
-
-} // end namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.h
deleted file mode 100644
index cc34f51..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/namenode_tracker.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIB_RPC_NAMENODE_TRACKER_H
-#define LIB_RPC_NAMENODE_TRACKER_H
-
-#include "common/libhdfs_events_impl.h"
-#include "common/namenode_info.h"
-
-#include <asio/ip/tcp.hpp>
-
-#include <memory>
-#include <mutex>
-#include <vector>
-
-namespace hdfs {
-
-/*
- * Tracker gives the RpcEngine a quick way to use an endpoint that just
- * failed in order to lookup a set of endpoints for a failover node.
- *
- * Note: For now this only deals with 2 NameNodes, but that's the default
- * anyway.
- */
-class HANamenodeTracker {
- public:
- HANamenodeTracker(const std::vector<ResolvedNamenodeInfo> &servers,
- ::asio::io_service *ioservice,
- std::shared_ptr<LibhdfsEvents> event_handlers_);
-
- virtual ~HANamenodeTracker();
-
- bool is_enabled() const { return enabled_; }
- bool is_resolved() const { return resolved_; }
-
- // Pass in vector of endpoints held by RpcConnection, use endpoints to infer node
- // currently being used. Swap internal state and set out to other node.
- // Note: This will always mutate internal state. Use IsCurrentActive/Standby to
- // get info without changing state
- bool GetFailoverAndUpdate(const std::vector<::asio::ip::tcp::endpoint>& current_endpoints,
- ResolvedNamenodeInfo& out);
-
- private:
- // See if endpoint ep is part of the list of endpoints for the active or standby NN
- bool IsCurrentActive_locked(const ::asio::ip::tcp::endpoint &ep) const;
- bool IsCurrentStandby_locked(const ::asio::ip::tcp::endpoint &ep) const;
-
- // If HA should be enabled, according to our options and runtime info like # nodes provided
- bool enabled_;
- // If we were able to resolve at least 1 HA namenode
- bool resolved_;
-
- // Keep service in case a second round of DNS lookup is required
- ::asio::io_service *ioservice_;
-
- // Event handlers, for now this is the simplest place to catch all failover events
- // and push info out to client application. Possibly move into RPCEngine.
- std::shared_ptr<LibhdfsEvents> event_handlers_;
-
- // Only support 1 active and 1 standby for now.
- ResolvedNamenodeInfo active_info_;
- ResolvedNamenodeInfo standby_info_;
-
- // Aquire when switching from active-standby
- std::mutex swap_lock_;
-};
-
-} // end namespace hdfs
-#endif // end include guard
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.cc
deleted file mode 100644
index 356411e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include "request.h"
-#include "rpc_engine.h"
-#include "sasl_protocol.h"
-
-#include "RpcHeader.pb.h"
-#include "ProtobufRpcEngine.pb.h"
-#include "IpcConnectionContext.pb.h"
-
-#include <sstream>
-
-namespace hdfs {
-
-namespace pb = ::google::protobuf;
-namespace pbio = ::google::protobuf::io;
-
-using namespace ::hadoop::common;
-using namespace ::std::placeholders;
-
-static const int kNoRetry = -1;
-
-// Protobuf helper functions.
-// Note/todo: Using the zero-copy protobuf API here makes the simple procedures
-// below tricky to read and debug while providing minimal benefit. Reducing
-// allocations in BlockReader (HDFS-11266) and smarter use of std::stringstream
-// will have a much larger impact according to cachegrind profiles on common
-// workloads.
-static void AddHeadersToPacket(std::string *res,
- std::initializer_list<const pb::MessageLite *> headers,
- const std::string *payload) {
- int len = 0;
- std::for_each(
- headers.begin(), headers.end(),
- [&len](const pb::MessageLite *v) { len += DelimitedPBMessageSize(v); });
-
- if (payload) {
- len += payload->size();
- }
-
- int net_len = htonl(len);
- res->reserve(res->size() + sizeof(net_len) + len);
-
- pbio::StringOutputStream ss(res);
- pbio::CodedOutputStream os(&ss);
- os.WriteRaw(reinterpret_cast<const char *>(&net_len), sizeof(net_len));
-
- uint8_t *buf = os.GetDirectBufferForNBytesAndAdvance(len);
- assert(buf);
-
- std::for_each(
- headers.begin(), headers.end(), [&buf](const pb::MessageLite *v) {
- buf = pbio::CodedOutputStream::WriteVarint32ToArray(v->ByteSize(), buf);
- buf = v->SerializeWithCachedSizesToArray(buf);
- });
-
- if (payload) {
- buf = os.WriteStringToArray(*payload, buf);
- }
-}
-
-static void ConstructPayload(std::string *res, const pb::MessageLite *header) {
- int len = DelimitedPBMessageSize(header);
- res->reserve(len);
- pbio::StringOutputStream ss(res);
- pbio::CodedOutputStream os(&ss);
- uint8_t *buf = os.GetDirectBufferForNBytesAndAdvance(len);
- assert(buf);
- buf = pbio::CodedOutputStream::WriteVarint32ToArray(header->ByteSize(), buf);
- buf = header->SerializeWithCachedSizesToArray(buf);
-}
-
-static void SetRequestHeader(std::weak_ptr<LockFreeRpcEngine> weak_engine, int call_id,
- const std::string &method_name, int retry_count,
- RpcRequestHeaderProto *rpc_header,
- RequestHeaderProto *req_header)
-{
- // Ensure the RpcEngine is live. If it's not then the FileSystem is being destructed.
- std::shared_ptr<LockFreeRpcEngine> counted_engine = weak_engine.lock();
- if(!counted_engine) {
- LOG_ERROR(kRPC, << "SetRequestHeader attempted to access an invalid RpcEngine");
- return;
- }
-
- rpc_header->set_rpckind(RPC_PROTOCOL_BUFFER);
- rpc_header->set_rpcop(RpcRequestHeaderProto::RPC_FINAL_PACKET);
- rpc_header->set_callid(call_id);
- if (retry_count != kNoRetry) {
- rpc_header->set_retrycount(retry_count);
- }
- rpc_header->set_clientid(counted_engine->client_id());
- req_header->set_methodname(method_name);
- req_header->set_declaringclassprotocolname(counted_engine->protocol_name());
- req_header->set_clientprotocolversion(counted_engine->protocol_version());
-}
-
-// Request implementation
-
-Request::Request(std::shared_ptr<LockFreeRpcEngine> engine, const std::string &method_name, int call_id,
- const pb::MessageLite *request, Handler &&handler)
- : engine_(engine),
- method_name_(method_name),
- call_id_(call_id),
- timer_(engine->io_service()),
- handler_(std::move(handler)),
- retry_count_(engine->retry_policy() ? 0 : kNoRetry),
- failover_count_(0)
-{
- ConstructPayload(&payload_, request);
-}
-
-Request::Request(std::shared_ptr<LockFreeRpcEngine> engine, Handler &&handler)
- : engine_(engine),
- call_id_(-1/*Handshake ID*/),
- timer_(engine->io_service()),
- handler_(std::move(handler)),
- retry_count_(engine->retry_policy() ? 0 : kNoRetry),
- failover_count_(0) {
-}
-
-void Request::GetPacket(std::string *res) const {
- LOG_TRACE(kRPC, << "Request::GetPacket called");
-
- if (payload_.empty())
- return;
-
- RpcRequestHeaderProto rpc_header;
- RequestHeaderProto req_header;
- SetRequestHeader(engine_, call_id_, method_name_, retry_count_, &rpc_header,
- &req_header);
-
- // SASL messages don't have a request header
- if (method_name_ != SASL_METHOD_NAME)
- AddHeadersToPacket(res, {&rpc_header, &req_header}, &payload_);
- else
- AddHeadersToPacket(res, {&rpc_header}, &payload_);
-}
-
-void Request::OnResponseArrived(pbio::CodedInputStream *is,
- const Status &status) {
- LOG_TRACE(kRPC, << "Request::OnResponseArrived called");
- handler_(is, status);
-}
-
-std::string Request::GetDebugString() const {
- // Basic description of this object, aimed at debugging
- std::stringstream ss;
- ss << "\nRequest Object:\n";
- ss << "\tMethod name = \"" << method_name_ << "\"\n";
- ss << "\tCall id = " << call_id_ << "\n";
- ss << "\tRetry Count = " << retry_count_ << "\n";
- ss << "\tFailover count = " << failover_count_ << "\n";
- return ss.str();
-}
-
-int Request::IncrementFailoverCount() {
- // reset retry count when failing over
- retry_count_ = 0;
- return failover_count_++;
-}
-
-} // end namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.h
deleted file mode 100644
index f195540..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/request.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_RPC_RPC_REQUEST_H
-#define LIB_RPC_RPC_REQUEST_H
-
-#include "hdfspp/status.h"
-#include "common/util.h"
-#include "common/new_delete.h"
-
-#include <string>
-#include <memory>
-
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-
-#include <asio/deadline_timer.hpp>
-
-
-namespace hdfs {
-
-class LockFreeRpcEngine;
-class SaslProtocol;
-
-/*
- * Internal bookkeeping for an outstanding request from the consumer.
- *
- * Threading model: not thread-safe; should only be accessed from a single
- * thread at a time
- */
-class Request {
- public:
- MEMCHECKED_CLASS(Request)
- typedef std::function<void(::google::protobuf::io::CodedInputStream *is,
- const Status &status)> Handler;
-
- // Constructors will not make any blocking calls while holding the shared_ptr<RpcEngine>
- Request(std::shared_ptr<LockFreeRpcEngine> engine, const std::string &method_name, int call_id,
- const ::google::protobuf::MessageLite *request, Handler &&callback);
-
- // Null request (with no actual message) used to track the state of an
- // initial Connect call
- Request(std::shared_ptr<LockFreeRpcEngine> engine, Handler &&handler);
-
- int call_id() const { return call_id_; }
- std::string method_name() const { return method_name_; }
- ::asio::deadline_timer &timer() { return timer_; }
- int IncrementRetryCount() { return retry_count_++; }
- int IncrementFailoverCount();
- void GetPacket(std::string *res) const;
- void OnResponseArrived(::google::protobuf::io::CodedInputStream *is,
- const Status &status);
-
- int get_failover_count() {return failover_count_;}
-
- std::string GetDebugString() const;
-
- private:
- std::weak_ptr<LockFreeRpcEngine> engine_;
- const std::string method_name_;
- const int call_id_;
-
- ::asio::deadline_timer timer_;
- std::string payload_;
- const Handler handler_;
-
- int retry_count_;
- int failover_count_;
-};
-
-} // end namespace hdfs
-#endif // end include guard
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection.h
deleted file mode 100644
index 9e54983..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_RPC_RPC_CONNECTION_H
-#define LIB_RPC_RPC_CONNECTION_H
-
-/*
- * Encapsulates a persistent connection to the NameNode, and the sending of
- * RPC requests and evaluating their responses.
- *
- * Can have multiple RPC requests in-flight simultaneously, but they are
- * evaluated in-order on the server side in a blocking manner.
- *
- * Threading model: public interface is thread-safe
- * All handlers passed in to method calls will be called from an asio thread,
- * and will not be holding any internal RpcConnection locks.
- */
-
-#include "request.h"
-#include "common/auth_info.h"
-#include "common/libhdfs_events_impl.h"
-#include "common/new_delete.h"
-#include "hdfspp/status.h"
-
-#include <functional>
-#include <memory>
-#include <vector>
-#include <deque>
-#include <unordered_map>
-
-namespace hdfs {
-
-typedef const std::function<void(const Status &)> RpcCallback;
-
-class LockFreeRpcEngine;
-class SaslProtocol;
-
-class RpcConnection : public std::enable_shared_from_this<RpcConnection> {
- public:
- MEMCHECKED_CLASS(RpcConnection)
- RpcConnection(std::shared_ptr<LockFreeRpcEngine> engine);
- virtual ~RpcConnection();
-
- // Note that a single server can have multiple endpoints - especially both
- // an ipv4 and ipv6 endpoint
- virtual void Connect(const std::vector<::asio::ip::tcp::endpoint> &server,
- const AuthInfo & auth_info,
- RpcCallback &handler) = 0;
- virtual void ConnectAndFlush(const std::vector<::asio::ip::tcp::endpoint> &server) = 0;
- virtual void Disconnect() = 0;
-
- void StartReading();
- void AsyncRpc(const std::string &method_name,
- const ::google::protobuf::MessageLite *req,
- std::shared_ptr<::google::protobuf::MessageLite> resp,
- const RpcCallback &handler);
-
- void AsyncRpc(const std::vector<std::shared_ptr<Request> > & requests);
-
- // Enqueue requests before the connection is connected. Will be flushed
- // on connect
- void PreEnqueueRequests(std::vector<std::shared_ptr<Request>> requests);
-
- // Put requests at the front of the current request queue
- void PrependRequests_locked(std::vector<std::shared_ptr<Request>> requests);
-
- void SetEventHandlers(std::shared_ptr<LibhdfsEvents> event_handlers);
- void SetClusterName(std::string cluster_name);
- void SetAuthInfo(const AuthInfo& auth_info);
-
- std::weak_ptr<LockFreeRpcEngine> engine() { return engine_; }
- ::asio::io_service *GetIoService();
-
- protected:
- struct Response {
- enum ResponseState {
- kReadLength,
- kReadContent,
- kParseResponse,
- } state_;
- unsigned length_;
- std::vector<char> data_;
-
- std::unique_ptr<::google::protobuf::io::ArrayInputStream> ar;
- std::unique_ptr<::google::protobuf::io::CodedInputStream> in;
-
- Response() : state_(kReadLength), length_(0) {}
- };
-
-
- // Initial handshaking protocol: connect->handshake-->(auth)?-->context->connected
- virtual void SendHandshake(RpcCallback &handler) = 0;
- void HandshakeComplete(const Status &s);
- void AuthComplete(const Status &s, const AuthInfo & new_auth_info);
- void AuthComplete_locked(const Status &s, const AuthInfo & new_auth_info);
- virtual void SendContext(RpcCallback &handler) = 0;
- void ContextComplete(const Status &s);
-
- virtual void OnSendCompleted(const ::asio::error_code &ec,
- size_t transferred) = 0;
- virtual void OnRecvCompleted(const ::asio::error_code &ec,
- size_t transferred) = 0;
- virtual void FlushPendingRequests()=0; // Synchronously write the next request
-
- void AsyncRpc_locked(
- const std::string &method_name,
- const ::google::protobuf::MessageLite *req,
- std::shared_ptr<::google::protobuf::MessageLite> resp,
- const RpcCallback &handler);
- void SendRpcRequests(const std::vector<std::shared_ptr<Request> > & requests);
- void AsyncFlushPendingRequests(); // Queue requests to be flushed at a later time
-
-
-
- std::shared_ptr<std::string> PrepareHandshakePacket();
- std::shared_ptr<std::string> PrepareContextPacket();
- static std::string SerializeRpcRequest(const std::string &method_name,
- const ::google::protobuf::MessageLite *req);
-
- Status HandleRpcResponse(std::shared_ptr<Response> response);
- void HandleRpcTimeout(std::shared_ptr<Request> req,
- const ::asio::error_code &ec);
- void CommsError(const Status &status);
-
- void ClearAndDisconnect(const ::asio::error_code &ec);
- std::shared_ptr<Request> RemoveFromRunningQueue(int call_id);
-
- std::weak_ptr<LockFreeRpcEngine> engine_;
- std::shared_ptr<Response> current_response_state_;
- AuthInfo auth_info_;
-
- // Connection can have deferred connection, especially when we're pausing
- // during retry
- enum ConnectedState {
- kNotYetConnected,
- kConnecting,
- kHandshaking,
- kAuthenticating,
- kConnected,
- kDisconnected
- };
- static std::string ToString(ConnectedState connected);
- ConnectedState connected_;
-
- // State machine for performing a SASL handshake
- std::shared_ptr<SaslProtocol> sasl_protocol_;
- // The request being sent over the wire; will also be in sent_requests_
- std::shared_ptr<Request> outgoing_request_;
- // Requests to be sent over the wire
- std::deque<std::shared_ptr<Request>> pending_requests_;
- // Requests to be sent over the wire during authentication; not retried if
- // there is a connection error
- std::deque<std::shared_ptr<Request>> auth_requests_;
- // Requests that are waiting for responses
- typedef std::unordered_map<int, std::shared_ptr<Request>> SentRequestMap;
- SentRequestMap sent_requests_;
-
- std::shared_ptr<LibhdfsEvents> event_handlers_;
- std::string cluster_name_;
-
- // Lock for mutable parts of this class that need to be thread safe
- std::mutex connection_state_lock_;
-
- friend class SaslProtocol;
-};
-
-} // end namespace hdfs
-#endif // end include Guard
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[04/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/basic_context.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/basic_context.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/basic_context.hpp
deleted file mode 100644
index f53fddd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/basic_context.hpp
+++ /dev/null
@@ -1,434 +0,0 @@
-//
-// ssl/old/basic_context.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_BASIC_CONTEXT_HPP
-#define ASIO_SSL_OLD_BASIC_CONTEXT_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/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ssl/context_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-
-/// SSL context.
-template <typename Service>
-class basic_context
- : public context_base,
- private boost::noncopyable
-{
-public:
- /// The type of the service that will be used to provide context operations.
- typedef Service service_type;
-
- /// The native implementation type of the SSL context.
- typedef typename service_type::impl_type impl_type;
-
- /// Constructor.
- basic_context(asio::io_service& io_service, method m)
- : service_(asio::use_service<Service>(io_service)),
- impl_(service_.null())
- {
- service_.create(impl_, m);
- }
-
- /// Destructor.
- ~basic_context()
- {
- service_.destroy(impl_);
- }
-
- /// 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 context functionality that is
- * not otherwise provided.
- */
- impl_type impl()
- {
- return impl_;
- }
-
- /// Set options on the context.
- /**
- * This function may be used to configure the SSL options used by the context.
- *
- * @param o A bitmask of options. The available option values are defined in
- * the context_base class. The options are bitwise-ored with any existing
- * value for the options.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void set_options(options o)
- {
- asio::error_code ec;
- service_.set_options(impl_, o, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Set options on the context.
- /**
- * This function may be used to configure the SSL options used by the context.
- *
- * @param o A bitmask of options. The available option values are defined in
- * the context_base class. The options are bitwise-ored with any existing
- * value for the options.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code set_options(options o,
- asio::error_code& ec)
- {
- return service_.set_options(impl_, o, ec);
- }
-
- /// Set the peer verification mode.
- /**
- * This function may be used to configure the peer verification mode used by
- * the context.
- *
- * @param v A bitmask of peer verification modes. The available verify_mode
- * values are defined in the context_base class.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void set_verify_mode(verify_mode v)
- {
- asio::error_code ec;
- service_.set_verify_mode(impl_, v, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Set the peer verification mode.
- /**
- * This function may be used to configure the peer verification mode used by
- * the context.
- *
- * @param v A bitmask of peer verification modes. The available verify_mode
- * values are defined in the context_base class.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code set_verify_mode(verify_mode v,
- asio::error_code& ec)
- {
- return service_.set_verify_mode(impl_, v, ec);
- }
-
- /// Load a certification authority file for performing verification.
- /**
- * This function is used to load one or more trusted certification authorities
- * from a file.
- *
- * @param filename The name of a file containing certification authority
- * certificates in PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void load_verify_file(const std::string& filename)
- {
- asio::error_code ec;
- service_.load_verify_file(impl_, filename, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Load a certification authority file for performing verification.
- /**
- * This function is used to load the certificates for one or more trusted
- * certification authorities from a file.
- *
- * @param filename The name of a file containing certification authority
- * certificates in PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code load_verify_file(const std::string& filename,
- asio::error_code& ec)
- {
- return service_.load_verify_file(impl_, filename, ec);
- }
-
- /// Add a directory containing certificate authority files to be used for
- /// performing verification.
- /**
- * This function is used to specify the name of a directory containing
- * certification authority certificates. Each file in the directory must
- * contain a single certificate. The files must be named using the subject
- * name's hash and an extension of ".0".
- *
- * @param path The name of a directory containing the certificates.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void add_verify_path(const std::string& path)
- {
- asio::error_code ec;
- service_.add_verify_path(impl_, path, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Add a directory containing certificate authority files to be used for
- /// performing verification.
- /**
- * This function is used to specify the name of a directory containing
- * certification authority certificates. Each file in the directory must
- * contain a single certificate. The files must be named using the subject
- * name's hash and an extension of ".0".
- *
- * @param path The name of a directory containing the certificates.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code add_verify_path(const std::string& path,
- asio::error_code& ec)
- {
- return service_.add_verify_path(impl_, path, ec);
- }
-
- /// Use a certificate from a file.
- /**
- * This function is used to load a certificate into the context from a file.
- *
- * @param filename The name of the file containing the certificate.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- */
- void use_certificate_file(const std::string& filename, file_format format)
- {
- asio::error_code ec;
- service_.use_certificate_file(impl_, filename, format, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Use a certificate from a file.
- /**
- * This function is used to load a certificate into the context from a file.
- *
- * @param filename The name of the file containing the certificate.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code use_certificate_file(const std::string& filename,
- file_format format, asio::error_code& ec)
- {
- return service_.use_certificate_file(impl_, filename, format, ec);
- }
-
- /// Use a certificate chain from a file.
- /**
- * This function is used to load a certificate chain into the context from a
- * file.
- *
- * @param filename The name of the file containing the certificate. The file
- * must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void use_certificate_chain_file(const std::string& filename)
- {
- asio::error_code ec;
- service_.use_certificate_chain_file(impl_, filename, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Use a certificate chain from a file.
- /**
- * This function is used to load a certificate chain into the context from a
- * file.
- *
- * @param filename The name of the file containing the certificate. The file
- * must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code use_certificate_chain_file(
- const std::string& filename, asio::error_code& ec)
- {
- return service_.use_certificate_chain_file(impl_, filename, ec);
- }
-
- /// Use a private key from a file.
- /**
- * This function is used to load a private key into the context from a file.
- *
- * @param filename The name of the file containing the private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- */
- void use_private_key_file(const std::string& filename, file_format format)
- {
- asio::error_code ec;
- service_.use_private_key_file(impl_, filename, format, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Use a private key from a file.
- /**
- * This function is used to load a private key into the context from a file.
- *
- * @param filename The name of the file containing the private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code use_private_key_file(const std::string& filename,
- file_format format, asio::error_code& ec)
- {
- return service_.use_private_key_file(impl_, filename, format, ec);
- }
-
- /// Use an RSA private key from a file.
- /**
- * This function is used to load an RSA private key into the context from a
- * file.
- *
- * @param filename The name of the file containing the RSA private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @throws asio::system_error Thrown on failure.
- */
- void use_rsa_private_key_file(const std::string& filename, file_format format)
- {
- asio::error_code ec;
- service_.use_rsa_private_key_file(impl_, filename, format, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Use an RSA private key from a file.
- /**
- * This function is used to load an RSA private key into the context from a
- * file.
- *
- * @param filename The name of the file containing the RSA private key.
- *
- * @param format The file format (ASN.1 or PEM).
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code use_rsa_private_key_file(
- const std::string& filename, file_format format,
- asio::error_code& ec)
- {
- return service_.use_rsa_private_key_file(impl_, filename, format, ec);
- }
-
- /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
- /**
- * This function is used to load Diffie-Hellman parameters into the context
- * from a file.
- *
- * @param filename The name of the file containing the Diffie-Hellman
- * parameters. The file must use the PEM format.
- *
- * @throws asio::system_error Thrown on failure.
- */
- void use_tmp_dh_file(const std::string& filename)
- {
- asio::error_code ec;
- service_.use_tmp_dh_file(impl_, filename, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
- /**
- * This function is used to load Diffie-Hellman parameters into the context
- * from a file.
- *
- * @param filename The name of the file containing the Diffie-Hellman
- * parameters. The file must use the PEM format.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- asio::error_code use_tmp_dh_file(const std::string& filename,
- asio::error_code& ec)
- {
- return service_.use_tmp_dh_file(impl_, filename, ec);
- }
-
- /// Set the password callback.
- /**
- * This function is used to specify a callback function to obtain password
- * information about an encrypted key in PEM format.
- *
- * @param callback The function object to be used for obtaining the password.
- * The function signature of the handler must be:
- * @code std::string password_callback(
- * std::size_t max_length, // The maximum size for a password.
- * password_purpose purpose // Whether password is for reading or writing.
- * ); @endcode
- * The return value of the callback is a string containing the password.
- *
- * @throws asio::system_error Thrown on failure.
- */
- template <typename PasswordCallback>
- void set_password_callback(PasswordCallback callback)
- {
- asio::error_code ec;
- service_.set_password_callback(impl_, callback, ec);
- asio::detail::throw_error(ec);
- }
-
- /// Set the password callback.
- /**
- * This function is used to specify a callback function to obtain password
- * information about an encrypted key in PEM format.
- *
- * @param callback The function object to be used for obtaining the password.
- * The function signature of the handler must be:
- * @code std::string password_callback(
- * std::size_t max_length, // The maximum size for a password.
- * password_purpose purpose // Whether password is for reading or writing.
- * ); @endcode
- * The return value of the callback is a string containing the password.
- *
- * @param ec Set to indicate what error occurred, if any.
- */
- template <typename PasswordCallback>
- asio::error_code set_password_callback(PasswordCallback callback,
- asio::error_code& ec)
- {
- return service_.set_password_callback(impl_, callback, ec);
- }
-
-private:
- /// 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_BASIC_CONTEXT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/context_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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-native-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-native-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/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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-native-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-native-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/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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-native-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-native-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/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-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-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/old/stream_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-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-native-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
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[45/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.cc
deleted file mode 100644
index d29f1e9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "namenode_info.h"
-
-#include "common/util.h"
-#include "common/logging.h"
-
-#include <sstream>
-#include <utility>
-#include <future>
-#include <memory>
-
-namespace hdfs {
-
-ResolvedNamenodeInfo& ResolvedNamenodeInfo::operator=(const NamenodeInfo &info) {
- nameservice = info.nameservice;
- name = info.name;
- uri = info.uri;
- return *this;
-}
-
-
-
-std::string ResolvedNamenodeInfo::str() const {
- std::stringstream ss;
- ss << "ResolvedNamenodeInfo {nameservice: " << nameservice << ", name: " << name << ", uri: " << uri.str();
- ss << ", host: " << uri.get_host();
-
- if(uri.has_port())
- ss << ", port: " << uri.get_port();
- else
- ss << ", invalid port (uninitialized)";
-
- ss << ", scheme: " << uri.get_scheme();
-
- ss << " [";
- for(unsigned int i=0;i<endpoints.size();i++)
- ss << endpoints[i] << " ";
- ss << "] }";
-
- return ss.str();
-}
-
-
-bool ResolveInPlace(::asio::io_service *ioservice, ResolvedNamenodeInfo &info) {
- // this isn't very memory friendly, but if it needs to be called often there are bigger issues at hand
- info.endpoints.clear();
- std::vector<ResolvedNamenodeInfo> resolved = BulkResolve(ioservice, {info});
- if(resolved.size() != 1)
- return false;
-
- info.endpoints = resolved[0].endpoints;
- if(info.endpoints.size() == 0)
- return false;
- return true;
-}
-
-typedef std::vector<asio::ip::tcp::endpoint> endpoint_vector;
-
-// RAII wrapper
-class ScopedResolver {
- private:
- ::asio::io_service *io_service_;
- std::string host_;
- std::string port_;
- ::asio::ip::tcp::resolver::query query_;
- ::asio::ip::tcp::resolver resolver_;
- endpoint_vector endpoints_;
-
- // Caller blocks on access if resolution isn't finished
- std::shared_ptr<std::promise<Status>> result_status_;
- public:
- ScopedResolver(::asio::io_service *service, const std::string &host, const std::string &port) :
- io_service_(service), host_(host), port_(port), query_(host, port), resolver_(*io_service_)
- {
- if(!io_service_)
- LOG_ERROR(kAsyncRuntime, << "ScopedResolver@" << this << " passed nullptr to io_service");
- }
-
- ~ScopedResolver() {
- resolver_.cancel();
- }
-
- bool BeginAsyncResolve() {
- // result_status_ would only exist if this was previously called. Invalid state.
- if(result_status_) {
- LOG_ERROR(kAsyncRuntime, << "ScopedResolver@" << this << "::BeginAsyncResolve invalid call: may only be called once per instance");
- return false;
- } else if(!io_service_) {
- LOG_ERROR(kAsyncRuntime, << "ScopedResolver@" << this << "::BeginAsyncResolve invalid call: null io_service");
- return false;
- }
-
- // Now set up the promise, set it in async_resolve's callback
- result_status_ = std::make_shared<std::promise<Status>>();
- std::shared_ptr<std::promise<Status>> shared_result = result_status_;
-
- // Callback to pull a copy of endpoints out of resolver and set promise
- auto callback = [this, shared_result](const asio::error_code &ec, ::asio::ip::tcp::resolver::iterator out) {
- if(!ec) {
- std::copy(out, ::asio::ip::tcp::resolver::iterator(), std::back_inserter(endpoints_));
- }
- shared_result->set_value( ToStatus(ec) );
- };
- resolver_.async_resolve(query_, callback);
- return true;
- }
-
- Status Join() {
- if(!result_status_) {
- std::ostringstream errmsg;
- errmsg << "ScopedResolver@" << this << "Join invalid call: promise never set";
- return Status::InvalidArgument(errmsg.str().c_str());
- }
-
- std::future<Status> future_result = result_status_->get_future();
- Status res = future_result.get();
- return res;
- }
-
- endpoint_vector GetEndpoints() {
- // Explicitly return by value to decouple lifecycles.
- return endpoints_;
- }
-};
-
-std::vector<ResolvedNamenodeInfo> BulkResolve(::asio::io_service *ioservice, const std::vector<NamenodeInfo> &nodes) {
- std::vector< std::unique_ptr<ScopedResolver> > resolvers;
- resolvers.reserve(nodes.size());
-
- std::vector<ResolvedNamenodeInfo> resolved_info;
- resolved_info.reserve(nodes.size());
-
- for(unsigned int i=0; i<nodes.size(); i++) {
- std::string host = nodes[i].get_host();
- std::string port = nodes[i].get_port();
-
- resolvers.emplace_back(new ScopedResolver(ioservice, host, port));
- resolvers[i]->BeginAsyncResolve();
- }
-
- // Join all async operations
- for(unsigned int i=0; i < resolvers.size(); i++) {
- Status asyncReturnStatus = resolvers[i]->Join();
-
- ResolvedNamenodeInfo info;
- info = nodes[i];
-
- if(asyncReturnStatus.ok()) {
- // Copy out endpoints if things went well
- info.endpoints = resolvers[i]->GetEndpoints();
- } else {
- LOG_ERROR(kAsyncRuntime, << "Unabled to resolve endpoints for host: " << nodes[i].get_host()
- << " port: " << nodes[i].get_port());
- }
-
- resolved_info.push_back(info);
- }
- return resolved_info;
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.h
deleted file mode 100644
index fdee8d7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/namenode_info.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_HDFS_NAMENODE_INFO_H_
-#define COMMON_HDFS_NAMENODE_INFO_H_
-
-#include <asio.hpp>
-#include <hdfspp/options.h>
-
-#include <string>
-#include <vector>
-
-namespace hdfs {
-
-// Internal representation of namenode info that keeps track
-// of its endpoints.
-struct ResolvedNamenodeInfo : public NamenodeInfo {
- ResolvedNamenodeInfo& operator=(const NamenodeInfo &info);
- std::string str() const;
-
- std::vector<::asio::ip::tcp::endpoint> endpoints;
-};
-
-// Clear endpoints if set and resolve all of them in parallel.
-// Only successful lookups will be placed in the result set.
-std::vector<ResolvedNamenodeInfo> BulkResolve(::asio::io_service *ioservice, const std::vector<NamenodeInfo> &nodes);
-
-// Clear endpoints, if any, and resolve them again
-// Return true if endpoints were resolved
-bool ResolveInPlace(::asio::io_service *ioservice, ResolvedNamenodeInfo &info);
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/new_delete.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/new_delete.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/new_delete.h
deleted file mode 100644
index 48f97ca..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/new_delete.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_HDFS_NEW_DELETE_H_
-#define COMMON_HDFS_NEW_DELETE_H_
-
-#include <cstring>
-
-struct mem_struct {
- size_t mem_size;
-};
-
-#ifndef NDEBUG
-#define MEMCHECKED_CLASS(clazz) \
-static void* operator new(size_t size) { \
- void* p = ::malloc(size); \
- return p; \
-} \
-static void* operator new[](size_t size) { \
- mem_struct* p = (mem_struct*)::malloc(sizeof(mem_struct) + size); \
- p->mem_size = size; \
- return (void*)++p; \
-} \
-static void operator delete(void* p) { \
- ::memset(p, 0, sizeof(clazz)); \
- ::free(p); \
-} \
-static void operator delete[](void* p) { \
- mem_struct* header = (mem_struct*)p; \
- size_t size = (--header)->mem_size; \
- ::memset(p, 0, size); \
- ::free(header); \
-}
-#else
-#define MEMCHECKED_CLASS(clazz)
-#endif
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/optional_wrapper.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/optional_wrapper.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/optional_wrapper.h
deleted file mode 100644
index 2d15dc3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/optional_wrapper.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_OPTIONAL_WRAPPER_H_
-#define COMMON_OPTIONAL_WRAPPER_H_
-
-#ifdef __clang__
- #pragma clang diagnostic push
- #if __has_warning("-Wweak-vtables")
- #pragma clang diagnostic ignored "-Wweak-vtables"
- #endif
- #if __has_warning("-Wreserved-id-macro")
- #pragma clang diagnostic ignored "-Wreserved-id-macro"
- #endif
- #if __has_warning("-Wextra-semi")
- #pragma clang diagnostic ignored "-Wextra-semi"
- #endif
- #define TR2_OPTIONAL_DISABLE_EMULATION_OF_TYPE_TRAITS //For Clang < 3_4_2
-#endif
-
-#include <optional.hpp>
-
-#ifdef __clang__
- #undef TR2_OPTIONAL_DISABLE_EMULATION_OF_TYPE_TRAITS //For Clang < 3_4_2
- #pragma clang diagnostic pop
-#endif
-
-#endif //COMMON_OPTIONAL_WRAPPER_H_
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/options.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/options.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/options.cc
deleted file mode 100644
index 48c83f1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/options.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/options.h"
-
-namespace hdfs {
-
-// The linker needs a place to put all of those constants
-const int Options::kDefaultRpcTimeout;
-const int Options::kNoRetry;
-const int Options::kDefaultMaxRpcRetries;
-const int Options::kDefaultRpcRetryDelayMs;
-const unsigned int Options::kDefaultHostExclusionDuration;
-const unsigned int Options::kDefaultFailoverMaxRetries;
-const unsigned int Options::kDefaultFailoverConnectionMaxRetries;
-const long Options::kDefaultBlockSize;
-
-Options::Options() : rpc_timeout(kDefaultRpcTimeout),
- rpc_connect_timeout(kDefaultRpcConnectTimeout),
- max_rpc_retries(kDefaultMaxRpcRetries),
- rpc_retry_delay_ms(kDefaultRpcRetryDelayMs),
- host_exclusion_duration(kDefaultHostExclusionDuration),
- defaultFS(),
- failover_max_retries(kDefaultFailoverMaxRetries),
- failover_connection_max_retries(kDefaultFailoverConnectionMaxRetries),
- authentication(kDefaultAuthentication),
- block_size(kDefaultBlockSize),
- io_threads_(kDefaultIoThreads)
-{
-
-}
-
-std::string NamenodeInfo::get_host() const {
- return uri.get_host();
-}
-
-std::string NamenodeInfo::get_port() const {
- if(uri.has_port()) {
- return std::to_string(uri.get_port());
- }
- return "-1";
-}
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.cc
deleted file mode 100644
index dca49fb..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/retry_policy.h"
-#include "common/logging.h"
-
-#include <sstream>
-
-namespace hdfs {
-
-RetryAction FixedDelayRetryPolicy::ShouldRetry(
- const Status &s, uint64_t retries, uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const {
- LOG_TRACE(kRPC, << "FixedDelayRetryPolicy::ShouldRetry(retries=" << retries << ", failovers=" << failovers << ")");
- (void)isIdempotentOrAtMostOnce;
- if (retries + failovers >= max_retries_) {
- return RetryAction::fail(
- "Failovers and retries(" + std::to_string(retries + failovers) +
- ") exceeded maximum retries (" + std::to_string(max_retries_) + "), Status: " +
- s.ToString());
- } else {
- return RetryAction::retry(delay_);
- }
-}
-
-
-RetryAction NoRetryPolicy::ShouldRetry(
- const Status &s, uint64_t retries, uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const {
- LOG_TRACE(kRPC, << "NoRetryPolicy::ShouldRetry(retries=" << retries << ", failovers=" << failovers << ")");
- (void)retries;
- (void)failovers;
- (void)isIdempotentOrAtMostOnce;
- return RetryAction::fail("No retry, Status: " + s.ToString());
-}
-
-
-RetryAction FixedDelayWithFailover::ShouldRetry(const Status &s, uint64_t retries,
- uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const {
- (void)isIdempotentOrAtMostOnce;
- (void)max_failover_conn_retries_;
- LOG_TRACE(kRPC, << "FixedDelayWithFailover::ShouldRetry(retries=" << retries << ", failovers=" << failovers << ")");
-
- if(failovers < max_failover_retries_ && (s.code() == ::asio::error::timed_out || s.get_server_exception_type() == Status::kStandbyException) )
- {
- // Try connecting to another NN in case this one keeps timing out
- // Can add the backoff wait specified by dfs.client.failover.sleep.base.millis here
- if(failovers == 0) {
- // No delay on first failover if it looks like the NN was bad.
- return RetryAction::failover(0);
- } else {
- return RetryAction::failover(delay_);
- }
- }
-
- if(retries < max_retries_ && failovers < max_failover_retries_) {
- LOG_TRACE(kRPC, << "FixedDelayWithFailover::ShouldRetry: retries < max_retries_ && failovers < max_failover_retries_");
- return RetryAction::retry(delay_);
- } else if (retries >= max_retries_ && failovers < max_failover_retries_) {
- LOG_TRACE(kRPC, << "FixedDelayWithFailover::ShouldRetry: retries >= max_retries_ && failovers < max_failover_retries_");
- return RetryAction::failover(delay_);
- } else if (retries <= max_retries_ && failovers == max_failover_retries_) {
- LOG_TRACE(kRPC, << "FixedDelayWithFailover::ShouldRetry: retries <= max_retries_ && failovers == max_failover_retries_");
- // 1 last retry on new connection
- return RetryAction::retry(delay_);
- }
-
- return RetryAction::fail("Retry and failover didn't work, Status: " + s.ToString());
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.h
deleted file mode 100644
index 0b5bd80..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/retry_policy.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_COMMON_RETRY_POLICY_H_
-#define LIB_COMMON_RETRY_POLICY_H_
-
-#include "common/util.h"
-
-#include <string>
-#include <stdint.h>
-
-namespace hdfs {
-
-class RetryAction {
- public:
- enum RetryDecision { FAIL, RETRY, FAILOVER_AND_RETRY };
-
- RetryDecision action;
- uint64_t delayMillis;
- std::string reason;
-
- RetryAction(RetryDecision in_action, uint64_t in_delayMillis,
- const std::string &in_reason)
- : action(in_action), delayMillis(in_delayMillis), reason(in_reason) {}
-
- static RetryAction fail(const std::string &reason) {
- return RetryAction(FAIL, 0, reason);
- }
- static RetryAction retry(uint64_t delay) {
- return RetryAction(RETRY, delay, "");
- }
- static RetryAction failover(uint64_t delay) {
- return RetryAction(FAILOVER_AND_RETRY, delay, "");
- }
-
- std::string decision_str() const {
- switch(action) {
- case FAIL: return "FAIL";
- case RETRY: return "RETRY";
- case FAILOVER_AND_RETRY: return "FAILOVER_AND_RETRY";
- default: return "UNDEFINED ACTION";
- }
- };
-};
-
-class RetryPolicy {
- protected:
- uint64_t delay_;
- uint64_t max_retries_;
- RetryPolicy(uint64_t delay, uint64_t max_retries) :
- delay_(delay), max_retries_(max_retries) {}
-
- public:
- RetryPolicy() {};
-
- virtual ~RetryPolicy() {}
- /*
- * If there was an error in communications, responds with the configured
- * action to take.
- */
- virtual RetryAction ShouldRetry(const Status &s, uint64_t retries,
- uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const = 0;
-
- virtual std::string str() const { return "Base RetryPolicy"; }
-};
-
-
-/*
- * Overview of how the failover retry policy works:
- *
- * 1) Acts the same as FixedDelayRetryPolicy in terms of connection retries against a single NN
- * with two differences:
- * a) If we have retried more than the maximum number of retries we will failover to the
- * other node and reset the retry counter rather than error out. It will begin the same
- * routine on the other node.
- * b) If an attempted connection times out and max_failover_conn_retries_ is less than the
- * normal number of retries it will failover sooner. The connection timeout retry limit
- * defaults to zero; the idea being that if a node is unresponsive it's better to just
- * try the secondary rather than incur the timeout cost multiple times.
- *
- * 2) Keeps track of the failover count in the same way that the retry count is tracked. If failover
- * is triggered more than a set number (dfs.client.failover.max.attempts) of times then the operation
- * will error out in the same way that a non-HA operation would error if it ran out of retries.
- *
- * 3) Failover between namenodes isn't instantaneous so the RPC retry delay is reused to add a small
- * delay between failover attempts. This helps prevent the client from quickly using up all of
- * its failover attempts while thrashing between namenodes that are both temporarily marked standby.
- * Note: The java client implements exponential backoff here with a base other than the rpc delay,
- * and this will do the same here in the future. This doesn't do any sort of exponential backoff
- * and the name can be changed to ExponentialDelayWithFailover when backoff is implemented.
- */
-class FixedDelayWithFailover : public RetryPolicy {
- public:
- FixedDelayWithFailover(uint64_t delay, uint64_t max_retries,
- uint64_t max_failover_retries,
- uint64_t max_failover_conn_retries)
- : RetryPolicy(delay, max_retries), max_failover_retries_(max_failover_retries),
- max_failover_conn_retries_(max_failover_conn_retries) {}
-
- RetryAction ShouldRetry(const Status &s, uint64_t retries,
- uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const override;
-
- std::string str() const override { return "FixedDelayWithFailover"; }
-
- private:
- // Attempts to fail over
- uint64_t max_failover_retries_;
- // Attempts to fail over if connection times out rather than
- // tring to connect and wait for the timeout delay failover_retries_
- // times.
- uint64_t max_failover_conn_retries_;
-};
-
-
-/*
- * Returns a fixed delay up to a certain number of retries
- */
-class FixedDelayRetryPolicy : public RetryPolicy {
- public:
- FixedDelayRetryPolicy(uint64_t delay, uint64_t max_retries)
- : RetryPolicy(delay, max_retries) {}
-
- RetryAction ShouldRetry(const Status &s, uint64_t retries,
- uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const override;
-
- std::string str() const override { return "FixedDelayRetryPolicy"; }
-};
-
-/*
- * Never retries
- */
-class NoRetryPolicy : public RetryPolicy {
- public:
- NoRetryPolicy() {};
- RetryAction ShouldRetry(const Status &s, uint64_t retries,
- uint64_t failovers,
- bool isIdempotentOrAtMostOnce) const override;
-
- std::string str() const override { return "NoRetryPolicy"; }
-};
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_authenticator.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_authenticator.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_authenticator.h
deleted file mode 100644
index 78b2a55..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_authenticator.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_COMMON_SASL_AUTHENTICATOR_H_
-#define LIB_COMMON_SASL_AUTHENTICATOR_H_
-
-#include "hdfspp/status.h"
-
-namespace hdfs {
-
-class DigestMD5AuthenticatorTest_TestResponse_Test;
-
-/**
- * A specialized implementation of RFC 2831 for the HDFS
- * DataTransferProtocol.
- *
- * The current lacks the following features:
- * * Encoding the username, realm, and password in ISO-8859-1 when
- * it is required by the RFC. They are always encoded in UTF-8.
- * * Checking whether the challenges from the server are
- * well-formed.
- * * Specifying authzid, digest-uri and maximum buffer size.
- * * Supporting QOP other than the auth level.
- **/
-class DigestMD5Authenticator {
-public:
- Status EvaluateResponse(const std::string &payload, std::string *result);
- DigestMD5Authenticator(const std::string &username,
- const std::string &password, bool mock_nonce = false);
-
-private:
- Status GenerateFirstResponse(std::string *result);
- Status GenerateResponseValue(std::string *response_value);
- Status ParseFirstChallenge(const std::string &payload);
-
- static size_t NextToken(const std::string &payload, size_t off,
- std::string *tok);
- void GenerateCNonce();
- std::string username_;
- std::string password_;
- std::string nonce_;
- std::string cnonce_;
- std::string realm_;
- std::string qop_;
- unsigned nonce_count_;
-
- const bool TEST_mock_cnonce_;
- friend class DigestMD5AuthenticatorTest_TestResponse_Test;
-};
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_digest_md5.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_digest_md5.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_digest_md5.cc
deleted file mode 100644
index 3ca8578..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/sasl_digest_md5.cc
+++ /dev/null
@@ -1,240 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "sasl_authenticator.h"
-
-#include "common/util.h"
-
-#include <openssl/rand.h>
-#include <openssl/md5.h>
-
-#include <iomanip>
-#include <map>
-#include <sstream>
-
-namespace hdfs {
-
-static std::string QuoteString(const std::string &src);
-static std::string GetMD5Digest(const std::string &src);
-static std::string BinaryToHex(const std::string &src);
-
-static const char kDigestUri[] = "hdfs/0";
-static const size_t kMaxBufferSize = 65536;
-
-DigestMD5Authenticator::DigestMD5Authenticator(const std::string &username,
- const std::string &password,
- bool mock_nonce)
- : username_(username), password_(password), nonce_count_(0),
- TEST_mock_cnonce_(mock_nonce) {}
-
-Status DigestMD5Authenticator::EvaluateResponse(const std::string &payload,
- std::string *result) {
- Status status = ParseFirstChallenge(payload);
- if (status.ok()) {
- status = GenerateFirstResponse(result);
- }
- return status;
-}
-
-size_t DigestMD5Authenticator::NextToken(const std::string &payload, size_t off,
- std::string *tok) {
- tok->clear();
- if (off >= payload.size()) {
- return std::string::npos;
- }
-
- char c = payload[off];
- if (c == '=' || c == ',') {
- *tok = c;
- return off + 1;
- }
-
- int quote_count = 0;
- for (; off < payload.size(); ++off) {
- char c = payload[off];
- if (c == '"') {
- ++quote_count;
- if (quote_count == 2) {
- return off + 1;
- }
- continue;
- }
-
- if (c == '=') {
- if (quote_count) {
- tok->append(&c, 1);
- } else {
- break;
- }
- } else if (('0' <= c && c <= '9') || ('a' <= c && c <= 'z') ||
- ('A' <= c && c <= 'Z') || c == '+' || c == '/' || c == '-' ||
- c == '_' || c == '@') {
- tok->append(&c, 1);
- } else {
- break;
- }
- }
- return off;
-}
-
-void DigestMD5Authenticator::GenerateCNonce() {
- if (!TEST_mock_cnonce_) {
- char buf[8] = {0,};
- RAND_pseudo_bytes(reinterpret_cast<unsigned char *>(buf), sizeof(buf));
- cnonce_ = Base64Encode(std::string(buf, sizeof(buf)));
- }
-}
-
-Status DigestMD5Authenticator::ParseFirstChallenge(const std::string &payload) {
- std::map<std::string, std::string> props;
- std::string token;
- enum {
- kStateLVal,
- kStateEqual,
- kStateRVal,
- kStateCommaOrEnd,
- };
-
- int state = kStateLVal;
-
- std::string lval, rval;
- size_t off = 0;
- while (true) {
- off = NextToken(payload, off, &token);
- if (off == std::string::npos) {
- break;
- }
-
- switch (state) {
- case kStateLVal:
- lval = token;
- state = kStateEqual;
- break;
- case kStateEqual:
- state = kStateRVal;
- break;
- case kStateRVal:
- rval = token;
- props[lval] = rval;
- state = kStateCommaOrEnd;
- break;
- case kStateCommaOrEnd:
- state = kStateLVal;
- break;
- }
- }
-
- if (props["algorithm"] != "md5-sess" || props["charset"] != "utf-8" ||
- props.find("nonce") == props.end()) {
- return Status::Error("Invalid challenge");
- }
- realm_ = props["realm"];
- nonce_ = props["nonce"];
- qop_ = props["qop"];
- return Status::OK();
-}
-
-Status DigestMD5Authenticator::GenerateFirstResponse(std::string *result) {
- // TODO: Support auth-int and auth-conf
- // Handle cipher
- if (qop_ != "auth") {
- return Status::Unimplemented();
- }
-
- std::stringstream ss;
- GenerateCNonce();
- ss << "charset=utf-8,username=\"" << QuoteString(username_) << "\""
- << ",authzid=\"" << QuoteString(username_) << "\""
- << ",nonce=\"" << QuoteString(nonce_) << "\""
- << ",digest-uri=\"" << kDigestUri << "\""
- << ",maxbuf=" << kMaxBufferSize << ",cnonce=\"" << cnonce_ << "\"";
-
- if (realm_.size()) {
- ss << ",realm=\"" << QuoteString(realm_) << "\"";
- }
-
- ss << ",nc=" << std::hex << std::setw(8) << std::setfill('0')
- << ++nonce_count_;
- std::string response_value;
- GenerateResponseValue(&response_value);
- ss << ",response=" << response_value;
- *result = ss.str();
- return result->size() > 4096 ? Status::Error("Response too big")
- : Status::OK();
-}
-
-/**
- * Generate the response value specified in S 2.1.2.1 in RFC2831.
- **/
-Status
-DigestMD5Authenticator::GenerateResponseValue(std::string *response_value) {
- std::stringstream begin_a1, a1_ss;
- std::string a1, a2;
-
- if (qop_ == "auth") {
- a2 = std::string("AUTHENTICATE:") + kDigestUri;
- } else {
- a2 = std::string("AUTHENTICATE:") + kDigestUri +
- ":00000000000000000000000000000000";
- }
-
- begin_a1 << username_ << ":" << realm_ << ":" << password_;
- a1_ss << GetMD5Digest(begin_a1.str()) << ":" << nonce_ << ":" << cnonce_
- << ":" << username_;
-
- std::stringstream combine_ss;
- combine_ss << BinaryToHex(GetMD5Digest(a1_ss.str())) << ":" << nonce_ << ":"
- << std::hex << std::setw(8) << std::setfill('0') << nonce_count_
- << ":" << cnonce_ << ":" << qop_ << ":"
- << BinaryToHex(GetMD5Digest(a2));
- *response_value = BinaryToHex(GetMD5Digest(combine_ss.str()));
- return Status::OK();
-}
-
-static std::string QuoteString(const std::string &src) {
- std::string dst;
- dst.resize(2 * src.size());
- size_t j = 0;
- for (size_t i = 0; i < src.size(); ++i) {
- if (src[i] == '"') {
- dst[j++] = '\\';
- }
- dst[j++] = src[i];
- }
- dst.resize(j);
- return dst;
-}
-
-static std::string GetMD5Digest(const std::string &src) {
- MD5_CTX ctx;
- unsigned long long res[2];
- MD5_Init(&ctx);
- MD5_Update(&ctx, src.c_str(), src.size());
- MD5_Final(reinterpret_cast<unsigned char *>(res), &ctx);
- return std::string(reinterpret_cast<char *>(res), sizeof(res));
-}
-
-static std::string BinaryToHex(const std::string &src) {
- std::stringstream ss;
- ss << std::hex << std::setfill('0');
- for (size_t i = 0; i < src.size(); ++i) {
- unsigned c = (unsigned)(static_cast<unsigned char>(src[i]));
- ss << std::setw(2) << c;
- }
- return ss.str();
-}
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/statinfo.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/statinfo.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/statinfo.cc
deleted file mode 100644
index 2fb744f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/statinfo.cc
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <hdfspp/statinfo.h>
-#include <sys/stat.h>
-#include <sstream>
-#include <iomanip>
-
-namespace hdfs {
-
-StatInfo::StatInfo()
- : file_type(0),
- length(0),
- permissions(0),
- modification_time(0),
- access_time(0),
- block_replication(0),
- blocksize(0),
- fileid(0),
- children_num(0) {
-}
-
-std::string StatInfo::str() const {
- char perms[11];
- perms[0] = file_type == StatInfo::IS_DIR ? 'd' : '-';
- perms[1] = permissions & S_IRUSR? 'r' : '-';
- perms[2] = permissions & S_IWUSR? 'w': '-';
- perms[3] = permissions & S_IXUSR? 'x': '-';
- perms[4] = permissions & S_IRGRP? 'r' : '-';
- perms[5] = permissions & S_IWGRP? 'w': '-';
- perms[6] = permissions & S_IXGRP? 'x': '-';
- perms[7] = permissions & S_IROTH? 'r' : '-';
- perms[8] = permissions & S_IWOTH? 'w': '-';
- perms[9] = permissions & S_IXOTH? 'x': '-';
- perms[10] = 0;
-
- //Convert to seconds from milliseconds
- const int time_field_length = 17;
- time_t rawtime = modification_time/1000;
- struct tm * timeinfo;
- char buffer[time_field_length];
- timeinfo = localtime(&rawtime);
-
- strftime(buffer,time_field_length,"%Y-%m-%d %H:%M",timeinfo);
- buffer[time_field_length-1] = 0; //null terminator
- std::string time(buffer);
-
- std::stringstream ss;
- ss << std::left << std::setw(12) << perms
- << std::left << std::setw(3) << (!block_replication ? "-" : std::to_string(block_replication))
- << std::left << std::setw(15) << owner
- << std::left << std::setw(15) << group
- << std::right << std::setw(5) << length
- << std::right << std::setw(time_field_length + 2) << time//modification_time
- << " " << full_path;
- return ss.str();
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
deleted file mode 100644
index 4c5c7be..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hdfspp/status.h"
-
-#include <cassert>
-#include <sstream>
-#include <cstring>
-#include <map>
-#include <set>
-
-namespace hdfs {
-
-// Server side exceptions that we capture from the RpcResponseHeaderProto
-const char * kStatusAccessControlException = "org.apache.hadoop.security.AccessControlException";
-const char * kPathIsNotDirectoryException = "org.apache.hadoop.fs.PathIsNotDirectoryException";
-const char * kSnapshotException = "org.apache.hadoop.hdfs.protocol.SnapshotException";
-const char * kStatusStandbyException = "org.apache.hadoop.ipc.StandbyException";
-const char * kStatusSaslException = "javax.security.sasl.SaslException";
-const char * kPathNotFoundException = "org.apache.hadoop.fs.InvalidPathException";
-const char * kPathNotFoundException2 = "java.io.FileNotFoundException";
-const char * kFileAlreadyExistsException = "org.apache.hadoop.fs.FileAlreadyExistsException";
-const char * kPathIsNotEmptyDirectoryException = "org.apache.hadoop.fs.PathIsNotEmptyDirectoryException";
-
-
-const static std::map<std::string, int> kKnownServerExceptionClasses = {
- {kStatusAccessControlException, Status::kAccessControlException},
- {kPathIsNotDirectoryException, Status::kNotADirectory},
- {kSnapshotException, Status::kSnapshotProtocolException},
- {kStatusStandbyException, Status::kStandbyException},
- {kStatusSaslException, Status::kAuthenticationFailed},
- {kPathNotFoundException, Status::kPathNotFound},
- {kPathNotFoundException2, Status::kPathNotFound},
- {kFileAlreadyExistsException, Status::kFileAlreadyExists},
- {kPathIsNotEmptyDirectoryException, Status::kPathIsNotEmptyDirectory}
- };
-
-// Errors that retry cannot fix. TODO: complete the list.
-const static std::set<int> noRetryExceptions = {
- Status::kPermissionDenied,
- Status::kAuthenticationFailed,
- Status::kAccessControlException
-};
-
-Status::Status(int code, const char *msg1)
- : code_(code) {
- if(msg1) {
- msg_ = msg1;
- }
-}
-
-Status::Status(int code, const char *exception_class_name, const char *exception_details)
- : code_(code) {
- // If we can assure this never gets nullptr args this can be
- // in the initializer list.
- if(exception_class_name)
- exception_class_ = exception_class_name;
- if(exception_details)
- msg_ = exception_details;
-
- std::map<std::string, int>::const_iterator it = kKnownServerExceptionClasses.find(exception_class_);
- if(it != kKnownServerExceptionClasses.end()) {
- code_ = it->second;
- }
-}
-
-
-Status Status::OK() {
- return Status();
-}
-
-Status Status::InvalidArgument(const char *msg) {
- return Status(kInvalidArgument, msg);
-}
-
-Status Status::PathNotFound(const char *msg){
- return Status(kPathNotFound, msg);
-}
-
-Status Status::ResourceUnavailable(const char *msg) {
- return Status(kResourceUnavailable, msg);
-}
-
-Status Status::PathIsNotDirectory(const char *msg) {
- return Status(kNotADirectory, msg);
-}
-
-Status Status::Unimplemented() {
- return Status(kUnimplemented, "");
-}
-
-Status Status::Exception(const char *exception_class_name, const char *error_message) {
- // Server side exception but can be represented by std::errc codes
- if (exception_class_name && (strcmp(exception_class_name, kStatusAccessControlException) == 0) )
- return Status(kPermissionDenied, error_message);
- else if (exception_class_name && (strcmp(exception_class_name, kStatusSaslException) == 0))
- return AuthenticationFailed();
- else if (exception_class_name && (strcmp(exception_class_name, kPathNotFoundException) == 0))
- return Status(kPathNotFound, error_message);
- else if (exception_class_name && (strcmp(exception_class_name, kPathNotFoundException2) == 0))
- return Status(kPathNotFound, error_message);
- else if (exception_class_name && (strcmp(exception_class_name, kPathIsNotDirectoryException) == 0))
- return Status(kNotADirectory, error_message);
- else if (exception_class_name && (strcmp(exception_class_name, kSnapshotException) == 0))
- return Status(kInvalidArgument, error_message);
- else if (exception_class_name && (strcmp(exception_class_name, kFileAlreadyExistsException) == 0))
- return Status(kFileAlreadyExists, error_message);
- else if (exception_class_name && (strcmp(exception_class_name, kPathIsNotEmptyDirectoryException) == 0))
- return Status(kPathIsNotEmptyDirectory, error_message);
- else
- return Status(kException, exception_class_name, error_message);
-}
-
-Status Status::Error(const char *error_message) {
- return Exception("Exception", error_message);
-}
-
-Status Status::AuthenticationFailed() {
- return Status::AuthenticationFailed(nullptr);
-}
-
-Status Status::AuthenticationFailed(const char *msg) {
- std::string formatted = "AuthenticationFailed";
- if(msg) {
- formatted += ": ";
- formatted += msg;
- }
- return Status(kAuthenticationFailed, formatted.c_str());
-}
-
-Status Status::AuthorizationFailed() {
- return Status::AuthorizationFailed(nullptr);
-}
-
-Status Status::AuthorizationFailed(const char *msg) {
- std::string formatted = "AuthorizationFailed";
- if(msg) {
- formatted += ": ";
- formatted += msg;
- }
- return Status(kPermissionDenied, formatted.c_str());
-}
-
-Status Status::Canceled() {
- return Status(kOperationCanceled, "Operation canceled");
-}
-
-Status Status::InvalidOffset(const char *msg){
- return Status(kInvalidOffset, msg);
-}
-
-std::string Status::ToString() const {
- if (code_ == kOk) {
- return "OK";
- }
- std::stringstream ss;
- if(!exception_class_.empty()) {
- ss << exception_class_ << ":";
- }
- ss << msg_;
- return ss.str();
-}
-
-bool Status::notWorthRetry() const {
- return noRetryExceptions.find(code_) != noRetryExceptions.end();
-}
-
-Status Status::MutexError(const char *msg) {
- std::string formatted = "MutexError";
- if(msg) {
- formatted += ": ";
- formatted += msg;
- }
- return Status(kBusy/*try_lock failure errno*/, msg);
-}
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/uri.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/uri.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/uri.cc
deleted file mode 100644
index 9e9319b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/uri.cc
+++ /dev/null
@@ -1,454 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <hdfspp/uri.h>
-
-#include <uriparser2/uriparser/Uri.h>
-
-#include <string.h>
-#include <sstream>
-#include <cstdlib>
-#include <cassert>
-#include <limits>
-
-namespace hdfs
-{
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Internal utilities
-//
-///////////////////////////////////////////////////////////////////////////////
-
-const char kReserved[] = ":/?#[]@%+";
-
-std::string URI::encode(const std::string & decoded)
-{
- bool hasCharactersToEncode = false;
- for (auto c : decoded)
- {
- if (isalnum(c) || (strchr(kReserved, c) == NULL))
- {
- continue;
- }
- else
- {
- hasCharactersToEncode = true;
- break;
- }
- }
-
- if (hasCharactersToEncode)
- {
- std::vector<char> buf(decoded.size() * 3 + 1);
- uriEscapeA(decoded.c_str(), &buf[0], true, URI_BR_DONT_TOUCH);
- return std::string(&buf[0]);
- }
- else
- {
- return decoded;
- }
-}
-
-std::string URI::decode(const std::string & encoded)
-{
- bool hasCharactersToDecode = false;
- for (auto c : encoded)
- {
- switch (c)
- {
- case '%':
- case '+':
- hasCharactersToDecode = true;
- break;
- default:
- continue;
- }
- }
-
- if (hasCharactersToDecode)
- {
- std::vector<char> buf(encoded.size() + 1);
- strncpy(&buf[0], encoded.c_str(), buf.size());
- uriUnescapeInPlaceExA(&buf[0], true, URI_BR_DONT_TOUCH);
- return std::string(&buf[0]);
- }
- else
- {
- return encoded;
- }
-}
-
-std::vector<std::string> split(const std::string input, char separator)
-{
- std::vector<std::string> result;
-
- if (!input.empty())
- {
- const char * remaining = input.c_str();
- if (*remaining == '/')
- remaining++;
-
- const char * next_end = strchr(remaining, separator);
- while (next_end) {
- int len = next_end - remaining;
- if (len)
- result.push_back(std::string(remaining, len));
- else
- result.push_back("");
- remaining = next_end + 1;
- next_end = strchr(remaining, separator);
- }
- result.push_back(std::string(remaining));
- }
-
- return result;
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Parsing
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-
-std::string copy_range(const UriTextRangeA *r) {
- const int size = r->afterLast - r->first;
- if (size) {
- return std::string(r->first, size);
- }
- return "";
-}
-
-bool parse_int(const UriTextRangeA *r, int32_t& result)
-{
- std::string int_str = copy_range(r);
- if(!int_str.empty()) {
- errno = 0;
- unsigned long val = ::strtoul(int_str.c_str(), nullptr, 10);
- if(errno == 0 && val < std::numeric_limits<uint16_t>::max()) {
- result = val;
- return true;
- } else {
- return false;
- }
- }
- return true;
-}
-
-
-std::vector<std::string> copy_path(const UriPathSegmentA *ps) {
- std::vector<std::string> result;
- if (nullptr == ps)
- return result;
-
- for (; ps != 0; ps = ps->next) {
- result.push_back(copy_range(&ps->text));
- }
-
- return result;
-}
-
-void parse_user_info(const UriTextRangeA *r, std::string * user, std::string * pass) {
- // Output parameters
- assert(user);
- assert(pass);
-
- std::string user_and_password = copy_range(r);
- if (!user_and_password.empty()) {
- const char * begin = user_and_password.c_str();
- const char * colon_loc = strchr(begin, ':');
- if (colon_loc) {
- *user = std::string(begin, colon_loc - begin - 1);
- *pass = colon_loc + 1;
- } else {
- *user = user_and_password;
- }
- }
-}
-
-
-std::vector<URI::Query> parse_queries(const char *first, const char * afterLast) {
- std::vector<URI::Query> result;
- UriQueryListA * query;
- int count;
- int dissect_result = uriDissectQueryMallocExA(&query, &count, first, afterLast, false, URI_BR_DONT_TOUCH);
- if (URI_SUCCESS == dissect_result) {
- for (auto ps = query; ps != nullptr; ps = ps->next) {
- std::string key = ps->key ? URI::encode(ps->key) : "";
- std::string value = ps->value ? URI::encode(ps->value) : "";
- result.emplace_back(key, value);
- }
- uriFreeQueryListA(query);
- }
-
- return result;
-}
-
-// Parse a string into a URI. Throw a hdfs::uri_parse_error if URI is malformed.
-URI URI::parse_from_string(const std::string &str)
-{
- URI ret;
- bool ok = true;
-
- UriParserStateA state;
- memset(&state, 0, sizeof(state));
- UriUriA uu;
-
- state.uri = &uu;
- int parseResult = uriParseUriA(&state, str.c_str());
- ok &= (parseResult == URI_SUCCESS);
-
- if (ok) {
- ret.scheme = copy_range(&uu.scheme);
- ret.host = copy_range(&uu.hostText);
- ok &= parse_int(&uu.portText, ret._port);
- ret.path = copy_path(uu.pathHead);
- ret.queries = parse_queries(uu.query.first, uu.query.afterLast);
- ret.fragment = copy_range(&uu.fragment);
- parse_user_info(&uu.userInfo, &ret.user, &ret.pass);
- uriFreeUriMembersA(&uu);
- }
- uriFreeUriMembersA(&uu);
-
- if (ok) {
- return ret;
- } else {
- throw uri_parse_error(str);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Getters and setters
-//
-///////////////////////////////////////////////////////////////////////////////
-
-URI::URI() : _port(-1) {}
-
-URI::Query::Query(const std::string& k, const std::string& v) : key(k), value(v) {}
-
-std::string URI::str(bool encoded_output) const
-{
- std::stringstream ss;
- if (!scheme.empty()) ss << from_encoded(encoded_output, scheme) << "://";
- if (!user.empty() || !pass.empty()) {
- if (!user.empty()) ss << from_encoded(encoded_output, user);
- if (!pass.empty()) ss << ":" << from_encoded(encoded_output, pass);
- ss << "@";
- }
- if (has_authority()) ss << build_authority(encoded_output);
- if (!path.empty()) ss << get_path(encoded_output);
- if (!queries.empty()) ss << "?" << get_query(encoded_output);
- if (!fragment.empty()) ss << "#" << from_encoded(encoded_output, fragment);
-
- return ss.str();
-}
-
-bool URI::has_authority() const
-{
- return (!host.empty()) || (has_port());
-}
-
-std::string URI::build_authority(bool encoded_output) const
-{
- std::stringstream ss;
- ss << URI::from_encoded(encoded_output, host);
- if (has_port())
- {
- ss << ":" << _port;
- }
- return ss.str();
-}
-
-std::string URI::get_scheme(bool encoded_output) const {
- return from_encoded(encoded_output,scheme);
-}
-
-void URI::set_scheme(const std::string &s, bool encoded_input) {
- scheme = to_encoded(encoded_input,s);
-}
-
-std::string URI::get_host(bool encoded_output) const {
- return from_encoded(encoded_output,host);
-}
-
-void URI::set_host(const std::string& h, bool encoded_input) {
- host = to_encoded(encoded_input,h);
-}
-
-bool URI::has_port() const {
- return _port != -1;
-}
-
-uint16_t URI::get_port() const {
- return (uint16_t)_port;
-}
-
-uint16_t URI::get_port_or_default(uint16_t val) const {
- return has_port() ? (uint16_t)_port : val;
-}
-
-void URI::set_port(uint16_t p)
-{
- _port = (int32_t)p & 0xFFFF;
-}
-
-void URI::clear_port()
-{
- _port = -1;
-}
-
-std::string URI::get_path(bool encoded_output) const
-{
- std::ostringstream out;
- for (const std::string& s: path) {
- out << "/" << from_encoded(encoded_output, s);
- }
- return out.str();
-}
-
-std::vector<std::string> URI::get_path_elements(bool encoded_output) const
-{
- std::vector<std::string> result;
- for (const std::string& path_elem: path) {
- result.push_back(from_encoded(encoded_output, path_elem));
- }
-
- return result;
-}
-
-void URI::parse_path(bool input_encoded, const std::string &input_path)
-{
- std::vector<std::string> split_path = split(input_path, '/');
- for (const std::string& s: split_path) {
- path.push_back(to_encoded(input_encoded, s));
- }
-}
-
-// Mostly copied and modified from uriparser2.c
-
-void URI::set_path(const std::string &p, bool encoded_input) {
- parse_path(encoded_input, p);
-}
-
-void URI::add_path(const std::string &p, bool encoded_input)
-{
- path.push_back(to_encoded(encoded_input, p));
-}
-
-std::string URI::get_query(bool encoded_output) const {
- bool first = true;
- std::stringstream ss;
- for (const Query& q: queries) {
- if (!first) {
- ss << "&";
- }
- ss << from_encoded(encoded_output, q.key) << "=" << from_encoded(encoded_output, q.value);
- first = false;
- }
-
- return ss.str();
-}
-
-std::vector<URI::Query> URI::get_query_elements(bool encoded_output) const
-{
- std::vector<Query> result;
- for (const Query& q: queries) {
- std::string key = from_encoded(encoded_output, q.key);
- std::string value = from_encoded(encoded_output, q.value);
- result.emplace_back(key, value);
- }
-
- return result;
-}
-
-void URI::set_query(const std::string &q) {
- queries = parse_queries(q.c_str(), q.c_str() + q.size() + 1);
-}
-
-
-void URI::add_query(const std::string &name, const std::string & value, bool encoded_input)
-{
- queries.emplace_back(to_encoded(encoded_input, name), to_encoded(encoded_input, value));
-}
-
-void URI::remove_query(const std::string &q_name, bool encoded_input)
-{
- if (queries.empty())
- return;
-
- // This is the one place we need to do decoded comparisons
- std::string decoded_key = encoded_input ? decode(q_name) : q_name;
-
- for (int i = queries.size() - 1; i >= 0; i--) {
- if (decode(queries[i].key) == decoded_key) {
- queries.erase(queries.begin() + i);
- }
- }
-}
-
-std::string URI::get_fragment(bool encoded_output) const {
- return from_encoded(encoded_output, fragment);
-}
-
-void URI::set_fragment(const std::string &f, bool encoded_input) {
- fragment = to_encoded(encoded_input,f);
-}
-
-std::string URI::from_encoded(bool encoded_output, const std::string & input) {
- return encoded_output ? input : decode(input);
-}
-
-std::string URI::to_encoded(bool encoded_input, const std::string & input) {
- return encoded_input ? input : encode(input);
-}
-
-std::string URI::GetDebugString() const {
- std::stringstream ss;
- ss << std::endl;
- ss << "\t" << "uri.str() = \"" << str() << "\"" << std::endl;
- ss << "\t" << "uri.get_scheme() = \"" << get_scheme() << "\"" << std::endl;
- ss << "\t" << "uri.get_host() = \"" << get_host() << "\"" << std::endl;
-
- if(_port == -1)
- ss << "\t" << "uri.get_port() = invalid (uninitialized)" << std::endl;
- else
- ss << "\t" << "uri.get_port() = \"" << _port << "\"" << std::endl;
-
- ss << "\t" << "uri.get_path() = \"" << get_path() << "\"" << std::endl;
- ss << "\t" << "uri.get_fragment() = \"" << get_fragment() << "\"" << std::endl;
-
-
- std::vector<Query> query_elems = get_query_elements();
-
- if(query_elems.size() > 0)
- ss << "\t" << "Query elements:" << std::endl;
-
- for(auto qry = query_elems.begin(); qry != query_elems.end(); qry++) {
- ss << "\t\t" << qry->key << " -> " << qry->value << std::endl;
- }
-
- return ss.str();
-}
-
-} // end namespace hdfs
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.cc
deleted file mode 100644
index 375f951..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/util.h"
-#include "common/util_c.h"
-
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-
-#include <exception>
-#include <sstream>
-#include <iostream>
-#include <iomanip>
-#include <thread>
-
-
-namespace hdfs {
-
-bool ReadDelimitedPBMessage(::google::protobuf::io::CodedInputStream *in,
- ::google::protobuf::MessageLite *msg) {
- uint32_t size = 0;
- in->ReadVarint32(&size);
- auto limit = in->PushLimit(size);
- bool res = msg->ParseFromCodedStream(in);
- in->PopLimit(limit);
-
- return res;
-}
-
-
-std::string SerializeDelimitedProtobufMessage(const ::google::protobuf::MessageLite *msg,
- bool *err) {
- namespace pbio = ::google::protobuf::io;
-
- std::string buf;
-
- int size = msg->ByteSize();
- buf.reserve(pbio::CodedOutputStream::VarintSize32(size) + size);
- pbio::StringOutputStream ss(&buf);
- pbio::CodedOutputStream os(&ss);
- os.WriteVarint32(size);
-
- if(err)
- *err = msg->SerializeToCodedStream(&os);
-
- return buf;
-}
-
-
-std::string GetRandomClientName() {
- std::vector<unsigned char>buf(8);
- RAND_pseudo_bytes(&buf[0], 8);
-
- std::ostringstream oss;
- oss << "DFSClient_" << getpid() << "_" <<
- std::this_thread::get_id() << "_" <<
- std::setw(2) << std::hex << std::uppercase << std::setfill('0');
- for (unsigned char b: buf)
- oss << static_cast<unsigned>(b);
-
- return oss.str();
-}
-
-std::string Base64Encode(const std::string &src) {
- //encoded size is (sizeof(buf) + 2) / 3 * 4
- static const std::string base64_chars =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz"
- "0123456789+/";
- std::string ret;
- int i = 0;
- int j = 0;
- unsigned char char_array_3[3];
- unsigned char char_array_4[4];
- unsigned const char *bytes_to_encode = reinterpret_cast<unsigned const char *>(&src[i]);
- unsigned int in_len = src.size();
-
- while (in_len--) {
- char_array_3[i++] = *(bytes_to_encode++);
- if (i == 3) {
- char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
- char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
- char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
- char_array_4[3] = char_array_3[2] & 0x3f;
-
- for(i = 0; (i <4) ; i++)
- ret += base64_chars[char_array_4[i]];
- i = 0;
- }
- }
-
- if (i) {
- for(j = i; j < 3; j++)
- char_array_3[j] = '\0';
-
- char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
- char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
- char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
- char_array_4[3] = char_array_3[2] & 0x3f;
-
- for (j = 0; (j < i + 1); j++)
- ret += base64_chars[char_array_4[j]];
-
- while((i++ < 3))
- ret += '=';
- }
- return ret;
-}
-
-
-std::string SafeDisconnect(asio::ip::tcp::socket *sock) {
- std::string err;
- if(sock && sock->is_open()) {
- /**
- * Even though we just checked that the socket is open it's possible
- * it isn't in a state where it can properly send or receive. If that's
- * the case asio will turn the underlying error codes from shutdown()
- * and close() into unhelpfully named std::exceptions. Due to the
- * relatively innocuous nature of most of these error codes it's better
- * to just catch and return a flag so the caller can log failure.
- **/
-
- try {
- sock->shutdown(asio::ip::tcp::socket::shutdown_both);
- } catch (const std::exception &e) {
- err = std::string("shutdown() threw") + e.what();
- }
-
- try {
- sock->close();
- } catch (const std::exception &e) {
- // don't append if shutdown() already failed, first failure is the useful one
- if(err.empty())
- err = std::string("close() threw") + e.what();
- }
-
- }
- return err;
-}
-
-bool IsHighBitSet(uint64_t num) {
- uint64_t firstBit = (uint64_t) 1 << 63;
- if (num & firstBit) {
- return true;
- } else {
- return false;
- }
-}
-
-}
-
-void ShutdownProtobufLibrary_C() {
- google::protobuf::ShutdownProtobufLibrary();
-}
-
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.h
deleted file mode 100644
index be902bd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_COMMON_UTIL_H_
-#define LIB_COMMON_UTIL_H_
-
-#include "hdfspp/status.h"
-#include "common/logging.h"
-
-#include <sstream>
-#include <mutex>
-#include <string>
-
-#include <asio/error_code.hpp>
-#include <openssl/rand.h>
-
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <asio.hpp>
-
-namespace hdfs {
-
-// typedefs based on code that's repeated everywhere
-typedef std::lock_guard<std::mutex> mutex_guard;
-
-
-static inline Status ToStatus(const ::asio::error_code &ec) {
- if (ec) {
- return Status(ec.value(), ec.message().c_str());
- } else {
- return Status::OK();
- }
-}
-
-// Determine size of buffer that needs to be allocated in order to serialize msg
-// in delimited format
-static inline int DelimitedPBMessageSize(const ::google::protobuf::MessageLite *msg) {
- size_t size = msg->ByteSize();
- return ::google::protobuf::io::CodedOutputStream::VarintSize32(size) + size;
-}
-
-// Construct msg from the input held in the CodedInputStream
-// return false on failure, otherwise return true
-bool ReadDelimitedPBMessage(::google::protobuf::io::CodedInputStream *in,
- ::google::protobuf::MessageLite *msg);
-
-// Serialize msg into a delimited form (java protobuf compatible)
-// err, if not null, will be set to false on failure
-std::string SerializeDelimitedProtobufMessage(const ::google::protobuf::MessageLite *msg,
- bool *err);
-
-std::string Base64Encode(const std::string &src);
-
-// Return a new high-entropy client name
-std::string GetRandomClientName();
-
-// Returns true if _someone_ is holding the lock (not necessarily this thread,
-// but a std::mutex doesn't track which thread is holding the lock)
-template<class T>
-bool lock_held(T & mutex) {
- bool result = !mutex.try_lock();
- if (!result)
- mutex.unlock();
- return result;
-}
-
-// Shutdown and close a socket safely; will check if the socket is open and
-// catch anything thrown by asio.
-// Returns a string containing error message on failure, otherwise an empty string.
-std::string SafeDisconnect(asio::ip::tcp::socket *sock);
-
-
-
-// The following helper function is used for classes that look like the following:
-//
-// template <typename socket_like_object>
-// class ObjectThatHoldsSocket {
-// socket_like_object sock_;
-// void DoSomethingWithAsioTcpSocket();
-// }
-//
-// The trick here is that ObjectThatHoldsSocket may be templated on a mock socket
-// in mock tests. If you have a method that explicitly needs to call some asio
-// method unrelated to the mock test you need a way of making sure socket_like_object
-// is, in fact, an asio::ip::tcp::socket. Otherwise the mocks need to implement
-// lots of no-op boilerplate. This will return the value of the input param if
-// it's a asio socket, and nullptr if it's anything else.
-
-template <typename sock_t>
-inline asio::ip::tcp::socket *get_asio_socket_ptr(sock_t *s) {
- (void)s;
- return nullptr;
-}
-template<>
-inline asio::ip::tcp::socket *get_asio_socket_ptr<asio::ip::tcp::socket>
- (asio::ip::tcp::socket *s) {
- return s;
-}
-
-//Check if the high bit is set
-bool IsHighBitSet(uint64_t num);
-
-
-// Provide a way to do an atomic swap on a callback.
-// SetCallback, AtomicSwapCallback, and GetCallback can only be called once each.
-// AtomicSwapCallback and GetCallback must only be called after SetCallback.
-//
-// We can't throw on error, and since the callback is templated it's tricky to
-// generate generic dummy callbacks. Complain loudly in the log and get good
-// test coverage. It shouldn't be too hard to avoid invalid states.
-template <typename CallbackType>
-class SwappableCallbackHolder {
- private:
- std::mutex state_lock_;
- CallbackType callback_;
- bool callback_set_ = false;
- bool callback_swapped_ = false;
- bool callback_accessed_ = false;
- public:
- bool IsCallbackSet() {
- mutex_guard swap_lock(state_lock_);
- return callback_set_;
- }
-
- bool IsCallbackAccessed() {
- mutex_guard swap_lock(state_lock_);
- return callback_accessed_;
- }
-
- bool SetCallback(const CallbackType& callback) {
- mutex_guard swap_lock(state_lock_);
- if(callback_set_ || callback_swapped_ || callback_accessed_) {
- LOG_ERROR(kAsyncRuntime, << "SetCallback violates access invariants.")
- return false;
- }
- callback_ = callback;
- callback_set_ = true;
- return true;
- }
-
- CallbackType AtomicSwapCallback(const CallbackType& replacement, bool& swapped) {
- mutex_guard swap_lock(state_lock_);
- if(!callback_set_ || callback_swapped_) {
- LOG_ERROR(kAsyncRuntime, << "AtomicSwapCallback violates access invariants.")
- swapped = false;
- } else if (callback_accessed_) {
- // Common case where callback has been invoked but caller may not know
- LOG_DEBUG(kAsyncRuntime, << "AtomicSwapCallback called after callback has been accessed");
- return callback_;
- }
-
- CallbackType old = callback_;
- callback_ = replacement;
- callback_swapped_ = true;
- swapped = true;
- return old;
- }
- CallbackType GetCallback() {
- mutex_guard swap_lock(state_lock_);
- if(!callback_set_ || callback_accessed_) {
- LOG_ERROR(kAsyncRuntime, << "GetCallback violates access invariants.")
- }
- callback_accessed_ = true;
- return callback_;
- }
-};
-
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util_c.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util_c.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util_c.h
deleted file mode 100644
index c7db7d2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/util_c.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIB_COMMON_UTIL_C_H_
-#define LIB_COMMON_UTIL_C_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- void ShutdownProtobufLibrary_C();
-
-#ifdef __cplusplus
-} /* end extern "C" */
-#endif
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/CMakeLists.txt
deleted file mode 100644
index fda51a1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(connection_obj OBJECT datanodeconnection.cc)
-add_dependencies(connection_obj proto)
-add_library(connection $<TARGET_OBJECTS:connection_obj>)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.cc
deleted file mode 100644
index 27cd666..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "datanodeconnection.h"
-#include "common/util.h"
-
-namespace hdfs {
-
-DataNodeConnection::~DataNodeConnection(){}
-DataNodeConnectionImpl::~DataNodeConnectionImpl(){}
-
-DataNodeConnectionImpl::DataNodeConnectionImpl(asio::io_service * io_service,
- const ::hadoop::hdfs::DatanodeInfoProto &dn_proto,
- const hadoop::common::TokenProto *token,
- LibhdfsEvents *event_handlers) : event_handlers_(event_handlers)
-{
- using namespace ::asio::ip;
-
- conn_.reset(new tcp::socket(*io_service));
- auto datanode_addr = dn_proto.id();
- endpoints_[0] = tcp::endpoint(address::from_string(datanode_addr.ipaddr()),
- datanode_addr.xferport());
- uuid_ = dn_proto.id().datanodeuuid();
-
- if (token) {
- token_.reset(new hadoop::common::TokenProto());
- token_->CheckTypeAndMergeFrom(*token);
- }
-}
-
-
-void DataNodeConnectionImpl::Connect(
- std::function<void(Status status, std::shared_ptr<DataNodeConnection> dn)> handler) {
- // Keep the DN from being freed until we're done
- mutex_guard state_lock(state_lock_);
- auto shared_this = shared_from_this();
- asio::async_connect(*conn_, endpoints_.begin(), endpoints_.end(),
- [shared_this, handler](const asio::error_code &ec, std::array<asio::ip::tcp::endpoint, 1>::iterator it) {
- (void)it;
- handler(ToStatus(ec), shared_this); });
-}
-
-void DataNodeConnectionImpl::Cancel() {
- std::string err;
-
- { // scope the lock for disconnect only, log has it's own lock
- mutex_guard state_lock(state_lock_);
- err = SafeDisconnect(conn_.get());
- }
-
- if(!err.empty()) {
- LOG_WARN(kBlockReader, << "Error disconnecting socket in DataNodeConnectionImpl::Cancel, " << err);
- }
-}
-
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.h
deleted file mode 100644
index 21193b3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/connection/datanodeconnection.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_LIB_CONNECTION_DATANODECONNECTION_H_
-#define LIBHDFSPP_LIB_CONNECTION_DATANODECONNECTION_H_
-
-#include "common/hdfs_ioservice.h"
-#include "common/async_stream.h"
-#include "ClientNamenodeProtocol.pb.h"
-#include "common/libhdfs_events_impl.h"
-#include "common/logging.h"
-#include "common/util.h"
-#include "common/new_delete.h"
-
-#include "asio.hpp"
-
-namespace hdfs {
-
-class DataNodeConnection : public AsyncStream {
-public:
- MEMCHECKED_CLASS(DataNodeConnection)
- std::string uuid_;
- std::unique_ptr<hadoop::common::TokenProto> token_;
-
- virtual ~DataNodeConnection();
- virtual void Connect(std::function<void(Status status, std::shared_ptr<DataNodeConnection> dn)> handler) = 0;
- virtual void Cancel() = 0;
-};
-
-
-struct SocketDeleter {
- inline void operator()(asio::ip::tcp::socket *sock) {
- // Cancel may have already closed the socket.
- std::string err = SafeDisconnect(sock);
- if(!err.empty()) {
- LOG_WARN(kBlockReader, << "Error disconnecting socket: " << err);
- }
- delete sock;
- }
-};
-
-class DataNodeConnectionImpl : public DataNodeConnection, public std::enable_shared_from_this<DataNodeConnectionImpl>{
-private:
- // held (briefly) while posting async ops to the asio task queue
- std::mutex state_lock_;
-public:
- std::unique_ptr<asio::ip::tcp::socket, SocketDeleter> conn_;
- std::array<asio::ip::tcp::endpoint, 1> endpoints_;
- std::string uuid_;
- LibhdfsEvents *event_handlers_;
-
- virtual ~DataNodeConnectionImpl();
- DataNodeConnectionImpl(asio::io_service * io_service, const ::hadoop::hdfs::DatanodeInfoProto &dn_proto,
- const hadoop::common::TokenProto *token,
- LibhdfsEvents *event_handlers);
-
- void Connect(std::function<void(Status status, std::shared_ptr<DataNodeConnection> dn)> handler) override;
-
- void Cancel() override;
-
- void async_read_some(const MutableBuffers &buf,
- std::function<void (const asio::error_code & error, std::size_t bytes_transferred) > handler)
- override {
- event_handlers_->call("DN_read_req", "", "", buf.end() - buf.begin());
-
-
- mutex_guard state_lock(state_lock_);
- conn_->async_read_some(buf, handler);
- };
-
- void async_write_some(const ConstBuffers &buf,
- std::function<void (const asio::error_code & error, std::size_t bytes_transferred) > handler)
- override {
- event_handlers_->call("DN_write_req", "", "", buf.end() - buf.begin());
-
- mutex_guard state_lock(state_lock_);
- conn_->async_write_some(buf, handler);
- }
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/CMakeLists.txt
deleted file mode 100644
index 624cda5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(fs_obj OBJECT filesystem.cc filesystem_sync.cc filehandle.cc bad_datanode_tracker.cc namenode_operations.cc)
-add_dependencies(fs_obj proto)
-add_library(fs $<TARGET_OBJECTS:fs_obj>)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.cc
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.cc b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.cc
deleted file mode 100644
index be9020f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/fs/bad_datanode_tracker.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- **/
-
-#include "bad_datanode_tracker.h"
-
-namespace hdfs {
-
-NodeExclusionRule::~NodeExclusionRule() {}
-
-BadDataNodeTracker::BadDataNodeTracker(const Options& options)
- : timeout_duration_(options.host_exclusion_duration),
- test_clock_shift_(0) {}
-
-BadDataNodeTracker::~BadDataNodeTracker() {}
-
-void BadDataNodeTracker::AddBadNode(const std::string& dn) {
- std::lock_guard<std::mutex> update_lock(datanodes_update_lock_);
- datanodes_[dn] = Clock::now();
-}
-
-bool BadDataNodeTracker::IsBadNode(const std::string& dn) {
- std::lock_guard<std::mutex> update_lock(datanodes_update_lock_);
-
- if (datanodes_.count(dn) == 1) {
- const TimePoint& entered_time = datanodes_[dn];
- if (TimeoutExpired(entered_time)) {
- datanodes_.erase(dn);
- return false;
- }
- /* node in set and still marked bad */
- return true;
- }
- return false;
-}
-
-void BadDataNodeTracker::TEST_set_clock_shift(int t) { test_clock_shift_ = t; }
-
-bool BadDataNodeTracker::TimeoutExpired(const TimePoint& t) {
- TimePoint threshold = Clock::now() -
- std::chrono::milliseconds(timeout_duration_) +
- std::chrono::milliseconds(test_clock_shift_);
- if (t < threshold) {
- return true;
- }
- return false;
-}
-
-ExclusionSet::ExclusionSet(const std::set<std::string>& excluded)
- : excluded_(excluded) {}
-
-ExclusionSet::~ExclusionSet() {}
-
-bool ExclusionSet::IsBadNode(const std::string& node_uuid) {
- return excluded_.count(node_uuid) == 1;
-}
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[05/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/openssl_init.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/openssl_init.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/openssl_init.ipp
deleted file mode 100644
index 5104a41..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/impl/openssl_init.ipp
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// ssl/detail/impl/openssl_init.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_DETAIL_IMPL_OPENSSL_INIT_IPP
-#define ASIO_SSL_DETAIL_IMPL_OPENSSL_INIT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <vector>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/tss_ptr.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 detail {
-
-class openssl_init_base::do_init
-{
-public:
- do_init()
- {
- ::SSL_library_init();
- ::SSL_load_error_strings();
- ::OpenSSL_add_all_algorithms();
-
- mutexes_.resize(::CRYPTO_num_locks());
- for (size_t i = 0; i < mutexes_.size(); ++i)
- mutexes_[i].reset(new asio::detail::mutex);
- ::CRYPTO_set_locking_callback(&do_init::openssl_locking_func);
- ::CRYPTO_set_id_callback(&do_init::openssl_id_func);
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- null_compression_methods_ = sk_SSL_COMP_new_null();
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- }
-
- ~do_init()
- {
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- sk_SSL_COMP_free(null_compression_methods_);
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
- ::CRYPTO_set_id_callback(0);
- ::CRYPTO_set_locking_callback(0);
- ::ERR_free_strings();
- ::ERR_remove_state(0);
- ::EVP_cleanup();
- ::CRYPTO_cleanup_all_ex_data();
- ::CONF_modules_unload(1);
-#if !defined(OPENSSL_NO_ENGINE)
- ::ENGINE_cleanup();
-#endif // !defined(OPENSSL_NO_ENGINE)
- }
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- STACK_OF(SSL_COMP)* get_null_compression_methods() const
- {
- return null_compression_methods_;
- }
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-private:
- static unsigned long openssl_id_func()
- {
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- return ::GetCurrentThreadId();
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- void* id = instance()->thread_id_;
- if (id == 0)
- instance()->thread_id_ = id = &id; // Ugh.
- ASIO_ASSERT(sizeof(unsigned long) >= sizeof(void*));
- return reinterpret_cast<unsigned long>(id);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
- }
-
- static void openssl_locking_func(int mode, int n,
- const char* /*file*/, int /*line*/)
- {
- if (mode & CRYPTO_LOCK)
- instance()->mutexes_[n]->lock();
- else
- instance()->mutexes_[n]->unlock();
- }
-
- // Mutexes to be used in locking callbacks.
- std::vector<asio::detail::shared_ptr<
- asio::detail::mutex> > mutexes_;
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
- // The thread identifiers to be used by openssl.
- asio::detail::tss_ptr<void> thread_id_;
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- STACK_OF(SSL_COMP)* null_compression_methods_;
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-};
-
-asio::detail::shared_ptr<openssl_init_base::do_init>
-openssl_init_base::instance()
-{
- static asio::detail::shared_ptr<do_init> init(new do_init);
- return init;
-}
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-STACK_OF(SSL_COMP)* openssl_init_base::get_null_compression_methods()
-{
- return instance()->get_null_compression_methods();
-}
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_IMPL_OPENSSL_INIT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/io.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/io.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/io.hpp
deleted file mode 100644
index bb60ccc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/io.hpp
+++ /dev/null
@@ -1,347 +0,0 @@
-//
-// ssl/detail/io.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_DETAIL_IO_HPP
-#define ASIO_SSL_DETAIL_IO_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 "asio/ssl/detail/engine.hpp"
-# include "asio/ssl/detail/stream_core.hpp"
-# include "asio/write.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename Stream, typename Operation>
-std::size_t io(Stream& next_layer, stream_core& core,
- const Operation& op, asio::error_code& ec)
-{
- std::size_t bytes_transferred = 0;
- do switch (op(core.engine_, ec, bytes_transferred))
- {
- case engine::want_input_and_retry:
-
- // If the input buffer is empty then we need to read some more data from
- // the underlying transport.
- if (asio::buffer_size(core.input_) == 0)
- core.input_ = asio::buffer(core.input_buffer_,
- next_layer.read_some(core.input_buffer_, ec));
-
- // Pass the new input data to the engine.
- core.input_ = core.engine_.put_input(core.input_);
-
- // Try the operation again.
- continue;
-
- case engine::want_output_and_retry:
-
- // Get output data from the engine and write it to the underlying
- // transport.
- asio::write(next_layer,
- core.engine_.get_output(core.output_buffer_), ec);
-
- // Try the operation again.
- continue;
-
- case engine::want_output:
-
- // Get output data from the engine and write it to the underlying
- // transport.
- asio::write(next_layer,
- core.engine_.get_output(core.output_buffer_), ec);
-
- // Operation is complete. Return result to caller.
- core.engine_.map_error_code(ec);
- return bytes_transferred;
-
- default:
-
- // Operation is complete. Return result to caller.
- core.engine_.map_error_code(ec);
- return bytes_transferred;
-
- } while (!ec);
-
- // Operation failed. Return result to caller.
- core.engine_.map_error_code(ec);
- return 0;
-}
-
-template <typename Stream, typename Operation, typename Handler>
-class io_op
-{
-public:
- io_op(Stream& next_layer, stream_core& core,
- const Operation& op, Handler& handler)
- : next_layer_(next_layer),
- core_(core),
- op_(op),
- start_(0),
- want_(engine::want_nothing),
- bytes_transferred_(0),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- io_op(const io_op& other)
- : next_layer_(other.next_layer_),
- core_(other.core_),
- op_(other.op_),
- start_(other.start_),
- want_(other.want_),
- ec_(other.ec_),
- bytes_transferred_(other.bytes_transferred_),
- handler_(other.handler_)
- {
- }
-
- io_op(io_op&& other)
- : next_layer_(other.next_layer_),
- core_(other.core_),
- op_(other.op_),
- start_(other.start_),
- want_(other.want_),
- ec_(other.ec_),
- bytes_transferred_(other.bytes_transferred_),
- handler_(ASIO_MOVE_CAST(Handler)(other.handler_))
- {
- }
-#endif // defined(ASIO_HAS_MOVE)
-
- void operator()(asio::error_code ec,
- std::size_t bytes_transferred = ~std::size_t(0), int start = 0)
- {
- switch (start_ = start)
- {
- case 1: // Called after at least one async operation.
- do
- {
- switch (want_ = op_(core_.engine_, ec_, bytes_transferred_))
- {
- case engine::want_input_and_retry:
-
- // If the input buffer already has data in it we can pass it to the
- // engine and then retry the operation immediately.
- if (asio::buffer_size(core_.input_) != 0)
- {
- core_.input_ = core_.engine_.put_input(core_.input_);
- continue;
- }
-
- // The engine wants more data to be read from input. However, we
- // cannot allow more than one read operation at a time on the
- // underlying transport. The pending_read_ timer's expiry is set to
- // pos_infin if a read is in progress, and neg_infin otherwise.
- if (core_.pending_read_.expires_at() == core_.neg_infin())
- {
- // Prevent other read operations from being started.
- core_.pending_read_.expires_at(core_.pos_infin());
-
- // Start reading some data from the underlying transport.
- next_layer_.async_read_some(
- asio::buffer(core_.input_buffer_),
- ASIO_MOVE_CAST(io_op)(*this));
- }
- else
- {
- // Wait until the current read operation completes.
- core_.pending_read_.async_wait(ASIO_MOVE_CAST(io_op)(*this));
- }
-
- // Yield control until asynchronous operation completes. Control
- // resumes at the "default:" label below.
- return;
-
- case engine::want_output_and_retry:
- case engine::want_output:
-
- // The engine wants some data to be written to the output. However, we
- // cannot allow more than one write operation at a time on the
- // underlying transport. The pending_write_ timer's expiry is set to
- // pos_infin if a write is in progress, and neg_infin otherwise.
- if (core_.pending_write_.expires_at() == core_.neg_infin())
- {
- // Prevent other write operations from being started.
- core_.pending_write_.expires_at(core_.pos_infin());
-
- // Start writing all the data to the underlying transport.
- asio::async_write(next_layer_,
- core_.engine_.get_output(core_.output_buffer_),
- ASIO_MOVE_CAST(io_op)(*this));
- }
- else
- {
- // Wait until the current write operation completes.
- core_.pending_write_.async_wait(ASIO_MOVE_CAST(io_op)(*this));
- }
-
- // Yield control until asynchronous operation completes. Control
- // resumes at the "default:" label below.
- return;
-
- default:
-
- // The SSL operation is done and we can invoke the handler, but we
- // have to keep in mind that this function might be being called from
- // the async operation's initiating function. In this case we're not
- // allowed to call the handler directly. Instead, issue a zero-sized
- // read so the handler runs "as-if" posted using io_service::post().
- if (start)
- {
- next_layer_.async_read_some(
- asio::buffer(core_.input_buffer_, 0),
- ASIO_MOVE_CAST(io_op)(*this));
-
- // Yield control until asynchronous operation completes. Control
- // resumes at the "default:" label below.
- return;
- }
- else
- {
- // Continue on to run handler directly.
- break;
- }
- }
-
- default:
- if (bytes_transferred != ~std::size_t(0) && !ec_)
- ec_ = ec;
-
- switch (want_)
- {
- case engine::want_input_and_retry:
-
- // Add received data to the engine's input.
- core_.input_ = asio::buffer(
- core_.input_buffer_, bytes_transferred);
- core_.input_ = core_.engine_.put_input(core_.input_);
-
- // Release any waiting read operations.
- core_.pending_read_.expires_at(core_.neg_infin());
-
- // Try the operation again.
- continue;
-
- case engine::want_output_and_retry:
-
- // Release any waiting write operations.
- core_.pending_write_.expires_at(core_.neg_infin());
-
- // Try the operation again.
- continue;
-
- case engine::want_output:
-
- // Release any waiting write operations.
- core_.pending_write_.expires_at(core_.neg_infin());
-
- // Fall through to call handler.
-
- default:
-
- // Pass the result to the handler.
- op_.call_handler(handler_,
- core_.engine_.map_error_code(ec_),
- ec_ ? 0 : bytes_transferred_);
-
- // Our work here is done.
- return;
- }
- } while (!ec_);
-
- // Operation failed. Pass the result to the handler.
- op_.call_handler(handler_, core_.engine_.map_error_code(ec_), 0);
- }
- }
-
-//private:
- Stream& next_layer_;
- stream_core& core_;
- Operation op_;
- int start_;
- engine::want want_;
- asio::error_code ec_;
- std::size_t bytes_transferred_;
- Handler handler_;
-};
-
-template <typename Stream, typename Operation, typename Handler>
-inline void* asio_handler_allocate(std::size_t size,
- io_op<Stream, Operation, Handler>* this_handler)
-{
- return asio_handler_alloc_helpers::allocate(
- size, this_handler->handler_);
-}
-
-template <typename Stream, typename Operation, typename Handler>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
- io_op<Stream, Operation, Handler>* this_handler)
-{
- asio_handler_alloc_helpers::deallocate(
- pointer, size, this_handler->handler_);
-}
-
-template <typename Stream, typename Operation, typename Handler>
-inline bool asio_handler_is_continuation(
- io_op<Stream, Operation, Handler>* this_handler)
-{
- return this_handler->start_ == 0 ? true
- : asio_handler_cont_helpers::is_continuation(this_handler->handler_);
-}
-
-template <typename Function, typename Stream,
- typename Operation, typename Handler>
-inline void asio_handler_invoke(Function& function,
- io_op<Stream, Operation, Handler>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Function, typename Stream,
- typename Operation, typename Handler>
-inline void asio_handler_invoke(const Function& function,
- io_op<Stream, Operation, Handler>* this_handler)
-{
- asio_handler_invoke_helpers::invoke(
- function, this_handler->handler_);
-}
-
-template <typename Stream, typename Operation, typename Handler>
-inline void async_io(Stream& next_layer, stream_core& core,
- const Operation& op, Handler& handler)
-{
- io_op<Stream, Operation, Handler>(
- next_layer, core, op, handler)(
- asio::error_code(), 0, 1);
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_IO_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_init.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_init.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_init.hpp
deleted file mode 100644
index 317ba1f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_init.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// ssl/detail/openssl_init.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_DETAIL_OPENSSL_INIT_HPP
-#define ASIO_SSL_DETAIL_OPENSSL_INIT_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 "asio/detail/noncopyable.hpp"
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-class openssl_init_base
- : private noncopyable
-{
-protected:
- // Class that performs the actual initialisation.
- class do_init;
-
- // Helper function to manage a do_init singleton. The static instance of the
- // openssl_init object ensures that this function is always called before
- // main, and therefore before any other threads can get started. The do_init
- // instance must be static in this function to ensure that it gets
- // initialised before any other global objects try to use it.
- ASIO_DECL static asio::detail::shared_ptr<do_init> instance();
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- // Get an empty stack of compression methods, to be used when disabling
- // compression.
- ASIO_DECL static STACK_OF(SSL_COMP)* get_null_compression_methods();
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-};
-
-template <bool Do_Init = true>
-class openssl_init : private openssl_init_base
-{
-public:
- // Constructor.
- openssl_init()
- : ref_(instance())
- {
- using namespace std; // For memmove.
-
- // Ensure openssl_init::instance_ is linked in.
- openssl_init* tmp = &instance_;
- memmove(&tmp, &tmp, sizeof(openssl_init*));
- }
-
- // Destructor.
- ~openssl_init()
- {
- }
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
- && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- using openssl_init_base::get_null_compression_methods;
-#endif // !defined(SSL_OP_NO_COMPRESSION)
- // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-private:
- // Instance to force initialisation of openssl at global scope.
- static openssl_init instance_;
-
- // Reference to singleton do_init object to ensure that openssl does not get
- // cleaned up until the last user has finished with it.
- asio::detail::shared_ptr<do_init> ref_;
-};
-
-template <bool Do_Init>
-openssl_init<Do_Init> openssl_init<Do_Init>::instance_;
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/detail/impl/openssl_init.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_DETAIL_OPENSSL_INIT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_types.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_types.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_types.hpp
deleted file mode 100644
index 21b9dab..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/openssl_types.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// ssl/detail/openssl_types.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_DETAIL_OPENSSL_TYPES_HPP
-#define ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <openssl/conf.h>
-#include <openssl/ssl.h>
-#if !defined(OPENSSL_NO_ENGINE)
-# include <openssl/engine.h>
-#endif // !defined(OPENSSL_NO_ENGINE)
-#include <openssl/err.h>
-#include <openssl/x509v3.h>
-#include "asio/detail/socket_types.hpp"
-
-#endif // ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/password_callback.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/password_callback.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/password_callback.hpp
deleted file mode 100644
index 7801702..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/password_callback.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// ssl/detail/password_callback.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_DETAIL_PASSWORD_CALLBACK_HPP
-#define ASIO_SSL_DETAIL_PASSWORD_CALLBACK_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 <cstddef>
-# include <string>
-# include "asio/ssl/context_base.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class password_callback_base
-{
-public:
- virtual ~password_callback_base()
- {
- }
-
- virtual std::string call(std::size_t size,
- context_base::password_purpose purpose) = 0;
-};
-
-template <typename PasswordCallback>
-class password_callback : public password_callback_base
-{
-public:
- explicit password_callback(PasswordCallback callback)
- : callback_(callback)
- {
- }
-
- virtual std::string call(std::size_t size,
- context_base::password_purpose purpose)
- {
- return callback_(size, purpose);
- }
-
-private:
- PasswordCallback callback_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_PASSWORD_CALLBACK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/read_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/read_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/read_op.hpp
deleted file mode 100644
index b48efbe..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/read_op.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ssl/detail/read_op.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_DETAIL_READ_OP_HPP
-#define ASIO_SSL_DETAIL_READ_OP_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 "asio/detail/buffer_sequence_adapter.hpp"
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename MutableBufferSequence>
-class read_op
-{
-public:
- read_op(const MutableBufferSequence& buffers)
- : buffers_(buffers)
- {
- }
-
- engine::want operator()(engine& eng,
- asio::error_code& ec,
- std::size_t& bytes_transferred) const
- {
- asio::mutable_buffer buffer =
- asio::detail::buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::first(buffers_);
-
- return eng.read(buffer, ec, bytes_transferred);
- }
-
- template <typename Handler>
- void call_handler(Handler& handler,
- const asio::error_code& ec,
- const std::size_t& bytes_transferred) const
- {
- handler(ec, bytes_transferred);
- }
-
-private:
- MutableBufferSequence buffers_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_READ_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/shutdown_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/shutdown_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/shutdown_op.hpp
deleted file mode 100644
index f220ee2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/shutdown_op.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// ssl/detail/shutdown_op.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_DETAIL_SHUTDOWN_OP_HPP
-#define ASIO_SSL_DETAIL_SHUTDOWN_OP_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 "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class shutdown_op
-{
-public:
- engine::want operator()(engine& eng,
- asio::error_code& ec,
- std::size_t& bytes_transferred) const
- {
- bytes_transferred = 0;
- return eng.shutdown(ec);
- }
-
- template <typename Handler>
- void call_handler(Handler& handler,
- const asio::error_code& ec,
- const std::size_t&) const
- {
- handler(ec);
- }
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_SHUTDOWN_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/stream_core.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/stream_core.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/stream_core.hpp
deleted file mode 100644
index b29bbfc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/stream_core.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// ssl/detail/stream_core.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_DETAIL_STREAM_CORE_HPP
-#define ASIO_SSL_DETAIL_STREAM_CORE_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)
-# if defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/deadline_timer.hpp"
-# else // defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/steady_timer.hpp"
-# endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/ssl/detail/engine.hpp"
-# include "asio/buffer.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-struct stream_core
-{
- // According to the OpenSSL documentation, this is the buffer size that is
- // sufficient to hold the largest possible TLS record.
- enum { max_tls_record_size = 17 * 1024 };
-
- stream_core(SSL_CTX* context, asio::io_service& io_service)
- : engine_(context),
- pending_read_(io_service),
- pending_write_(io_service),
- output_buffer_space_(max_tls_record_size),
- output_buffer_(asio::buffer(output_buffer_space_)),
- input_buffer_space_(max_tls_record_size),
- input_buffer_(asio::buffer(input_buffer_space_))
- {
- pending_read_.expires_at(neg_infin());
- pending_write_.expires_at(neg_infin());
- }
-
- ~stream_core()
- {
- }
-
- // The SSL engine.
- engine engine_;
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
- // Timer used for storing queued read operations.
- asio::deadline_timer pending_read_;
-
- // Timer used for storing queued write operations.
- asio::deadline_timer pending_write_;
-
- // Helper function for obtaining a time value that always fires.
- static asio::deadline_timer::time_type neg_infin()
- {
- return boost::posix_time::neg_infin;
- }
-
- // Helper function for obtaining a time value that never fires.
- static asio::deadline_timer::time_type pos_infin()
- {
- return boost::posix_time::pos_infin;
- }
-#else // defined(ASIO_HAS_BOOST_DATE_TIME)
- // Timer used for storing queued read operations.
- asio::steady_timer pending_read_;
-
- // Timer used for storing queued write operations.
- asio::steady_timer pending_write_;
-
- // Helper function for obtaining a time value that always fires.
- static asio::steady_timer::time_point neg_infin()
- {
- return (asio::steady_timer::time_point::min)();
- }
-
- // Helper function for obtaining a time value that never fires.
- static asio::steady_timer::time_point pos_infin()
- {
- return (asio::steady_timer::time_point::max)();
- }
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
- // Buffer space used to prepare output intended for the transport.
- std::vector<unsigned char> output_buffer_space_;
-
- // A buffer that may be used to prepare output intended for the transport.
- const asio::mutable_buffers_1 output_buffer_;
-
- // Buffer space used to read input intended for the engine.
- std::vector<unsigned char> input_buffer_space_;
-
- // A buffer that may be used to read input intended for the engine.
- const asio::mutable_buffers_1 input_buffer_;
-
- // The buffer pointing to the engine's unconsumed input.
- asio::const_buffer input_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_STREAM_CORE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/verify_callback.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/verify_callback.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/verify_callback.hpp
deleted file mode 100644
index 48df350..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/verify_callback.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ssl/detail/verify_callback.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_DETAIL_VERIFY_CALLBACK_HPP
-#define ASIO_SSL_DETAIL_VERIFY_CALLBACK_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 "asio/ssl/verify_context.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class verify_callback_base
-{
-public:
- virtual ~verify_callback_base()
- {
- }
-
- virtual bool call(bool preverified, verify_context& ctx) = 0;
-};
-
-template <typename VerifyCallback>
-class verify_callback : public verify_callback_base
-{
-public:
- explicit verify_callback(VerifyCallback callback)
- : callback_(callback)
- {
- }
-
- virtual bool call(bool preverified, verify_context& ctx)
- {
- return callback_(preverified, ctx);
- }
-
-private:
- VerifyCallback callback_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_VERIFY_CALLBACK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/write_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/write_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/write_op.hpp
deleted file mode 100644
index f95c2a8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/detail/write_op.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ssl/detail/write_op.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_DETAIL_WRITE_OP_HPP
-#define ASIO_SSL_DETAIL_WRITE_OP_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 "asio/detail/buffer_sequence_adapter.hpp"
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename ConstBufferSequence>
-class write_op
-{
-public:
- write_op(const ConstBufferSequence& buffers)
- : buffers_(buffers)
- {
- }
-
- engine::want operator()(engine& eng,
- asio::error_code& ec,
- std::size_t& bytes_transferred) const
- {
- asio::const_buffer buffer =
- asio::detail::buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::first(buffers_);
-
- return eng.write(buffer, ec, bytes_transferred);
- }
-
- template <typename Handler>
- void call_handler(Handler& handler,
- const asio::error_code& ec,
- const std::size_t& bytes_transferred) const
- {
- handler(ec, bytes_transferred);
- }
-
-private:
- ConstBufferSequence buffers_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_WRITE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/error.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/error.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/error.hpp
deleted file mode 100644
index b5369c0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/error.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ssl/error.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_ERROR_HPP
-#define ASIO_SSL_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-enum ssl_errors
-{
-};
-
-extern ASIO_DECL
-const asio::error_category& get_ssl_category();
-
-static const asio::error_category& ssl_category
- = asio::error::get_ssl_category();
-
-} // namespace error
-} // namespace asio
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-namespace std {
-
-template<> struct is_error_code_enum<asio::error::ssl_errors>
-{
- static const bool value = true;
-};
-
-} // namespace std
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-namespace asio {
-namespace error {
-
-inline asio::error_code make_error_code(ssl_errors e)
-{
- return asio::error_code(
- static_cast<int>(e), get_ssl_category());
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/impl/error.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_ERROR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.hpp
deleted file mode 100644
index 115a3e4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// ssl/impl/context.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_IMPL_CONTEXT_HPP
-#define ASIO_SSL_IMPL_CONTEXT_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 "asio/detail/throw_error.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename VerifyCallback>
-void context::set_verify_callback(VerifyCallback callback)
-{
- asio::error_code ec;
- this->set_verify_callback(callback, ec);
- asio::detail::throw_error(ec, "set_verify_callback");
-}
-
-template <typename VerifyCallback>
-asio::error_code context::set_verify_callback(
- VerifyCallback callback, asio::error_code& ec)
-{
- return do_set_verify_callback(
- new detail::verify_callback<VerifyCallback>(callback), ec);
-}
-
-template <typename PasswordCallback>
-void context::set_password_callback(PasswordCallback callback)
-{
- asio::error_code ec;
- this->set_password_callback(callback, ec);
- asio::detail::throw_error(ec, "set_password_callback");
-}
-
-template <typename PasswordCallback>
-asio::error_code context::set_password_callback(
- PasswordCallback callback, asio::error_code& ec)
-{
- return do_set_password_callback(
- new detail::password_callback<PasswordCallback>(callback), ec);
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_CONTEXT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.ipp
deleted file mode 100644
index 785b3ee..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/context.ipp
+++ /dev/null
@@ -1,950 +0,0 @@
-//
-// ssl/impl/context.ipp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IMPL_CONTEXT_IPP
-#define ASIO_SSL_IMPL_CONTEXT_IPP
-
-#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 <cstring>
-# include "asio/detail/throw_error.hpp"
-# include "asio/error.hpp"
-# include "asio/ssl/context.hpp"
-# include "asio/ssl/error.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-struct context::bio_cleanup
-{
- BIO* p;
- ~bio_cleanup() { if (p) ::BIO_free(p); }
-};
-
-struct context::x509_cleanup
-{
- X509* p;
- ~x509_cleanup() { if (p) ::X509_free(p); }
-};
-
-struct context::evp_pkey_cleanup
-{
- EVP_PKEY* p;
- ~evp_pkey_cleanup() { if (p) ::EVP_PKEY_free(p); }
-};
-
-struct context::rsa_cleanup
-{
- RSA* p;
- ~rsa_cleanup() { if (p) ::RSA_free(p); }
-};
-
-struct context::dh_cleanup
-{
- DH* p;
- ~dh_cleanup() { if (p) ::DH_free(p); }
-};
-
-context::context(context::method m)
- : handle_(0)
-{
- switch (m)
- {
-#if defined(OPENSSL_NO_SSL2)
- case context::sslv2:
- case context::sslv2_client:
- case context::sslv2_server:
- asio::detail::throw_error(
- asio::error::invalid_argument, "context");
- break;
-#else // defined(OPENSSL_NO_SSL2)
- case context::sslv2:
- handle_ = ::SSL_CTX_new(::SSLv2_method());
- break;
- case context::sslv2_client:
- handle_ = ::SSL_CTX_new(::SSLv2_client_method());
- break;
- case context::sslv2_server:
- handle_ = ::SSL_CTX_new(::SSLv2_server_method());
- break;
-#endif // defined(OPENSSL_NO_SSL2)
- case context::sslv3:
- handle_ = ::SSL_CTX_new(::SSLv3_method());
- break;
- case context::sslv3_client:
- handle_ = ::SSL_CTX_new(::SSLv3_client_method());
- break;
- case context::sslv3_server:
- handle_ = ::SSL_CTX_new(::SSLv3_server_method());
- break;
- case context::tlsv1:
- handle_ = ::SSL_CTX_new(::TLSv1_method());
- break;
- case context::tlsv1_client:
- handle_ = ::SSL_CTX_new(::TLSv1_client_method());
- break;
- case context::tlsv1_server:
- handle_ = ::SSL_CTX_new(::TLSv1_server_method());
- break;
- case context::sslv23:
- handle_ = ::SSL_CTX_new(::SSLv23_method());
- break;
- case context::sslv23_client:
- handle_ = ::SSL_CTX_new(::SSLv23_client_method());
- break;
- case context::sslv23_server:
- handle_ = ::SSL_CTX_new(::SSLv23_server_method());
- break;
-#if defined(SSL_TXT_TLSV1_1)
- case context::tlsv11:
- handle_ = ::SSL_CTX_new(::TLSv1_1_method());
- break;
- case context::tlsv11_client:
- handle_ = ::SSL_CTX_new(::TLSv1_1_client_method());
- break;
- case context::tlsv11_server:
- handle_ = ::SSL_CTX_new(::TLSv1_1_server_method());
- break;
-#else // defined(SSL_TXT_TLSV1_1)
- case context::tlsv11:
- case context::tlsv11_client:
- case context::tlsv11_server:
- asio::detail::throw_error(
- asio::error::invalid_argument, "context");
- break;
-#endif // defined(SSL_TXT_TLSV1_1)
-#if defined(SSL_TXT_TLSV1_2)
- case context::tlsv12:
- handle_ = ::SSL_CTX_new(::TLSv1_2_method());
- break;
- case context::tlsv12_client:
- handle_ = ::SSL_CTX_new(::TLSv1_2_client_method());
- break;
- case context::tlsv12_server:
- handle_ = ::SSL_CTX_new(::TLSv1_2_server_method());
- break;
-#else // defined(SSL_TXT_TLSV1_2)
- case context::tlsv12:
- case context::tlsv12_client:
- case context::tlsv12_server:
- asio::detail::throw_error(
- asio::error::invalid_argument, "context");
- break;
-#endif // defined(SSL_TXT_TLSV1_2)
- default:
- handle_ = ::SSL_CTX_new(0);
- break;
- }
-
- if (handle_ == 0)
- {
- asio::error_code ec(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- asio::detail::throw_error(ec, "context");
- }
-
- set_options(no_compression);
-}
-
-context::context(asio::io_service&, context::method m)
- : handle_(0)
-{
- context tmp(m);
- handle_ = tmp.handle_;
- tmp.handle_ = 0;
-}
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-context::context(context&& other)
-{
- handle_ = other.handle_;
- other.handle_ = 0;
-}
-
-context& context::operator=(context&& other)
-{
- context tmp(ASIO_MOVE_CAST(context)(*this));
- handle_ = other.handle_;
- other.handle_ = 0;
- return *this;
-}
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-context::~context()
-{
- if (handle_)
- {
- if (handle_->default_passwd_callback_userdata)
- {
- detail::password_callback_base* callback =
- static_cast<detail::password_callback_base*>(
- handle_->default_passwd_callback_userdata);
- delete callback;
- handle_->default_passwd_callback_userdata = 0;
- }
-
- if (SSL_CTX_get_app_data(handle_))
- {
- detail::verify_callback_base* callback =
- static_cast<detail::verify_callback_base*>(
- SSL_CTX_get_app_data(handle_));
- delete callback;
- SSL_CTX_set_app_data(handle_, 0);
- }
-
- ::SSL_CTX_free(handle_);
- }
-}
-
-context::native_handle_type context::native_handle()
-{
- return handle_;
-}
-
-context::impl_type context::impl()
-{
- return handle_;
-}
-
-void context::clear_options(context::options o)
-{
- asio::error_code ec;
- clear_options(o, ec);
- asio::detail::throw_error(ec, "clear_options");
-}
-
-asio::error_code context::clear_options(
- context::options o, asio::error_code& ec)
-{
-#if (OPENSSL_VERSION_NUMBER >= 0x009080DFL) \
- && (OPENSSL_VERSION_NUMBER != 0x00909000L)
-# if !defined(SSL_OP_NO_COMPRESSION)
- if ((o & context::no_compression) != 0)
- {
-# if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- handle_->comp_methods = SSL_COMP_get_compression_methods();
-# endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- o ^= context::no_compression;
- }
-# endif // !defined(SSL_OP_NO_COMPRESSION)
-
- ::SSL_CTX_clear_options(handle_, o);
-
- ec = asio::error_code();
-#else // (OPENSSL_VERSION_NUMBER >= 0x009080DFL)
- // && (OPENSSL_VERSION_NUMBER != 0x00909000L)
- (void)o;
- ec = asio::error::operation_not_supported;
-#endif // (OPENSSL_VERSION_NUMBER >= 0x009080DFL)
- // && (OPENSSL_VERSION_NUMBER != 0x00909000L)
- return ec;
-}
-
-void context::set_options(context::options o)
-{
- asio::error_code ec;
- set_options(o, ec);
- asio::detail::throw_error(ec, "set_options");
-}
-
-asio::error_code context::set_options(
- context::options o, asio::error_code& ec)
-{
-#if !defined(SSL_OP_NO_COMPRESSION)
- if ((o & context::no_compression) != 0)
- {
-#if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- handle_->comp_methods =
- asio::ssl::detail::openssl_init<>::get_null_compression_methods();
-#endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L)
- o ^= context::no_compression;
- }
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-
- ::SSL_CTX_set_options(handle_, o);
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::set_verify_mode(verify_mode v)
-{
- asio::error_code ec;
- set_verify_mode(v, ec);
- asio::detail::throw_error(ec, "set_verify_mode");
-}
-
-asio::error_code context::set_verify_mode(
- verify_mode v, asio::error_code& ec)
-{
- ::SSL_CTX_set_verify(handle_, v, ::SSL_CTX_get_verify_callback(handle_));
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::set_verify_depth(int depth)
-{
- asio::error_code ec;
- set_verify_depth(depth, ec);
- asio::detail::throw_error(ec, "set_verify_depth");
-}
-
-asio::error_code context::set_verify_depth(
- int depth, asio::error_code& ec)
-{
- ::SSL_CTX_set_verify_depth(handle_, depth);
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::load_verify_file(const std::string& filename)
-{
- asio::error_code ec;
- load_verify_file(filename, ec);
- asio::detail::throw_error(ec, "load_verify_file");
-}
-
-asio::error_code context::load_verify_file(
- const std::string& filename, asio::error_code& ec)
-{
- if (::SSL_CTX_load_verify_locations(handle_, filename.c_str(), 0) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::add_certificate_authority(const const_buffer& ca)
-{
- asio::error_code ec;
- add_certificate_authority(ca, ec);
- asio::detail::throw_error(ec, "add_certificate_authority");
-}
-
-asio::error_code context::add_certificate_authority(
- const const_buffer& ca, asio::error_code& ec)
-{
- ::ERR_clear_error();
-
- bio_cleanup bio = { make_buffer_bio(ca) };
- if (bio.p)
- {
- x509_cleanup cert = { ::PEM_read_bio_X509(bio.p, 0, 0, 0) };
- if (cert.p)
- {
- if (X509_STORE* store = ::SSL_CTX_get_cert_store(handle_))
- {
- if (::X509_STORE_add_cert(store, cert.p) == 1)
- {
- ec = asio::error_code();
- return ec;
- }
- }
- }
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-void context::set_default_verify_paths()
-{
- asio::error_code ec;
- set_default_verify_paths(ec);
- asio::detail::throw_error(ec, "set_default_verify_paths");
-}
-
-asio::error_code context::set_default_verify_paths(
- asio::error_code& ec)
-{
- if (::SSL_CTX_set_default_verify_paths(handle_) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::add_verify_path(const std::string& path)
-{
- asio::error_code ec;
- add_verify_path(path, ec);
- asio::detail::throw_error(ec, "add_verify_path");
-}
-
-asio::error_code context::add_verify_path(
- const std::string& path, asio::error_code& ec)
-{
- if (::SSL_CTX_load_verify_locations(handle_, 0, path.c_str()) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::use_certificate(
- const const_buffer& certificate, file_format format)
-{
- asio::error_code ec;
- use_certificate(certificate, format, ec);
- asio::detail::throw_error(ec, "use_certificate");
-}
-
-asio::error_code context::use_certificate(
- const const_buffer& certificate, file_format format,
- asio::error_code& ec)
-{
- ::ERR_clear_error();
-
- if (format == context_base::asn1)
- {
- if (::SSL_CTX_use_certificate_ASN1(handle_,
- static_cast<int>(buffer_size(certificate)),
- buffer_cast<const unsigned char*>(certificate)) == 1)
- {
- ec = asio::error_code();
- return ec;
- }
- }
- else if (format == context_base::pem)
- {
- bio_cleanup bio = { make_buffer_bio(certificate) };
- if (bio.p)
- {
- x509_cleanup cert = { ::PEM_read_bio_X509(bio.p, 0, 0, 0) };
- if (cert.p)
- {
- if (::SSL_CTX_use_certificate(handle_, cert.p) == 1)
- {
- ec = asio::error_code();
- return ec;
- }
- }
- }
- }
- else
- {
- ec = asio::error::invalid_argument;
- return ec;
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-void context::use_certificate_file(
- const std::string& filename, file_format format)
-{
- asio::error_code ec;
- use_certificate_file(filename, format, ec);
- asio::detail::throw_error(ec, "use_certificate_file");
-}
-
-asio::error_code context::use_certificate_file(
- const std::string& filename, 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(handle_, filename.c_str(), file_type) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::use_certificate_chain(const const_buffer& chain)
-{
- asio::error_code ec;
- use_certificate_chain(chain, ec);
- asio::detail::throw_error(ec, "use_certificate_chain");
-}
-
-asio::error_code context::use_certificate_chain(
- const const_buffer& chain, asio::error_code& ec)
-{
- ::ERR_clear_error();
-
- bio_cleanup bio = { make_buffer_bio(chain) };
- if (bio.p)
- {
- x509_cleanup cert = {
- ::PEM_read_bio_X509_AUX(bio.p, 0,
- handle_->default_passwd_callback,
- handle_->default_passwd_callback_userdata) };
- if (!cert.p)
- {
- ec = asio::error_code(ERR_R_PEM_LIB,
- asio::error::get_ssl_category());
- return ec;
- }
-
- int result = ::SSL_CTX_use_certificate(handle_, cert.p);
- if (result == 0 || ::ERR_peek_error() != 0)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- if (handle_->extra_certs)
- {
- ::sk_X509_pop_free(handle_->extra_certs, X509_free);
- handle_->extra_certs = 0;
- }
-
- while (X509* cacert = ::PEM_read_bio_X509(bio.p, 0,
- handle_->default_passwd_callback,
- handle_->default_passwd_callback_userdata))
- {
- if (!::SSL_CTX_add_extra_chain_cert(handle_, cacert))
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
- }
-
- result = ::ERR_peek_last_error();
- if ((ERR_GET_LIB(result) == ERR_LIB_PEM)
- && (ERR_GET_REASON(result) == PEM_R_NO_START_LINE))
- {
- ::ERR_clear_error();
- ec = asio::error_code();
- return ec;
- }
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-void context::use_certificate_chain_file(const std::string& filename)
-{
- asio::error_code ec;
- use_certificate_chain_file(filename, ec);
- asio::detail::throw_error(ec, "use_certificate_chain_file");
-}
-
-asio::error_code context::use_certificate_chain_file(
- const std::string& filename, asio::error_code& ec)
-{
- if (::SSL_CTX_use_certificate_chain_file(handle_, filename.c_str()) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::use_private_key(
- const const_buffer& private_key, context::file_format format)
-{
- asio::error_code ec;
- use_private_key(private_key, format, ec);
- asio::detail::throw_error(ec, "use_private_key");
-}
-
-asio::error_code context::use_private_key(
- const const_buffer& private_key, context::file_format format,
- asio::error_code& ec)
-{
- ::ERR_clear_error();
-
- bio_cleanup bio = { make_buffer_bio(private_key) };
- if (bio.p)
- {
- evp_pkey_cleanup evp_private_key = { 0 };
- switch (format)
- {
- case context_base::asn1:
- evp_private_key.p = ::d2i_PrivateKey_bio(bio.p, 0);
- break;
- case context_base::pem:
- evp_private_key.p = ::PEM_read_bio_PrivateKey(bio.p, 0, 0, 0);
- break;
- default:
- {
- ec = asio::error::invalid_argument;
- return ec;
- }
- }
-
- if (evp_private_key.p)
- {
- if (::SSL_CTX_use_PrivateKey(handle_, evp_private_key.p) == 1)
- {
- ec = asio::error_code();
- return ec;
- }
- }
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-void context::use_private_key_file(
- const std::string& filename, context::file_format format)
-{
- asio::error_code ec;
- use_private_key_file(filename, format, ec);
- asio::detail::throw_error(ec, "use_private_key_file");
-}
-
-void context::use_rsa_private_key(
- const const_buffer& private_key, context::file_format format)
-{
- asio::error_code ec;
- use_rsa_private_key(private_key, format, ec);
- asio::detail::throw_error(ec, "use_rsa_private_key");
-}
-
-asio::error_code context::use_rsa_private_key(
- const const_buffer& private_key, context::file_format format,
- asio::error_code& ec)
-{
- ::ERR_clear_error();
-
- bio_cleanup bio = { make_buffer_bio(private_key) };
- if (bio.p)
- {
- rsa_cleanup rsa_private_key = { 0 };
- switch (format)
- {
- case context_base::asn1:
- rsa_private_key.p = ::d2i_RSAPrivateKey_bio(bio.p, 0);
- break;
- case context_base::pem:
- rsa_private_key.p = ::PEM_read_bio_RSAPrivateKey(bio.p, 0, 0, 0);
- break;
- default:
- {
- ec = asio::error::invalid_argument;
- return ec;
- }
- }
-
- if (rsa_private_key.p)
- {
- if (::SSL_CTX_use_RSAPrivateKey(handle_, rsa_private_key.p) == 1)
- {
- ec = asio::error_code();
- return ec;
- }
- }
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-asio::error_code context::use_private_key_file(
- const std::string& filename, context::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(handle_, filename.c_str(), file_type) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::use_rsa_private_key_file(
- const std::string& filename, context::file_format format)
-{
- asio::error_code ec;
- use_rsa_private_key_file(filename, format, ec);
- asio::detail::throw_error(ec, "use_rsa_private_key_file");
-}
-
-asio::error_code context::use_rsa_private_key_file(
- const std::string& filename, context::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(
- handle_, filename.c_str(), file_type) != 1)
- {
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
- }
-
- ec = asio::error_code();
- return ec;
-}
-
-void context::use_tmp_dh(const const_buffer& dh)
-{
- asio::error_code ec;
- use_tmp_dh(dh, ec);
- asio::detail::throw_error(ec, "use_tmp_dh");
-}
-
-asio::error_code context::use_tmp_dh(
- const const_buffer& dh, asio::error_code& ec)
-{
- bio_cleanup bio = { make_buffer_bio(dh) };
- if (bio.p)
- {
- return do_use_tmp_dh(bio.p, ec);
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-void context::use_tmp_dh_file(const std::string& filename)
-{
- asio::error_code ec;
- use_tmp_dh_file(filename, ec);
- asio::detail::throw_error(ec, "use_tmp_dh_file");
-}
-
-asio::error_code context::use_tmp_dh_file(
- const std::string& filename, asio::error_code& ec)
-{
- bio_cleanup bio = { ::BIO_new_file(filename.c_str(), "r") };
- if (bio.p)
- {
- return do_use_tmp_dh(bio.p, ec);
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-asio::error_code context::do_use_tmp_dh(
- BIO* bio, asio::error_code& ec)
-{
- ::ERR_clear_error();
-
- dh_cleanup dh = { ::PEM_read_bio_DHparams(bio, 0, 0, 0) };
- if (dh.p)
- {
- if (::SSL_CTX_set_tmp_dh(handle_, dh.p) == 1)
- {
- ec = asio::error_code();
- return ec;
- }
- }
-
- ec = asio::error_code(
- static_cast<int>(::ERR_get_error()),
- asio::error::get_ssl_category());
- return ec;
-}
-
-asio::error_code context::do_set_verify_callback(
- detail::verify_callback_base* callback, asio::error_code& ec)
-{
- if (SSL_CTX_get_app_data(handle_))
- {
- delete static_cast<detail::verify_callback_base*>(
- SSL_CTX_get_app_data(handle_));
- }
-
- SSL_CTX_set_app_data(handle_, callback);
-
- ::SSL_CTX_set_verify(handle_,
- ::SSL_CTX_get_verify_mode(handle_),
- &context::verify_callback_function);
-
- ec = asio::error_code();
- return ec;
-}
-
-int context::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
-{
- if (ctx)
- {
- if (SSL* ssl = static_cast<SSL*>(
- ::X509_STORE_CTX_get_ex_data(
- ctx, ::SSL_get_ex_data_X509_STORE_CTX_idx())))
- {
- if (SSL_CTX* handle = ::SSL_get_SSL_CTX(ssl))
- {
- if (SSL_CTX_get_app_data(handle))
- {
- detail::verify_callback_base* callback =
- static_cast<detail::verify_callback_base*>(
- SSL_CTX_get_app_data(handle));
-
- verify_context verify_ctx(ctx);
- return callback->call(preverified != 0, verify_ctx) ? 1 : 0;
- }
- }
- }
- }
-
- return 0;
-}
-
-asio::error_code context::do_set_password_callback(
- detail::password_callback_base* callback, asio::error_code& ec)
-{
- if (handle_->default_passwd_callback_userdata)
- delete static_cast<detail::password_callback_base*>(
- handle_->default_passwd_callback_userdata);
-
- handle_->default_passwd_callback_userdata = callback;
-
- SSL_CTX_set_default_passwd_cb(handle_, &context::password_callback_function);
-
- ec = asio::error_code();
- return ec;
-}
-
-int context::password_callback_function(
- char* buf, int size, int purpose, void* data)
-{
- using namespace std; // For strncat and strlen.
-
- if (data)
- {
- detail::password_callback_base* callback =
- static_cast<detail::password_callback_base*>(data);
-
- std::string passwd = callback->call(static_cast<std::size_t>(size),
- purpose ? context_base::for_writing : context_base::for_reading);
-
-#if defined(ASIO_HAS_SECURE_RTL)
- strcpy_s(buf, size, passwd.c_str());
-#else // defined(ASIO_HAS_SECURE_RTL)
- *buf = '\0';
- strncat(buf, passwd.c_str(), size);
-#endif // defined(ASIO_HAS_SECURE_RTL)
-
- return static_cast<int>(strlen(buf));
- }
-
- return 0;
-}
-
-BIO* context::make_buffer_bio(const const_buffer& b)
-{
- return ::BIO_new_mem_buf(
- const_cast<void*>(buffer_cast<const void*>(b)),
- static_cast<int>(buffer_size(b)));
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_CONTEXT_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/error.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/error.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/error.ipp
deleted file mode 100644
index 93626f1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/error.ipp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// ssl/impl/error.ipp
-// ~~~~~~~~~~~~~~~~~~
-//
-// 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_IMPL_ERROR_IPP
-#define ASIO_SSL_IMPL_ERROR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ssl/error.hpp"
-#include "asio/ssl/detail/openssl_init.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-namespace detail {
-
-class ssl_category : public asio::error_category
-{
-public:
- const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
- {
- return "asio.ssl";
- }
-
- std::string message(int value) const
- {
- const char* s = ::ERR_reason_error_string(value);
- return s ? s : "asio.ssl error";
- }
-};
-
-} // namespace detail
-
-const asio::error_category& get_ssl_category()
-{
- static detail::ssl_category instance;
- return instance;
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_ERROR_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/rfc2818_verification.ipp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/rfc2818_verification.ipp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/rfc2818_verification.ipp
deleted file mode 100644
index 86cb23d..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/rfc2818_verification.ipp
+++ /dev/null
@@ -1,166 +0,0 @@
-//
-// ssl/impl/rfc2818_verification.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// 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_IMPL_RFC2818_VERIFICATION_IPP
-#define ASIO_SSL_IMPL_RFC2818_VERIFICATION_IPP
-
-#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 <cctype>
-# include <cstring>
-# include "asio/ip/address.hpp"
-# include "asio/ssl/rfc2818_verification.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-bool rfc2818_verification::operator()(
- bool preverified, verify_context& ctx) const
-{
- using namespace std; // For memcmp.
-
- // Don't bother looking at certificates that have failed pre-verification.
- if (!preverified)
- return false;
-
- // We're only interested in checking the certificate at the end of the chain.
- int depth = X509_STORE_CTX_get_error_depth(ctx.native_handle());
- if (depth > 0)
- return true;
-
- // Try converting the host name to an address. If it is an address then we
- // need to look for an IP address in the certificate rather than a host name.
- asio::error_code ec;
- ip::address address = ip::address::from_string(host_, ec);
- bool is_address = !ec;
-
- X509* cert = X509_STORE_CTX_get_current_cert(ctx.native_handle());
-
- // Go through the alternate names in the certificate looking for matching DNS
- // or IP address entries.
- GENERAL_NAMES* gens = static_cast<GENERAL_NAMES*>(
- X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0));
- for (int i = 0; i < sk_GENERAL_NAME_num(gens); ++i)
- {
- GENERAL_NAME* gen = sk_GENERAL_NAME_value(gens, i);
- if (gen->type == GEN_DNS && !is_address)
- {
- ASN1_IA5STRING* domain = gen->d.dNSName;
- if (domain->type == V_ASN1_IA5STRING && domain->data && domain->length)
- {
- const char* pattern = reinterpret_cast<const char*>(domain->data);
- std::size_t pattern_length = domain->length;
- if (match_pattern(pattern, pattern_length, host_.c_str()))
- {
- GENERAL_NAMES_free(gens);
- return true;
- }
- }
- }
- else if (gen->type == GEN_IPADD && is_address)
- {
- ASN1_OCTET_STRING* ip_address = gen->d.iPAddress;
- if (ip_address->type == V_ASN1_OCTET_STRING && ip_address->data)
- {
- if (address.is_v4() && ip_address->length == 4)
- {
- ip::address_v4::bytes_type bytes = address.to_v4().to_bytes();
- if (memcmp(bytes.data(), ip_address->data, 4) == 0)
- {
- GENERAL_NAMES_free(gens);
- return true;
- }
- }
- else if (address.is_v6() && ip_address->length == 16)
- {
- ip::address_v6::bytes_type bytes = address.to_v6().to_bytes();
- if (memcmp(bytes.data(), ip_address->data, 16) == 0)
- {
- GENERAL_NAMES_free(gens);
- return true;
- }
- }
- }
- }
- }
- GENERAL_NAMES_free(gens);
-
- // No match in the alternate names, so try the common names. We should only
- // use the "most specific" common name, which is the last one in the list.
- X509_NAME* name = X509_get_subject_name(cert);
- int i = -1;
- ASN1_STRING* common_name = 0;
- while ((i = X509_NAME_get_index_by_NID(name, NID_commonName, i)) >= 0)
- {
- X509_NAME_ENTRY* name_entry = X509_NAME_get_entry(name, i);
- common_name = X509_NAME_ENTRY_get_data(name_entry);
- }
- if (common_name && common_name->data && common_name->length)
- {
- const char* pattern = reinterpret_cast<const char*>(common_name->data);
- std::size_t pattern_length = common_name->length;
- if (match_pattern(pattern, pattern_length, host_.c_str()))
- return true;
- }
-
- return false;
-}
-
-bool rfc2818_verification::match_pattern(const char* pattern,
- std::size_t pattern_length, const char* host)
-{
- using namespace std; // For tolower.
-
- const char* p = pattern;
- const char* p_end = p + pattern_length;
- const char* h = host;
-
- while (p != p_end && *h)
- {
- if (*p == '*')
- {
- ++p;
- while (*h && *h != '.')
- if (match_pattern(p, p_end - p, h++))
- return true;
- }
- else if (tolower(*p) == tolower(*h))
- {
- ++p;
- ++h;
- }
- else
- {
- return false;
- }
- }
-
- return p == p_end && !*h;
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_RFC2818_VERIFICATION_IPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/src.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/src.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/src.hpp
deleted file mode 100644
index 43fd909..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/ssl/impl/src.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// impl/ssl/src.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_IMPL_SRC_HPP
-#define ASIO_SSL_IMPL_SRC_HPP
-
-#define ASIO_SOURCE
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# error Do not compile Asio library source with ASIO_HEADER_ONLY defined
-#endif
-
-#include "asio/ssl/impl/context.ipp"
-#include "asio/ssl/impl/error.ipp"
-#include "asio/ssl/detail/impl/engine.ipp"
-#include "asio/ssl/detail/impl/openssl_init.ipp"
-#include "asio/ssl/impl/rfc2818_verification.ipp"
-
-#endif // ASIO_SSL_IMPL_SRC_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[50/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/VersionInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/VersionInfo.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/VersionInfo.java
index ea83502..ca09050 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/VersionInfo.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/VersionInfo.java
@@ -43,8 +43,7 @@ public class VersionInfo {
String versionInfoFile = component + "-version-info.properties";
InputStream is = null;
try {
- is = ThreadUtil.getResourceAsStream(VersionInfo.class.getClassLoader(),
- versionInfoFile);
+ is = ThreadUtil.getResourceAsStream(versionInfoFile);
info.load(is);
} catch (IOException ex) {
LoggerFactory.getLogger(getClass()).warn("Could not read '" +
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/main/native/native.vcxproj
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/native/native.vcxproj b/hadoop-common-project/hadoop-common/src/main/native/native.vcxproj
index ac3767b..1119069 100644
--- a/hadoop-common-project/hadoop-common/src/main/native/native.vcxproj
+++ b/hadoop-common-project/hadoop-common/src/main/native/native.vcxproj
@@ -71,7 +71,6 @@
<PropertyGroup>
<SnappyLib Condition="Exists('$(CustomSnappyPrefix)\snappy.dll')">$(CustomSnappyPrefix)</SnappyLib>
<SnappyLib Condition="Exists('$(CustomSnappyPrefix)\lib\snappy.dll') And '$(SnappyLib)' == ''">$(CustomSnappyPrefix)\lib</SnappyLib>
- <SnappyLib Condition="Exists('$(CustomSnappyPrefix)\bin\snappy.dll') And '$(SnappyLib)' == ''">$(CustomSnappyPrefix)\bin</SnappyLib>
<SnappyLib Condition="Exists('$(CustomSnappyLib)') And '$(SnappyLib)' == ''">$(CustomSnappyLib)</SnappyLib>
<SnappyInclude Condition="Exists('$(CustomSnappyPrefix)\snappy.h')">$(CustomSnappyPrefix)</SnappyInclude>
<SnappyInclude Condition="Exists('$(CustomSnappyPrefix)\include\snappy.h') And '$(SnappyInclude)' == ''">$(CustomSnappyPrefix)\include</SnappyInclude>
@@ -83,7 +82,6 @@
<PropertyGroup>
<IsalLib Condition="Exists('$(CustomIsalPrefix)\isa-l.dll')">$(CustomIsalPrefix)</IsalLib>
<IsalLib Condition="Exists('$(CustomIsalPrefix)\lib\isa-l.dll') And '$(IsalLib)' == ''">$(CustomIsalPrefix)\lib</IsalLib>
- <IsalLib Condition="Exists('$(CustomIsalPrefix)\bin\isa-l.dll') And '$(IsalLib)' == ''">$(CustomIsalPrefix)\bin</IsalLib>
<IsalLib Condition="Exists('$(CustomIsalLib)') And '$(IsalLib)' == ''">$(CustomIsalLib)</IsalLib>
<IsalEnabled Condition="'$(IsalLib)' != ''">true</IsalEnabled>
</PropertyGroup>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
index abff7ea..c7984a3 100644
--- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
+++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
@@ -27,12 +27,8 @@
#ifdef UNIX
static EVP_CIPHER_CTX * (*dlsym_EVP_CIPHER_CTX_new)(void);
static void (*dlsym_EVP_CIPHER_CTX_free)(EVP_CIPHER_CTX *);
-#if OPENSSL_API_COMPAT < 0x10100000L && OPENSSL_VERSION_NUMBER >= 0x10100000L
-static int (*dlsym_EVP_CIPHER_CTX_reset)(EVP_CIPHER_CTX *);
-#else
static int (*dlsym_EVP_CIPHER_CTX_cleanup)(EVP_CIPHER_CTX *);
static void (*dlsym_EVP_CIPHER_CTX_init)(EVP_CIPHER_CTX *);
-#endif
static int (*dlsym_EVP_CIPHER_CTX_set_padding)(EVP_CIPHER_CTX *, int);
static int (*dlsym_EVP_CIPHER_CTX_test_flags)(const EVP_CIPHER_CTX *, int);
static int (*dlsym_EVP_CIPHER_CTX_block_size)(const EVP_CIPHER_CTX *);
@@ -127,16 +123,10 @@ JNIEXPORT void JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_initIDs
"EVP_CIPHER_CTX_new");
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_free, env, openssl, \
"EVP_CIPHER_CTX_free");
-#if OPENSSL_API_COMPAT < 0x10100000L && OPENSSL_VERSION_NUMBER >= 0x10100000L
- LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_reset, env, openssl, \
- "EVP_CIPHER_CTX_reset");
-#else
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_cleanup, env, openssl, \
"EVP_CIPHER_CTX_cleanup");
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_init, env, openssl, \
"EVP_CIPHER_CTX_init");
-#endif
-
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_set_padding, env, openssl, \
"EVP_CIPHER_CTX_set_padding");
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_test_flags, env, openssl, \
@@ -281,11 +271,7 @@ JNIEXPORT jlong JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_init
(*env)->ReleaseByteArrayElements(env, key, jKey, 0);
(*env)->ReleaseByteArrayElements(env, iv, jIv, 0);
if (rc == 0) {
-#if OPENSSL_API_COMPAT < 0x10100000L && OPENSSL_VERSION_NUMBER >= 0x10100000L
- dlsym_EVP_CIPHER_CTX_reset(context);
-#else
dlsym_EVP_CIPHER_CTX_cleanup(context);
-#endif
THROW(env, "java/lang/InternalError", "Error in EVP_CipherInit_ex.");
return (jlong)0;
}
@@ -348,11 +334,7 @@ JNIEXPORT jint JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_update
int output_len = 0;
if (!dlsym_EVP_CipherUpdate(context, output_bytes, &output_len, \
input_bytes, input_len)) {
-#if OPENSSL_API_COMPAT < 0x10100000L && OPENSSL_VERSION_NUMBER >= 0x10100000L
- dlsym_EVP_CIPHER_CTX_reset(context);
-#else
dlsym_EVP_CIPHER_CTX_cleanup(context);
-#endif
THROW(env, "java/lang/InternalError", "Error in EVP_CipherUpdate.");
return 0;
}
@@ -394,11 +376,7 @@ JNIEXPORT jint JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_doFinal
int output_len = 0;
if (!dlsym_EVP_CipherFinal_ex(context, output_bytes, &output_len)) {
-#if OPENSSL_API_COMPAT < 0x10100000L && OPENSSL_VERSION_NUMBER >= 0x10100000L
- dlsym_EVP_CIPHER_CTX_reset(context);
-#else
dlsym_EVP_CIPHER_CTX_cleanup(context);
-#endif
THROW(env, "java/lang/InternalError", "Error in EVP_CipherFinal_ex.");
return 0;
}
@@ -418,16 +396,6 @@ JNIEXPORT jstring JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_getLibrary
(JNIEnv *env, jclass clazz)
{
#ifdef UNIX
-#if OPENSSL_API_COMPAT < 0x10100000L && OPENSSL_VERSION_NUMBER >= 0x10100000L
- if (dlsym_EVP_CIPHER_CTX_reset) {
- Dl_info dl_info;
- if(dladdr(
- dlsym_EVP_CIPHER_CTX_reset,
- &dl_info)) {
- return (*env)->NewStringUTF(env, dl_info.dli_fname);
- }
- }
-#else
if (dlsym_EVP_CIPHER_CTX_init) {
Dl_info dl_info;
if(dladdr(
@@ -436,7 +404,6 @@ JNIEXPORT jstring JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_getLibrary
return (*env)->NewStringUTF(env, dl_info.dli_fname);
}
}
-#endif
return (*env)->NewStringUTF(env, HADOOP_OPENSSL_LIBRARY);
#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
index 8f54464..f1d68cd 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
@@ -17,7 +17,6 @@
*/
package org.apache.hadoop.conf;
-import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -2420,34 +2419,4 @@ public class TestConfiguration {
System.setOut(output);
}
}
-
- /**
- * Test race conditions between clone() and getProps().
- * Test for race conditions in the way Hadoop handles the Configuration
- * class. The scenario is the following. Let's assume that there are two
- * threads sharing the same Configuration class. One adds some resources
- * to the configuration, while the other one clones it. Resources are
- * loaded lazily in a deferred call to loadResources(). If the cloning
- * happens after adding the resources but before parsing them, some temporary
- * resources like input stream pointers are cloned. Eventually both copies
- * will load the same input stream resources.
- * One parses the input stream XML and closes it updating it's own copy of
- * the resource. The other one has another pointer to the same input stream.
- * When it tries to load it, it will crash with a stream closed exception.
- */
- @Test
- public void testResourceRace() {
- InputStream is =
- new BufferedInputStream(new ByteArrayInputStream(
- "<configuration></configuration>".getBytes()));
- Configuration config = new Configuration();
- // Thread 1
- config.addResource(is);
- // Thread 2
- Configuration confClone = new Configuration(conf);
- // Thread 2
- confClone.get("firstParse");
- // Thread 1
- config.get("secondParse");
- }
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/FileContextTestHelper.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/FileContextTestHelper.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/FileContextTestHelper.java
index 1f37f74..e3a4a12 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/FileContextTestHelper.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/FileContextTestHelper.java
@@ -43,7 +43,7 @@ public final class FileContextTestHelper {
* Create a context with test root relative to the test directory
*/
public FileContextTestHelper() {
- this(GenericTestUtils.getRandomizedTestDir().getPath());
+ this(GenericTestUtils.getRandomizedTestDir().getAbsolutePath());
}
/**
@@ -83,7 +83,7 @@ public final class FileContextTestHelper {
absTestRootDir = testRootDir;
} else {
absTestRootDir = fc.getWorkingDirectory().toString() + "/"
- + new Path(testRootDir).toUri();
+ + testRootDir;
}
}
return absTestRootDir;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
index 54d015a..d2cbca0 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
@@ -228,9 +228,9 @@ public class ContractTestUtils extends Assert {
public static void verifyFileContents(FileSystem fs,
Path path,
byte[] original) throws IOException {
- assertIsFile(fs, path);
FileStatus stat = fs.getFileStatus(path);
String statText = stat.toString();
+ assertTrue("not a file " + statText, stat.isFile());
assertEquals("wrong length " + statText, original.length, stat.getLen());
byte[] bytes = readDataset(fs, path, original.length);
compareByteArrays(original, bytes, original.length);
@@ -854,36 +854,6 @@ public class ContractTestUtils extends Assert {
}
/**
- * Assert that a varargs list of paths exist.
- * @param fs filesystem
- * @param message message for exceptions
- * @param paths paths
- * @throws IOException IO failure
- */
- public static void assertPathsExist(FileSystem fs,
- String message,
- Path... paths) throws IOException {
- for (Path path : paths) {
- assertPathExists(fs, message, path);
- }
- }
-
- /**
- * Assert that a varargs list of paths do not exist.
- * @param fs filesystem
- * @param message message for exceptions
- * @param paths paths
- * @throws IOException IO failure
- */
- public static void assertPathsDoNotExist(FileSystem fs,
- String message,
- Path... paths) throws IOException {
- for (Path path : paths) {
- assertPathDoesNotExist(fs, message, path);
- }
- }
-
- /**
* Create a dataset for use in the tests; all data is in the range
* base to (base+modulo-1) inclusive.
* @param len length of data
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
index 53eb2be..61b0271 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
@@ -44,7 +44,6 @@ import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.impl.Log4JLogger;
import org.apache.hadoop.fs.FileUtil;
-import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.StringUtils;
import org.apache.hadoop.util.Time;
import org.apache.log4j.Appender;
@@ -249,7 +248,7 @@ public abstract class GenericTestUtils {
* @return the absolute directory for tests. Caller is expected to create it.
*/
public static File getRandomizedTestDir() {
- return new File(getRandomizedTempPath());
+ return new File(getRandomizedTempPath()).getAbsoluteFile();
}
/**
@@ -260,9 +259,7 @@ public abstract class GenericTestUtils {
* @return a string to use in paths
*/
public static String getTempPath(String subpath) {
- String prop = (Path.WINDOWS) ? DEFAULT_TEST_DATA_PATH
- : System.getProperty(SYSPROP_TEST_DATA_DIR, DEFAULT_TEST_DATA_PATH);
-
+ String prop = System.getProperty(SYSPROP_TEST_DATA_DIR, DEFAULT_TEST_DATA_PATH);
if (prop.isEmpty()) {
// corner case: property is there but empty
prop = DEFAULT_TEST_DATA_PATH;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java b/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java
index cb4bf7e..1817a13 100644
--- a/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java
+++ b/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java
@@ -28,7 +28,6 @@ import javax.servlet.ServletContextListener;
import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.Meter;
import com.codahale.metrics.MetricRegistry;
-import com.google.common.base.Preconditions;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.crypto.key.CachingKeyProvider;
@@ -160,11 +159,6 @@ public class KMSWebApp implements ServletContextListener {
}
KeyProvider keyProvider =
KeyProviderFactory.get(new URI(providerString), kmsConf);
- Preconditions.checkNotNull(keyProvider, String.format("No" +
- " KeyProvider has been initialized, please" +
- " check whether %s '%s' is configured correctly in" +
- " kms-site.xml.", KMSConfiguration.KEY_PROVIDER_URI,
- providerString));
if (kmsConf.getBoolean(KMSConfiguration.KEY_CACHE_ENABLE,
KMSConfiguration.KEY_CACHE_ENABLE_DEFAULT)) {
long keyTimeOutMillis =
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java
index 0875328..af7b540 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java
@@ -2910,7 +2910,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory,
* @param num Number of threads for hedged reads thread pool.
* If zero, skip hedged reads thread pool creation.
*/
- private static synchronized void initThreadsNumForHedgedReads(int num) {
+ private synchronized void initThreadsNumForHedgedReads(int num) {
if (num <= 0 || HEDGED_READ_THREAD_POOL != null) return;
HEDGED_READ_THREAD_POOL = new ThreadPoolExecutor(1, num, 60,
TimeUnit.SECONDS, new SynchronousQueue<Runnable>(),
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/pom.xml b/hadoop-hdfs-project/hadoop-hdfs-native-client/pom.xml
index 52d9257..fa0e174 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/pom.xml
+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/pom.xml
@@ -31,11 +31,6 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
<properties>
<require.fuse>false</require.fuse>
- <require.libwebhdfs>false</require.libwebhdfs>
- <require.valgrind>false</require.valgrind>
- <native_ctest_args></native_ctest_args>
- <native_cmake_args></native_cmake_args>
- <native_make_args></native_make_args>
<hadoop.component>hdfs</hadoop.component>
</properties>
@@ -90,7 +85,6 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
<exclude>src/main/native/config/*</exclude>
<exclude>src/main/native/m4/*</exclude>
<exclude>src/main/native/fuse-dfs/util/tree.h</exclude>
- <exclude>src/main/native/libhdfspp/third_party/**</exclude>
<exclude>src/contrib/**</exclude>
</excludes>
</configuration>
@@ -144,16 +138,17 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
</goals>
<configuration>
<target>
+ <condition property="generator" value="Visual Studio 10" else="Visual Studio 10 Win64">
+ <equals arg1="Win32" arg2="${env.PLATFORM}" />
+ </condition>
<mkdir dir="${project.build.directory}/native"/>
<exec executable="cmake" dir="${project.build.directory}/native"
failonerror="true">
- <arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DHADOOP_BUILD=1 -DREQUIRE_FUSE=${require.fuse} -DREQUIRE_VALGRIND=${require.valgrind} -A '${env.PLATFORM}'"/>
- <arg line="${native_cmake_args}"/>
+ <arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DREQUIRE_FUSE=${require.fuse} -G '${generator}'"/>
</exec>
<exec executable="msbuild" dir="${project.build.directory}/native"
failonerror="true">
<arg line="ALL_BUILD.vcxproj /nologo /p:Configuration=RelWithDebInfo /p:LinkIncremental=false"/>
- <arg line="${native_make_args}"/>
</exec>
<!-- Copy for inclusion in distribution. -->
<copy todir="${project.build.directory}/bin">
@@ -172,15 +167,11 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="test_classpath" refid="maven.test.classpath"/>
<exec executable="ctest" failonerror="true" dir="${project.build.directory}/native">
- <arg line="--output-on-failure"/>
- <arg line="${native_ctest_args}"/>
<env key="CLASSPATH" value="${test_classpath}:${compile_classpath}"/>
<!-- HADOOP_HOME required to find winutils. -->
<env key="HADOOP_HOME" value="${hadoop.common.build.dir}"/>
<!-- Make sure hadoop.dll and jvm.dll are on PATH. -->
<env key="PATH" value="${env.PATH};${hadoop.common.build.dir}/bin;${java.home}/jre/bin/server;${java.home}/bin/server"/>
- <!-- Make sure libhadoop.so is on LD_LIBRARY_PATH. -->
- <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH}:${project.build.directory}/native/target/usr/local/lib:${hadoop.common.build.dir}/native/target/usr/local/lib"/>
</exec>
</target>
</configuration>
@@ -201,90 +192,31 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
<build>
<plugins>
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-maven-plugins</artifactId>
<executions>
<execution>
- <id>make</id>
+ <id>cmake-compile</id>
<phase>compile</phase>
- <goals><goal>run</goal></goals>
- <configuration>
- <target>
- <mkdir dir="${project.build.directory}"/>
- <exec executable="cmake" dir="${project.build.directory}" failonerror="true">
- <arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DHADOOP_BUILD=1 -DREQUIRE_LIBWEBHDFS=${require.libwebhdfs} -DREQUIRE_FUSE=${require.fuse} -DREQUIRE_VALGRIND=${require.valgrind} "/>
- <arg line="${native_cmake_args}"/>
- </exec>
- <exec executable="make" dir="${project.build.directory}" failonerror="true">
- <arg line="${native_make_args}"/>
- </exec>
- </target>
- </configuration>
- </execution>
- <execution>
- <id>native_tests</id>
- <phase>test</phase>
- <goals><goal>run</goal></goals>
+ <goals><goal>cmake-compile</goal></goals>
<configuration>
- <skip>${skipTests}</skip>
- <target>
- <property name="compile_classpath" refid="maven.compile.classpath"/>
- <property name="test_classpath" refid="maven.test.classpath"/>
- <exec executable="ctest" failonerror="true" dir="${project.build.directory}/">
- <arg line="--output-on-failure"/>
- <arg line="${native_ctest_args}"/>
- <env key="CLASSPATH" value="${test_classpath}:${compile_classpath}"/>
- <!-- Make sure libhadoop.so is on LD_LIBRARY_PATH. -->
- <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH}:${project.build.directory}/native/target/usr/local/lib:${hadoop.common.build.dir}/native/target/usr/local/lib"/>
- </exec>
- </target>
+ <source>${basedir}/src</source>
+ <vars>
+ <GENERATED_JAVAH>${project.build.directory}/native/javah</GENERATED_JAVAH>
+ <JVM_ARCH_DATA_MODEL>${sun.arch.data.model}</JVM_ARCH_DATA_MODEL>
+ <REQUIRE_FUSE>${require.fuse}</REQUIRE_FUSE>
+ </vars>
+ <output>${project.build.directory}</output>
</configuration>
</execution>
</executions>
</plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>test-patch</id>
- <activation>
- <activeByDefault>false</activeByDefault>
- </activation>
- <properties>
- <runningWithNative>true</runningWithNative>
- </properties>
- <build>
- <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
- <id>make_altern</id>
- <phase>compile</phase>
- <goals><goal>run</goal></goals>
- <configuration>
- <target>
- <mkdir dir="${project.build.directory}/altern"/>
- <condition property="c_compiler" value="clang" else="gcc">
- <contains string="${env.CC}" substring="gcc"/>
- </condition>
- <condition property="cxx_compiler" value="clang++" else="g++">
- <contains string="${env.CXX}" substring="g++"/>
- </condition>
- <exec executable="cmake" dir="${project.build.directory}/altern" failonerror="true">
- <arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/altern/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DHADOOP_BUILD=1 -DREQUIRE_LIBWEBHDFS=${require.libwebhdfs} -DREQUIRE_FUSE=${require.fuse} -DREQUIRE_VALGRIND=${require.valgrind} "/>
- <arg line="-DCMAKE_C_COMPILER=${c_compiler} -DCMAKE_CXX_COMPILER=${cxx_compiler}"/>
- <arg line="${native_cmake_args}"/>
- </exec>
- <exec executable="make" dir="${project.build.directory}/altern" failonerror="true">
- <arg line="${native_make_args}"/>
- </exec>
- </target>
- </configuration>
- </execution>
- <execution>
- <id>native_tests_altern</id>
+ <id>native_tests</id>
<phase>test</phase>
<goals><goal>run</goal></goals>
<configuration>
@@ -292,26 +224,14 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
<target>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="test_classpath" refid="maven.test.classpath"/>
- <exec executable="ctest" failonerror="true" dir="${project.build.directory}/altern">
- <arg line="--output-on-failure"/>
- <arg line="${native_ctest_args}"/>
+ <exec executable="ctest" failonerror="true" dir="${project.build.directory}/">
<env key="CLASSPATH" value="${test_classpath}:${compile_classpath}"/>
<!-- Make sure libhadoop.so is on LD_LIBRARY_PATH. -->
- <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH}:${project.build.directory}/altern/target/usr/local/lib:${hadoop.common.build.dir}/native/target/usr/local/lib"/>
+ <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH}:${project.build.directory}/native/target/usr/local/lib:${hadoop.common.build.dir}/native/target/usr/local/lib"/>
</exec>
</target>
</configuration>
</execution>
- <execution>
- <id>clean_altern</id>
- <phase>test</phase>
- <goals><goal>run</goal></goals>
- <configuration>
- <target>
- <delete dir="${project.build.directory}/altern" includeemptydirs="true"/>
- </target>
- </configuration>
- </execution>
</executions>
</plugin>
</plugins>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
index a3f8f2d..aa690e2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
@@ -58,11 +58,19 @@ if(WIN32)
# Omit unneeded headers.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWIN32_LEAN_AND_MEAN")
set(OS_DIR ${CMAKE_SOURCE_DIR}/main/native/libhdfs/os/windows)
- set(OUT_DIR target/bin)
+
+ # IMPORTANT: OUT_DIR MUST be relative to maven's
+ # project.build.directory (=target) and match dist-copynativelibs
+ # in order to be in a release
+ set(OUT_DIR bin)
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
set(OS_DIR ${CMAKE_SOURCE_DIR}/main/native/libhdfs/os/posix)
- set(OUT_DIR target/usr/local/lib)
+
+ # IMPORTANT: OUT_DIR MUST be relative to maven's
+ # project.build.directory (=target) and match dist-copynativelibs
+ # in order to be in a release
+ set(OUT_DIR native/target/usr/local/lib)
endif()
# Configure JNI.
@@ -90,11 +98,6 @@ endfunction()
add_subdirectory(main/native/libhdfs)
add_subdirectory(main/native/libhdfs-tests)
-add_subdirectory(main/native/libhdfspp)
-
-if(REQUIRE_LIBWEBHDFS)
- add_subdirectory(contrib/libwebhdfs)
-endif()
# Find Linux FUSE
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c
index 6938109..b36ef76 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c
+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c
@@ -182,16 +182,6 @@ struct NativeMiniDfsCluster* nmdCreate(struct NativeMiniDfsConf *conf)
}
(*env)->DeleteLocalRef(env, val.l);
}
- if (conf->numDataNodes) {
- jthr = invokeMethod(env, &val, INSTANCE, bld, MINIDFS_CLUSTER_BUILDER,
- "numDataNodes", "(I)L" MINIDFS_CLUSTER_BUILDER ";", conf->numDataNodes);
- if (jthr) {
- printExceptionAndFree(env, jthr, PRINT_EXC_ALL, "nmdCreate: "
- "Builder::numDataNodes");
- goto error;
- }
- }
- (*env)->DeleteLocalRef(env, val.l);
jthr = invokeMethod(env, &val, INSTANCE, bld, MINIDFS_CLUSTER_BUILDER,
"build", "()L" MINIDFS_CLUSTER ";");
if (jthr) {
@@ -301,7 +291,7 @@ int nmdGetNameNodeHttpAddress(const struct NativeMiniDfsCluster *cl,
jthrowable jthr;
int ret = 0;
const char *host;
-
+
if (!env) {
fprintf(stderr, "nmdHdfsConnect: getJNIEnv failed\n");
return -EIO;
@@ -316,7 +306,7 @@ int nmdGetNameNodeHttpAddress(const struct NativeMiniDfsCluster *cl,
return -EIO;
}
jNameNode = jVal.l;
-
+
// Then get the http address (InetSocketAddress) of the NameNode
jthr = invokeMethod(env, &jVal, INSTANCE, jNameNode, HADOOP_NAMENODE,
"getHttpAddress", "()L" JAVA_INETSOCKETADDRESS ";");
@@ -327,7 +317,7 @@ int nmdGetNameNodeHttpAddress(const struct NativeMiniDfsCluster *cl,
goto error_dlr_nn;
}
jAddress = jVal.l;
-
+
jthr = invokeMethod(env, &jVal, INSTANCE, jAddress,
JAVA_INETSOCKETADDRESS, "getPort", "()I");
if (jthr) {
@@ -337,7 +327,7 @@ int nmdGetNameNodeHttpAddress(const struct NativeMiniDfsCluster *cl,
goto error_dlr_addr;
}
*port = jVal.i;
-
+
jthr = invokeMethod(env, &jVal, INSTANCE, jAddress, JAVA_INETSOCKETADDRESS,
"getHostName", "()Ljava/lang/String;");
if (jthr) {
@@ -349,12 +339,12 @@ int nmdGetNameNodeHttpAddress(const struct NativeMiniDfsCluster *cl,
host = (*env)->GetStringUTFChars(env, jVal.l, NULL);
*hostName = strdup(host);
(*env)->ReleaseStringUTFChars(env, jVal.l, host);
-
+
error_dlr_addr:
(*env)->DeleteLocalRef(env, jAddress);
error_dlr_nn:
(*env)->DeleteLocalRef(env, jNameNode);
-
+
return ret;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.h
index 628180f..ce8b1cf 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.h
+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.h
@@ -26,7 +26,7 @@ extern "C" {
#endif
struct hdfsBuilder;
-struct NativeMiniDfsCluster;
+struct NativeMiniDfsCluster;
/**
* Represents a configuration to use for creating a Native MiniDFSCluster
@@ -51,11 +51,6 @@ struct NativeMiniDfsConf {
* Nonzero if we should configure short circuit.
*/
jboolean configureShortCircuit;
-
- /**
- * The number of datanodes in MiniDfsCluster
- */
- jint numDataNodes;
};
/**
@@ -101,13 +96,13 @@ void nmdFree(struct NativeMiniDfsCluster* cl);
*
* @return the port, or a negative error code
*/
-int nmdGetNameNodePort(const struct NativeMiniDfsCluster *cl);
+int nmdGetNameNodePort(const struct NativeMiniDfsCluster *cl);
/**
* Get the http address that's in use by the given (non-HA) nativeMiniDfs
*
* @param cl The initialized NativeMiniDfsCluster
- * @param port Used to capture the http port of the NameNode
+ * @param port Used to capture the http port of the NameNode
* of the NativeMiniDfsCluster
* @param hostName Used to capture the http hostname of the NameNode
* of the NativeMiniDfsCluster
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_mini_stress.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_mini_stress.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_mini_stress.c
deleted file mode 100644
index dca4782..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_mini_stress.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "expect.h"
-#include "hdfs/hdfs.h"
-#include "hdfspp/hdfs_ext.h"
-#include "native_mini_dfs.h"
-#include "os/thread.h"
-
-#include <errno.h>
-#include <inttypes.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define TO_STR_HELPER(X) #X
-#define TO_STR(X) TO_STR_HELPER(X)
-
-#define TLH_MAX_THREADS 10000
-
-#define TLH_MAX_DNS 16
-
-#define TLH_DEFAULT_BLOCK_SIZE 1048576
-
-#define TLH_DEFAULT_DFS_REPLICATION 3
-
-#define TLH_DEFAULT_IPC_CLIENT_CONNECT_MAX_RETRIES 100
-
-#define TLH_DEFAULT_IPC_CLIENT_CONNECT_RETRY_INTERVAL_MS 5
-
-#ifndef RANDOM_ERROR_RATIO
-#define RANDOM_ERROR_RATIO 1000000000
-#endif
-
-struct tlhThreadInfo {
- /** Thread index */
- int threadIdx;
- /** 0 = thread was successful; error code otherwise */
- int success;
- /** thread identifier */
- thread theThread;
- /** fs, shared with other threads **/
- hdfsFS hdfs;
- /** Filename */
- const char *fileNm;
-
-};
-
-static int hdfsNameNodeConnect(struct NativeMiniDfsCluster *cl, hdfsFS *fs,
- const char *username)
-{
- int ret;
- tPort port;
- hdfsFS hdfs;
- struct hdfsBuilder *bld;
-
- port = (tPort)nmdGetNameNodePort(cl);
- if (port < 0) {
- fprintf(stderr, "hdfsNameNodeConnect: nmdGetNameNodePort "
- "returned error %d\n", port);
- return port;
- }
- bld = hdfsNewBuilder();
- if (!bld)
- return -ENOMEM;
- hdfsBuilderSetForceNewInstance(bld);
- hdfsBuilderSetNameNode(bld, "localhost");
- hdfsBuilderSetNameNodePort(bld, port);
- hdfsBuilderConfSetStr(bld, "dfs.block.size",
- TO_STR(TLH_DEFAULT_BLOCK_SIZE));
- hdfsBuilderConfSetStr(bld, "dfs.blocksize",
- TO_STR(TLH_DEFAULT_BLOCK_SIZE));
- hdfsBuilderConfSetStr(bld, "dfs.replication",
- TO_STR(TLH_DEFAULT_DFS_REPLICATION));
- hdfsBuilderConfSetStr(bld, "ipc.client.connect.max.retries",
- TO_STR(TLH_DEFAULT_IPC_CLIENT_CONNECT_MAX_RETRIES));
- hdfsBuilderConfSetStr(bld, "ipc.client.connect.retry.interval",
- TO_STR(TLH_DEFAULT_IPC_CLIENT_CONNECT_RETRY_INTERVAL_MS));
- if (username) {
- hdfsBuilderSetUserName(bld, username);
- }
- hdfs = hdfsBuilderConnect(bld);
- if (!hdfs) {
- ret = -errno;
- return ret;
- }
- *fs = hdfs;
- return 0;
-}
-
-static int hdfsWriteData(hdfsFS hdfs, const char *dirNm,
- const char *fileNm, tSize fileSz)
-{
- hdfsFile file;
- int ret, expected;
- const char *content;
-
- content = fileNm;
-
- if (hdfsExists(hdfs, dirNm) == 0) {
- EXPECT_ZERO(hdfsDelete(hdfs, dirNm, 1));
- }
- EXPECT_ZERO(hdfsCreateDirectory(hdfs, dirNm));
-
- file = hdfsOpenFile(hdfs, fileNm, O_WRONLY, 0, 0, 0);
- EXPECT_NONNULL(file);
-
- expected = (int)strlen(content);
- tSize sz = 0;
- while (sz < fileSz) {
- ret = hdfsWrite(hdfs, file, content, expected);
- if (ret < 0) {
- ret = errno;
- fprintf(stderr, "hdfsWrite failed and set errno %d\n", ret);
- return ret;
- }
- if (ret != expected) {
- fprintf(stderr, "hdfsWrite was supposed to write %d bytes, but "
- "it wrote %d\n", ret, expected);
- return EIO;
- }
- sz += ret;
- }
- EXPECT_ZERO(hdfsFlush(hdfs, file));
- EXPECT_ZERO(hdfsHSync(hdfs, file));
- EXPECT_ZERO(hdfsCloseFile(hdfs, file));
- return 0;
-}
-
-static int fileEventCallback1(const char * event, const char * cluster, const char * file, int64_t value, int64_t cookie)
-{
- char * randomErrRatioStr = getenv("RANDOM_ERROR_RATIO");
- int64_t randomErrRatio = RANDOM_ERROR_RATIO;
- if (randomErrRatioStr) randomErrRatio = (int64_t)atoi(randomErrRatioStr);
- if (randomErrRatio == 0) return DEBUG_SIMULATE_ERROR;
- else if (randomErrRatio < 0) return LIBHDFSPP_EVENT_OK;
- return random() % randomErrRatio == 0 ? DEBUG_SIMULATE_ERROR : LIBHDFSPP_EVENT_OK;
-}
-
-static int fileEventCallback2(const char * event, const char * cluster, const char * file, int64_t value, int64_t cookie)
-{
- /* no op */
- return LIBHDFSPP_EVENT_OK;
-}
-
-static int doTestHdfsMiniStress(struct tlhThreadInfo *ti, int randomErr)
-{
- char tmp[4096];
- hdfsFile file;
- int ret, expected;
- hdfsFileInfo *fileInfo;
- uint64_t readOps, nErrs=0;
- tOffset seekPos;
- const char *content;
-
- content = ti->fileNm;
- expected = (int)strlen(content);
-
- fileInfo = hdfsGetPathInfo(ti->hdfs, ti->fileNm);
- EXPECT_NONNULL(fileInfo);
-
- file = hdfsOpenFile(ti->hdfs, ti->fileNm, O_RDONLY, 0, 0, 0);
- EXPECT_NONNULL(file);
-
- libhdfspp_file_event_callback callback = (randomErr != 0) ? &fileEventCallback1 : &fileEventCallback2;
-
- hdfsPreAttachFileMonitor(callback, 0);
-
- fprintf(stderr, "testHdfsMiniStress(threadIdx=%d): starting read loop\n",
- ti->threadIdx);
- for (readOps=0; readOps < 1000; ++readOps) {
- EXPECT_ZERO(hdfsCloseFile(ti->hdfs, file));
- file = hdfsOpenFile(ti->hdfs, ti->fileNm, O_RDONLY, 0, 0, 0);
- EXPECT_NONNULL(file);
- seekPos = (((double)random()) / RAND_MAX) * (fileInfo->mSize - expected);
- seekPos = (seekPos / expected) * expected;
- ret = hdfsSeek(ti->hdfs, file, seekPos);
- if (ret < 0) {
- ret = errno;
- fprintf(stderr, "hdfsSeek to %"PRIu64" failed and set"
- " errno %d\n", seekPos, ret);
- ++nErrs;
- continue;
- }
- ret = hdfsRead(ti->hdfs, file, tmp, expected);
- if (ret < 0) {
- ret = errno;
- fprintf(stderr, "hdfsRead failed and set errno %d\n", ret);
- ++nErrs;
- continue;
- }
- if (ret != expected) {
- fprintf(stderr, "hdfsRead was supposed to read %d bytes, but "
- "it read %d\n", ret, expected);
- ++nErrs;
- continue;
- }
- ret = memcmp(content, tmp, expected);
- if (ret) {
- fprintf(stderr, "hdfsRead result (%.*s) does not match expected (%.*s)",
- expected, tmp, expected, content);
- ++nErrs;
- continue;
- }
- }
- EXPECT_ZERO(hdfsCloseFile(ti->hdfs, file));
- fprintf(stderr, "testHdfsMiniStress(threadIdx=%d): finished read loop\n",
- ti->threadIdx);
- EXPECT_ZERO(nErrs);
- return 0;
-}
-
-static int testHdfsMiniStressImpl(struct tlhThreadInfo *ti)
-{
- fprintf(stderr, "testHdfsMiniStress(threadIdx=%d): starting\n",
- ti->threadIdx);
- EXPECT_NONNULL(ti->hdfs);
- // Error injection on, some failures are expected in the read path.
- // The expectation is that any memory stomps will cascade and cause
- // the following test to fail. Ideally RPC errors would be seperated
- // from BlockReader errors (RPC is expected to recover from disconnects).
- doTestHdfsMiniStress(ti, 1);
- // No error injection
- EXPECT_ZERO(doTestHdfsMiniStress(ti, 0));
- return 0;
-}
-
-static void testHdfsMiniStress(void *v)
-{
- struct tlhThreadInfo *ti = (struct tlhThreadInfo*)v;
- int ret = testHdfsMiniStressImpl(ti);
- ti->success = ret;
-}
-
-static int checkFailures(struct tlhThreadInfo *ti, int tlhNumThreads)
-{
- int i, threadsFailed = 0;
- const char *sep = "";
-
- for (i = 0; i < tlhNumThreads; i++) {
- if (ti[i].success != 0) {
- threadsFailed = 1;
- }
- }
- if (!threadsFailed) {
- fprintf(stderr, "testLibHdfsMiniStress: all threads succeeded. SUCCESS.\n");
- return EXIT_SUCCESS;
- }
- fprintf(stderr, "testLibHdfsMiniStress: some threads failed: [");
- for (i = 0; i < tlhNumThreads; i++) {
- if (ti[i].success != 0) {
- fprintf(stderr, "%s%d", sep, i);
- sep = ", ";
- }
- }
- fprintf(stderr, "]. FAILURE.\n");
- return EXIT_FAILURE;
-}
-
-/**
- * Test intended to stress libhdfs client with concurrent requests. Currently focused
- * on concurrent reads.
- */
-int main(void)
-{
- int i, tlhNumThreads;
- char *dirNm, *fileNm;
- tSize fileSz;
- const char *tlhNumThreadsStr, *tlhNumDNsStr;
- hdfsFS hdfs = NULL;
- struct NativeMiniDfsCluster* tlhCluster;
- struct tlhThreadInfo ti[TLH_MAX_THREADS];
- struct NativeMiniDfsConf conf = {
- 1, /* doFormat */
- };
-
- dirNm = "/tlhMiniStressData";
- fileNm = "/tlhMiniStressData/file";
- fileSz = 2*1024*1024;
-
- tlhNumDNsStr = getenv("TLH_NUM_DNS");
- if (!tlhNumDNsStr) {
- tlhNumDNsStr = "1";
- }
- conf.numDataNodes = atoi(tlhNumDNsStr);
- if ((conf.numDataNodes <= 0) || (conf.numDataNodes > TLH_MAX_DNS)) {
- fprintf(stderr, "testLibHdfsMiniStress: must have a number of datanodes "
- "between 1 and %d inclusive, not %d\n",
- TLH_MAX_DNS, conf.numDataNodes);
- return EXIT_FAILURE;
- }
-
- tlhNumThreadsStr = getenv("TLH_NUM_THREADS");
- if (!tlhNumThreadsStr) {
- tlhNumThreadsStr = "8";
- }
- tlhNumThreads = atoi(tlhNumThreadsStr);
- if ((tlhNumThreads <= 0) || (tlhNumThreads > TLH_MAX_THREADS)) {
- fprintf(stderr, "testLibHdfsMiniStress: must have a number of threads "
- "between 1 and %d inclusive, not %d\n",
- TLH_MAX_THREADS, tlhNumThreads);
- return EXIT_FAILURE;
- }
- memset(&ti[0], 0, sizeof(ti));
- for (i = 0; i < tlhNumThreads; i++) {
- ti[i].threadIdx = i;
- }
-
- tlhCluster = nmdCreate(&conf);
- EXPECT_NONNULL(tlhCluster);
- EXPECT_ZERO(nmdWaitClusterUp(tlhCluster));
-
- EXPECT_ZERO(hdfsNameNodeConnect(tlhCluster, &hdfs, NULL));
-
- // Single threaded writes for now.
- EXPECT_ZERO(hdfsWriteData(hdfs, dirNm, fileNm, fileSz));
-
- // Multi-threaded reads.
- for (i = 0; i < tlhNumThreads; i++) {
- ti[i].theThread.start = testHdfsMiniStress;
- ti[i].theThread.arg = &ti[i];
- ti[i].hdfs = hdfs;
- ti[i].fileNm = fileNm;
- EXPECT_ZERO(threadCreate(&ti[i].theThread));
- }
- for (i = 0; i < tlhNumThreads; i++) {
- EXPECT_ZERO(threadJoin(&ti[i].theThread));
- }
-
- EXPECT_ZERO(hdfsDisconnect(hdfs));
- EXPECT_ZERO(nmdShutdown(tlhCluster));
- nmdFree(tlhCluster);
- return checkFailures(ti, tlhNumThreads);
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c
index 343e05a..8d4b743 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c
+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c
@@ -30,7 +30,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <limits.h>
#define TO_STR_HELPER(X) #X
#define TO_STR(X) TO_STR_HELPER(X)
@@ -57,7 +56,7 @@ static int hdfsSingleNameNodeConnect(struct NativeMiniDfsCluster *cl, hdfsFS *fs
tPort port;
hdfsFS hdfs;
struct hdfsBuilder *bld;
-
+
port = (tPort)nmdGetNameNodePort(cl);
if (port < 0) {
fprintf(stderr, "hdfsSingleNameNodeConnect: nmdGetNameNodePort "
@@ -93,12 +92,13 @@ static int doTestGetDefaultBlockSize(hdfsFS fs, const char *path)
blockSize = hdfsGetDefaultBlockSize(fs);
if (blockSize < 0) {
- fprintf(stderr, "hdfsGetDefaultBlockSize failed with error %d\n", errno);
- return -1;
+ ret = errno;
+ fprintf(stderr, "hdfsGetDefaultBlockSize failed with error %d\n", ret);
+ return ret;
} else if (blockSize != TLH_DEFAULT_BLOCK_SIZE) {
fprintf(stderr, "hdfsGetDefaultBlockSize got %"PRId64", but we "
"expected %d\n", blockSize, TLH_DEFAULT_BLOCK_SIZE);
- return -1;
+ return EIO;
}
blockSize = hdfsGetDefaultBlockSizeAtPath(fs, path);
@@ -109,7 +109,7 @@ static int doTestGetDefaultBlockSize(hdfsFS fs, const char *path)
return ret;
} else if (blockSize != TLH_DEFAULT_BLOCK_SIZE) {
fprintf(stderr, "hdfsGetDefaultBlockSizeAtPath(%s) got "
- "%"PRId64", but we expected %d\n",
+ "%"PRId64", but we expected %d\n",
path, blockSize, TLH_DEFAULT_BLOCK_SIZE);
return EIO;
}
@@ -157,19 +157,12 @@ static int doTestHdfsOperations(struct tlhThreadInfo *ti, hdfsFS fs,
EXPECT_ZERO(doTestGetDefaultBlockSize(fs, paths->prefix));
- /* There is no such directory.
- * Check that errno is set to ENOENT
- */
- char invalid_path[] = "/some_invalid/path";
- EXPECT_NULL_WITH_ERRNO(hdfsListDirectory(fs, invalid_path, &numEntries), ENOENT);
-
/* There should be no entry in the directory. */
errno = EACCES; // see if errno is set to 0 on success
EXPECT_NULL_WITH_ERRNO(hdfsListDirectory(fs, paths->prefix, &numEntries), 0);
if (numEntries != 0) {
fprintf(stderr, "hdfsListDirectory set numEntries to "
"%d on empty directory.", numEntries);
- return EIO;
}
/* There should not be any file to open for reading. */
@@ -197,45 +190,19 @@ static int doTestHdfsOperations(struct tlhThreadInfo *ti, hdfsFS fs,
}
if (ret != expected) {
fprintf(stderr, "hdfsWrite was supposed to write %d bytes, but "
- "it wrote %d\n", expected, ret);
+ "it wrote %d\n", ret, expected);
return EIO;
}
EXPECT_ZERO(hdfsFlush(fs, file));
EXPECT_ZERO(hdfsHSync(fs, file));
EXPECT_ZERO(hdfsCloseFile(fs, file));
- EXPECT_ZERO(doTestGetDefaultBlockSize(fs, paths->file1));
-
/* There should be 1 entry in the directory. */
- hdfsFileInfo * dirList = hdfsListDirectory(fs, paths->prefix, &numEntries);
- EXPECT_NONNULL(dirList);
+ EXPECT_NONNULL(hdfsListDirectory(fs, paths->prefix, &numEntries));
if (numEntries != 1) {
fprintf(stderr, "hdfsListDirectory set numEntries to "
"%d on directory containing 1 file.", numEntries);
}
- hdfsFreeFileInfo(dirList, numEntries);
-
- /* Create many files for ListDirectory to page through */
- char listDirTest[PATH_MAX];
- strcpy(listDirTest, paths->prefix);
- strcat(listDirTest, "/for_list_test/");
- EXPECT_ZERO(hdfsCreateDirectory(fs, listDirTest));
- int nFile;
- for (nFile = 0; nFile < 10000; nFile++) {
- char filename[PATH_MAX];
- snprintf(filename, PATH_MAX, "%s/many_files_%d", listDirTest, nFile);
- file = hdfsOpenFile(fs, filename, O_WRONLY, 0, 0, 0);
- EXPECT_NONNULL(file);
- EXPECT_ZERO(hdfsCloseFile(fs, file));
- }
- dirList = hdfsListDirectory(fs, listDirTest, &numEntries);
- EXPECT_NONNULL(dirList);
- hdfsFreeFileInfo(dirList, numEntries);
- if (numEntries != 10000) {
- fprintf(stderr, "hdfsListDirectory set numEntries to "
- "%d on directory containing 10000 files.", numEntries);
- return EIO;
- }
/* Let's re-open the file for reading */
file = hdfsOpenFile(fs, paths->file1, O_RDONLY, 0, 0, 0);
@@ -279,8 +246,8 @@ static int doTestHdfsOperations(struct tlhThreadInfo *ti, hdfsFS fs,
EXPECT_ZERO(memcmp(paths->prefix, tmp, expected));
EXPECT_ZERO(hdfsCloseFile(fs, file));
- //Non-recursive delete fails
- EXPECT_NONZERO(hdfsDelete(fs, paths->prefix, 0));
+ // TODO: Non-recursive delete should fail?
+ //EXPECT_NONZERO(hdfsDelete(fs, prefix, 0));
EXPECT_ZERO(hdfsCopy(fs, paths->file1, fs, paths->file2));
EXPECT_ZERO(hdfsChown(fs, paths->file2, NULL, NULL));
@@ -307,17 +274,6 @@ static int doTestHdfsOperations(struct tlhThreadInfo *ti, hdfsFS fs,
snprintf(tmp, sizeof(tmp), "%s/nonexistent-file-name", paths->prefix);
EXPECT_NEGATIVE_ONE_WITH_ERRNO(hdfsChown(fs, tmp, "ha3", NULL), ENOENT);
-
- //Test case: File does not exist
- EXPECT_NULL_WITH_ERRNO(hdfsGetPathInfo(fs, invalid_path), ENOENT);
-
- //Test case: No permission to access parent directory
- EXPECT_ZERO(hdfsChmod(fs, paths->prefix, 0));
- //reconnect as user "SomeGuy" and verify that we get permission errors
- hdfsFS fs2 = NULL;
- EXPECT_ZERO(hdfsSingleNameNodeConnect(tlhCluster, &fs2, "SomeGuy"));
- EXPECT_NULL_WITH_ERRNO(hdfsGetPathInfo(fs2, paths->file2), EACCES);
- EXPECT_ZERO(hdfsDisconnect(fs2));
return 0;
}
@@ -329,8 +285,6 @@ static int testHdfsOperationsImpl(struct tlhThreadInfo *ti)
fprintf(stderr, "testHdfsOperations(threadIdx=%d): starting\n",
ti->threadIdx);
EXPECT_ZERO(hdfsSingleNameNodeConnect(tlhCluster, &fs, NULL));
- if (!fs)
- return 1;
EXPECT_ZERO(setupPaths(ti, &paths));
// test some operations
EXPECT_ZERO(doTestHdfsOperations(ti, fs, &paths));
@@ -341,8 +295,6 @@ static int testHdfsOperationsImpl(struct tlhThreadInfo *ti)
EXPECT_ZERO(hdfsDisconnect(fs));
// reconnect to do the final delete.
EXPECT_ZERO(hdfsSingleNameNodeConnect(tlhCluster, &fs, NULL));
- if (!fs)
- return 1;
EXPECT_ZERO(hdfsDelete(fs, paths.prefix, 1));
EXPECT_ZERO(hdfsDisconnect(fs));
return 0;
@@ -373,7 +325,7 @@ static int checkFailures(struct tlhThreadInfo *ti, int tlhNumThreads)
for (i = 0; i < tlhNumThreads; i++) {
if (ti[i].success != 0) {
fprintf(stderr, "%s%d", sep, i);
- sep = ", ";
+ sep = ", ";
}
}
fprintf(stderr, "]. FAILURE.\n");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindCyrusSASL.cmake
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindCyrusSASL.cmake b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindCyrusSASL.cmake
deleted file mode 100644
index 8ce027f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindCyrusSASL.cmake
+++ /dev/null
@@ -1,49 +0,0 @@
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# - Find Cyrus SASL (sasl.h, libsasl2.so)
-#
-# This module defines
-# CYRUS_SASL_INCLUDE_DIR, directory containing headers
-# CYRUS_SASL_SHARED_LIB, path to Cyrus SASL's shared library
-# CYRUS_SASL_FOUND, whether Cyrus SASL and its plugins have been found
-#
-# N.B: we do _not_ include sasl in thirdparty, for a fairly subtle reason. The
-# TLDR version is that newer versions of cyrus-sasl (>=2.1.26) have a bug fix
-# for https://bugzilla.cyrusimap.org/show_bug.cgi?id=3590, but that bug fix
-# relied on a change both on the plugin side and on the library side. If you
-# then try to run the new version of sasl (e.g from our thirdparty tree) with
-# an older version of a plugin (eg from RHEL6 install), you'll get a SASL_NOMECH
-# error due to this bug.
-#
-# In practice, Cyrus-SASL is so commonly used and generally non-ABI-breaking that
-# we should be OK to depend on the host installation.
-
-# Note that this is modified from the version that was copied from our
-# friends at the Kudu project. The original version implicitly required
-# the Cyrus SASL. This version will only complain if REQUIRED is added.
-
-
-find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h)
-find_library(CYRUS_SASL_SHARED_LIB sasl2)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(CYRUS_SASL DEFAULT_MSG
- CYRUS_SASL_SHARED_LIB CYRUS_SASL_INCLUDE_DIR)
-
-MARK_AS_ADVANCED(CYRUS_SASL_INCLUDE_DIR CYRUS_SASL_SHARED_LIB)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindGSasl.cmake
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindGSasl.cmake b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindGSasl.cmake
deleted file mode 100644
index 57588ad..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMake/FindGSasl.cmake
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# - Try to find the GNU sasl library (gsasl)
-#
-# Once done this will define
-#
-# GSASL_FOUND - System has gnutls
-# GSASL_INCLUDE_DIR - The gnutls include directory
-# GSASL_LIBRARIES - The libraries needed to use gnutls
-# GSASL_DEFINITIONS - Compiler switches required for using gnutls
-
-
-IF (GSASL_INCLUDE_DIR AND GSASL_LIBRARIES)
- # in cache already
- SET(GSasl_FIND_QUIETLY TRUE)
-ENDIF (GSASL_INCLUDE_DIR AND GSASL_LIBRARIES)
-
-FIND_PATH(GSASL_INCLUDE_DIR gsasl.h)
-
-FIND_LIBRARY(GSASL_LIBRARIES gsasl)
-
-INCLUDE(FindPackageHandleStandardArgs)
-
-# handle the QUIETLY and REQUIRED arguments and set GSASL_FOUND to TRUE if
-# all listed variables are TRUE
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GSASL DEFAULT_MSG GSASL_LIBRARIES GSASL_INCLUDE_DIR)
-
-MARK_AS_ADVANCED(GSASL_INCLUDE_DIR GSASL_LIBRARIES)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt
deleted file mode 100644
index 94b1b56..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt
+++ /dev/null
@@ -1,297 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# If cmake variable HDFSPP_LIBRARY_ONLY is set, then tests, examples, and
-# tools will not be built. This allows for faster builds of the libhdfspp
-# library alone, avoids looking for a JDK, valgrind, and gmock, and
-# prevents the generation of multiple binaries that might not be relevant
-# to other projects during normal use.
-# Example of cmake invocation with HDFSPP_LIBRARY_ONLY enabled:
-# cmake -DHDFSPP_LIBRARY_ONLY=1
-
-project (libhdfspp)
-
-cmake_minimum_required(VERSION 2.8)
-
-enable_testing()
-include (CTest)
-
-SET(BUILD_SHARED_HDFSPP TRUE CACHE STRING "BUILD_SHARED_HDFSPP defaulting to 'TRUE'")
-SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
-
-# If there's a better way to inform FindCyrusSASL.cmake, let's make this cleaner:
-SET(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${CYRUS_SASL_DIR};${GSASL_DIR};$ENV{PROTOBUF_HOME}")
-
-# Specify PROTOBUF_HOME so that find_package picks up the correct version
-SET(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};$ENV{PROTOBUF_HOME}")
-
-find_package(Doxygen)
-find_package(OpenSSL REQUIRED)
-find_package(Protobuf REQUIRED)
-find_package(CyrusSASL)
-find_package(GSasl)
-find_package(Threads)
-
-include(CheckCXXSourceCompiles)
-
-# Check if thread_local is supported
-unset (THREAD_LOCAL_SUPPORTED CACHE)
-set (CMAKE_REQUIRED_DEFINITIONS "-std=c++11")
-set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-check_cxx_source_compiles(
- "#include <thread>
- int main(void) {
- thread_local int s;
- return 0;
- }"
- THREAD_LOCAL_SUPPORTED)
-if (NOT THREAD_LOCAL_SUPPORTED)
- message(FATAL_ERROR
- "FATAL ERROR: The required feature thread_local storage is not supported by your compiler. \
- Known compilers that support this feature: GCC, Visual Studio, Clang (community version), \
- Clang (version for iOS 9 and later).")
-endif (NOT THREAD_LOCAL_SUPPORTED)
-
-# Check if PROTOC library was compiled with the compatible compiler by trying
-# to compile some dummy code
-unset (PROTOC_IS_COMPATIBLE CACHE)
-set (CMAKE_REQUIRED_INCLUDES ${PROTOBUF_INCLUDE_DIRS})
-set (CMAKE_REQUIRED_LIBRARIES ${PROTOBUF_LIBRARY} ${PROTOBUF_PROTOC_LIBRARY})
-check_cxx_source_compiles(
- "#include <google/protobuf/io/printer.h>
- #include <string>
- int main(void) {
- ::google::protobuf::io::ZeroCopyOutputStream *out = NULL;
- ::google::protobuf::io::Printer printer(out, '$');
- printer.PrintRaw(std::string(\"test\"));
- return 0;
- }"
- PROTOC_IS_COMPATIBLE)
-if (NOT PROTOC_IS_COMPATIBLE)
- message(WARNING
- "WARNING: the Protocol Buffers Library and the Libhdfs++ Library must both be compiled \
- with the same (or compatible) compiler. Normally only the same major versions of the same \
- compiler are compatible with each other.")
-endif (NOT PROTOC_IS_COMPATIBLE)
-
-find_program(MEMORYCHECK_COMMAND valgrind HINTS ${VALGRIND_DIR} )
-set(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --error-exitcode=1")
-message(STATUS "valgrind location: ${MEMORYCHECK_COMMAND}")
-
-if (REQUIRE_VALGRIND AND MEMORYCHECK_COMMAND MATCHES "MEMORYCHECK_COMMAND-NOTFOUND" )
- message(FATAL_ERROR "valgrind was required but not found. "
- "The path can be included via a -DVALGRIND_DIR=... flag passed to CMake.")
-endif (REQUIRE_VALGRIND AND MEMORYCHECK_COMMAND MATCHES "MEMORYCHECK_COMMAND-NOTFOUND" )
-
-# Find the SASL library to use. If you don't want to require a sasl library,
-# define -DNO_SASL=1 in your cmake call
-# Prefer Cyrus SASL, but use GSASL if it is found
-# Note that the packages can be disabled by setting CMAKE_DISABLE_FIND_PACKAGE_GSasl or
-# CMAKE_DISABLE_FIND_PACKAGE_CyrusSASL, respectively (case sensitive)
-set (SASL_LIBRARIES)
-set (SASL_INCLUDE_DIR)
-if (NOT NO_SASL)
- if (CYRUS_SASL_FOUND)
- message(STATUS "Using Cyrus SASL; link with ${CYRUS_SASL_SHARED_LIB}")
- set (SASL_INCLUDE_DIR ${CYRUS_SASL_INCLUDE_DIR})
- set (SASL_LIBRARIES ${CYRUS_SASL_SHARED_LIB})
- set (CMAKE_USING_CYRUS_SASL 1)
- add_definitions(-DUSE_SASL -DUSE_CYRUS_SASL)
- else (CYRUS_SASL_FOUND)
- if (REQUIRE_CYRUS_SASL)
- message(FATAL_ERROR "Cyrus SASL was required but not found. "
- "The path can be included via a -DCYRUS_SASL_DIR=... flag passed to CMake.")
- endif (REQUIRE_CYRUS_SASL)
-
- # If we didn't pick Cyrus, use GSASL instead
- if (GSASL_FOUND)
- message(STATUS "Using GSASL; link with ${GSASL_LIBRARIES}")
- set (SASL_INCLUDE_DIR ${GSASL_INCLUDE_DIR})
- set (SASL_LIBRARIES ${GSASL_LIBRARIES})
- set (CMAKE_USING_GSASL 1)
- add_definitions(-DUSE_SASL -DUSE_GSASL)
- else (GSASL_FOUND)
- if (REQUIRE_GSASL)
- message(FATAL_ERROR "GSASL was required but not found. "
- "The path can be included via a -DGSASL_DIR=... flag passed to CMake.")
- endif (REQUIRE_GSASL)
-
- # No SASL was found, but NO_SASL was not defined
- message(FATAL_ERROR "Cound not find a SASL library (GSASL (gsasl) or Cyrus SASL (libsasl2). "
- "Install/configure one of them or define NO_SASL=1 in your cmake call")
- endif (GSASL_FOUND)
- endif (CYRUS_SASL_FOUND)
-else (NOT NO_SASL)
- message(STATUS "Compiling with NO SASL SUPPORT")
-endif (NOT NO_SASL)
-
-add_definitions(-DASIO_STANDALONE -DASIO_CPP11_DATE_TIME)
-
-# Disable optimizations if compiling debug
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
-set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
-
-if(UNIX)
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -std=c++11 -g -fPIC -fno-strict-aliasing")
-set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fPIC -fno-strict-aliasing")
-endif()
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
- add_definitions(-DASIO_HAS_STD_ADDRESSOF -DASIO_HAS_STD_ARRAY -DASIO_HAS_STD_ATOMIC -DASIO_HAS_CSTDINT -DASIO_HAS_STD_SHARED_PTR -DASIO_HAS_STD_TYPE_TRAITS -DASIO_HAS_VARIADIC_TEMPLATES -DASIO_HAS_STD_FUNCTION -DASIO_HAS_STD_CHRONO -DASIO_HAS_STD_SYSTEM_ERROR)
-endif ()
-
-# Mac OS 10.7 and later deprecates most of the methods in OpenSSL.
-# Add -Wno-deprecated-declarations to avoid the warnings.
-if(APPLE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -Wno-deprecated-declarations -Wno-unused-local-typedef")
-endif()
-
-if(DOXYGEN_FOUND)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile @ONLY)
-add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating API documentation with Doxygen" VERBATIM)
-endif(DOXYGEN_FOUND)
-
-
-# Copy files from the hadoop tree into the output/extern directory if
-# they've changed
-function (copy_on_demand input_src_glob input_dest_dir)
- get_filename_component(src_glob ${input_src_glob} REALPATH)
- get_filename_component(dest_dir ${input_dest_dir} REALPATH)
- get_filename_component(src_dir ${src_glob} PATH)
- message(STATUS "Syncing ${src_glob} to ${dest_dir}")
-
- file(GLOB_RECURSE src_files ${src_glob})
- foreach(src_path ${src_files})
- file(RELATIVE_PATH relative_src ${src_dir} ${src_path})
- set(dest_path "${dest_dir}/${relative_src}")
- add_custom_command(TARGET copy_hadoop_files
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${src_path}" "${dest_path}"
- )
- endforeach()
-endfunction()
-
-# If we're building in the hadoop tree, pull the Hadoop files that
-# libhdfspp depends on. This allows us to ensure that
-# the distribution will have a consistent set of headers and
-# .proto files
-if(HADOOP_BUILD)
- set(HADOOP_IMPORT_DIR ${PROJECT_BINARY_DIR}/extern)
- get_filename_component(HADOOP_IMPORT_DIR ${HADOOP_IMPORT_DIR} REALPATH)
-
- add_custom_target(copy_hadoop_files ALL)
-
- # Gather the Hadoop files and resources that libhdfs++ needs to build
- copy_on_demand(../libhdfs/include/*.h* ${HADOOP_IMPORT_DIR}/include)
- copy_on_demand(${CMAKE_CURRENT_LIST_DIR}/../../../../../hadoop-hdfs-client/src/main/proto/*.proto ${HADOOP_IMPORT_DIR}/proto/hdfs)
- copy_on_demand(${CMAKE_CURRENT_LIST_DIR}/../../../../../../hadoop-common-project/hadoop-common/src/main/proto/*.proto ${HADOOP_IMPORT_DIR}/proto/hadoop)
- copy_on_demand(${CMAKE_CURRENT_LIST_DIR}/../../../../../../hadoop-common-project/hadoop-common/src/test/proto/*.proto ${HADOOP_IMPORT_DIR}/proto/hadoop_test)
-else(HADOOP_BUILD)
- set(HADOOP_IMPORT_DIR ${CMAKE_CURRENT_LIST_DIR}/extern)
-endif(HADOOP_BUILD)
-
-# Paths to find the imported files
-set(PROTO_HDFS_DIR ${HADOOP_IMPORT_DIR}/proto/hdfs)
-set(PROTO_HADOOP_DIR ${HADOOP_IMPORT_DIR}/proto/hadoop)
-set(PROTO_HADOOP_TEST_DIR ${HADOOP_IMPORT_DIR}/proto/hadoop_test)
-
-include_directories(
- include
- lib
- ${HADOOP_IMPORT_DIR}/include
-)
-
-include_directories( SYSTEM
- ${PROJECT_BINARY_DIR}/lib/proto
- third_party/asio-1.10.2/include
- third_party/rapidxml-1.13
- third_party/gmock-1.7.0
- third_party/tr2
- third_party/protobuf
- third_party/uriparser2
- ${OPENSSL_INCLUDE_DIR}
- ${SASL_INCLUDE_DIR}
- ${PROTOBUF_INCLUDE_DIRS}
-)
-
-
-add_subdirectory(third_party/gmock-1.7.0)
-add_subdirectory(third_party/uriparser2)
-add_subdirectory(lib)
-if(NOT HDFSPP_LIBRARY_ONLY)
- add_subdirectory(tests)
- add_subdirectory(examples)
- add_subdirectory(tools)
-endif()
-
-# create an empty file; hadoop_add_dual_library wraps add_library which
-# requires at least one file as an argument
-set(EMPTY_FILE_CC ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/empty.cc)
-file(WRITE ${EMPTY_FILE_CC} "")
-
-# Build the output libraries
-if(NEED_LINK_DL)
- set(LIB_DL dl)
-endif()
-
-set(LIBHDFSPP_VERSION "0.1.0")
-set(LIBHDFSPP_ALL_OBJECTS $<TARGET_OBJECTS:bindings_c_obj> $<TARGET_OBJECTS:fs_obj> $<TARGET_OBJECTS:rpc_obj> $<TARGET_OBJECTS:reader_obj> $<TARGET_OBJECTS:proto_obj> $<TARGET_OBJECTS:connection_obj> $<TARGET_OBJECTS:common_obj> $<TARGET_OBJECTS:uriparser2_obj>)
-if (HADOOP_BUILD)
- hadoop_add_dual_library(hdfspp ${EMPTY_FILE_CC} ${LIBHDFSPP_ALL_OBJECTS})
- hadoop_target_link_dual_libraries(hdfspp
- ${LIB_DL}
- ${PROTOBUF_LIBRARY}
- ${OPENSSL_LIBRARIES}
- ${SASL_LIBRARIES}
- ${CMAKE_THREAD_LIBS_INIT}
- )
- set_target_properties(hdfspp PROPERTIES SOVERSION ${LIBHDFSPP_VERSION})
-else (HADOOP_BUILD)
- add_library(hdfspp_static STATIC ${EMPTY_FILE_CC} ${LIBHDFSPP_ALL_OBJECTS})
- target_link_libraries(hdfspp_static
- ${LIB_DL}
- ${PROTOBUF_LIBRARY}
- ${OPENSSL_LIBRARIES}
- ${SASL_LIBRARIES}
- ${CMAKE_THREAD_LIBS_INIT}
- )
- if(BUILD_SHARED_HDFSPP)
- add_library(hdfspp SHARED ${EMPTY_FILE_CC} ${LIBHDFSPP_ALL_OBJECTS})
- set_target_properties(hdfspp PROPERTIES SOVERSION ${LIBHDFSPP_VERSION})
- endif(BUILD_SHARED_HDFSPP)
-endif (HADOOP_BUILD)
-
-# Set up make install targets
-# Can be installed to a particular location via "make DESTDIR=... install"
-file(GLOB_RECURSE LIBHDFSPP_HEADER_FILES "${CMAKE_CURRENT_LIST_DIR}/include/*.h*")
-file(GLOB_RECURSE LIBHDFS_HEADER_FILES "${HADOOP_IMPORT_DIR}/include/*.h*")
-install(FILES ${LIBHDFSPP_HEADER_FILES} DESTINATION include/hdfspp)
-install(FILES ${LIBHDFS_HEADER_FILES} DESTINATION include/hdfs)
-
-install(TARGETS hdfspp_static ARCHIVE DESTINATION lib)
-if(BUILD_SHARED_HDFSPP)
- install(TARGETS hdfspp LIBRARY DESTINATION lib)
-endif(BUILD_SHARED_HDFSPP)
-
-add_custom_target(
- InstallToBuildDirectory
- COMMAND "${CMAKE_MAKE_PROGRAM}" install DESTDIR=${PROJECT_BINARY_DIR}/output
-)
-set(LIBHDFSPP_DIR ${PROJECT_BINARY_DIR}/output)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CONTRIBUTING.md b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CONTRIBUTING.md
deleted file mode 100644
index d36a38e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CONTRIBUTING.md
+++ /dev/null
@@ -1,161 +0,0 @@
-<!---
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-Libhdfs++ Coding Standards
-==========================
-
-* Libhdfs++ Coding Standards
- * Introduction
- * Automated Formatting
- * Explicit Scoping
- * Comments
- * Portability
-
-
-Introduction
-------------
-
-The foundation of the libhdfs++ project's coding standards
-is Google's C++ style guide. It can be found here:
-
-<a href="https://google.github.io/styleguide/cppguide.html">https://google.github.io/styleguide/cppguide.html</a>
-
-There are several small restrictions adopted from Sun's Java
-standards and Hadoop convention on top of Google's that must
-also be followed as well as portability requirements.
-
-Automated Formatting
---------------------
-
-Prior to submitting a patch for code review use llvm's formatting tool, clang-format, on the .h, .c, and .cc files included in the patch. Use the -style=google switch when doing so.
-
-Example presubmission usage:
-
-``` shell
-cat my_source_file.cc | clang-format -style=goole > temp_file.cc
-#optionally diff the source and temp file to get an idea what changed
-mv temp_file.cc my_source_file.cc
-```
-
-* note: On some linux distributions clang-format already exists in repositories but don't show up without an appended version number. On Ubuntu you'll find it with:
-``` shell
- "apt-get install clang-format-3.6"
-```
-
-Explicit Block Scopes
----------------------
-
-Always add brackets conditional and loop bodies, even if the body could fit on a single line.
-
-__BAD__:
-``` c
-if (foo)
- Bar();
-
-if (foo)
- Bar();
-else
- Baz();
-
-for (int i=0; i<10; i++)
- Bar(i);
-```
-__GOOD__:
-``` c
-if (foo) {
- Bar();
-}
-
-if (foo) {
- Bar();
-} else {
- Baz();
-}
-
-for (int i=0; i<10; i++) {
- Bar(i);
-}
-```
-
-Comments
---------
-
-Use the /\* comment \*/ style to maintain consistency with the rest of the Hadoop code base.
-
-__BAD__:
-``` c
-//this is a bad single line comment
-/*
- this is a bad block comment
-*/
-```
-__GOOD__:
-``` c
-/* this is a single line comment */
-
-/**
- * This is a block comment. Note that nothing is on the first
- * line of the block.
- **/
-```
-
-Portability
------------
-
-Please make sure you write code that is portable.
-
-* All code most be able to build using GCC and LLVM.
- * In the future we hope to support other compilers as well.
-* Don't make assumptions about endianness or architecture.
- * Don't do clever things with pointers or intrinsics.
-* Don't write code that could force a non-aligned word access.
- * This causes performance issues on most architectures and isn't supported at all on some.
- * Generally the compiler will prevent this unless you are doing clever things with pointers e.g. abusing placement new or reinterpreting a pointer into a pointer to a wider type.
-* If a type needs to be a a specific width make sure to specify it.
- * `int32_t my_32_bit_wide_int`
-* Avoid using compiler dependent pragmas or attributes.
- * If there is a justified and unavoidable reason for using these you must document why. See examples below.
-
-__BAD__:
-``` c
-struct Foo {
- int32_t x_;
- char y_;
- int32_t z_;
- char z_;
-} __attribute__((packed));
-/**
- * "I didn't profile and identify that this is causing
- * significant memory overhead but I want to pack it to
- * save 6 bytes"
- **/
-```
-__NECESSARY__: Still not good but required for short-circuit reads.
-``` c
-struct FileDescriptorMessage {
- struct cmsghdr msg_;
- int file_descriptors_[2];
-} __attribute__((packed));
-/**
- * This is actually needed for short circuit reads.
- * "struct cmsghdr" is well defined on UNIX systems.
- * This mechanism relies on the fact that any passed
- * ancillary data is _directly_ following the cmghdr.
- * The kernel interprets any padding as real data.
- **/
-```
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/Doxyfile.in
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/Doxyfile.in b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/Doxyfile.in
deleted file mode 100644
index 8f6194f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/Doxyfile.in
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-DOXYFILE_ENCODING = UTF-8
-PROJECT_NAME = "libhdfspp"
-OUTPUT_DIRECTORY = doc
-TAB_SIZE = 2
-MARKDOWN_SUPPORT = YES
-BUILTIN_STL_SUPPORT = YES
-
-
-INPUT = @PROJECT_SOURCE_DIR@/doc/mainpage.dox \
- @PROJECT_SOURCE_DIR@/include/libhdfspp \
- @PROJECT_SOURCE_DIR@/lib/common/continuation \
-
-INPUT_ENCODING = UTF-8
-RECURSIVE = NO
-
-GENERATE_HTML = YES
-GENERATE_LATEX = NO
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/mainpage.dox
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/mainpage.dox b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/mainpage.dox
deleted file mode 100644
index 46532f2..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/doc/mainpage.dox
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
-\mainpage libhdfs++
-
-libhdfs++ is a modern implementation of HDFS client in C++11. It is
-optimized for the Massive Parallel Processing (MPP) applications that
-access thousands of files concurrently in HDFS.
-
-*/
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/CMakeLists.txt
deleted file mode 100644
index ca3a2c7..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_subdirectory(c)
-add_subdirectory(cc)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/CMakeLists.txt
deleted file mode 100644
index a73d2bc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_subdirectory(cat)
-add_subdirectory(connect_cancel)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/CMakeLists.txt
deleted file mode 100644
index 41a9ee8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/examples/c/cat/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Default LIBHDFSPP_DIR to the default install location. You can override
-# it by add -DLIBHDFSPP_DIR=... to your cmake invocation
-set(LIBHDFSPP_DIR CACHE STRING ${CMAKE_INSTALL_PREFIX})
-
-include_directories( ${LIBHDFSPP_DIR}/include )
-link_directories( ${LIBHDFSPP_DIR}/lib )
-
-add_executable(cat_c cat.c)
-target_link_libraries(cat_c hdfspp_static uriparser2)
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[18/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue.hpp
deleted file mode 100644
index 171619c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue.hpp
+++ /dev/null
@@ -1,332 +0,0 @@
-//
-// detail/timer_queue.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_DETAIL_TIMER_QUEUE_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_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 <vector>
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/date_time_fwd.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-class timer_queue
- : public timer_queue_base
-{
-public:
- // The time type.
- typedef typename Time_Traits::time_type time_type;
-
- // The duration type.
- typedef typename Time_Traits::duration_type duration_type;
-
- // Per-timer data.
- class per_timer_data
- {
- public:
- per_timer_data() : next_(0), prev_(0) {}
-
- private:
- friend class timer_queue;
-
- // The operations waiting on the timer.
- op_queue<wait_op> op_queue_;
-
- // The index of the timer in the heap.
- std::size_t heap_index_;
-
- // Pointers to adjacent timers in a linked list.
- per_timer_data* next_;
- per_timer_data* prev_;
- };
-
- // Constructor.
- timer_queue()
- : timers_(),
- heap_()
- {
- }
-
- // Add a new timer to the queue. Returns true if this is the timer that is
- // earliest in the queue, in which case the reactor's event demultiplexing
- // function call may need to be interrupted and restarted.
- bool enqueue_timer(const time_type& time, per_timer_data& timer, wait_op* op)
- {
- // Enqueue the timer object.
- if (timer.prev_ == 0 && &timer != timers_)
- {
- if (this->is_positive_infinity(time))
- {
- // No heap entry is required for timers that never expire.
- timer.heap_index_ = (std::numeric_limits<std::size_t>::max)();
- }
- else
- {
- // Put the new timer at the correct position in the heap. This is done
- // first since push_back() can throw due to allocation failure.
- timer.heap_index_ = heap_.size();
- heap_entry entry = { time, &timer };
- heap_.push_back(entry);
- up_heap(heap_.size() - 1);
- }
-
- // Insert the new timer into the linked list of active timers.
- timer.next_ = timers_;
- timer.prev_ = 0;
- if (timers_)
- timers_->prev_ = &timer;
- timers_ = &timer;
- }
-
- // Enqueue the individual timer operation.
- timer.op_queue_.push(op);
-
- // Interrupt reactor only if newly added timer is first to expire.
- return timer.heap_index_ == 0 && timer.op_queue_.front() == op;
- }
-
- // Whether there are no timers in the queue.
- virtual bool empty() const
- {
- return timers_ == 0;
- }
-
- // Get the time for the timer that is earliest in the queue.
- virtual long wait_duration_msec(long max_duration) const
- {
- if (heap_.empty())
- return max_duration;
-
- return this->to_msec(
- Time_Traits::to_posix_duration(
- Time_Traits::subtract(heap_[0].time_, Time_Traits::now())),
- max_duration);
- }
-
- // Get the time for the timer that is earliest in the queue.
- virtual long wait_duration_usec(long max_duration) const
- {
- if (heap_.empty())
- return max_duration;
-
- return this->to_usec(
- Time_Traits::to_posix_duration(
- Time_Traits::subtract(heap_[0].time_, Time_Traits::now())),
- max_duration);
- }
-
- // Dequeue all timers not later than the current time.
- virtual void get_ready_timers(op_queue<operation>& ops)
- {
- if (!heap_.empty())
- {
- const time_type now = Time_Traits::now();
- while (!heap_.empty() && !Time_Traits::less_than(now, heap_[0].time_))
- {
- per_timer_data* timer = heap_[0].timer_;
- ops.push(timer->op_queue_);
- remove_timer(*timer);
- }
- }
- }
-
- // Dequeue all timers.
- virtual void get_all_timers(op_queue<operation>& ops)
- {
- while (timers_)
- {
- per_timer_data* timer = timers_;
- timers_ = timers_->next_;
- ops.push(timer->op_queue_);
- timer->next_ = 0;
- timer->prev_ = 0;
- }
-
- heap_.clear();
- }
-
- // Cancel and dequeue operations for the given timer.
- std::size_t cancel_timer(per_timer_data& timer, op_queue<operation>& ops,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)())
- {
- std::size_t num_cancelled = 0;
- if (timer.prev_ != 0 || &timer == timers_)
- {
- while (wait_op* op = (num_cancelled != max_cancelled)
- ? timer.op_queue_.front() : 0)
- {
- op->ec_ = asio::error::operation_aborted;
- timer.op_queue_.pop();
- ops.push(op);
- ++num_cancelled;
- }
- if (timer.op_queue_.empty())
- remove_timer(timer);
- }
- return num_cancelled;
- }
-
-private:
- // Move the item at the given index up the heap to its correct position.
- void up_heap(std::size_t index)
- {
- std::size_t parent = (index - 1) / 2;
- while (index > 0
- && Time_Traits::less_than(heap_[index].time_, heap_[parent].time_))
- {
- swap_heap(index, parent);
- index = parent;
- parent = (index - 1) / 2;
- }
- }
-
- // Move the item at the given index down the heap to its correct position.
- void down_heap(std::size_t index)
- {
- std::size_t child = index * 2 + 1;
- while (child < heap_.size())
- {
- std::size_t min_child = (child + 1 == heap_.size()
- || Time_Traits::less_than(
- heap_[child].time_, heap_[child + 1].time_))
- ? child : child + 1;
- if (Time_Traits::less_than(heap_[index].time_, heap_[min_child].time_))
- break;
- swap_heap(index, min_child);
- index = min_child;
- child = index * 2 + 1;
- }
- }
-
- // Swap two entries in the heap.
- void swap_heap(std::size_t index1, std::size_t index2)
- {
- heap_entry tmp = heap_[index1];
- heap_[index1] = heap_[index2];
- heap_[index2] = tmp;
- heap_[index1].timer_->heap_index_ = index1;
- heap_[index2].timer_->heap_index_ = index2;
- }
-
- // Remove a timer from the heap and list of timers.
- void remove_timer(per_timer_data& timer)
- {
- // Remove the timer from the heap.
- std::size_t index = timer.heap_index_;
- if (!heap_.empty() && index < heap_.size())
- {
- if (index == heap_.size() - 1)
- {
- heap_.pop_back();
- }
- else
- {
- swap_heap(index, heap_.size() - 1);
- heap_.pop_back();
- std::size_t parent = (index - 1) / 2;
- if (index > 0 && Time_Traits::less_than(
- heap_[index].time_, heap_[parent].time_))
- up_heap(index);
- else
- down_heap(index);
- }
- }
-
- // Remove the timer from the linked list of active timers.
- if (timers_ == &timer)
- timers_ = timer.next_;
- if (timer.prev_)
- timer.prev_->next_ = timer.next_;
- if (timer.next_)
- timer.next_->prev_= timer.prev_;
- timer.next_ = 0;
- timer.prev_ = 0;
- }
-
- // Determine if the specified absolute time is positive infinity.
- template <typename Time_Type>
- static bool is_positive_infinity(const Time_Type&)
- {
- return false;
- }
-
- // Determine if the specified absolute time is positive infinity.
- template <typename T, typename TimeSystem>
- static bool is_positive_infinity(
- const boost::date_time::base_time<T, TimeSystem>& time)
- {
- return time.is_pos_infinity();
- }
-
- // Helper function to convert a duration into milliseconds.
- template <typename Duration>
- long to_msec(const Duration& d, long max_duration) const
- {
- if (d.ticks() <= 0)
- return 0;
- int64_t msec = d.total_milliseconds();
- if (msec == 0)
- return 1;
- if (msec > max_duration)
- return max_duration;
- return static_cast<long>(msec);
- }
-
- // Helper function to convert a duration into microseconds.
- template <typename Duration>
- long to_usec(const Duration& d, long max_duration) const
- {
- if (d.ticks() <= 0)
- return 0;
- int64_t usec = d.total_microseconds();
- if (usec == 0)
- return 1;
- if (usec > max_duration)
- return max_duration;
- return static_cast<long>(usec);
- }
-
- // The head of a linked list of all active timers.
- per_timer_data* timers_;
-
- struct heap_entry
- {
- // The time when the timer should fire.
- time_type time_;
-
- // The associated timer with enqueued operations.
- per_timer_data* timer_;
- };
-
- // The heap of timers, with the earliest timer at the front.
- std::vector<heap_entry> heap_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_base.hpp
deleted file mode 100644
index 6d0be83..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_base.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// detail/timer_queue_base.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_DETAIL_TIMER_QUEUE_BASE_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class timer_queue_base
- : private noncopyable
-{
-public:
- // Constructor.
- timer_queue_base() : next_(0) {}
-
- // Destructor.
- virtual ~timer_queue_base() {}
-
- // Whether there are no timers in the queue.
- virtual bool empty() const = 0;
-
- // Get the time to wait until the next timer.
- virtual long wait_duration_msec(long max_duration) const = 0;
-
- // Get the time to wait until the next timer.
- virtual long wait_duration_usec(long max_duration) const = 0;
-
- // Dequeue all ready timers.
- virtual void get_ready_timers(op_queue<operation>& ops) = 0;
-
- // Dequeue all timers.
- virtual void get_all_timers(op_queue<operation>& ops) = 0;
-
-private:
- friend class timer_queue_set;
-
- // Next timer queue in the set.
- timer_queue_base* next_;
-};
-
-template <typename Time_Traits>
-class timer_queue;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_ptime.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_ptime.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_ptime.hpp
deleted file mode 100644
index 989e150..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_ptime.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// detail/timer_queue_ptime.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_DETAIL_TIMER_QUEUE_PTIME_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/time_traits.hpp"
-#include "asio/detail/timer_queue.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-
-namespace asio {
-namespace detail {
-
-struct forwarding_posix_time_traits : time_traits<boost::posix_time::ptime> {};
-
-// Template specialisation for the commonly used instantation.
-template <>
-class timer_queue<time_traits<boost::posix_time::ptime> >
- : public timer_queue_base
-{
-public:
- // The time type.
- typedef boost::posix_time::ptime time_type;
-
- // The duration type.
- typedef boost::posix_time::time_duration duration_type;
-
- // Per-timer data.
- typedef timer_queue<forwarding_posix_time_traits>::per_timer_data
- per_timer_data;
-
- // Constructor.
- ASIO_DECL timer_queue();
-
- // Destructor.
- ASIO_DECL virtual ~timer_queue();
-
- // Add a new timer to the queue. Returns true if this is the timer that is
- // earliest in the queue, in which case the reactor's event demultiplexing
- // function call may need to be interrupted and restarted.
- ASIO_DECL bool enqueue_timer(const time_type& time,
- per_timer_data& timer, wait_op* op);
-
- // Whether there are no timers in the queue.
- ASIO_DECL virtual bool empty() const;
-
- // Get the time for the timer that is earliest in the queue.
- ASIO_DECL virtual long wait_duration_msec(long max_duration) const;
-
- // Get the time for the timer that is earliest in the queue.
- ASIO_DECL virtual long wait_duration_usec(long max_duration) const;
-
- // Dequeue all timers not later than the current time.
- ASIO_DECL virtual void get_ready_timers(op_queue<operation>& ops);
-
- // Dequeue all timers.
- ASIO_DECL virtual void get_all_timers(op_queue<operation>& ops);
-
- // Cancel and dequeue operations for the given timer.
- ASIO_DECL std::size_t cancel_timer(
- per_timer_data& timer, op_queue<operation>& ops,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-private:
- timer_queue<forwarding_posix_time_traits> impl_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/timer_queue_ptime.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_set.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_set.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_set.hpp
deleted file mode 100644
index 07306aa..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_queue_set.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// detail/timer_queue_set.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_DETAIL_TIMER_QUEUE_SET_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_SET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class timer_queue_set
-{
-public:
- // Constructor.
- ASIO_DECL timer_queue_set();
-
- // Add a timer queue to the set.
- ASIO_DECL void insert(timer_queue_base* q);
-
- // Remove a timer queue from the set.
- ASIO_DECL void erase(timer_queue_base* q);
-
- // Determine whether all queues are empty.
- ASIO_DECL bool all_empty() const;
-
- // Get the wait duration in milliseconds.
- ASIO_DECL long wait_duration_msec(long max_duration) const;
-
- // Get the wait duration in microseconds.
- ASIO_DECL long wait_duration_usec(long max_duration) const;
-
- // Dequeue all ready timers.
- ASIO_DECL void get_ready_timers(op_queue<operation>& ops);
-
- // Dequeue all timers.
- ASIO_DECL void get_all_timers(op_queue<operation>& ops);
-
-private:
- timer_queue_base* first_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/timer_queue_set.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_SET_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler.hpp
deleted file mode 100644
index 9148e2b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// detail/timer_scheduler.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_DETAIL_TIMER_SCHEDULER_HPP
-#define ASIO_DETAIL_TIMER_SCHEDULER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_scheduler_fwd.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_timer_scheduler.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_io_service.hpp"
-#elif defined(ASIO_HAS_EPOLL)
-# include "asio/detail/epoll_reactor.hpp"
-#elif defined(ASIO_HAS_KQUEUE)
-# include "asio/detail/kqueue_reactor.hpp"
-#elif defined(ASIO_HAS_DEV_POLL)
-# include "asio/detail/dev_poll_reactor.hpp"
-#else
-# include "asio/detail/select_reactor.hpp"
-#endif
-
-#endif // ASIO_DETAIL_TIMER_SCHEDULER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler_fwd.hpp
deleted file mode 100644
index 9ad660c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/timer_scheduler_fwd.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// detail/timer_scheduler_fwd.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_DETAIL_TIMER_SCHEDULER_FWD_HPP
-#define ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-typedef class winrt_timer_scheduler timer_scheduler;
-#elif defined(ASIO_HAS_IOCP)
-typedef class win_iocp_io_service timer_scheduler;
-#elif defined(ASIO_HAS_EPOLL)
-typedef class epoll_reactor timer_scheduler;
-#elif defined(ASIO_HAS_KQUEUE)
-typedef class kqueue_reactor timer_scheduler;
-#elif defined(ASIO_HAS_DEV_POLL)
-typedef class dev_poll_reactor timer_scheduler;
-#else
-typedef class select_reactor timer_scheduler;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/tss_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/tss_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/tss_ptr.hpp
deleted file mode 100644
index bdb2df5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/tss_ptr.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// detail/tss_ptr.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_DETAIL_TSS_PTR_HPP
-#define ASIO_DETAIL_TSS_PTR_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_HAS_THREADS)
-# include "asio/detail/null_tss_ptr.hpp"
-#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-# include "asio/detail/keyword_tss_ptr.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_tss_ptr.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_tss_ptr.hpp"
-#else
-# error Only Windows and POSIX are supported!
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class tss_ptr
-#if !defined(ASIO_HAS_THREADS)
- : public null_tss_ptr<T>
-#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
- : public keyword_tss_ptr<T>
-#elif defined(ASIO_WINDOWS)
- : public win_tss_ptr<T>
-#elif defined(ASIO_HAS_PTHREADS)
- : public posix_tss_ptr<T>
-#endif
-{
-public:
- void operator=(T* value)
- {
-#if !defined(ASIO_HAS_THREADS)
- null_tss_ptr<T>::operator=(value);
-#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
- keyword_tss_ptr<T>::operator=(value);
-#elif defined(ASIO_WINDOWS)
- win_tss_ptr<T>::operator=(value);
-#elif defined(ASIO_HAS_PTHREADS)
- posix_tss_ptr<T>::operator=(value);
-#endif
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TSS_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/type_traits.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/type_traits.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/type_traits.hpp
deleted file mode 100644
index e701eca..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/type_traits.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// detail/type_traits.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_DETAIL_TYPE_TRAITS_HPP
-#define ASIO_DETAIL_TYPE_TRAITS_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_HAS_STD_TYPE_TRAITS)
-# include <type_traits>
-#else // defined(ASIO_HAS_TYPE_TRAITS)
-# include <boost/type_traits/add_const.hpp>
-# include <boost/type_traits/is_const.hpp>
-# include <boost/type_traits/is_convertible.hpp>
-# include <boost/type_traits/is_function.hpp>
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/remove_pointer.hpp>
-# include <boost/type_traits/remove_reference.hpp>
-# include <boost/utility/enable_if.hpp>
-#endif // defined(ASIO_HAS_TYPE_TRAITS)
-
-namespace asio {
-
-#if defined(ASIO_HAS_STD_TYPE_TRAITS)
-using std::add_const;
-using std::enable_if;
-using std::is_const;
-using std::is_convertible;
-using std::is_function;
-using std::is_same;
-using std::remove_pointer;
-using std::remove_reference;
-#else // defined(ASIO_HAS_STD_TYPE_TRAITS)
-using boost::add_const;
-template <bool Condition, typename Type = void>
-struct enable_if : boost::enable_if_c<Condition, Type> {};
-using boost::is_const;
-using boost::is_convertible;
-using boost::is_function;
-using boost::is_same;
-using boost::remove_pointer;
-using boost::remove_reference;
-#endif // defined(ASIO_HAS_STD_TYPE_TRAITS)
-
-} // namespace asio
-
-#endif // ASIO_DETAIL_TYPE_TRAITS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/variadic_templates.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/variadic_templates.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/variadic_templates.hpp
deleted file mode 100644
index f8ea5c0..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/variadic_templates.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// detail/variadic_templates.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_DETAIL_VARIADIC_TEMPLATES_HPP
-#define ASIO_DETAIL_VARIADIC_TEMPLATES_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_HAS_VARIADIC_TEMPLATES)
-
-# define ASIO_VARIADIC_TPARAMS(n) ASIO_VARIADIC_TPARAMS_##n
-
-# define ASIO_VARIADIC_TPARAMS_1 \
- typename T1
-# define ASIO_VARIADIC_TPARAMS_2 \
- typename T1, typename T2
-# define ASIO_VARIADIC_TPARAMS_3 \
- typename T1, typename T2, typename T3
-# define ASIO_VARIADIC_TPARAMS_4 \
- typename T1, typename T2, typename T3, typename T4
-# define ASIO_VARIADIC_TPARAMS_5 \
- typename T1, typename T2, typename T3, typename T4, typename T5
-
-# define ASIO_VARIADIC_TARGS(n) ASIO_VARIADIC_TARGS_##n
-
-# define ASIO_VARIADIC_TARGS_1 x1
-# define ASIO_VARIADIC_TARGS_2 x1, x2
-# define ASIO_VARIADIC_TARGS_3 x1, x2, x3
-# define ASIO_VARIADIC_TARGS_4 x1, x2, x3, x4
-# define ASIO_VARIADIC_TARGS_5 x1, x2, x3, x4, x5
-
-# define ASIO_VARIADIC_PARAMS(n) ASIO_VARIADIC_PARAMS_##n
-
-# define ASIO_VARIADIC_PARAMS_1 T1 x1
-# define ASIO_VARIADIC_PARAMS_2 T1 x1, T2 x2
-# define ASIO_VARIADIC_PARAMS_3 T1 x1, T2 x2, T3 x3
-# define ASIO_VARIADIC_PARAMS_4 T1 x1, T2 x2, T3 x3, T4 x4
-# define ASIO_VARIADIC_PARAMS_5 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5
-
-# define ASIO_VARIADIC_ARGS(n) ASIO_VARIADIC_ARGS_##n
-
-# define ASIO_VARIADIC_ARGS_1 x1
-# define ASIO_VARIADIC_ARGS_2 x1, x2
-# define ASIO_VARIADIC_ARGS_3 x1, x2, x3
-# define ASIO_VARIADIC_ARGS_4 x1, x2, x3, x4
-# define ASIO_VARIADIC_ARGS_5 x1, x2, x3, x4, x5
-
-# define ASIO_VARIADIC_GENERATE(m) m(1) m(2) m(3) m(4) m(5)
-
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#endif // ASIO_DETAIL_VARIADIC_TEMPLATES_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_handler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_handler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_handler.hpp
deleted file mode 100644
index 752a18e..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_handler.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// detail/wait_handler.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_DETAIL_WAIT_HANDLER_HPP
-#define ASIO_DETAIL_WAIT_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class wait_handler : public wait_op
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(wait_handler);
-
- wait_handler(Handler& h)
- : wait_op(&wait_handler::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(h))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& /*ec*/,
- std::size_t /*bytes_transferred*/)
- {
- // Take ownership of the handler object.
- wait_handler* h(static_cast<wait_handler*>(base));
- ptr p = { asio::detail::addressof(h->handler_), h, h };
-
- ASIO_HANDLER_COMPLETION((h));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder1<Handler, asio::error_code>
- handler(h->handler_, h->ec_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WAIT_HANDLER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_op.hpp
deleted file mode 100644
index 1838325..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wait_op.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/wait_op.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_DETAIL_WAIT_OP_HPP
-#define ASIO_DETAIL_WAIT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class wait_op
- : public operation
-{
-public:
- // The error code to be passed to the completion handler.
- asio::error_code ec_;
-
-protected:
- wait_op(func_type func)
- : operation(func)
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WAIT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/weak_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/weak_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/weak_ptr.hpp
deleted file mode 100644
index cdfd315..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/weak_ptr.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/weak_ptr.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_DETAIL_WEAK_PTR_HPP
-#define ASIO_DETAIL_WEAK_PTR_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_HAS_STD_SHARED_PTR)
-# include <memory>
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-# include <boost/weak_ptr.hpp>
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_SHARED_PTR)
-using std::weak_ptr;
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-using boost::weak_ptr;
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_WEAK_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_event.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_event.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_event.hpp
deleted file mode 100644
index b73abbd..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_event.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// detail/win_event.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_DETAIL_WIN_EVENT_HPP
-#define ASIO_DETAIL_WIN_EVENT_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_WINDOWS)
-
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_event
- : private noncopyable
-{
-public:
- // Constructor.
- ASIO_DECL win_event();
-
- // Destructor.
- ASIO_DECL ~win_event();
-
- // Signal the event. (Retained for backward compatibility.)
- template <typename Lock>
- void signal(Lock& lock)
- {
- this->signal_all(lock);
- }
-
- // Signal all waiters.
- template <typename Lock>
- void signal_all(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- (void)lock;
- state_ |= 1;
- ::SetEvent(events_[0]);
- }
-
- // Unlock the mutex and signal one waiter.
- template <typename Lock>
- void unlock_and_signal_one(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- state_ |= 1;
- bool have_waiters = (state_ > 1);
- lock.unlock();
- if (have_waiters)
- ::SetEvent(events_[1]);
- }
-
- // If there's a waiter, unlock the mutex and signal it.
- template <typename Lock>
- bool maybe_unlock_and_signal_one(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- state_ |= 1;
- if (state_ > 1)
- {
- lock.unlock();
- ::SetEvent(events_[1]);
- return true;
- }
- return false;
- }
-
- // Reset the event.
- template <typename Lock>
- void clear(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- (void)lock;
- ::ResetEvent(events_[0]);
- state_ &= ~std::size_t(1);
- }
-
- // Wait for the event to become signalled.
- template <typename Lock>
- void wait(Lock& lock)
- {
- ASIO_ASSERT(lock.locked());
- while ((state_ & 1) == 0)
- {
- state_ += 2;
- lock.unlock();
- ::WaitForMultipleObjects(2, events_, false, INFINITE);
- lock.lock();
- state_ -= 2;
- }
- }
-
-private:
- HANDLE events_[2];
- std::size_t state_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_event.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_EVENT_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fd_set_adapter.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fd_set_adapter.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fd_set_adapter.hpp
deleted file mode 100644
index b7acdef..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fd_set_adapter.hpp
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// detail/win_fd_set_adapter.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_DETAIL_WIN_FD_SET_ADAPTER_HPP
-#define ASIO_DETAIL_WIN_FD_SET_ADAPTER_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_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements.
-class win_fd_set_adapter : noncopyable
-{
-public:
- enum { default_fd_set_size = 1024 };
-
- win_fd_set_adapter()
- : capacity_(default_fd_set_size),
- max_descriptor_(invalid_socket)
- {
- fd_set_ = static_cast<win_fd_set*>(::operator new(
- sizeof(win_fd_set) - sizeof(SOCKET)
- + sizeof(SOCKET) * (capacity_)));
- fd_set_->fd_count = 0;
- }
-
- ~win_fd_set_adapter()
- {
- ::operator delete(fd_set_);
- }
-
- void reset()
- {
- fd_set_->fd_count = 0;
- max_descriptor_ = invalid_socket;
- }
-
- bool set(socket_type descriptor)
- {
- for (u_int i = 0; i < fd_set_->fd_count; ++i)
- if (fd_set_->fd_array[i] == descriptor)
- return true;
-
- reserve(fd_set_->fd_count + 1);
- fd_set_->fd_array[fd_set_->fd_count++] = descriptor;
- return true;
- }
-
- void set(reactor_op_queue<socket_type>& operations, op_queue<operation>&)
- {
- reactor_op_queue<socket_type>::iterator i = operations.begin();
- while (i != operations.end())
- {
- reactor_op_queue<socket_type>::iterator op_iter = i++;
- reserve(fd_set_->fd_count + 1);
- fd_set_->fd_array[fd_set_->fd_count++] = op_iter->first;
- }
- }
-
- bool is_set(socket_type descriptor) const
- {
- return !!__WSAFDIsSet(descriptor,
- const_cast<fd_set*>(reinterpret_cast<const fd_set*>(fd_set_)));
- }
-
- operator fd_set*()
- {
- return reinterpret_cast<fd_set*>(fd_set_);
- }
-
- socket_type max_descriptor() const
- {
- return max_descriptor_;
- }
-
- void perform(reactor_op_queue<socket_type>& operations,
- op_queue<operation>& ops) const
- {
- for (u_int i = 0; i < fd_set_->fd_count; ++i)
- operations.perform_operations(fd_set_->fd_array[i], ops);
- }
-
-private:
- // This structure is defined to be compatible with the Windows API fd_set
- // structure, but without being dependent on the value of FD_SETSIZE. We use
- // the "struct hack" to allow the number of descriptors to be varied at
- // runtime.
- struct win_fd_set
- {
- u_int fd_count;
- SOCKET fd_array[1];
- };
-
- // Increase the fd_set_ capacity to at least the specified number of elements.
- void reserve(u_int n)
- {
- if (n <= capacity_)
- return;
-
- u_int new_capacity = capacity_ + capacity_ / 2;
- if (new_capacity < n)
- new_capacity = n;
-
- win_fd_set* new_fd_set = static_cast<win_fd_set*>(::operator new(
- sizeof(win_fd_set) - sizeof(SOCKET)
- + sizeof(SOCKET) * (new_capacity)));
-
- new_fd_set->fd_count = fd_set_->fd_count;
- for (u_int i = 0; i < fd_set_->fd_count; ++i)
- new_fd_set->fd_array[i] = fd_set_->fd_array[i];
-
- ::operator delete(fd_set_);
- fd_set_ = new_fd_set;
- capacity_ = new_capacity;
- }
-
- win_fd_set* fd_set_;
- u_int capacity_;
- socket_type max_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fenced_block.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fenced_block.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fenced_block.hpp
deleted file mode 100644
index 73b7b66..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_fenced_block.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/win_fenced_block.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_DETAIL_WIN_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_WIN_FENCED_BLOCK_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_WINDOWS) && !defined(UNDER_CE)
-
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_fenced_block
- : private noncopyable
-{
-public:
- enum half_t { half };
- enum full_t { full };
-
- // Constructor for a half fenced block.
- explicit win_fenced_block(half_t)
- {
- }
-
- // Constructor for a full fenced block.
- explicit win_fenced_block(full_t)
- {
-#if defined(__BORLANDC__)
- LONG barrier = 0;
- ::InterlockedExchange(&barrier, 1);
-#elif defined(ASIO_MSVC) \
- && ((ASIO_MSVC < 1400) || !defined(MemoryBarrier))
-# if defined(_M_IX86)
-# pragma warning(push)
-# pragma warning(disable:4793)
- LONG barrier;
- __asm { xchg barrier, eax }
-# pragma warning(pop)
-# endif // defined(_M_IX86)
-#else
- MemoryBarrier();
-#endif
- }
-
- // Destructor.
- ~win_fenced_block()
- {
-#if defined(__BORLANDC__)
- LONG barrier = 0;
- ::InterlockedExchange(&barrier, 1);
-#elif defined(ASIO_MSVC) \
- && ((ASIO_MSVC < 1400) || !defined(MemoryBarrier))
-# if defined(_M_IX86)
-# pragma warning(push)
-# pragma warning(disable:4793)
- LONG barrier;
- __asm { xchg barrier, eax }
-# pragma warning(pop)
-# endif // defined(_M_IX86)
-#else
- MemoryBarrier();
-#endif
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_WIN_FENCED_BLOCK_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_read_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_read_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_read_op.hpp
deleted file mode 100644
index 316c6ae..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_read_op.hpp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// detail/win_iocp_handle_read_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_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_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class win_iocp_handle_read_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_handle_read_op);
-
- win_iocp_handle_read_op(
- const MutableBufferSequence& buffers, Handler& handler)
- : operation(&win_iocp_handle_read_op::do_complete),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t bytes_transferred)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_handle_read_op* o(static_cast<win_iocp_handle_read_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- if (owner)
- {
- // Check whether buffers are still valid.
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_HANDLE_EOF)
- ec = asio::error::eof;
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- MutableBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_service.hpp
deleted file mode 100644
index 8e61c88..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_service.hpp
+++ /dev/null
@@ -1,322 +0,0 @@
-//
-// detail/win_iocp_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_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_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/win_iocp_handle_read_op.hpp"
-#include "asio/detail/win_iocp_handle_write_op.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_handle_service
-{
-public:
- // The native type of a stream handle.
- typedef HANDLE native_handle_type;
-
- // The implementation type of the stream handle.
- class implementation_type
- {
- public:
- // Default constructor.
- implementation_type()
- : handle_(INVALID_HANDLE_VALUE),
- safe_cancellation_thread_id_(0),
- next_(0),
- prev_(0)
- {
- }
-
- private:
- // Only this service will have access to the internal values.
- friend class win_iocp_handle_service;
-
- // The native stream handle representation.
- native_handle_type handle_;
-
- // The ID of the thread from which it is safe to cancel asynchronous
- // operations. 0 means no asynchronous operations have been started yet.
- // ~0 means asynchronous operations have been started from more than one
- // thread, and cancellation is not supported for the handle.
- DWORD safe_cancellation_thread_id_;
-
- // Pointers to adjacent handle implementations in linked list.
- implementation_type* next_;
- implementation_type* prev_;
- };
-
- ASIO_DECL win_iocp_handle_service(asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new handle implementation.
- ASIO_DECL void construct(implementation_type& impl);
-
- // Move-construct a new handle implementation.
- ASIO_DECL void move_construct(implementation_type& impl,
- implementation_type& other_impl);
-
- // Move-assign from another handle implementation.
- ASIO_DECL void move_assign(implementation_type& impl,
- win_iocp_handle_service& other_service,
- implementation_type& other_impl);
-
- // Destroy a handle implementation.
- ASIO_DECL void destroy(implementation_type& impl);
-
- // Assign a native handle to a handle implementation.
- ASIO_DECL asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec);
-
- // Determine whether the handle is open.
- bool is_open(const implementation_type& impl) const
- {
- return impl.handle_ != INVALID_HANDLE_VALUE;
- }
-
- // Destroy a handle implementation.
- ASIO_DECL asio::error_code close(implementation_type& impl,
- asio::error_code& ec);
-
- // Get the native handle representation.
- native_handle_type native_handle(const implementation_type& impl) const
- {
- return impl.handle_;
- }
-
- // Cancel all operations associated with the handle.
- ASIO_DECL asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec);
-
- // Write the given data. Returns the number of bytes written.
- template <typename ConstBufferSequence>
- size_t write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- return write_some_at(impl, 0, buffers, ec);
- }
-
- // Write the given data at the specified offset. Returns the number of bytes
- // written.
- template <typename ConstBufferSequence>
- size_t write_some_at(implementation_type& impl, uint64_t offset,
- const ConstBufferSequence& buffers, asio::error_code& ec)
- {
- asio::const_buffer buffer =
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::first(buffers);
-
- return do_write(impl, offset, buffer, ec);
- }
-
- // Start an asynchronous write. The data being written must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_write_some(implementation_type& impl,
- const ConstBufferSequence& buffers, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_handle_write_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_write_some"));
-
- start_write_op(impl, 0,
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::first(buffers), p.p);
- p.v = p.p = 0;
- }
-
- // Start an asynchronous write at a specified offset. The data being written
- // must be valid for the lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_write_some_at(implementation_type& impl, uint64_t offset,
- const ConstBufferSequence& buffers, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_handle_write_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_write_some_at"));
-
- start_write_op(impl, offset,
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::first(buffers), p.p);
- p.v = p.p = 0;
- }
-
- // Read some data. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- size_t read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- return read_some_at(impl, 0, buffers, ec);
- }
-
- // Read some data at a specified offset. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- size_t read_some_at(implementation_type& impl, uint64_t offset,
- const MutableBufferSequence& buffers, asio::error_code& ec)
- {
- asio::mutable_buffer buffer =
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::first(buffers);
-
- return do_read(impl, offset, buffer, ec);
- }
-
- // Start an asynchronous read. The buffer for the data being received must be
- // valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_read_some(implementation_type& impl,
- const MutableBufferSequence& buffers, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_handle_read_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_read_some"));
-
- start_read_op(impl, 0,
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::first(buffers), p.p);
- p.v = p.p = 0;
- }
-
- // Start an asynchronous read at a specified offset. The buffer for the data
- // being received must be valid for the lifetime of the asynchronous
- // operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_read_some_at(implementation_type& impl, uint64_t offset,
- const MutableBufferSequence& buffers, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef win_iocp_handle_read_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_read_some_at"));
-
- start_read_op(impl, offset,
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::first(buffers), p.p);
- p.v = p.p = 0;
- }
-
-private:
- // Prevent the use of the null_buffers type with this service.
- size_t write_some(implementation_type& impl,
- const null_buffers& buffers, asio::error_code& ec);
- size_t write_some_at(implementation_type& impl, uint64_t offset,
- const null_buffers& buffers, asio::error_code& ec);
- template <typename Handler>
- void async_write_some(implementation_type& impl,
- const null_buffers& buffers, Handler& handler);
- template <typename Handler>
- void async_write_some_at(implementation_type& impl, uint64_t offset,
- const null_buffers& buffers, Handler& handler);
- size_t read_some(implementation_type& impl,
- const null_buffers& buffers, asio::error_code& ec);
- size_t read_some_at(implementation_type& impl, uint64_t offset,
- const null_buffers& buffers, asio::error_code& ec);
- template <typename Handler>
- void async_read_some(implementation_type& impl,
- const null_buffers& buffers, Handler& handler);
- template <typename Handler>
- void async_read_some_at(implementation_type& impl, uint64_t offset,
- const null_buffers& buffers, Handler& handler);
-
- // Helper class for waiting for synchronous operations to complete.
- class overlapped_wrapper;
-
- // Helper function to perform a synchronous write operation.
- ASIO_DECL size_t do_write(implementation_type& impl,
- uint64_t offset, const asio::const_buffer& buffer,
- asio::error_code& ec);
-
- // Helper function to start a write operation.
- ASIO_DECL void start_write_op(implementation_type& impl,
- uint64_t offset, const asio::const_buffer& buffer,
- operation* op);
-
- // Helper function to perform a synchronous write operation.
- ASIO_DECL size_t do_read(implementation_type& impl,
- uint64_t offset, const asio::mutable_buffer& buffer,
- asio::error_code& ec);
-
- // Helper function to start a read operation.
- ASIO_DECL void start_read_op(implementation_type& impl,
- uint64_t offset, const asio::mutable_buffer& buffer,
- operation* op);
-
- // Update the ID of the thread from which cancellation is safe.
- ASIO_DECL void update_cancellation_thread_id(implementation_type& impl);
-
- // Helper function to close a handle when the associated object is being
- // destroyed.
- ASIO_DECL void close_for_destruction(implementation_type& impl);
-
- // The IOCP service used for running asynchronous operations and dispatching
- // handlers.
- win_iocp_io_service& iocp_service_;
-
- // Mutex to protect access to the linked list of implementations.
- mutex mutex_;
-
- // The head of a linked list of all implementations.
- implementation_type* impl_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_handle_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_write_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_write_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_write_op.hpp
deleted file mode 100644
index 799290f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_handle_write_op.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/win_iocp_handle_write_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_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_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Handler>
-class win_iocp_handle_write_op : public operation
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_handle_write_op);
-
- win_iocp_handle_write_op(const ConstBufferSequence& buffers, Handler& handler)
- : operation(&win_iocp_handle_write_op::do_complete),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& ec, std::size_t bytes_transferred)
- {
- // Take ownership of the operation object.
- win_iocp_handle_write_op* o(static_cast<win_iocp_handle_write_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- if (owner)
- {
- // Check whether buffers are still valid.
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- ConstBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_io_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_io_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_io_service.hpp
deleted file mode 100644
index d722b39..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_io_service.hpp
+++ /dev/null
@@ -1,315 +0,0 @@
-//
-// detail/win_iocp_io_service.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_DETAIL_WIN_IOCP_IO_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_IO_SERVICE_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_HAS_IOCP)
-
-#include "asio/io_service.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/thread.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/detail/win_iocp_operation.hpp"
-#include "asio/detail/win_iocp_thread_info.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class wait_op;
-
-class win_iocp_io_service
- : public asio::detail::service_base<win_iocp_io_service>
-{
-public:
-
- // Constructor. Specifies a concurrency hint that is passed through to the
- // underlying I/O completion port.
- ASIO_DECL win_iocp_io_service(asio::io_service& io_service,
- size_t concurrency_hint = 0);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Initialise the task. Nothing to do here.
- void init_task()
- {
- }
-
- // Register a handle with the IO completion port.
- ASIO_DECL asio::error_code register_handle(
- HANDLE handle, asio::error_code& ec);
-
- // Run the event loop until stopped or no more work.
- ASIO_DECL size_t run(asio::error_code& ec);
-
- // Run until stopped or one operation is performed.
- ASIO_DECL size_t run_one(asio::error_code& ec);
-
- // Poll for operations without blocking.
- ASIO_DECL size_t poll(asio::error_code& ec);
-
- // Poll for one operation without blocking.
- ASIO_DECL size_t poll_one(asio::error_code& ec);
-
- // Stop the event processing loop.
- ASIO_DECL void stop();
-
- // Determine whether the io_service is stopped.
- bool stopped() const
- {
- return ::InterlockedExchangeAdd(&stopped_, 0) != 0;
- }
-
- // Reset in preparation for a subsequent run invocation.
- void reset()
- {
- ::InterlockedExchange(&stopped_, 0);
- }
-
- // Notify that some work has started.
- void work_started()
- {
- ::InterlockedIncrement(&outstanding_work_);
- }
-
- // Notify that some work has finished.
- void work_finished()
- {
- if (::InterlockedDecrement(&outstanding_work_) == 0)
- stop();
- }
-
- // Return whether a handler can be dispatched immediately.
- bool can_dispatch()
- {
- return thread_call_stack::contains(this) != 0;
- }
-
- // Request invocation of the given handler.
- template <typename Handler>
- void dispatch(Handler& handler);
-
- // Request invocation of the given handler and return immediately.
- template <typename Handler>
- void post(Handler& handler);
-
- // Request invocation of the given operation and return immediately. Assumes
- // that work_started() has not yet been called for the operation.
- void post_immediate_completion(win_iocp_operation* op, bool)
- {
- work_started();
- post_deferred_completion(op);
- }
-
- // Request invocation of the given operation and return immediately. Assumes
- // that work_started() was previously called for the operation.
- ASIO_DECL void post_deferred_completion(win_iocp_operation* op);
-
- // Request invocation of the given operation and return immediately. Assumes
- // that work_started() was previously called for the operations.
- ASIO_DECL void post_deferred_completions(
- op_queue<win_iocp_operation>& ops);
-
- // Request invocation of the given operation using the thread-private queue
- // and return immediately. Assumes that work_started() has not yet been
- // called for the operation.
- void post_private_immediate_completion(win_iocp_operation* op)
- {
- post_immediate_completion(op, false);
- }
-
- // Request invocation of the given operation using the thread-private queue
- // and return immediately. Assumes that work_started() was previously called
- // for the operation.
- void post_private_deferred_completion(win_iocp_operation* op)
- {
- post_deferred_completion(op);
- }
-
- // Process unfinished operations as part of a shutdown_service operation.
- // Assumes that work_started() was previously called for the operations.
- ASIO_DECL void abandon_operations(op_queue<operation>& ops);
-
- // Called after starting an overlapped I/O operation that did not complete
- // immediately. The caller must have already called work_started() prior to
- // starting the operation.
- ASIO_DECL void on_pending(win_iocp_operation* op);
-
- // Called after starting an overlapped I/O operation that completed
- // immediately. The caller must have already called work_started() prior to
- // starting the operation.
- ASIO_DECL void on_completion(win_iocp_operation* op,
- DWORD last_error = 0, DWORD bytes_transferred = 0);
-
- // Called after starting an overlapped I/O operation that completed
- // immediately. The caller must have already called work_started() prior to
- // starting the operation.
- ASIO_DECL void on_completion(win_iocp_operation* op,
- const asio::error_code& ec, DWORD bytes_transferred = 0);
-
- // Add a new timer queue to the service.
- template <typename Time_Traits>
- void add_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
- // Remove a timer queue from the service.
- template <typename Time_Traits>
- void remove_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
- // Schedule a new operation in the given timer queue to expire at the
- // specified absolute time.
- template <typename Time_Traits>
- void schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
- // Cancel the timer associated with the given token. Returns the number of
- // handlers that have been posted or dispatched.
- template <typename Time_Traits>
- std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-private:
-#if defined(WINVER) && (WINVER < 0x0500)
- typedef DWORD dword_ptr_t;
- typedef ULONG ulong_ptr_t;
-#else // defined(WINVER) && (WINVER < 0x0500)
- typedef DWORD_PTR dword_ptr_t;
- typedef ULONG_PTR ulong_ptr_t;
-#endif // defined(WINVER) && (WINVER < 0x0500)
-
- // Dequeues at most one operation from the I/O completion port, and then
- // executes it. Returns the number of operations that were dequeued (i.e.
- // either 0 or 1).
- ASIO_DECL size_t do_one(bool block, asio::error_code& ec);
-
- // Helper to calculate the GetQueuedCompletionStatus timeout.
- ASIO_DECL static DWORD get_gqcs_timeout();
-
- // Helper function to add a new timer queue.
- ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
- // Helper function to remove a timer queue.
- ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
- // Called to recalculate and update the timeout.
- ASIO_DECL void update_timeout();
-
- // Helper class to call work_finished() on block exit.
- struct work_finished_on_block_exit;
-
- // Helper class for managing a HANDLE.
- struct auto_handle
- {
- HANDLE handle;
- auto_handle() : handle(0) {}
- ~auto_handle() { if (handle) ::CloseHandle(handle); }
- };
-
- // The IO completion port used for queueing operations.
- auto_handle iocp_;
-
- // The count of unfinished work.
- long outstanding_work_;
-
- // Flag to indicate whether the event loop has been stopped.
- mutable long stopped_;
-
- // Flag to indicate whether there is an in-flight stop event. Every event
- // posted using PostQueuedCompletionStatus consumes non-paged pool, so to
- // avoid exhausting this resouce we limit the number of outstanding events.
- long stop_event_posted_;
-
- // Flag to indicate whether the service has been shut down.
- long shutdown_;
-
- enum
- {
- // Timeout to use with GetQueuedCompletionStatus on older versions of
- // Windows. Some versions of windows have a "bug" where a call to
- // GetQueuedCompletionStatus can appear stuck even though there are events
- // waiting on the queue. Using a timeout helps to work around the issue.
- default_gqcs_timeout = 500,
-
- // Maximum waitable timer timeout, in milliseconds.
- max_timeout_msec = 5 * 60 * 1000,
-
- // Maximum waitable timer timeout, in microseconds.
- max_timeout_usec = max_timeout_msec * 1000,
-
- // Completion key value used to wake up a thread to dispatch timers or
- // completed operations.
- wake_for_dispatch = 1,
-
- // Completion key value to indicate that an operation has posted with the
- // original last_error and bytes_transferred values stored in the fields of
- // the OVERLAPPED structure.
- overlapped_contains_result = 2
- };
-
- // Timeout to use with GetQueuedCompletionStatus.
- const DWORD gqcs_timeout_;
-
- // Function object for processing timeouts in a background thread.
- struct timer_thread_function;
- friend struct timer_thread_function;
-
- // Background thread used for processing timeouts.
- scoped_ptr<thread> timer_thread_;
-
- // A waitable timer object used for waiting for timeouts.
- auto_handle waitable_timer_;
-
- // Non-zero if timers or completed operations need to be dispatched.
- long dispatch_required_;
-
- // Mutex for protecting access to the timer queues and completed operations.
- mutex dispatch_mutex_;
-
- // The timer queues.
- timer_queue_set timer_queues_;
-
- // The operations that are ready to dispatch.
- op_queue<win_iocp_operation> completed_ops_;
-
- // Per-thread call stack to track the state of each thread in the io_service.
- typedef call_stack<win_iocp_io_service,
- win_iocp_thread_info> thread_call_stack;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/win_iocp_io_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_io_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_null_buffers_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_null_buffers_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_null_buffers_op.hpp
deleted file mode 100644
index b849e37..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_null_buffers_op.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// detail/win_iocp_null_buffers_op.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_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_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_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class win_iocp_null_buffers_op : public reactor_op
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(win_iocp_null_buffers_op);
-
- win_iocp_null_buffers_op(socket_ops::weak_cancel_token_type cancel_token,
- Handler& handler)
- : reactor_op(&win_iocp_null_buffers_op::do_perform,
- &win_iocp_null_buffers_op::do_complete),
- cancel_token_(cancel_token),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static bool do_perform(reactor_op*)
- {
- return true;
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code& result_ec,
- std::size_t bytes_transferred)
- {
- asio::error_code ec(result_ec);
-
- // Take ownership of the operation object.
- win_iocp_null_buffers_op* o(static_cast<win_iocp_null_buffers_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // The reactor may have stored a result in the operation object.
- if (o->ec_)
- ec = o->ec_;
-
- // Map non-portable errors to their portable counterparts.
- if (ec.value() == ERROR_NETNAME_DELETED)
- {
- if (o->cancel_token_.expired())
- ec = asio::error::operation_aborted;
- else
- ec = asio::error::connection_reset;
- }
- else if (ec.value() == ERROR_PORT_UNREACHABLE)
- {
- ec = asio::error::connection_refused;
- }
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, ec, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- socket_ops::weak_cancel_token_type cancel_token_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_operation.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_operation.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_operation.hpp
deleted file mode 100644
index 4581b32..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_iocp_operation.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// detail/win_iocp_operation.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_DETAIL_WIN_IOCP_OPERATION_HPP
-#define ASIO_DETAIL_WIN_IOCP_OPERATION_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_HAS_IOCP)
-
-#include "asio/detail/handler_tracking.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_io_service;
-
-// Base class for all operations. A function pointer is used instead of virtual
-// functions to avoid the associated overhead.
-class win_iocp_operation
- : public OVERLAPPED
- ASIO_ALSO_INHERIT_TRACKED_HANDLER
-{
-public:
- void complete(win_iocp_io_service& owner,
- const asio::error_code& ec,
- std::size_t bytes_transferred)
- {
- func_(&owner, this, ec, bytes_transferred);
- }
-
- void destroy()
- {
- func_(0, this, asio::error_code(), 0);
- }
-
-protected:
- typedef void (*func_type)(
- win_iocp_io_service*, win_iocp_operation*,
- const asio::error_code&, std::size_t);
-
- win_iocp_operation(func_type func)
- : next_(0),
- func_(func)
- {
- reset();
- }
-
- // Prevents deletion through this type.
- ~win_iocp_operation()
- {
- }
-
- void reset()
- {
- Internal = 0;
- InternalHigh = 0;
- Offset = 0;
- OffsetHigh = 0;
- hEvent = 0;
- ready_ = 0;
- }
-
-private:
- friend class op_queue_access;
- friend class win_iocp_io_service;
- win_iocp_operation* next_;
- func_type func_;
- long ready_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_OPERATION_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[32/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffer.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffer.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffer.hpp
deleted file mode 100644
index afd5d04..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffer.hpp
+++ /dev/null
@@ -1,2239 +0,0 @@
-//
-// buffer.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_BUFFER_HPP
-#define ASIO_BUFFER_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 <cstring>
-#include <string>
-#include <vector>
-#include "asio/detail/array_fwd.hpp"
-
-#if defined(ASIO_MSVC)
-# if defined(_HAS_ITERATOR_DEBUGGING) && (_HAS_ITERATOR_DEBUGGING != 0)
-# if !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-# define ASIO_ENABLE_BUFFER_DEBUGGING
-# endif // !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-# endif // defined(_HAS_ITERATOR_DEBUGGING)
-#endif // defined(ASIO_MSVC)
-
-#if defined(__GNUC__)
-# if defined(_GLIBCXX_DEBUG)
-# if !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-# define ASIO_ENABLE_BUFFER_DEBUGGING
-# endif // !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-# endif // defined(_GLIBCXX_DEBUG)
-#endif // defined(__GNUC__)
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-# include "asio/detail/function.hpp"
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-#if defined(ASIO_HAS_BOOST_WORKAROUND)
-# include <boost/detail/workaround.hpp>
-# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) \
- || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
-# define ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND
-# endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
- // || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
-#endif // defined(ASIO_HAS_BOOST_WORKAROUND)
-
-#if defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-# include "asio/detail/type_traits.hpp"
-#endif // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-class mutable_buffer;
-class const_buffer;
-
-namespace detail {
-void* buffer_cast_helper(const mutable_buffer&);
-const void* buffer_cast_helper(const const_buffer&);
-std::size_t buffer_size_helper(const mutable_buffer&);
-std::size_t buffer_size_helper(const const_buffer&);
-} // namespace detail
-
-/// Holds a buffer that can be modified.
-/**
- * The mutable_buffer class provides a safe representation of a buffer that can
- * be modified. It does not own the underlying data, and so is cheap to copy or
- * assign.
- *
- * @par Accessing Buffer Contents
- *
- * The contents of a buffer may be accessed using the @ref buffer_size
- * and @ref buffer_cast functions:
- *
- * @code asio::mutable_buffer b1 = ...;
- * std::size_t s1 = asio::buffer_size(b1);
- * unsigned char* p1 = asio::buffer_cast<unsigned char*>(b1);
- * @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- */
-class mutable_buffer
-{
-public:
- /// Construct an empty buffer.
- mutable_buffer()
- : data_(0),
- size_(0)
- {
- }
-
- /// Construct a buffer to represent a given memory range.
- mutable_buffer(void* data, std::size_t size)
- : data_(data),
- size_(size)
- {
- }
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- mutable_buffer(void* data, std::size_t size,
- asio::detail::function<void()> debug_check)
- : data_(data),
- size_(size),
- debug_check_(debug_check)
- {
- }
-
- const asio::detail::function<void()>& get_debug_check() const
- {
- return debug_check_;
- }
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-private:
- friend void* asio::detail::buffer_cast_helper(
- const mutable_buffer& b);
- friend std::size_t asio::detail::buffer_size_helper(
- const mutable_buffer& b);
-
- void* data_;
- std::size_t size_;
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- asio::detail::function<void()> debug_check_;
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-};
-
-namespace detail {
-
-inline void* buffer_cast_helper(const mutable_buffer& b)
-{
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- if (b.size_ && b.debug_check_)
- b.debug_check_();
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- return b.data_;
-}
-
-inline std::size_t buffer_size_helper(const mutable_buffer& b)
-{
- return b.size_;
-}
-
-} // namespace detail
-
-/// Adapts a single modifiable buffer so that it meets the requirements of the
-/// MutableBufferSequence concept.
-class mutable_buffers_1
- : public mutable_buffer
-{
-public:
- /// The type for each element in the list of buffers.
- typedef mutable_buffer value_type;
-
- /// A random-access iterator type that may be used to read elements.
- typedef const mutable_buffer* const_iterator;
-
- /// Construct to represent a given memory range.
- mutable_buffers_1(void* data, std::size_t size)
- : mutable_buffer(data, size)
- {
- }
-
- /// Construct to represent a single modifiable buffer.
- explicit mutable_buffers_1(const mutable_buffer& b)
- : mutable_buffer(b)
- {
- }
-
- /// Get a random-access iterator to the first element.
- const_iterator begin() const
- {
- return this;
- }
-
- /// Get a random-access iterator for one past the last element.
- const_iterator end() const
- {
- return begin() + 1;
- }
-};
-
-/// Holds a buffer that cannot be modified.
-/**
- * The const_buffer class provides a safe representation of a buffer that cannot
- * be modified. It does not own the underlying data, and so is cheap to copy or
- * assign.
- *
- * @par Accessing Buffer Contents
- *
- * The contents of a buffer may be accessed using the @ref buffer_size
- * and @ref buffer_cast functions:
- *
- * @code asio::const_buffer b1 = ...;
- * std::size_t s1 = asio::buffer_size(b1);
- * const unsigned char* p1 = asio::buffer_cast<const unsigned char*>(b1);
- * @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- */
-class const_buffer
-{
-public:
- /// Construct an empty buffer.
- const_buffer()
- : data_(0),
- size_(0)
- {
- }
-
- /// Construct a buffer to represent a given memory range.
- const_buffer(const void* data, std::size_t size)
- : data_(data),
- size_(size)
- {
- }
-
- /// Construct a non-modifiable buffer from a modifiable one.
- const_buffer(const mutable_buffer& b)
- : data_(asio::detail::buffer_cast_helper(b)),
- size_(asio::detail::buffer_size_helper(b))
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , debug_check_(b.get_debug_check())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- {
- }
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- const_buffer(const void* data, std::size_t size,
- asio::detail::function<void()> debug_check)
- : data_(data),
- size_(size),
- debug_check_(debug_check)
- {
- }
-
- const asio::detail::function<void()>& get_debug_check() const
- {
- return debug_check_;
- }
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-private:
- friend const void* asio::detail::buffer_cast_helper(
- const const_buffer& b);
- friend std::size_t asio::detail::buffer_size_helper(
- const const_buffer& b);
-
- const void* data_;
- std::size_t size_;
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- asio::detail::function<void()> debug_check_;
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-};
-
-namespace detail {
-
-inline const void* buffer_cast_helper(const const_buffer& b)
-{
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- if (b.size_ && b.debug_check_)
- b.debug_check_();
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- return b.data_;
-}
-
-inline std::size_t buffer_size_helper(const const_buffer& b)
-{
- return b.size_;
-}
-
-} // namespace detail
-
-/// Adapts a single non-modifiable buffer so that it meets the requirements of
-/// the ConstBufferSequence concept.
-class const_buffers_1
- : public const_buffer
-{
-public:
- /// The type for each element in the list of buffers.
- typedef const_buffer value_type;
-
- /// A random-access iterator type that may be used to read elements.
- typedef const const_buffer* const_iterator;
-
- /// Construct to represent a given memory range.
- const_buffers_1(const void* data, std::size_t size)
- : const_buffer(data, size)
- {
- }
-
- /// Construct to represent a single non-modifiable buffer.
- explicit const_buffers_1(const const_buffer& b)
- : const_buffer(b)
- {
- }
-
- /// Get a random-access iterator to the first element.
- const_iterator begin() const
- {
- return this;
- }
-
- /// Get a random-access iterator for one past the last element.
- const_iterator end() const
- {
- return begin() + 1;
- }
-};
-
-/// An implementation of both the ConstBufferSequence and MutableBufferSequence
-/// concepts to represent a null buffer sequence.
-class null_buffers
-{
-public:
- /// The type for each element in the list of buffers.
- typedef mutable_buffer value_type;
-
- /// A random-access iterator type that may be used to read elements.
- typedef const mutable_buffer* const_iterator;
-
- /// Get a random-access iterator to the first element.
- const_iterator begin() const
- {
- return &buf_;
- }
-
- /// Get a random-access iterator for one past the last element.
- const_iterator end() const
- {
- return &buf_;
- }
-
-private:
- mutable_buffer buf_;
-};
-
-/** @defgroup buffer_size asio::buffer_size
- *
- * @brief The asio::buffer_size function determines the total number of
- * bytes in a buffer or buffer sequence.
- */
-/*@{*/
-
-/// Get the number of bytes in a modifiable buffer.
-inline std::size_t buffer_size(const mutable_buffer& b)
-{
- return detail::buffer_size_helper(b);
-}
-
-/// Get the number of bytes in a modifiable buffer.
-inline std::size_t buffer_size(const mutable_buffers_1& b)
-{
- return detail::buffer_size_helper(b);
-}
-
-/// Get the number of bytes in a non-modifiable buffer.
-inline std::size_t buffer_size(const const_buffer& b)
-{
- return detail::buffer_size_helper(b);
-}
-
-/// Get the number of bytes in a non-modifiable buffer.
-inline std::size_t buffer_size(const const_buffers_1& b)
-{
- return detail::buffer_size_helper(b);
-}
-
-/// Get the total number of bytes in a buffer sequence.
-/**
- * The @c BufferSequence template parameter may meet either of the @c
- * ConstBufferSequence or @c MutableBufferSequence type requirements.
- */
-template <typename BufferSequence>
-inline std::size_t buffer_size(const BufferSequence& b)
-{
- std::size_t total_buffer_size = 0;
-
- typename BufferSequence::const_iterator iter = b.begin();
- typename BufferSequence::const_iterator end = b.end();
- for (; iter != end; ++iter)
- total_buffer_size += detail::buffer_size_helper(*iter);
-
- return total_buffer_size;
-}
-
-/*@}*/
-
-/** @defgroup buffer_cast asio::buffer_cast
- *
- * @brief The asio::buffer_cast function is used to obtain a pointer to
- * the underlying memory region associated with a buffer.
- *
- * @par Examples:
- *
- * To access the memory of a non-modifiable buffer, use:
- * @code asio::const_buffer b1 = ...;
- * const unsigned char* p1 = asio::buffer_cast<const unsigned char*>(b1);
- * @endcode
- *
- * To access the memory of a modifiable buffer, use:
- * @code asio::mutable_buffer b2 = ...;
- * unsigned char* p2 = asio::buffer_cast<unsigned char*>(b2);
- * @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- */
-/*@{*/
-
-/// Cast a non-modifiable buffer to a specified pointer to POD type.
-template <typename PointerToPodType>
-inline PointerToPodType buffer_cast(const mutable_buffer& b)
-{
- return static_cast<PointerToPodType>(detail::buffer_cast_helper(b));
-}
-
-/// Cast a non-modifiable buffer to a specified pointer to POD type.
-template <typename PointerToPodType>
-inline PointerToPodType buffer_cast(const const_buffer& b)
-{
- return static_cast<PointerToPodType>(detail::buffer_cast_helper(b));
-}
-
-/*@}*/
-
-/// Create a new modifiable buffer that is offset from the start of another.
-/**
- * @relates mutable_buffer
- */
-inline mutable_buffer operator+(const mutable_buffer& b, std::size_t start)
-{
- if (start > buffer_size(b))
- return mutable_buffer();
- char* new_data = buffer_cast<char*>(b) + start;
- std::size_t new_size = buffer_size(b) - start;
- return mutable_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- );
-}
-
-/// Create a new modifiable buffer that is offset from the start of another.
-/**
- * @relates mutable_buffer
- */
-inline mutable_buffer operator+(std::size_t start, const mutable_buffer& b)
-{
- if (start > buffer_size(b))
- return mutable_buffer();
- char* new_data = buffer_cast<char*>(b) + start;
- std::size_t new_size = buffer_size(b) - start;
- return mutable_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- );
-}
-
-/// Create a new non-modifiable buffer that is offset from the start of another.
-/**
- * @relates const_buffer
- */
-inline const_buffer operator+(const const_buffer& b, std::size_t start)
-{
- if (start > buffer_size(b))
- return const_buffer();
- const char* new_data = buffer_cast<const char*>(b) + start;
- std::size_t new_size = buffer_size(b) - start;
- return const_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- );
-}
-
-/// Create a new non-modifiable buffer that is offset from the start of another.
-/**
- * @relates const_buffer
- */
-inline const_buffer operator+(std::size_t start, const const_buffer& b)
-{
- if (start > buffer_size(b))
- return const_buffer();
- const char* new_data = buffer_cast<const char*>(b) + start;
- std::size_t new_size = buffer_size(b) - start;
- return const_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- );
-}
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-namespace detail {
-
-template <typename Iterator>
-class buffer_debug_check
-{
-public:
- buffer_debug_check(Iterator iter)
- : iter_(iter)
- {
- }
-
- ~buffer_debug_check()
- {
-#if defined(ASIO_MSVC) && (ASIO_MSVC == 1400)
- // MSVC 8's string iterator checking may crash in a std::string::iterator
- // object's destructor when the iterator points to an already-destroyed
- // std::string object, unless the iterator is cleared first.
- iter_ = Iterator();
-#endif // defined(ASIO_MSVC) && (ASIO_MSVC == 1400)
- }
-
- void operator()()
- {
- *iter_;
- }
-
-private:
- Iterator iter_;
-};
-
-} // namespace detail
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-/** @defgroup buffer asio::buffer
- *
- * @brief The asio::buffer function is used to create a buffer object to
- * represent raw memory, an array of POD elements, a vector of POD elements,
- * or a std::string.
- *
- * A buffer object represents a contiguous region of memory as a 2-tuple
- * consisting of a pointer and size in bytes. A tuple of the form <tt>{void*,
- * size_t}</tt> specifies a mutable (modifiable) region of memory. Similarly, a
- * tuple of the form <tt>{const void*, size_t}</tt> specifies a const
- * (non-modifiable) region of memory. These two forms correspond to the classes
- * mutable_buffer and const_buffer, respectively. To mirror C++'s conversion
- * rules, a mutable_buffer is implicitly convertible to a const_buffer, and the
- * opposite conversion is not permitted.
- *
- * The simplest use case involves reading or writing a single buffer of a
- * specified size:
- *
- * @code sock.send(asio::buffer(data, size)); @endcode
- *
- * In the above example, the return value of asio::buffer meets the
- * requirements of the ConstBufferSequence concept so that it may be directly
- * passed to the socket's write function. A buffer created for modifiable
- * memory also meets the requirements of the MutableBufferSequence concept.
- *
- * An individual buffer may be created from a builtin array, std::vector,
- * std::array or boost::array of POD elements. This helps prevent buffer
- * overruns by automatically determining the size of the buffer:
- *
- * @code char d1[128];
- * size_t bytes_transferred = sock.receive(asio::buffer(d1));
- *
- * std::vector<char> d2(128);
- * bytes_transferred = sock.receive(asio::buffer(d2));
- *
- * std::array<char, 128> d3;
- * bytes_transferred = sock.receive(asio::buffer(d3));
- *
- * boost::array<char, 128> d4;
- * bytes_transferred = sock.receive(asio::buffer(d4)); @endcode
- *
- * In all three cases above, the buffers created are exactly 128 bytes long.
- * Note that a vector is @e never automatically resized when creating or using
- * a buffer. The buffer size is determined using the vector's <tt>size()</tt>
- * member function, and not its capacity.
- *
- * @par Accessing Buffer Contents
- *
- * The contents of a buffer may be accessed using the @ref buffer_size and
- * @ref buffer_cast functions:
- *
- * @code asio::mutable_buffer b1 = ...;
- * std::size_t s1 = asio::buffer_size(b1);
- * unsigned char* p1 = asio::buffer_cast<unsigned char*>(b1);
- *
- * asio::const_buffer b2 = ...;
- * std::size_t s2 = asio::buffer_size(b2);
- * const void* p2 = asio::buffer_cast<const void*>(b2); @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- *
- * For convenience, the @ref buffer_size function also works on buffer
- * sequences (that is, types meeting the ConstBufferSequence or
- * MutableBufferSequence type requirements). In this case, the function returns
- * the total size of all buffers in the sequence.
- *
- * @par Buffer Copying
- *
- * The @ref buffer_copy function may be used to copy raw bytes between
- * individual buffers and buffer sequences.
- *
- * In particular, when used with the @ref buffer_size, the @ref buffer_copy
- * function can be used to linearise a sequence of buffers. For example:
- *
- * @code vector<const_buffer> buffers = ...;
- *
- * vector<unsigned char> data(asio::buffer_size(buffers));
- * asio::buffer_copy(asio::buffer(data), buffers); @endcode
- *
- * Note that @ref buffer_copy is implemented in terms of @c memcpy, and
- * consequently it cannot be used to copy between overlapping memory regions.
- *
- * @par Buffer Invalidation
- *
- * A buffer object does not have any ownership of the memory it refers to. It
- * is the responsibility of the application to ensure the memory region remains
- * valid until it is no longer required for an I/O operation. When the memory
- * is no longer available, the buffer is said to have been invalidated.
- *
- * For the asio::buffer overloads that accept an argument of type
- * std::vector, the buffer objects returned are invalidated by any vector
- * operation that also invalidates all references, pointers and iterators
- * referring to the elements in the sequence (C++ Std, 23.2.4)
- *
- * For the asio::buffer overloads that accept an argument of type
- * std::basic_string, the buffer objects returned are invalidated according to
- * the rules defined for invalidation of references, pointers and iterators
- * referring to elements of the sequence (C++ Std, 21.3).
- *
- * @par Buffer Arithmetic
- *
- * Buffer objects may be manipulated using simple arithmetic in a safe way
- * which helps prevent buffer overruns. Consider an array initialised as
- * follows:
- *
- * @code boost::array<char, 6> a = { 'a', 'b', 'c', 'd', 'e' }; @endcode
- *
- * A buffer object @c b1 created using:
- *
- * @code b1 = asio::buffer(a); @endcode
- *
- * represents the entire array, <tt>{ 'a', 'b', 'c', 'd', 'e' }</tt>. An
- * optional second argument to the asio::buffer function may be used to
- * limit the size, in bytes, of the buffer:
- *
- * @code b2 = asio::buffer(a, 3); @endcode
- *
- * such that @c b2 represents the data <tt>{ 'a', 'b', 'c' }</tt>. Even if the
- * size argument exceeds the actual size of the array, the size of the buffer
- * object created will be limited to the array size.
- *
- * An offset may be applied to an existing buffer to create a new one:
- *
- * @code b3 = b1 + 2; @endcode
- *
- * where @c b3 will set to represent <tt>{ 'c', 'd', 'e' }</tt>. If the offset
- * exceeds the size of the existing buffer, the newly created buffer will be
- * empty.
- *
- * Both an offset and size may be specified to create a buffer that corresponds
- * to a specific range of bytes within an existing buffer:
- *
- * @code b4 = asio::buffer(b1 + 1, 3); @endcode
- *
- * so that @c b4 will refer to the bytes <tt>{ 'b', 'c', 'd' }</tt>.
- *
- * @par Buffers and Scatter-Gather I/O
- *
- * To read or write using multiple buffers (i.e. scatter-gather I/O), multiple
- * buffer objects may be assigned into a container that supports the
- * MutableBufferSequence (for read) or ConstBufferSequence (for write) concepts:
- *
- * @code
- * char d1[128];
- * std::vector<char> d2(128);
- * boost::array<char, 128> d3;
- *
- * boost::array<mutable_buffer, 3> bufs1 = {
- * asio::buffer(d1),
- * asio::buffer(d2),
- * asio::buffer(d3) };
- * bytes_transferred = sock.receive(bufs1);
- *
- * std::vector<const_buffer> bufs2;
- * bufs2.push_back(asio::buffer(d1));
- * bufs2.push_back(asio::buffer(d2));
- * bufs2.push_back(asio::buffer(d3));
- * bytes_transferred = sock.send(bufs2); @endcode
- */
-/*@{*/
-
-/// Create a new modifiable buffer from an existing buffer.
-/**
- * @returns <tt>mutable_buffers_1(b)</tt>.
- */
-inline mutable_buffers_1 buffer(const mutable_buffer& b)
-{
- return mutable_buffers_1(b);
-}
-
-/// Create a new modifiable buffer from an existing buffer.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * buffer_cast<void*>(b),
- * min(buffer_size(b), max_size_in_bytes)); @endcode
- */
-inline mutable_buffers_1 buffer(const mutable_buffer& b,
- std::size_t max_size_in_bytes)
-{
- return mutable_buffers_1(
- mutable_buffer(buffer_cast<void*>(b),
- buffer_size(b) < max_size_in_bytes
- ? buffer_size(b) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new non-modifiable buffer from an existing buffer.
-/**
- * @returns <tt>const_buffers_1(b)</tt>.
- */
-inline const_buffers_1 buffer(const const_buffer& b)
-{
- return const_buffers_1(b);
-}
-
-/// Create a new non-modifiable buffer from an existing buffer.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * buffer_cast<const void*>(b),
- * min(buffer_size(b), max_size_in_bytes)); @endcode
- */
-inline const_buffers_1 buffer(const const_buffer& b,
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(buffer_cast<const void*>(b),
- buffer_size(b) < max_size_in_bytes
- ? buffer_size(b) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new modifiable buffer that represents the given memory range.
-/**
- * @returns <tt>mutable_buffers_1(data, size_in_bytes)</tt>.
- */
-inline mutable_buffers_1 buffer(void* data, std::size_t size_in_bytes)
-{
- return mutable_buffers_1(mutable_buffer(data, size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given memory range.
-/**
- * @returns <tt>const_buffers_1(data, size_in_bytes)</tt>.
- */
-inline const_buffers_1 buffer(const void* data,
- std::size_t size_in_bytes)
-{
- return const_buffers_1(const_buffer(data, size_in_bytes));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * static_cast<void*>(data),
- * N * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(PodType (&data)[N])
-{
- return mutable_buffers_1(mutable_buffer(data, N * sizeof(PodType)));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * static_cast<void*>(data),
- * min(N * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(PodType (&data)[N],
- std::size_t max_size_in_bytes)
-{
- return mutable_buffers_1(
- mutable_buffer(data,
- N * sizeof(PodType) < max_size_in_bytes
- ? N * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * static_cast<const void*>(data),
- * N * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const PodType (&data)[N])
-{
- return const_buffers_1(const_buffer(data, N * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * static_cast<const void*>(data),
- * min(N * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const PodType (&data)[N],
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data,
- N * sizeof(PodType) < max_size_in_bytes
- ? N * sizeof(PodType) : max_size_in_bytes));
-}
-
-#if defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-// Borland C++ and Sun Studio think the overloads:
-//
-// unspecified buffer(boost::array<PodType, N>& array ...);
-//
-// and
-//
-// unspecified buffer(boost::array<const PodType, N>& array ...);
-//
-// are ambiguous. This will be worked around by using a buffer_types traits
-// class that contains typedefs for the appropriate buffer and container
-// classes, based on whether PodType is const or non-const.
-
-namespace detail {
-
-template <bool IsConst>
-struct buffer_types_base;
-
-template <>
-struct buffer_types_base<false>
-{
- typedef mutable_buffer buffer_type;
- typedef mutable_buffers_1 container_type;
-};
-
-template <>
-struct buffer_types_base<true>
-{
- typedef const_buffer buffer_type;
- typedef const_buffers_1 container_type;
-};
-
-template <typename PodType>
-struct buffer_types
- : public buffer_types_base<is_const<PodType>::value>
-{
-};
-
-} // namespace detail
-
-template <typename PodType, std::size_t N>
-inline typename detail::buffer_types<PodType>::container_type
-buffer(boost::array<PodType, N>& data)
-{
- typedef typename asio::detail::buffer_types<PodType>::buffer_type
- buffer_type;
- typedef typename asio::detail::buffer_types<PodType>::container_type
- container_type;
- return container_type(
- buffer_type(data.c_array(), data.size() * sizeof(PodType)));
-}
-
-template <typename PodType, std::size_t N>
-inline typename detail::buffer_types<PodType>::container_type
-buffer(boost::array<PodType, N>& data, std::size_t max_size_in_bytes)
-{
- typedef typename asio::detail::buffer_types<PodType>::buffer_type
- buffer_type;
- typedef typename asio::detail::buffer_types<PodType>::container_type
- container_type;
- return container_type(
- buffer_type(data.c_array(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#else // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * data.data(),
- * data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(boost::array<PodType, N>& data)
-{
- return mutable_buffers_1(
- mutable_buffer(data.c_array(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(boost::array<PodType, N>& data,
- std::size_t max_size_in_bytes)
-{
- return mutable_buffers_1(
- mutable_buffer(data.c_array(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(boost::array<const PodType, N>& data)
-{
- return const_buffers_1(
- const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(boost::array<const PodType, N>& data,
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data.data(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#endif // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const boost::array<PodType, N>& data)
-{
- return const_buffers_1(
- const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const boost::array<PodType, N>& data,
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data.data(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#if defined(ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION)
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * data.data(),
- * data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(std::array<PodType, N>& data)
-{
- return mutable_buffers_1(
- mutable_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(std::array<PodType, N>& data,
- std::size_t max_size_in_bytes)
-{
- return mutable_buffers_1(
- mutable_buffer(data.data(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(std::array<const PodType, N>& data)
-{
- return const_buffers_1(
- const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(std::array<const PodType, N>& data,
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data.data(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const std::array<PodType, N>& data)
-{
- return const_buffers_1(
- const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const std::array<PodType, N>& data,
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data.data(),
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#endif // defined(ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION)
-
-/// Create a new modifiable buffer that represents the given POD vector.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * data.size() ? &data[0] : 0,
- * data.size() * sizeof(PodType)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data)
-{
- return mutable_buffers_1(
- mutable_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , detail::buffer_debug_check<
- typename std::vector<PodType, Allocator>::iterator
- >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new modifiable buffer that represents the given POD vector.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- * data.size() ? &data[0] : 0,
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data,
- std::size_t max_size_in_bytes)
-{
- return mutable_buffers_1(
- mutable_buffer(data.size() ? &data[0] : 0,
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , detail::buffer_debug_check<
- typename std::vector<PodType, Allocator>::iterator
- >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD vector.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.size() ? &data[0] : 0,
- * data.size() * sizeof(PodType)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline const_buffers_1 buffer(
- const std::vector<PodType, Allocator>& data)
-{
- return const_buffers_1(
- const_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , detail::buffer_debug_check<
- typename std::vector<PodType, Allocator>::const_iterator
- >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD vector.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.size() ? &data[0] : 0,
- * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline const_buffers_1 buffer(
- const std::vector<PodType, Allocator>& data, std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data.size() ? &data[0] : 0,
- data.size() * sizeof(PodType) < max_size_in_bytes
- ? data.size() * sizeof(PodType) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , detail::buffer_debug_check<
- typename std::vector<PodType, Allocator>::const_iterator
- >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new non-modifiable buffer that represents the given string.
-/**
- * @returns <tt>const_buffers_1(data.data(), data.size() * sizeof(Elem))</tt>.
- *
- * @note The buffer is invalidated by any non-const operation called on the
- * given string object.
- */
-template <typename Elem, typename Traits, typename Allocator>
-inline const_buffers_1 buffer(
- const std::basic_string<Elem, Traits, Allocator>& data)
-{
- return const_buffers_1(const_buffer(data.data(), data.size() * sizeof(Elem)
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , detail::buffer_debug_check<
- typename std::basic_string<Elem, Traits, Allocator>::const_iterator
- >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/// Create a new non-modifiable buffer that represents the given string.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- * data.data(),
- * min(data.size() * sizeof(Elem), max_size_in_bytes)); @endcode
- *
- * @note The buffer is invalidated by any non-const operation called on the
- * given string object.
- */
-template <typename Elem, typename Traits, typename Allocator>
-inline const_buffers_1 buffer(
- const std::basic_string<Elem, Traits, Allocator>& data,
- std::size_t max_size_in_bytes)
-{
- return const_buffers_1(
- const_buffer(data.data(),
- data.size() * sizeof(Elem) < max_size_in_bytes
- ? data.size() * sizeof(Elem) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- , detail::buffer_debug_check<
- typename std::basic_string<Elem, Traits, Allocator>::const_iterator
- >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
- ));
-}
-
-/*@}*/
-
-/** @defgroup buffer_copy asio::buffer_copy
- *
- * @brief The asio::buffer_copy function is used to copy bytes from a
- * source buffer (or buffer sequence) to a target buffer (or buffer sequence).
- *
- * The @c buffer_copy function is available in two forms:
- *
- * @li A 2-argument form: @c buffer_copy(target, source)
- *
- * @li A 3-argument form: @c buffer_copy(target, source, max_bytes_to_copy)
-
- * Both forms return the number of bytes actually copied. The number of bytes
- * copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c If specified, @c max_bytes_to_copy.
- *
- * This prevents buffer overflow, regardless of the buffer sizes used in the
- * copy operation.
- *
- * Note that @ref buffer_copy is implemented in terms of @c memcpy, and
- * consequently it cannot be used to copy between overlapping memory regions.
- */
-/*@{*/
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const const_buffer& source)
-{
- using namespace std; // For memcpy.
- std::size_t target_size = buffer_size(target);
- std::size_t source_size = buffer_size(source);
- std::size_t n = target_size < source_size ? target_size : source_size;
- memcpy(buffer_cast<void*>(target), buffer_cast<const void*>(source), n);
- return n;
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const const_buffers_1& source)
-{
- return buffer_copy(target, static_cast<const const_buffer&>(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const mutable_buffer& source)
-{
- return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const mutable_buffers_1& source)
-{
- return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer sequence to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-std::size_t buffer_copy(const mutable_buffer& target,
- const ConstBufferSequence& source)
-{
- std::size_t total_bytes_copied = 0;
-
- typename ConstBufferSequence::const_iterator source_iter = source.begin();
- typename ConstBufferSequence::const_iterator source_end = source.end();
-
- for (mutable_buffer target_buffer(target);
- buffer_size(target_buffer) && source_iter != source_end; ++source_iter)
- {
- const_buffer source_buffer(*source_iter);
- std::size_t bytes_copied = buffer_copy(target_buffer, source_buffer);
- total_bytes_copied += bytes_copied;
- target_buffer = target_buffer + bytes_copied;
- }
-
- return total_bytes_copied;
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const const_buffer& source)
-{
- return buffer_copy(static_cast<const mutable_buffer&>(target), source);
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const const_buffers_1& source)
-{
- return buffer_copy(static_cast<const mutable_buffer&>(target),
- static_cast<const const_buffer&>(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const mutable_buffer& source)
-{
- return buffer_copy(static_cast<const mutable_buffer&>(target),
- const_buffer(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const mutable_buffers_1& source)
-{
- return buffer_copy(static_cast<const mutable_buffer&>(target),
- const_buffer(source));
-}
-
-/// Copies bytes from a source buffer sequence to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const ConstBufferSequence& source)
-{
- return buffer_copy(static_cast<const mutable_buffer&>(target), source);
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-std::size_t buffer_copy(const MutableBufferSequence& target,
- const const_buffer& source)
-{
- std::size_t total_bytes_copied = 0;
-
- typename MutableBufferSequence::const_iterator target_iter = target.begin();
- typename MutableBufferSequence::const_iterator target_end = target.end();
-
- for (const_buffer source_buffer(source);
- buffer_size(source_buffer) && target_iter != target_end; ++target_iter)
- {
- mutable_buffer target_buffer(*target_iter);
- std::size_t bytes_copied = buffer_copy(target_buffer, source_buffer);
- total_bytes_copied += bytes_copied;
- source_buffer = source_buffer + bytes_copied;
- }
-
- return total_bytes_copied;
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const const_buffers_1& source)
-{
- return buffer_copy(target, static_cast<const const_buffer&>(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const mutable_buffer& source)
-{
- return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const mutable_buffers_1& source)
-{
- return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer sequence to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence, typename ConstBufferSequence>
-std::size_t buffer_copy(const MutableBufferSequence& target,
- const ConstBufferSequence& source)
-{
- std::size_t total_bytes_copied = 0;
-
- typename MutableBufferSequence::const_iterator target_iter = target.begin();
- typename MutableBufferSequence::const_iterator target_end = target.end();
- std::size_t target_buffer_offset = 0;
-
- typename ConstBufferSequence::const_iterator source_iter = source.begin();
- typename ConstBufferSequence::const_iterator source_end = source.end();
- std::size_t source_buffer_offset = 0;
-
- while (target_iter != target_end && source_iter != source_end)
- {
- mutable_buffer target_buffer =
- mutable_buffer(*target_iter) + target_buffer_offset;
-
- const_buffer source_buffer =
- const_buffer(*source_iter) + source_buffer_offset;
-
- std::size_t bytes_copied = buffer_copy(target_buffer, source_buffer);
- total_bytes_copied += bytes_copied;
-
- if (bytes_copied == buffer_size(target_buffer))
- {
- ++target_iter;
- target_buffer_offset = 0;
- }
- else
- target_buffer_offset += bytes_copied;
-
- if (bytes_copied == buffer_size(source_buffer))
- {
- ++source_iter;
- source_buffer_offset = 0;
- }
- else
- source_buffer_offset += bytes_copied;
- }
-
- return total_bytes_copied;
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const const_buffer& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const const_buffers_1& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const mutable_buffer& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const mutable_buffers_1& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer sequence to a target
-/// buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-inline std::size_t buffer_copy(const mutable_buffer& target,
- const ConstBufferSequence& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const const_buffer& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const const_buffers_1& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const mutable_buffer& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const mutable_buffers_1& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer sequence to a target
-/// buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
- const ConstBufferSequence& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const const_buffer& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const const_buffers_1& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const mutable_buffer& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
- const mutable_buffers_1& source, std::size_t max_bytes_to_copy)
-{
- return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer sequence to a target
-/// buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence, typename ConstBufferSequence>
-std::size_t buffer_copy(const MutableBufferSequence& target,
- const ConstBufferSequence& source, std::size_t max_bytes_to_copy)
-{
- std::size_t total_bytes_copied = 0;
-
- typename MutableBufferSequence::const_iterator target_iter = target.begin();
- typename MutableBufferSequence::const_iterator target_end = target.end();
- std::size_t target_buffer_offset = 0;
-
- typename ConstBufferSequence::const_iterator source_iter = source.begin();
- typename ConstBufferSequence::const_iterator source_end = source.end();
- std::size_t source_buffer_offset = 0;
-
- while (total_bytes_copied != max_bytes_to_copy
- && target_iter != target_end && source_iter != source_end)
- {
- mutable_buffer target_buffer =
- mutable_buffer(*target_iter) + target_buffer_offset;
-
- const_buffer source_buffer =
- const_buffer(*source_iter) + source_buffer_offset;
-
- std::size_t bytes_copied = buffer_copy(target_buffer,
- source_buffer, max_bytes_to_copy - total_bytes_copied);
- total_bytes_copied += bytes_copied;
-
- if (bytes_copied == buffer_size(target_buffer))
- {
- ++target_iter;
- target_buffer_offset = 0;
- }
- else
- target_buffer_offset += bytes_copied;
-
- if (bytes_copied == buffer_size(source_buffer))
- {
- ++source_iter;
- source_buffer_offset = 0;
- }
- else
- source_buffer_offset += bytes_copied;
- }
-
- return total_bytes_copied;
-}
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BUFFER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream.hpp
deleted file mode 100644
index 15e6cff..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream.hpp
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// buffered_read_stream.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_BUFFERED_READ_STREAM_HPP
-#define ASIO_BUFFERED_READ_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 "asio/async_result.hpp"
-#include "asio/buffered_read_stream_fwd.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_resize_guard.hpp"
-#include "asio/detail/buffered_stream_storage.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Adds buffering to the read-related operations of a stream.
-/**
- * The buffered_read_stream class template can be used to add buffering to the
- * synchronous and asynchronous read operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_read_stream
- : private 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;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// The default buffer size.
- static const std::size_t default_buffer_size = implementation_defined;
-#else
- ASIO_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
-#endif
-
- /// Construct, passing the specified argument to initialise the next layer.
- template <typename Arg>
- explicit buffered_read_stream(Arg& a)
- : next_layer_(a),
- storage_(default_buffer_size)
- {
- }
-
- /// Construct, passing the specified argument to initialise the next layer.
- template <typename Arg>
- buffered_read_stream(Arg& a, std::size_t buffer_size)
- : next_layer_(a),
- storage_(buffer_size)
- {
- }
-
- /// Get a reference to the next layer.
- next_layer_type& next_layer()
- {
- return next_layer_;
- }
-
- /// Get a reference to the lowest layer.
- lowest_layer_type& lowest_layer()
- {
- return next_layer_.lowest_layer();
- }
-
- /// Get a const reference to the lowest layer.
- const lowest_layer_type& lowest_layer() const
- {
- return next_layer_.lowest_layer();
- }
-
- /// Get the io_service associated with the object.
- asio::io_service& get_io_service()
- {
- return next_layer_.get_io_service();
- }
-
- /// Close the stream.
- void close()
- {
- next_layer_.close();
- }
-
- /// Close the stream.
- asio::error_code close(asio::error_code& ec)
- {
- return next_layer_.close(ec);
- }
-
- /// Write the given data to the stream. Returns the number of bytes written.
- /// Throws an exception on failure.
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers)
- {
- return next_layer_.write_some(buffers);
- }
-
- /// Write the given data to the stream. Returns the number of bytes written,
- /// or 0 if an error occurred.
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers,
- asio::error_code& ec)
- {
- return next_layer_.write_some(buffers, ec);
- }
-
- /// Start an asynchronous write. The data being written must be valid for the
- /// lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- detail::async_result_init<
- WriteHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(WriteHandler)(handler));
-
- next_layer_.async_write_some(buffers,
- ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(WriteHandler,
- void (asio::error_code, std::size_t)))(init.handler));
-
- return init.result.get();
- }
-
- /// Fill the buffer with some data. Returns the number of bytes placed in the
- /// buffer as a result of the operation. Throws an exception on failure.
- std::size_t fill();
-
- /// Fill the buffer with some data. Returns the number of bytes placed in the
- /// buffer as a result of the operation, or 0 if an error occurred.
- std::size_t fill(asio::error_code& ec);
-
- /// Start an asynchronous fill.
- template <typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_fill(ASIO_MOVE_ARG(ReadHandler) handler);
-
- /// Read some data from the stream. Returns the number of bytes read. Throws
- /// an exception on failure.
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers);
-
- /// Read some data from the stream. Returns the number of bytes read or 0 if
- /// an error occurred.
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers,
- asio::error_code& ec);
-
- /// Start an asynchronous read. The buffer into which the data will be read
- /// must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler);
-
- /// Peek at the incoming data on the stream. Returns the number of bytes read.
- /// Throws an exception on failure.
- template <typename MutableBufferSequence>
- std::size_t peek(const MutableBufferSequence& buffers);
-
- /// Peek at the incoming data on the stream. Returns the number of bytes read,
- /// or 0 if an error occurred.
- template <typename MutableBufferSequence>
- std::size_t peek(const MutableBufferSequence& buffers,
- asio::error_code& ec);
-
- /// Determine the amount of data that may be read without blocking.
- std::size_t in_avail()
- {
- return storage_.size();
- }
-
- /// Determine the amount of data that may be read without blocking.
- std::size_t in_avail(asio::error_code& ec)
- {
- ec = asio::error_code();
- return storage_.size();
- }
-
-private:
- /// Copy data out of the internal buffer to the specified target buffer.
- /// Returns the number of bytes copied.
- template <typename MutableBufferSequence>
- std::size_t copy(const MutableBufferSequence& buffers)
- {
- std::size_t bytes_copied = asio::buffer_copy(
- buffers, storage_.data(), storage_.size());
- storage_.consume(bytes_copied);
- return bytes_copied;
- }
-
- /// Copy data from the internal buffer to the specified target buffer, without
- /// removing the data from the internal buffer. Returns the number of bytes
- /// copied.
- template <typename MutableBufferSequence>
- std::size_t peek_copy(const MutableBufferSequence& buffers)
- {
- return asio::buffer_copy(buffers, storage_.data(), storage_.size());
- }
-
- /// The next layer.
- Stream next_layer_;
-
- // The data in the buffer.
- detail::buffered_stream_storage storage_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/buffered_read_stream.hpp"
-
-#endif // ASIO_BUFFERED_READ_STREAM_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream_fwd.hpp
deleted file mode 100644
index 9bac634..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_read_stream_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// buffered_read_stream_fwd.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_BUFFERED_READ_STREAM_FWD_HPP
-#define ASIO_BUFFERED_READ_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-namespace asio {
-
-template <typename Stream>
-class buffered_read_stream;
-
-} // namespace asio
-
-#endif // ASIO_BUFFERED_READ_STREAM_FWD_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[31/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream.hpp
deleted file mode 100644
index 0516090..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream.hpp
+++ /dev/null
@@ -1,258 +0,0 @@
-//
-// buffered_stream.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_BUFFERED_STREAM_HPP
-#define ASIO_BUFFERED_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 "asio/async_result.hpp"
-#include "asio/buffered_read_stream.hpp"
-#include "asio/buffered_write_stream.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Adds buffering to the read- and write-related operations of a stream.
-/**
- * The buffered_stream class template can be used to add buffering to the
- * synchronous and asynchronous read and write operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_stream
- : private 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;
-
- /// Construct, passing the specified argument to initialise the next layer.
- template <typename Arg>
- explicit buffered_stream(Arg& a)
- : inner_stream_impl_(a),
- stream_impl_(inner_stream_impl_)
- {
- }
-
- /// Construct, passing the specified argument to initialise the next layer.
- template <typename Arg>
- explicit buffered_stream(Arg& a, std::size_t read_buffer_size,
- std::size_t write_buffer_size)
- : inner_stream_impl_(a, write_buffer_size),
- stream_impl_(inner_stream_impl_, read_buffer_size)
- {
- }
-
- /// Get a reference to the next layer.
- next_layer_type& next_layer()
- {
- return stream_impl_.next_layer().next_layer();
- }
-
- /// Get a reference to the lowest layer.
- lowest_layer_type& lowest_layer()
- {
- return stream_impl_.lowest_layer();
- }
-
- /// Get a const reference to the lowest layer.
- const lowest_layer_type& lowest_layer() const
- {
- return stream_impl_.lowest_layer();
- }
-
- /// Get the io_service associated with the object.
- asio::io_service& get_io_service()
- {
- return stream_impl_.get_io_service();
- }
-
- /// Close the stream.
- void close()
- {
- stream_impl_.close();
- }
-
- /// Close the stream.
- asio::error_code close(asio::error_code& ec)
- {
- return stream_impl_.close(ec);
- }
-
- /// Flush all data from the buffer to the next layer. Returns the number of
- /// bytes written to the next layer on the last write operation. Throws an
- /// exception on failure.
- std::size_t flush()
- {
- return stream_impl_.next_layer().flush();
- }
-
- /// Flush all data from the buffer to the next layer. Returns the number of
- /// bytes written to the next layer on the last write operation, or 0 if an
- /// error occurred.
- std::size_t flush(asio::error_code& ec)
- {
- return stream_impl_.next_layer().flush(ec);
- }
-
- /// Start an asynchronous flush.
- template <typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_flush(ASIO_MOVE_ARG(WriteHandler) handler)
- {
- return stream_impl_.next_layer().async_flush(
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Write the given data to the stream. Returns the number of bytes written.
- /// Throws an exception on failure.
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers)
- {
- return stream_impl_.write_some(buffers);
- }
-
- /// Write the given data to the stream. Returns the number of bytes written,
- /// or 0 if an error occurred.
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers,
- asio::error_code& ec)
- {
- return stream_impl_.write_some(buffers, ec);
- }
-
- /// Start an asynchronous write. The data being written must be valid for the
- /// lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler)
- {
- return stream_impl_.async_write_some(buffers,
- ASIO_MOVE_CAST(WriteHandler)(handler));
- }
-
- /// Fill the buffer with some data. Returns the number of bytes placed in the
- /// buffer as a result of the operation. Throws an exception on failure.
- std::size_t fill()
- {
- return stream_impl_.fill();
- }
-
- /// Fill the buffer with some data. Returns the number of bytes placed in the
- /// buffer as a result of the operation, or 0 if an error occurred.
- std::size_t fill(asio::error_code& ec)
- {
- return stream_impl_.fill(ec);
- }
-
- /// Start an asynchronous fill.
- template <typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_fill(ASIO_MOVE_ARG(ReadHandler) handler)
- {
- return stream_impl_.async_fill(ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Read some data from the stream. Returns the number of bytes read. Throws
- /// an exception on failure.
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers)
- {
- return stream_impl_.read_some(buffers);
- }
-
- /// Read some data from the stream. Returns the number of bytes read or 0 if
- /// an error occurred.
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers,
- asio::error_code& ec)
- {
- return stream_impl_.read_some(buffers, ec);
- }
-
- /// Start an asynchronous read. The buffer into which the data will be read
- /// must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- return stream_impl_.async_read_some(buffers,
- ASIO_MOVE_CAST(ReadHandler)(handler));
- }
-
- /// Peek at the incoming data on the stream. Returns the number of bytes read.
- /// Throws an exception on failure.
- template <typename MutableBufferSequence>
- std::size_t peek(const MutableBufferSequence& buffers)
- {
- return stream_impl_.peek(buffers);
- }
-
- /// Peek at the incoming data on the stream. Returns the number of bytes read,
- /// or 0 if an error occurred.
- template <typename MutableBufferSequence>
- std::size_t peek(const MutableBufferSequence& buffers,
- asio::error_code& ec)
- {
- return stream_impl_.peek(buffers, ec);
- }
-
- /// Determine the amount of data that may be read without blocking.
- std::size_t in_avail()
- {
- return stream_impl_.in_avail();
- }
-
- /// Determine the amount of data that may be read without blocking.
- std::size_t in_avail(asio::error_code& ec)
- {
- return stream_impl_.in_avail(ec);
- }
-
-private:
- // The buffered write stream.
- typedef buffered_write_stream<Stream> write_stream_type;
- write_stream_type inner_stream_impl_;
-
- // The buffered read stream.
- typedef buffered_read_stream<write_stream_type&> read_stream_type;
- read_stream_type stream_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BUFFERED_STREAM_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream_fwd.hpp
deleted file mode 100644
index a5730bf..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_stream_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// buffered_stream_fwd.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_BUFFERED_STREAM_FWD_HPP
-#define ASIO_BUFFERED_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-namespace asio {
-
-template <typename Stream>
-class buffered_stream;
-
-} // namespace asio
-
-#endif // ASIO_BUFFERED_STREAM_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream.hpp
deleted file mode 100644
index 5198d90..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-//
-// buffered_write_stream.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_BUFFERED_WRITE_STREAM_HPP
-#define ASIO_BUFFERED_WRITE_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 "asio/buffered_write_stream_fwd.hpp"
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffered_stream_storage.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/write.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Adds buffering to the write-related operations of a stream.
-/**
- * The buffered_write_stream class template can be used to add buffering to the
- * synchronous and asynchronous write operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_write_stream
- : private 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;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// The default buffer size.
- static const std::size_t default_buffer_size = implementation_defined;
-#else
- ASIO_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
-#endif
-
- /// Construct, passing the specified argument to initialise the next layer.
- template <typename Arg>
- explicit buffered_write_stream(Arg& a)
- : next_layer_(a),
- storage_(default_buffer_size)
- {
- }
-
- /// Construct, passing the specified argument to initialise the next layer.
- template <typename Arg>
- buffered_write_stream(Arg& a, std::size_t buffer_size)
- : next_layer_(a),
- storage_(buffer_size)
- {
- }
-
- /// Get a reference to the next layer.
- next_layer_type& next_layer()
- {
- return next_layer_;
- }
-
- /// Get a reference to the lowest layer.
- lowest_layer_type& lowest_layer()
- {
- return next_layer_.lowest_layer();
- }
-
- /// Get a const reference to the lowest layer.
- const lowest_layer_type& lowest_layer() const
- {
- return next_layer_.lowest_layer();
- }
-
- /// Get the io_service associated with the object.
- asio::io_service& get_io_service()
- {
- return next_layer_.get_io_service();
- }
-
- /// Close the stream.
- void close()
- {
- next_layer_.close();
- }
-
- /// Close the stream.
- asio::error_code close(asio::error_code& ec)
- {
- return next_layer_.close(ec);
- }
-
- /// Flush all data from the buffer to the next layer. Returns the number of
- /// bytes written to the next layer on the last write operation. Throws an
- /// exception on failure.
- std::size_t flush();
-
- /// Flush all data from the buffer to the next layer. Returns the number of
- /// bytes written to the next layer on the last write operation, or 0 if an
- /// error occurred.
- std::size_t flush(asio::error_code& ec);
-
- /// Start an asynchronous flush.
- template <typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_flush(ASIO_MOVE_ARG(WriteHandler) handler);
-
- /// Write the given data to the stream. Returns the number of bytes written.
- /// Throws an exception on failure.
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers);
-
- /// Write the given data to the stream. Returns the number of bytes written,
- /// or 0 if an error occurred and the error handler did not throw.
- template <typename ConstBufferSequence>
- std::size_t write_some(const ConstBufferSequence& buffers,
- asio::error_code& ec);
-
- /// Start an asynchronous write. The data being written must be valid for the
- /// lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename WriteHandler>
- ASIO_INITFN_RESULT_TYPE(WriteHandler,
- void (asio::error_code, std::size_t))
- async_write_some(const ConstBufferSequence& buffers,
- ASIO_MOVE_ARG(WriteHandler) handler);
-
- /// Read some data from the stream. Returns the number of bytes read. Throws
- /// an exception on failure.
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers)
- {
- return next_layer_.read_some(buffers);
- }
-
- /// Read some data from the stream. Returns the number of bytes read or 0 if
- /// an error occurred.
- template <typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence& buffers,
- asio::error_code& ec)
- {
- return next_layer_.read_some(buffers, ec);
- }
-
- /// Start an asynchronous read. The buffer into which the data will be read
- /// must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename ReadHandler>
- ASIO_INITFN_RESULT_TYPE(ReadHandler,
- void (asio::error_code, std::size_t))
- async_read_some(const MutableBufferSequence& buffers,
- ASIO_MOVE_ARG(ReadHandler) handler)
- {
- detail::async_result_init<
- ReadHandler, void (asio::error_code, std::size_t)> init(
- ASIO_MOVE_CAST(ReadHandler)(handler));
-
- next_layer_.async_read_some(buffers,
- ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(ReadHandler,
- void (asio::error_code, std::size_t)))(init.handler));
-
- return init.result.get();
- }
-
- /// Peek at the incoming data on the stream. Returns the number of bytes read.
- /// Throws an exception on failure.
- template <typename MutableBufferSequence>
- std::size_t peek(const MutableBufferSequence& buffers)
- {
- return next_layer_.peek(buffers);
- }
-
- /// Peek at the incoming data on the stream. Returns the number of bytes read,
- /// or 0 if an error occurred.
- template <typename MutableBufferSequence>
- std::size_t peek(const MutableBufferSequence& buffers,
- asio::error_code& ec)
- {
- return next_layer_.peek(buffers, ec);
- }
-
- /// Determine the amount of data that may be read without blocking.
- std::size_t in_avail()
- {
- return next_layer_.in_avail();
- }
-
- /// Determine the amount of data that may be read without blocking.
- std::size_t in_avail(asio::error_code& ec)
- {
- return next_layer_.in_avail(ec);
- }
-
-private:
- /// Copy data into the internal buffer from the specified source buffer.
- /// Returns the number of bytes copied.
- template <typename ConstBufferSequence>
- std::size_t copy(const ConstBufferSequence& buffers);
-
- /// The next layer.
- Stream next_layer_;
-
- // The data in the buffer.
- detail::buffered_stream_storage storage_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/buffered_write_stream.hpp"
-
-#endif // ASIO_BUFFERED_WRITE_STREAM_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream_fwd.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream_fwd.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream_fwd.hpp
deleted file mode 100644
index 53ef7b8..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffered_write_stream_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// buffered_write_stream_fwd.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_BUFFERED_WRITE_STREAM_FWD_HPP
-#define ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-namespace asio {
-
-template <typename Stream>
-class buffered_write_stream;
-
-} // namespace asio
-
-#endif // ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffers_iterator.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffers_iterator.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffers_iterator.hpp
deleted file mode 100644
index a64a89f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/buffers_iterator.hpp
+++ /dev/null
@@ -1,481 +0,0 @@
-//
-// buffers_iterator.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_BUFFERS_ITERATOR_HPP
-#define ASIO_BUFFERS_ITERATOR_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 <iterator>
-#include "asio/buffer.hpp"
-#include "asio/detail/assert.hpp"
-#include "asio/detail/type_traits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail
-{
- template <bool IsMutable>
- struct buffers_iterator_types_helper;
-
- template <>
- struct buffers_iterator_types_helper<false>
- {
- typedef const_buffer buffer_type;
- template <typename ByteType>
- struct byte_type
- {
- typedef typename add_const<ByteType>::type type;
- };
- };
-
- template <>
- struct buffers_iterator_types_helper<true>
- {
- typedef mutable_buffer buffer_type;
- template <typename ByteType>
- struct byte_type
- {
- typedef ByteType type;
- };
- };
-
- template <typename BufferSequence, typename ByteType>
- struct buffers_iterator_types
- {
- enum
- {
- is_mutable = is_convertible<
- typename BufferSequence::value_type,
- mutable_buffer>::value
- };
- typedef buffers_iterator_types_helper<is_mutable> helper;
- typedef typename helper::buffer_type buffer_type;
- typedef typename helper::template byte_type<ByteType>::type byte_type;
- };
-}
-
-/// A random access iterator over the bytes in a buffer sequence.
-template <typename BufferSequence, typename ByteType = char>
-class buffers_iterator
-{
-private:
- typedef typename detail::buffers_iterator_types<
- BufferSequence, ByteType>::buffer_type buffer_type;
-
-public:
- /// The type used for the distance between two iterators.
- typedef std::ptrdiff_t difference_type;
-
- /// The type of the value pointed to by the iterator.
- typedef ByteType value_type;
-
-#if defined(GENERATING_DOCUMENTATION)
- /// The type of the result of applying operator->() to the iterator.
- /**
- * If the buffer sequence stores buffer objects that are convertible to
- * mutable_buffer, this is a pointer to a non-const ByteType. Otherwise, a
- * pointer to a const ByteType.
- */
- typedef const_or_non_const_ByteType* pointer;
-#else // defined(GENERATING_DOCUMENTATION)
- typedef typename detail::buffers_iterator_types<
- BufferSequence, ByteType>::byte_type* pointer;
-#endif // defined(GENERATING_DOCUMENTATION)
-
-#if defined(GENERATING_DOCUMENTATION)
- /// The type of the result of applying operator*() to the iterator.
- /**
- * If the buffer sequence stores buffer objects that are convertible to
- * mutable_buffer, this is a reference to a non-const ByteType. Otherwise, a
- * reference to a const ByteType.
- */
- typedef const_or_non_const_ByteType& reference;
-#else // defined(GENERATING_DOCUMENTATION)
- typedef typename detail::buffers_iterator_types<
- BufferSequence, ByteType>::byte_type& reference;
-#endif // defined(GENERATING_DOCUMENTATION)
-
- /// The iterator category.
- typedef std::random_access_iterator_tag iterator_category;
-
- /// Default constructor. Creates an iterator in an undefined state.
- buffers_iterator()
- : current_buffer_(),
- current_buffer_position_(0),
- begin_(),
- current_(),
- end_(),
- position_(0)
- {
- }
-
- /// Construct an iterator representing the beginning of the buffers' data.
- static buffers_iterator begin(const BufferSequence& buffers)
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
- __attribute__ ((__noinline__))
-#endif // defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
- {
- buffers_iterator new_iter;
- new_iter.begin_ = buffers.begin();
- new_iter.current_ = buffers.begin();
- new_iter.end_ = buffers.end();
- while (new_iter.current_ != new_iter.end_)
- {
- new_iter.current_buffer_ = *new_iter.current_;
- if (asio::buffer_size(new_iter.current_buffer_) > 0)
- break;
- ++new_iter.current_;
- }
- return new_iter;
- }
-
- /// Construct an iterator representing the end of the buffers' data.
- static buffers_iterator end(const BufferSequence& buffers)
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
- __attribute__ ((__noinline__))
-#endif // defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
- {
- buffers_iterator new_iter;
- new_iter.begin_ = buffers.begin();
- new_iter.current_ = buffers.begin();
- new_iter.end_ = buffers.end();
- while (new_iter.current_ != new_iter.end_)
- {
- buffer_type buffer = *new_iter.current_;
- new_iter.position_ += asio::buffer_size(buffer);
- ++new_iter.current_;
- }
- return new_iter;
- }
-
- /// Dereference an iterator.
- reference operator*() const
- {
- return dereference();
- }
-
- /// Dereference an iterator.
- pointer operator->() const
- {
- return &dereference();
- }
-
- /// Access an individual element.
- reference operator[](std::ptrdiff_t difference) const
- {
- buffers_iterator tmp(*this);
- tmp.advance(difference);
- return *tmp;
- }
-
- /// Increment operator (prefix).
- buffers_iterator& operator++()
- {
- increment();
- return *this;
- }
-
- /// Increment operator (postfix).
- buffers_iterator operator++(int)
- {
- buffers_iterator tmp(*this);
- ++*this;
- return tmp;
- }
-
- /// Decrement operator (prefix).
- buffers_iterator& operator--()
- {
- decrement();
- return *this;
- }
-
- /// Decrement operator (postfix).
- buffers_iterator operator--(int)
- {
- buffers_iterator tmp(*this);
- --*this;
- return tmp;
- }
-
- /// Addition operator.
- buffers_iterator& operator+=(std::ptrdiff_t difference)
- {
- advance(difference);
- return *this;
- }
-
- /// Subtraction operator.
- buffers_iterator& operator-=(std::ptrdiff_t difference)
- {
- advance(-difference);
- return *this;
- }
-
- /// Addition operator.
- friend buffers_iterator operator+(const buffers_iterator& iter,
- std::ptrdiff_t difference)
- {
- buffers_iterator tmp(iter);
- tmp.advance(difference);
- return tmp;
- }
-
- /// Addition operator.
- friend buffers_iterator operator+(std::ptrdiff_t difference,
- const buffers_iterator& iter)
- {
- buffers_iterator tmp(iter);
- tmp.advance(difference);
- return tmp;
- }
-
- /// Subtraction operator.
- friend buffers_iterator operator-(const buffers_iterator& iter,
- std::ptrdiff_t difference)
- {
- buffers_iterator tmp(iter);
- tmp.advance(-difference);
- return tmp;
- }
-
- /// Subtraction operator.
- friend std::ptrdiff_t operator-(const buffers_iterator& a,
- const buffers_iterator& b)
- {
- return b.distance_to(a);
- }
-
- /// Test two iterators for equality.
- friend bool operator==(const buffers_iterator& a, const buffers_iterator& b)
- {
- return a.equal(b);
- }
-
- /// Test two iterators for inequality.
- friend bool operator!=(const buffers_iterator& a, const buffers_iterator& b)
- {
- return !a.equal(b);
- }
-
- /// Compare two iterators.
- friend bool operator<(const buffers_iterator& a, const buffers_iterator& b)
- {
- return a.distance_to(b) > 0;
- }
-
- /// Compare two iterators.
- friend bool operator<=(const buffers_iterator& a, const buffers_iterator& b)
- {
- return !(b < a);
- }
-
- /// Compare two iterators.
- friend bool operator>(const buffers_iterator& a, const buffers_iterator& b)
- {
- return b < a;
- }
-
- /// Compare two iterators.
- friend bool operator>=(const buffers_iterator& a, const buffers_iterator& b)
- {
- return !(a < b);
- }
-
-private:
- // Dereference the iterator.
- reference dereference() const
- {
- return buffer_cast<pointer>(current_buffer_)[current_buffer_position_];
- }
-
- // Compare two iterators for equality.
- bool equal(const buffers_iterator& other) const
- {
- return position_ == other.position_;
- }
-
- // Increment the iterator.
- void increment()
- {
- ASIO_ASSERT(current_ != end_ && "iterator out of bounds");
- ++position_;
-
- // Check if the increment can be satisfied by the current buffer.
- ++current_buffer_position_;
- if (current_buffer_position_ != asio::buffer_size(current_buffer_))
- return;
-
- // Find the next non-empty buffer.
- ++current_;
- current_buffer_position_ = 0;
- while (current_ != end_)
- {
- current_buffer_ = *current_;
- if (asio::buffer_size(current_buffer_) > 0)
- return;
- ++current_;
- }
- }
-
- // Decrement the iterator.
- void decrement()
- {
- ASIO_ASSERT(position_ > 0 && "iterator out of bounds");
- --position_;
-
- // Check if the decrement can be satisfied by the current buffer.
- if (current_buffer_position_ != 0)
- {
- --current_buffer_position_;
- return;
- }
-
- // Find the previous non-empty buffer.
- typename BufferSequence::const_iterator iter = current_;
- while (iter != begin_)
- {
- --iter;
- buffer_type buffer = *iter;
- std::size_t buffer_size = asio::buffer_size(buffer);
- if (buffer_size > 0)
- {
- current_ = iter;
- current_buffer_ = buffer;
- current_buffer_position_ = buffer_size - 1;
- return;
- }
- }
- }
-
- // Advance the iterator by the specified distance.
- void advance(std::ptrdiff_t n)
- {
- if (n > 0)
- {
- ASIO_ASSERT(current_ != end_ && "iterator out of bounds");
- for (;;)
- {
- std::ptrdiff_t current_buffer_balance
- = asio::buffer_size(current_buffer_)
- - current_buffer_position_;
-
- // Check if the advance can be satisfied by the current buffer.
- if (current_buffer_balance > n)
- {
- position_ += n;
- current_buffer_position_ += n;
- return;
- }
-
- // Update position.
- n -= current_buffer_balance;
- position_ += current_buffer_balance;
-
- // Move to next buffer. If it is empty then it will be skipped on the
- // next iteration of this loop.
- if (++current_ == end_)
- {
- ASIO_ASSERT(n == 0 && "iterator out of bounds");
- current_buffer_ = buffer_type();
- current_buffer_position_ = 0;
- return;
- }
- current_buffer_ = *current_;
- current_buffer_position_ = 0;
- }
- }
- else if (n < 0)
- {
- std::size_t abs_n = -n;
- ASIO_ASSERT(position_ >= abs_n && "iterator out of bounds");
- for (;;)
- {
- // Check if the advance can be satisfied by the current buffer.
- if (current_buffer_position_ >= abs_n)
- {
- position_ -= abs_n;
- current_buffer_position_ -= abs_n;
- return;
- }
-
- // Update position.
- abs_n -= current_buffer_position_;
- position_ -= current_buffer_position_;
-
- // Check if we've reached the beginning of the buffers.
- if (current_ == begin_)
- {
- ASIO_ASSERT(abs_n == 0 && "iterator out of bounds");
- current_buffer_position_ = 0;
- return;
- }
-
- // Find the previous non-empty buffer.
- typename BufferSequence::const_iterator iter = current_;
- while (iter != begin_)
- {
- --iter;
- buffer_type buffer = *iter;
- std::size_t buffer_size = asio::buffer_size(buffer);
- if (buffer_size > 0)
- {
- current_ = iter;
- current_buffer_ = buffer;
- current_buffer_position_ = buffer_size;
- break;
- }
- }
- }
- }
- }
-
- // Determine the distance between two iterators.
- std::ptrdiff_t distance_to(const buffers_iterator& other) const
- {
- return other.position_ - position_;
- }
-
- buffer_type current_buffer_;
- std::size_t current_buffer_position_;
- typename BufferSequence::const_iterator begin_;
- typename BufferSequence::const_iterator current_;
- typename BufferSequence::const_iterator end_;
- std::size_t position_;
-};
-
-/// Construct an iterator representing the beginning of the buffers' data.
-template <typename BufferSequence>
-inline buffers_iterator<BufferSequence> buffers_begin(
- const BufferSequence& buffers)
-{
- return buffers_iterator<BufferSequence>::begin(buffers);
-}
-
-/// Construct an iterator representing the end of the buffers' data.
-template <typename BufferSequence>
-inline buffers_iterator<BufferSequence> buffers_end(
- const BufferSequence& buffers)
-{
- return buffers_iterator<BufferSequence>::end(buffers);
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BUFFERS_ITERATOR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/completion_condition.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/completion_condition.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/completion_condition.hpp
deleted file mode 100644
index aab7617..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/completion_condition.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// completion_condition.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_COMPLETION_CONDITION_HPP
-#define ASIO_COMPLETION_CONDITION_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 "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail {
-
-// The default maximum number of bytes to transfer in a single operation.
-enum { default_max_transfer_size = 65536 };
-
-// Adapt result of old-style completion conditions (which had a bool result
-// where true indicated that the operation was complete).
-inline std::size_t adapt_completion_condition_result(bool result)
-{
- return result ? 0 : default_max_transfer_size;
-}
-
-// Adapt result of current completion conditions (which have a size_t result
-// where 0 means the operation is complete, and otherwise the result is the
-// maximum number of bytes to transfer on the next underlying operation).
-inline std::size_t adapt_completion_condition_result(std::size_t result)
-{
- return result;
-}
-
-class transfer_all_t
-{
-public:
- typedef std::size_t result_type;
-
- template <typename Error>
- std::size_t operator()(const Error& err, std::size_t)
- {
- return !!err ? 0 : default_max_transfer_size;
- }
-};
-
-class transfer_at_least_t
-{
-public:
- typedef std::size_t result_type;
-
- explicit transfer_at_least_t(std::size_t minimum)
- : minimum_(minimum)
- {
- }
-
- template <typename Error>
- std::size_t operator()(const Error& err, std::size_t bytes_transferred)
- {
- return (!!err || bytes_transferred >= minimum_)
- ? 0 : default_max_transfer_size;
- }
-
-private:
- std::size_t minimum_;
-};
-
-class transfer_exactly_t
-{
-public:
- typedef std::size_t result_type;
-
- explicit transfer_exactly_t(std::size_t size)
- : size_(size)
- {
- }
-
- template <typename Error>
- std::size_t operator()(const Error& err, std::size_t bytes_transferred)
- {
- return (!!err || bytes_transferred >= size_) ? 0 :
- (size_ - bytes_transferred < default_max_transfer_size
- ? size_ - bytes_transferred : std::size_t(default_max_transfer_size));
- }
-
-private:
- std::size_t size_;
-};
-
-} // namespace detail
-
-/**
- * @defgroup completion_condition Completion Condition Function Objects
- *
- * Function objects used for determining when a read or write operation should
- * complete.
- */
-/*@{*/
-
-/// Return a completion condition function object that indicates that a read or
-/// write operation should continue until all of the data has been transferred,
-/// or until an error occurs.
-/**
- * This function is used to create an object, of unspecified type, that meets
- * CompletionCondition requirements.
- *
- * @par Example
- * Reading until a buffer is full:
- * @code
- * boost::array<char, 128> buf;
- * asio::error_code ec;
- * std::size_t n = asio::read(
- * sock, asio::buffer(buf),
- * asio::transfer_all(), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * // n == 128
- * }
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-unspecified transfer_all();
-#else
-inline detail::transfer_all_t transfer_all()
-{
- return detail::transfer_all_t();
-}
-#endif
-
-/// Return a completion condition function object that indicates that a read or
-/// write operation should continue until a minimum number of bytes has been
-/// transferred, or until an error occurs.
-/**
- * This function is used to create an object, of unspecified type, that meets
- * CompletionCondition requirements.
- *
- * @par Example
- * Reading until a buffer is full or contains at least 64 bytes:
- * @code
- * boost::array<char, 128> buf;
- * asio::error_code ec;
- * std::size_t n = asio::read(
- * sock, asio::buffer(buf),
- * asio::transfer_at_least(64), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * // n >= 64 && n <= 128
- * }
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-unspecified transfer_at_least(std::size_t minimum);
-#else
-inline detail::transfer_at_least_t transfer_at_least(std::size_t minimum)
-{
- return detail::transfer_at_least_t(minimum);
-}
-#endif
-
-/// Return a completion condition function object that indicates that a read or
-/// write operation should continue until an exact number of bytes has been
-/// transferred, or until an error occurs.
-/**
- * This function is used to create an object, of unspecified type, that meets
- * CompletionCondition requirements.
- *
- * @par Example
- * Reading until a buffer is full or contains exactly 64 bytes:
- * @code
- * boost::array<char, 128> buf;
- * asio::error_code ec;
- * std::size_t n = asio::read(
- * sock, asio::buffer(buf),
- * asio::transfer_exactly(64), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * // n == 64
- * }
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-unspecified transfer_exactly(std::size_t size);
-#else
-inline detail::transfer_exactly_t transfer_exactly(std::size_t size)
-{
- return detail::transfer_exactly_t(size);
-}
-#endif
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_COMPLETION_CONDITION_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/connect.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/connect.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/connect.hpp
deleted file mode 100644
index 9912238..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/connect.hpp
+++ /dev/null
@@ -1,823 +0,0 @@
-//
-// connect.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_CONNECT_HPP
-#define ASIO_CONNECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup connect asio::connect
- *
- * @brief Establishes a socket connection by trying each endpoint in a sequence.
- */
-/*@{*/
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * asio::connect(s, r.resolve(q)); @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * asio::connect(s, r.resolve(q), ec);
- * if (ec)
- * {
- * // An error occurred.
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, asio::error_code& ec);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * asio::connect(s, i, end); @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * asio::connect(s, i, end, ec);
- * if (ec)
- * {
- * // An error occurred.
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, asio::error_code& ec);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- * const asio::error_code& ec,
- * Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- * template <typename Iterator>
- * Iterator operator()(
- * const asio::error_code& ec,
- * Iterator next)
- * {
- * if (ec) std::cout << "Error: " << ec.message() << std::endl;
- * std::cout << "Trying: " << next->endpoint() << std::endl;
- * return next;
- * }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * tcp::resolver::iterator i = asio::connect(
- * s, r.resolve(q), my_connect_condition());
- * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode
- */
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, ConnectCondition connect_condition);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- * const asio::error_code& ec,
- * Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- * template <typename Iterator>
- * Iterator operator()(
- * const asio::error_code& ec,
- * Iterator next)
- * {
- * if (ec) std::cout << "Error: " << ec.message() << std::endl;
- * std::cout << "Trying: " << next->endpoint() << std::endl;
- * return next;
- * }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * tcp::resolver::iterator i = asio::connect(
- * s, r.resolve(q), my_connect_condition(), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * std::cout << "Connected to: " << i->endpoint() << std::endl;
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
- ConnectCondition connect_condition, asio::error_code& ec);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- * const asio::error_code& ec,
- * Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- * template <typename Iterator>
- * Iterator operator()(
- * const asio::error_code& ec,
- * Iterator next)
- * {
- * if (ec) std::cout << "Error: " << ec.message() << std::endl;
- * std::cout << "Trying: " << next->endpoint() << std::endl;
- * return next;
- * }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * i = asio::connect(s, i, end, my_connect_condition());
- * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode
- */
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
- Iterator end, ConnectCondition connect_condition);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- * const asio::error_code& ec,
- * Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- * template <typename Iterator>
- * Iterator operator()(
- * const asio::error_code& ec,
- * Iterator next)
- * {
- * if (ec) std::cout << "Error: " << ec.message() << std::endl;
- * std::cout << "Trying: " << next->endpoint() << std::endl;
- * return next;
- * }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * i = asio::connect(s, i, end, my_connect_condition(), ec);
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * std::cout << "Connected to: " << i->endpoint() << std::endl;
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, ConnectCondition connect_condition,
- asio::error_code& ec);
-
-/*@}*/
-
-/**
- * @defgroup async_connect asio::async_connect
- *
- * @brief Asynchronously establishes a socket connection by trying each
- * endpoint in a sequence.
- */
-/*@{*/
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * // Result of operation. if the sequence is empty, set to
- * // asio::error::not_found. Otherwise, contains the
- * // error from the last connection attempt.
- * const asio::error_code& error,
- *
- * // On success, an iterator denoting the successfully
- * // connected endpoint. Otherwise, the end iterator.
- * Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * if (!ec)
- * {
- * asio::async_connect(s, i, connect_handler);
- * }
- * }
- *
- * // ...
- *
- * void connect_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * // ...
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * // Result of operation. if the sequence is empty, set to
- * // asio::error::not_found. Otherwise, contains the
- * // error from the last connection attempt.
- * const asio::error_code& error,
- *
- * // On success, an iterator denoting the successfully
- * // connected endpoint. Otherwise, the end iterator.
- * Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * if (!ec)
- * {
- * tcp::resolver::iterator end;
- * asio::async_connect(s, i, end, connect_handler);
- * }
- * }
- *
- * // ...
- *
- * void connect_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * // ...
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
- typename Iterator, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end,
- ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- * const asio::error_code& ec,
- * Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * // Result of operation. if the sequence is empty, set to
- * // asio::error::not_found. Otherwise, contains the
- * // error from the last connection attempt.
- * const asio::error_code& error,
- *
- * // On success, an iterator denoting the successfully
- * // connected endpoint. Otherwise, the end iterator.
- * Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- * template <typename Iterator>
- * Iterator operator()(
- * const asio::error_code& ec,
- * Iterator next)
- * {
- * if (ec) std::cout << "Error: " << ec.message() << std::endl;
- * std::cout << "Trying: " << next->endpoint() << std::endl;
- * return next;
- * }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * if (!ec)
- * {
- * asio::async_connect(s, i,
- * my_connect_condition(),
- * connect_handler);
- * }
- * }
- *
- * // ...
- *
- * void connect_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * std::cout << "Connected to: " << i->endpoint() << std::endl;
- * }
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
- ConnectCondition connect_condition,
- ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- * const asio::error_code& ec,
- * Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- * // Result of operation. if the sequence is empty, set to
- * // asio::error::not_found. Otherwise, contains the
- * // error from the last connection attempt.
- * const asio::error_code& error,
- *
- * // On success, an iterator denoting the successfully
- * // connected endpoint. Otherwise, the end iterator.
- * Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- * template <typename Iterator>
- * Iterator operator()(
- * const asio::error_code& ec,
- * Iterator next)
- * {
- * if (ec) std::cout << "Error: " << ec.message() << std::endl;
- * std::cout << "Trying: " << next->endpoint() << std::endl;
- * return next;
- * }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * if (!ec)
- * {
- * tcp::resolver::iterator end;
- * asio::async_connect(s, i, end,
- * my_connect_condition(),
- * connect_handler);
- * }
- * }
- *
- * // ...
- *
- * void connect_handler(
- * const asio::error_code& ec,
- * tcp::resolver::iterator i)
- * {
- * if (ec)
- * {
- * // An error occurred.
- * }
- * else
- * {
- * std::cout << "Connected to: " << i->endpoint() << std::endl;
- * }
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator,
- typename ConnectCondition, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
- void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
- Iterator begin, Iterator end, ConnectCondition connect_condition,
- ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/connect.hpp"
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/coroutine.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/coroutine.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/coroutine.hpp
deleted file mode 100644
index 67c3cf5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/coroutine.hpp
+++ /dev/null
@@ -1,328 +0,0 @@
-//
-// coroutine.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_COROUTINE_HPP
-#define ASIO_COROUTINE_HPP
-
-namespace asio {
-namespace detail {
-
-class coroutine_ref;
-
-} // namespace detail
-
-/// Provides support for implementing stackless coroutines.
-/**
- * The @c coroutine class may be used to implement stackless coroutines. The
- * class itself is used to store the current state of the coroutine.
- *
- * Coroutines are copy-constructible and assignable, and the space overhead is
- * a single int. They can be used as a base class:
- *
- * @code class session : coroutine
- * {
- * ...
- * }; @endcode
- *
- * or as a data member:
- *
- * @code class session
- * {
- * ...
- * coroutine coro_;
- * }; @endcode
- *
- * or even bound in as a function argument using lambdas or @c bind(). The
- * important thing is that as the application maintains a copy of the object
- * for as long as the coroutine must be kept alive.
- *
- * @par Pseudo-keywords
- *
- * A coroutine is used in conjunction with certain "pseudo-keywords", which
- * are implemented as macros. These macros are defined by a header file:
- *
- * @code #include <asio/yield.hpp>@endcode
- *
- * and may conversely be undefined as follows:
- *
- * @code #include <asio/unyield.hpp>@endcode
- *
- * <b>reenter</b>
- *
- * The @c reenter macro is used to define the body of a coroutine. It takes a
- * single argument: a pointer or reference to a coroutine object. For example,
- * if the base class is a coroutine object you may write:
- *
- * @code reenter (this)
- * {
- * ... coroutine body ...
- * } @endcode
- *
- * and if a data member or other variable you can write:
- *
- * @code reenter (coro_)
- * {
- * ... coroutine body ...
- * } @endcode
- *
- * When @c reenter is executed at runtime, control jumps to the location of the
- * last @c yield or @c fork.
- *
- * The coroutine body may also be a single statement, such as:
- *
- * @code reenter (this) for (;;)
- * {
- * ...
- * } @endcode
- *
- * @b Limitation: The @c reenter macro is implemented using a switch. This
- * means that you must take care when using local variables within the
- * coroutine body. The local variable is not allowed in a position where
- * reentering the coroutine could bypass the variable definition.
- *
- * <b>yield <em>statement</em></b>
- *
- * This form of the @c yield keyword is often used with asynchronous operations:
- *
- * @code yield socket_->async_read_some(buffer(*buffer_), *this); @endcode
- *
- * This divides into four logical steps:
- *
- * @li @c yield saves the current state of the coroutine.
- * @li The statement initiates the asynchronous operation.
- * @li The resume point is defined immediately following the statement.
- * @li Control is transferred to the end of the coroutine body.
- *
- * When the asynchronous operation completes, the function object is invoked
- * and @c reenter causes control to transfer to the resume point. It is
- * important to remember to carry the coroutine state forward with the
- * asynchronous operation. In the above snippet, the current class is a
- * function object object with a coroutine object as base class or data member.
- *
- * The statement may also be a compound statement, and this permits us to
- * define local variables with limited scope:
- *
- * @code yield
- * {
- * mutable_buffers_1 b = buffer(*buffer_);
- * socket_->async_read_some(b, *this);
- * } @endcode
- *
- * <b>yield return <em>expression</em> ;</b>
- *
- * This form of @c yield is often used in generators or coroutine-based parsers.
- * For example, the function object:
- *
- * @code struct interleave : coroutine
- * {
- * istream& is1;
- * istream& is2;
- * char operator()(char c)
- * {
- * reenter (this) for (;;)
- * {
- * yield return is1.get();
- * yield return is2.get();
- * }
- * }
- * }; @endcode
- *
- * defines a trivial coroutine that interleaves the characters from two input
- * streams.
- *
- * This type of @c yield divides into three logical steps:
- *
- * @li @c yield saves the current state of the coroutine.
- * @li The resume point is defined immediately following the semicolon.
- * @li The value of the expression is returned from the function.
- *
- * <b>yield ;</b>
- *
- * This form of @c yield is equivalent to the following steps:
- *
- * @li @c yield saves the current state of the coroutine.
- * @li The resume point is defined immediately following the semicolon.
- * @li Control is transferred to the end of the coroutine body.
- *
- * This form might be applied when coroutines are used for cooperative
- * threading and scheduling is explicitly managed. For example:
- *
- * @code struct task : coroutine
- * {
- * ...
- * void operator()()
- * {
- * reenter (this)
- * {
- * while (... not finished ...)
- * {
- * ... do something ...
- * yield;
- * ... do some more ...
- * yield;
- * }
- * }
- * }
- * ...
- * };
- * ...
- * task t1, t2;
- * for (;;)
- * {
- * t1();
- * t2();
- * } @endcode
- *
- * <b>yield break ;</b>
- *
- * The final form of @c yield is used to explicitly terminate the coroutine.
- * This form is comprised of two steps:
- *
- * @li @c yield sets the coroutine state to indicate termination.
- * @li Control is transferred to the end of the coroutine body.
- *
- * Once terminated, calls to is_complete() return true and the coroutine cannot
- * be reentered.
- *
- * Note that a coroutine may also be implicitly terminated if the coroutine
- * body is exited without a yield, e.g. by return, throw or by running to the
- * end of the body.
- *
- * <b>fork <em>statement</em></b>
- *
- * The @c fork pseudo-keyword is used when "forking" a coroutine, i.e. splitting
- * it into two (or more) copies. One use of @c fork is in a server, where a new
- * coroutine is created to handle each client connection:
- *
- * @code reenter (this)
- * {
- * do
- * {
- * socket_.reset(new tcp::socket(io_service_));
- * yield acceptor->async_accept(*socket_, *this);
- * fork server(*this)();
- * } while (is_parent());
- * ... client-specific handling follows ...
- * } @endcode
- *
- * The logical steps involved in a @c fork are:
- *
- * @li @c fork saves the current state of the coroutine.
- * @li The statement creates a copy of the coroutine and either executes it
- * immediately or schedules it for later execution.
- * @li The resume point is defined immediately following the semicolon.
- * @li For the "parent", control immediately continues from the next line.
- *
- * The functions is_parent() and is_child() can be used to differentiate
- * between parent and child. You would use these functions to alter subsequent
- * control flow.
- *
- * Note that @c fork doesn't do the actual forking by itself. It is the
- * application's responsibility to create a clone of the coroutine and call it.
- * The clone can be called immediately, as above, or scheduled for delayed
- * execution using something like io_service::post().
- *
- * @par Alternate macro names
- *
- * If preferred, an application can use macro names that follow a more typical
- * naming convention, rather than the pseudo-keywords. These are:
- *
- * @li @c ASIO_CORO_REENTER instead of @c reenter
- * @li @c ASIO_CORO_YIELD instead of @c yield
- * @li @c ASIO_CORO_FORK instead of @c fork
- */
-class coroutine
-{
-public:
- /// Constructs a coroutine in its initial state.
- coroutine() : value_(0) {}
-
- /// Returns true if the coroutine is the child of a fork.
- bool is_child() const { return value_ < 0; }
-
- /// Returns true if the coroutine is the parent of a fork.
- bool is_parent() const { return !is_child(); }
-
- /// Returns true if the coroutine has reached its terminal state.
- bool is_complete() const { return value_ == -1; }
-
-private:
- friend class detail::coroutine_ref;
- int value_;
-};
-
-
-namespace detail {
-
-class coroutine_ref
-{
-public:
- coroutine_ref(coroutine& c) : value_(c.value_), modified_(false) {}
- coroutine_ref(coroutine* c) : value_(c->value_), modified_(false) {}
- ~coroutine_ref() { if (!modified_) value_ = -1; }
- operator int() const { return value_; }
- int& operator=(int v) { modified_ = true; return value_ = v; }
-private:
- void operator=(const coroutine_ref&);
- int& value_;
- bool modified_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#define ASIO_CORO_REENTER(c) \
- switch (::asio::detail::coroutine_ref _coro_value = c) \
- case -1: if (_coro_value) \
- { \
- goto terminate_coroutine; \
- terminate_coroutine: \
- _coro_value = -1; \
- goto bail_out_of_coroutine; \
- bail_out_of_coroutine: \
- break; \
- } \
- else case 0:
-
-#define ASIO_CORO_YIELD_IMPL(n) \
- for (_coro_value = (n);;) \
- if (_coro_value == 0) \
- { \
- case (n): ; \
- break; \
- } \
- else \
- switch (_coro_value ? 0 : 1) \
- for (;;) \
- case -1: if (_coro_value) \
- goto terminate_coroutine; \
- else for (;;) \
- case 1: if (_coro_value) \
- goto bail_out_of_coroutine; \
- else case 0:
-
-#define ASIO_CORO_FORK_IMPL(n) \
- for (_coro_value = -(n);; _coro_value = (n)) \
- if (_coro_value == (n)) \
- { \
- case -(n): ; \
- break; \
- } \
- else
-
-#if defined(_MSC_VER)
-# define ASIO_CORO_YIELD ASIO_CORO_YIELD_IMPL(__COUNTER__ + 1)
-# define ASIO_CORO_FORK ASIO_CORO_FORK_IMPL(__COUNTER__ + 1)
-#else // defined(_MSC_VER)
-# define ASIO_CORO_YIELD ASIO_CORO_YIELD_IMPL(__LINE__)
-# define ASIO_CORO_FORK ASIO_CORO_FORK_IMPL(__LINE__)
-#endif // defined(_MSC_VER)
-
-#endif // ASIO_COROUTINE_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[48/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfspp.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfspp.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfspp.h
deleted file mode 100644
index 2fdeec9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/hdfspp.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_HDFSPP_H_
-#define LIBHDFSPP_HDFSPP_H_
-
-#include "hdfspp/options.h"
-#include "hdfspp/status.h"
-#include "hdfspp/events.h"
-#include "hdfspp/block_location.h"
-#include "hdfspp/statinfo.h"
-#include "hdfspp/fsinfo.h"
-#include "hdfspp/content_summary.h"
-#include "hdfspp/uri.h"
-#include "hdfspp/config_parser.h"
-#include "hdfspp/locks.h"
-
-#include <functional>
-#include <memory>
-#include <set>
-#include <iostream>
-
-namespace hdfs {
-
-/**
- * An IoService manages a queue of asynchronous tasks. All libhdfs++
- * operations are filed against a particular IoService.
- *
- * When an operation is queued into an IoService, the IoService will
- * run the callback handler associated with the operation. Note that
- * the IoService must be stopped before destructing the objects that
- * post the operations.
- *
- * From an implementation point of view the hdfs::IoService provides
- * a thin wrapper over an asio::io_service object so that additional
- * instrumentation and functionality can be added.
- **/
-
-class IoService : public std::enable_shared_from_this<IoService>
-{
- public:
- static IoService *New();
- static std::shared_ptr<IoService> MakeShared();
- virtual ~IoService();
-
- /**
- * Start up as many threads as there are logical processors.
- * Return number of threads created.
- **/
- virtual unsigned int InitDefaultWorkers() = 0;
-
- /**
- * Initialize with thread_count handler threads.
- * If thread count is less than one print a log message and default to one thread.
- * Return number of threads created.
- **/
- virtual unsigned int InitWorkers(unsigned int thread_count) = 0;
-
- /**
- * Place an item on the execution queue. Will be invoked from outside of the calling context.
- **/
- virtual void PostTask(std::function<void(void)>& asyncTask) = 0;
-
- /**
- * Run the asynchronous tasks associated with this IoService.
- **/
- virtual void Run() = 0;
- /**
- * Stop running asynchronous tasks associated with this IoService.
- * All worker threads will return as soon as they finish executing their current task.
- **/
- virtual void Stop() = 0;
-};
-
-/**
- * A node exclusion rule provides a simple way of testing if the
- * client should attempt to connect to a node based on the node's
- * UUID. The FileSystem and FileHandle use the BadDataNodeTracker
- * by default. AsyncPreadSome takes an optional NodeExclusionRule
- * that will override the BadDataNodeTracker.
- **/
-class NodeExclusionRule {
- public:
- virtual ~NodeExclusionRule();
- virtual bool IsBadNode(const std::string &node_uuid) = 0;
-};
-
-/**
- * Applications opens a FileHandle to read files in HDFS.
- **/
-class FileHandle {
-public:
- /**
- * Read data from a specific position. The current implementation
- * stops at the block boundary.
- *
- * @param buf the pointer to the buffer
- * @param buf_size the size of the buffer
- * @param offset the offset the file
- *
- * The handler returns the datanode that serves the block and the number of
- * bytes has read. Status::InvalidOffset is returned when trying to begin
- * a read past the EOF.
- **/
- virtual void
- PositionRead(void *buf, size_t buf_size, uint64_t offset,
- const std::function<void(const Status &, size_t)> &handler) = 0;
- virtual Status PositionRead(void *buf, size_t buf_size, off_t offset, size_t *bytes_read) = 0;
- virtual Status Read(void *buf, size_t buf_size, size_t *bytes_read) = 0;
- virtual Status Seek(off_t *offset, std::ios_base::seekdir whence) = 0;
-
- /**
- * Cancel outstanding file operations. This is not reversable, once called
- * the handle should be disposed of.
- **/
- virtual void CancelOperations(void) = 0;
-
- /**
- * Determine if a datanode should be excluded from future operations
- * based on the return Status.
- *
- * @param status the Status object returned by InputStream::PositionRead
- * @return true if the status indicates a failure that is not recoverable
- * by the client and false otherwise.
- **/
- static bool ShouldExclude(const Status &status);
-
-
- /**
- * Sets an event callback for file-level event notifications (such as connecting
- * to the DataNode, communications errors, etc.)
- *
- * Many events are defined in hdfspp/events.h; the consumer should also expect
- * to be called with many private events, which can be ignored.
- *
- * @param callback The function to call when a reporting event occurs.
- */
- virtual void SetFileEventCallback(file_event_callback callback) = 0;
-
- /* how many bytes have been successfully read */
- virtual uint64_t get_bytes_read() = 0;
-
- /* resets the number of bytes read to zero */
- virtual void clear_bytes_read() = 0;
-
- virtual ~FileHandle();
-};
-
-/**
- * FileSystem implements APIs to interact with HDFS.
- **/
-class FileSystem {
- public:
- //Returns the default maximum depth for recursive Find tool
- static uint32_t GetDefaultFindMaxDepth();
-
- //Returns the default permission mask
- static uint16_t GetDefaultPermissionMask();
-
- //Checks if the given permission mask is valid
- static Status CheckValidPermissionMask(uint16_t permissions);
-
- //Checks if replication value is valid
- static Status CheckValidReplication(uint16_t replication);
-
- /**
- * Create a new instance of the FileSystem object. The call
- * initializes the RPC connections to the NameNode and returns an
- * FileSystem object.
- *
- * Note: The FileSystem takes ownership of the IoService passed in the
- * constructor. The FileSystem destructor will call delete on it.
- *
- * If user_name is blank, the current user will be used for a default.
- **/
- static FileSystem *New(
- IoService *&io_service, const std::string &user_name, const Options &options);
-
- /**
- * Works the same as the other FileSystem::New but takes a copy of an existing IoService.
- * The shared IoService is expected to already have worker threads initialized.
- **/
- static FileSystem *New(
- std::shared_ptr<IoService>, const std::string &user_name, const Options &options);
-
- /**
- * Returns a new instance with default user and option, with the default IOService.
- **/
- static FileSystem *New();
-
- /**
- * Callback type for async FileSystem::Connect calls.
- * Provides the result status and instance pointer to the handler.
- **/
- typedef std::function<void(const Status& result_status, FileSystem *created_fs)> AsyncConnectCallback;
-
- /**
- * Connect directly to the specified namenode using the host and port (service).
- **/
- virtual void Connect(const std::string &server, const std::string &service,
- const AsyncConnectCallback &handler) = 0;
-
- /* Synchronous call of Connect */
- virtual Status Connect(const std::string &server, const std::string &service) = 0;
-
-
- /**
- * Connects to the hdfs instance indicated by the defaultFs value of the
- * Options structure.
- *
- * If no defaultFs is defined, returns an error.
- */
- virtual void ConnectToDefaultFs(
- const AsyncConnectCallback& handler) = 0;
- virtual Status ConnectToDefaultFs() = 0;
-
- /**
- * Cancels any attempts to connect to the HDFS cluster.
- * FileSystem is expected to be destroyed after invoking this.
- */
- virtual bool CancelPendingConnect() = 0;
-
- /**
- * Open a file on HDFS. The call issues an RPC to the NameNode to
- * gather the locations of all blocks in the file and to return a
- * new instance of the @ref InputStream object.
- **/
- virtual void
- Open(const std::string &path,
- const std::function<void(const Status &, FileHandle *)> &handler) = 0;
- virtual Status Open(const std::string &path, FileHandle **handle) = 0;
-
- /**
- * Get the block size for the given file.
- * @param path The path to the file
- */
- virtual void GetPreferredBlockSize(const std::string &path,
- const std::function<void(const Status &, const uint64_t &)> &handler) = 0;
- virtual Status GetPreferredBlockSize(const std::string &path, uint64_t & block_size) = 0;
-
- /**
- * Set replication for an existing file.
- * <p>
- * The NameNode sets replication to the new value and returns.
- * The actual block replication is not expected to be performed during
- * this method call. The blocks will be populated or removed in the
- * background as the result of the routine block maintenance procedures.
- *
- * @param path file name
- * @param replication new replication
- */
- virtual void SetReplication(const std::string & path, int16_t replication, std::function<void(const Status &)> handler) = 0;
- virtual Status SetReplication(const std::string & path, int16_t replication) = 0;
-
- /**
- * Sets the modification and access time of the file to the specified time.
- * @param path The string representation of the path
- * @param mtime The number of milliseconds since Jan 1, 1970.
- * Setting mtime to -1 means that modification time should not
- * be set by this call.
- * @param atime The number of milliseconds since Jan 1, 1970.
- * Setting atime to -1 means that access time should not be set
- * by this call.
- */
- virtual void SetTimes(const std::string & path, uint64_t mtime, uint64_t atime, std::function<void(const Status &)> handler) = 0;
- virtual Status SetTimes(const std::string & path, uint64_t mtime, uint64_t atime) = 0;
-
- /**
- * Returns metadata about the file if the file/directory exists.
- **/
- virtual void
- GetFileInfo(const std::string &path,
- const std::function<void(const Status &, const StatInfo &)> &handler) = 0;
- virtual Status GetFileInfo(const std::string &path, StatInfo & stat_info) = 0;
-
- /**
- * Returns the number of directories, files and bytes under the given path
- **/
- virtual void
- GetContentSummary(const std::string &path,
- const std::function<void(const Status &, const ContentSummary &)> &handler) = 0;
- virtual Status GetContentSummary(const std::string &path, ContentSummary & stat_info) = 0;
-
- /**
- * Retrieves the file system information as a whole, such as the total raw size of all files in the filesystem
- * and the raw capacity of the filesystem
- *
- * FsInfo struct is populated by GetFsStats
- **/
- virtual void GetFsStats(
- const std::function<void(const Status &, const FsInfo &)> &handler) = 0;
- virtual Status GetFsStats(FsInfo & fs_info) = 0;
-
- /**
- * Retrieves the files contained in a directory and returns the metadata
- * for each of them.
- *
- * The asynchronous method will return batches of files; the consumer must
- * return true if they want more files to be delivered. The final bool
- * parameter in the callback will be set to false if this is the final
- * batch of files.
- *
- * The synchronous method will return all files in the directory.
- *
- * Path must be an absolute path in the hdfs filesytem (e.g. /tmp/foo/bar)
- **/
- virtual void
- GetListing(const std::string &path,
- const std::function<bool(const Status &, const std::vector<StatInfo> &, bool)> &handler) = 0;
- virtual Status GetListing(const std::string &path, std::vector<StatInfo> * stat_infos) = 0;
-
- /**
- * Returns the locations of all known blocks for the indicated file (or part of it), or an error
- * if the information could not be found
- */
- virtual void GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- const std::function<void(const Status &, std::shared_ptr<FileBlockLocation> locations)> ) = 0;
- virtual Status GetBlockLocations(const std::string & path, uint64_t offset, uint64_t length,
- std::shared_ptr<FileBlockLocation> * locations) = 0;
-
- /**
- * Creates a new directory
- *
- * @param path Path to the directory to be created (must be non-empty)
- * @param permissions Permissions for the new directory (negative value for the default permissions)
- * @param createparent Create parent directories if they do not exist (may not be empty)
- */
- virtual void Mkdirs(const std::string & path, uint16_t permissions, bool createparent,
- std::function<void(const Status &)> handler) = 0;
- virtual Status Mkdirs(const std::string & path, uint16_t permissions, bool createparent) = 0;
-
- /**
- * Delete the given file or directory from the file system.
- * <p>
- * same as delete but provides a way to avoid accidentally
- * deleting non empty directories programmatically.
- * @param path existing name (must be non-empty)
- * @param recursive if true deletes a non empty directory recursively
- */
- virtual void Delete(const std::string &path, bool recursive,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status Delete(const std::string &path, bool recursive) = 0;
-
- /**
- * Rename - Rename file.
- * @param oldPath The path of the source file. (must be non-empty)
- * @param newPath The path of the destination file. (must be non-empty)
- */
- virtual void Rename(const std::string &oldPath, const std::string &newPath,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status Rename(const std::string &oldPath, const std::string &newPath) = 0;
-
- /**
- * Set permissions for an existing file/directory.
- *
- * @param path the path to the file or directory
- * @param permissions the bitmask to set it to (should be between 0 and 01777)
- */
- virtual void SetPermission(const std::string & path, uint16_t permissions,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status SetPermission(const std::string & path, uint16_t permissions) = 0;
-
- /**
- * Set Owner of a path (i.e. a file or a directory).
- * The parameters username and groupname can be empty.
- * @param path file path
- * @param username If it is empty, the original username remains unchanged.
- * @param groupname If it is empty, the original groupname remains unchanged.
- */
- virtual void SetOwner(const std::string & path, const std::string & username,
- const std::string & groupname, const std::function<void(const Status &)> &handler) = 0;
- virtual Status SetOwner(const std::string & path,
- const std::string & username, const std::string & groupname) = 0;
-
- /**
- * Finds all files matching the specified name recursively starting from the
- * specified directory. Returns metadata for each of them.
- *
- * Example: Find("/dir?/tree*", "some?file*name")
- *
- * @param path Absolute path at which to begin search, can have wild cards (must be non-blank)
- * @param name Name to find, can also have wild cards (must be non-blank)
- *
- * The asynchronous method will return batches of files; the consumer must
- * return true if they want more files to be delivered. The final bool
- * parameter in the callback will be set to false if this is the final
- * batch of files.
- *
- * The synchronous method will return matching files.
- **/
- virtual void
- Find(const std::string &path, const std::string &name, const uint32_t maxdepth,
- const std::function<bool(const Status &, const std::vector<StatInfo> & , bool)> &handler) = 0;
- virtual Status Find(const std::string &path, const std::string &name,
- const uint32_t maxdepth, std::vector<StatInfo> * stat_infos) = 0;
-
-
- /*****************************************************************************
- * FILE SYSTEM SNAPSHOT FUNCTIONS
- ****************************************************************************/
-
- /**
- * Creates a snapshot of a snapshottable directory specified by path
- *
- * @param path Path to the directory to be snapshotted (must be non-empty)
- * @param name Name to be given to the created snapshot (may be empty)
- **/
- virtual void CreateSnapshot(const std::string &path, const std::string &name,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status CreateSnapshot(const std::string &path,
- const std::string &name) = 0;
-
- /**
- * Deletes the directory snapshot specified by path and name
- *
- * @param path Path to the snapshotted directory (must be non-empty)
- * @param name Name of the snapshot to be deleted (must be non-empty)
- **/
- virtual void DeleteSnapshot(const std::string &path, const std::string &name,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status DeleteSnapshot(const std::string &path,
- const std::string &name) = 0;
-
- /**
- * Renames the directory snapshot specified by path from old_name to new_name
- *
- * @param path Path to the snapshotted directory (must be non-blank)
- * @param old_name Current name of the snapshot (must be non-blank)
- * @param new_name New name of the snapshot (must be non-blank)
- **/
- virtual void RenameSnapshot(const std::string &path, const std::string &old_name,
- const std::string &new_name, const std::function<void(const Status &)> &handler) = 0;
- virtual Status RenameSnapshot(const std::string &path, const std::string &old_name,
- const std::string &new_name) = 0;
-
- /**
- * Allows snapshots to be made on the specified directory
- *
- * @param path Path to the directory to be made snapshottable (must be non-empty)
- **/
- virtual void AllowSnapshot(const std::string &path,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status AllowSnapshot(const std::string &path) = 0;
-
- /**
- * Disallows snapshots to be made on the specified directory
- *
- * @param path Path to the directory to be made non-snapshottable (must be non-empty)
- **/
- virtual void DisallowSnapshot(const std::string &path,
- const std::function<void(const Status &)> &handler) = 0;
- virtual Status DisallowSnapshot(const std::string &path) = 0;
-
- /**
- * Note that it is an error to destroy the filesystem from within a filesystem
- * callback. It will lead to a deadlock and the termination of the process.
- */
- virtual ~FileSystem();
-
-
- /**
- * Sets an event callback for fs-level event notifications (such as connecting
- * to the NameNode, communications errors with the NN, etc.)
- *
- * Many events are defined in hdfspp/events.h; the consumer should also expect
- * to be called with many private events, which can be ignored.
- *
- * @param callback The function to call when a reporting event occurs.
- */
- virtual void SetFsEventCallback(fs_event_callback callback) = 0;
-
- virtual Options get_options() = 0;
-
- virtual std::string get_cluster_name() = 0;
-};
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/locks.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/locks.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/locks.h
deleted file mode 100644
index 3dfeab4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/locks.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_HDFS_LOCKS_H_
-#define COMMON_HDFS_LOCKS_H_
-
-#include <stdexcept>
-#include <string>
-#include <atomic>
-#include <mutex>
-#include <memory>
-
-namespace hdfs
-{
-
-//
-// Thrown by LockGuard to indicate that it was unable to acquire a mutex
-// what_str should contain info about what caused the failure
-//
-class LockFailure : public std::runtime_error {
- public:
- LockFailure(const char *what_str) : std::runtime_error(what_str) {};
- LockFailure(const std::string& what_str) : std::runtime_error(what_str) {};
-};
-
-//
-// A pluggable mutex type to allow client code to share mutexes it may
-// already use to protect certain system resources. Certain shared
-// libraries have some procedures that aren't always implemented in a thread
-// safe manner. If libhdfs++ and the code linking it depend on the same
-// library this provides a mechanism to coordinate safe access.
-//
-// Interface provided is intended to be similar to std::mutex. If the lock
-// can't be aquired it may throw LockFailure from the lock method. If lock
-// does fail libhdfs++ is expected fail as cleanly as possible e.g.
-// FileSystem::Mkdirs might return a MutexError but a subsequent call may be
-// successful.
-//
-class Mutex {
- public:
- virtual ~Mutex() {};
- virtual void lock() = 0;
- virtual void unlock() = 0;
- virtual std::string str() = 0;
-};
-
-//
-// LockGuard works in a similar manner to std::lock_guard: it locks the mutex
-// in the constructor and unlocks it in the destructor.
-// Failure to acquire the mutex in the constructor will result in throwing a
-// LockFailure exception.
-//
-class LockGuard {
- public:
- LockGuard(Mutex *m);
- ~LockGuard();
- private:
- Mutex *_mtx;
-};
-
-//
-// Manage instances of hdfs::Mutex that are intended to be global to the
-// process.
-//
-// LockManager's InitLocks method provides a mechanism for the calling
-// application to share its own implementations of hdfs::Mutex. It must be
-// called prior to instantiating any FileSystem objects and can only be
-// called once. If a lock is not provided a default mutex type wrapping
-// std::mutex is used as a default.
-//
-
-class LockManager {
- public:
- // Initializes with a default set of C++11 style mutexes
- static bool InitLocks(Mutex *gssapi);
- static Mutex *getGssapiMutex();
-
- // Tests only, implementation may no-op on release builds.
- // Reset _finalized to false and set all Mutex* members to default values.
- static void TEST_reset_manager();
- static Mutex *TEST_get_default_mutex();
- private:
- // Used only in tests.
- static Mutex *TEST_default_mutex;
- // Use to synchronize calls into GSSAPI/Kerberos libs
- static Mutex *gssapiMtx;
-
- // Prevent InitLocks from being called more than once
- // Allows all locks to be set a single time atomically
- static std::mutex _state_lock;
- static bool _finalized;
-};
-
-} // end namespace hdfs
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/log.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/log.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/log.h
deleted file mode 100644
index 0371951..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/log.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIBHDFSPP_HDFS_LOG
-#define LIBHDFSPP_HDFS_LOG
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Things that are part of the public API but are specific to logging live here.
- * Added to avoid including the whole public API into the implementation of the logger.
- **/
-
-/* logging levels, compatible with enum in lib/common/logging.cc */
-#define HDFSPP_LOG_LEVEL_TRACE 0
-#define HDFSPP_LOG_LEVEL_DEBUG 1
-#define HDFSPP_LOG_LEVEL_INFO 2
-#define HDFSPP_LOG_LEVEL_WARN 3
-#define HDFSPP_LOG_LEVEL_ERROR 4
-
-/* components emitting messages, compatible with enum lib/common/logging.cc */
-#define HDFSPP_LOG_COMPONENT_UNKNOWN 1 << 0
-#define HDFSPP_LOG_COMPONENT_RPC 1 << 1
-#define HDFSPP_LOG_COMPONENT_BLOCKREADER 1 << 2
-#define HDFSPP_LOG_COMPONENT_FILEHANDLE 1 << 3
-#define HDFSPP_LOG_COMPONENT_FILESYSTEM 1 << 4
-
-/**
- * POD struct for C to consume (C++ interface gets to take advantage of RAII)
- **/
-typedef struct {
- const char *msg;
- int level;
- int component;
- const char *file_name;
- int file_line;
-} LogData;
-
-#ifdef __cplusplus
-} // end extern C
-#endif
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/options.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/options.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/options.h
deleted file mode 100644
index 8d29a40..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/options.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_OPTIONS_H_
-#define LIBHDFSPP_OPTIONS_H_
-
-#include "hdfspp/uri.h"
-
-#include <string>
-#include <vector>
-#include <map>
-
-namespace hdfs {
-
-
-struct NamenodeInfo {
- NamenodeInfo(const std::string &nameservice_, const std::string &nodename_, const URI &uri_) :
- nameservice(nameservice_), name(nodename_), uri(uri_) {}
- NamenodeInfo(){}
- //nameservice this belongs to
- std::string nameservice;
- //node name
- std::string name;
- //host:port
- URI uri;
-
- //get server hostname and port (aka service)
- std::string get_host() const;
- std::string get_port() const;
-};
-
-/**
- * Options to control the behavior of the libhdfspp library.
- **/
-struct Options {
- /**
- * Time out of RPC requests in milliseconds.
- * Default: 30000
- **/
- int rpc_timeout;
- static const int kDefaultRpcTimeout = 30000;
-
- /**
- * Time to wait for an RPC connection before failing
- * Default: 30000
- **/
- int rpc_connect_timeout;
- static const int kDefaultRpcConnectTimeout = 30000;
-
- /**
- * Maximum number of retries for RPC operations
- **/
- int max_rpc_retries;
- static const int kNoRetry = 0;
- static const int kDefaultMaxRpcRetries = kNoRetry;
-
- /**
- * Number of ms to wait between retry of RPC operations
- **/
- int rpc_retry_delay_ms;
- static const int kDefaultRpcRetryDelayMs = 10000;
-
- /**
- * Exclusion time for failed datanodes in milliseconds.
- * Default: 60000
- **/
- unsigned int host_exclusion_duration;
- static const unsigned int kDefaultHostExclusionDuration = 600000;
-
- /**
- * URI to connect to if no host:port are specified in connect
- */
- URI defaultFS;
-
- /**
- * Namenodes used to provide HA for this cluster if applicable
- **/
- std::map<std::string, std::vector<NamenodeInfo>> services;
-
-
- /**
- * Client failover attempts before failover gives up
- **/
- int failover_max_retries;
- static const unsigned int kDefaultFailoverMaxRetries = 4;
-
- /**
- * Client failover attempts before failover gives up if server
- * connection is timing out.
- **/
- int failover_connection_max_retries;
- static const unsigned int kDefaultFailoverConnectionMaxRetries = 0;
-
- /*
- * Which form of authentication to use with the server
- * Default: simple
- */
- enum Authentication {
- kSimple,
- kKerberos
- };
- Authentication authentication;
- static const Authentication kDefaultAuthentication = kSimple;
-
- /**
- * Block size in bytes.
- * Default: 128 * 1024 * 1024 = 134217728
- **/
- long block_size;
- static const long kDefaultBlockSize = 128*1024*1024;
-
- /**
- * Asio worker thread count
- * default: -1, indicates number of hardware threads
- **/
- int io_threads_;
- static const int kDefaultIoThreads = -1;
-
- Options();
-};
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/statinfo.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/statinfo.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/statinfo.h
deleted file mode 100644
index 1da1f18..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/statinfo.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef HDFSPP_STATINFO_H_
-#define HDFSPP_STATINFO_H_
-
-#include <string>
-
-namespace hdfs {
-
-/**
- * Information that is assumed to be unchanging about a file for the duration of
- * the operations.
- */
-struct StatInfo {
- enum FileType {
- IS_DIR = 1,
- IS_FILE = 2,
- IS_SYMLINK = 3
- };
-
- int file_type;
- std::string path;
- std::string full_path;
- uint64_t length;
- uint64_t permissions; //Octal number as in POSIX permissions; e.g. 0777
- std::string owner;
- std::string group;
- uint64_t modification_time;
- uint64_t access_time;
- std::string symlink;
- uint32_t block_replication;
- uint64_t blocksize;
- uint64_t fileid;
- uint64_t children_num;
-
- StatInfo();
-
- //Converts StatInfo object to std::string (hdfs_ls format)
- std::string str() const;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
deleted file mode 100644
index 718e530..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef LIBHDFSPP_STATUS_H_
-#define LIBHDFSPP_STATUS_H_
-
-#include <string>
-#include <system_error>
-
-namespace hdfs {
-
-class Status {
- public:
- // Create a success status.
- Status() : code_(0) {}
-
- // Note: Avoid calling the Status constructors directly, call the factory methods instead
-
- // Used for common status types
- Status(int code, const char *msg);
- // Used for server side exceptions reported through RpcResponseProto and similar
- Status(int code, const char *exception_class, const char *exception_details);
-
- // Factory methods
- static Status OK();
- static Status InvalidArgument(const char *msg);
- static Status ResourceUnavailable(const char *msg);
- static Status Unimplemented();
- static Status Exception(const char *exception_class_name, const char *exception_details);
- static Status Error(const char *error_message);
- static Status AuthenticationFailed();
- static Status AuthenticationFailed(const char *msg);
- static Status AuthorizationFailed();
- static Status AuthorizationFailed(const char *msg);
- static Status Canceled();
- static Status PathNotFound(const char *msg);
- static Status InvalidOffset(const char *msg);
- static Status PathIsNotDirectory(const char *msg);
- static Status MutexError(const char *msg);
-
- // success
- bool ok() const { return code_ == 0; }
-
- bool is_invalid_offset() const { return code_ == kInvalidOffset; }
-
- // contains ENOENT error
- bool pathNotFound() const { return code_ == kPathNotFound; }
-
- // Returns the string "OK" for success.
- std::string ToString() const;
-
- // get error code
- int code() const { return code_; }
-
- // if retry can possibly recover an error
- bool notWorthRetry() const;
-
- enum Code {
- kOk = 0,
- kInvalidArgument = static_cast<unsigned>(std::errc::invalid_argument),
- kResourceUnavailable = static_cast<unsigned>(std::errc::resource_unavailable_try_again),
- kUnimplemented = static_cast<unsigned>(std::errc::function_not_supported),
- kOperationCanceled = static_cast<unsigned>(std::errc::operation_canceled),
- kPermissionDenied = static_cast<unsigned>(std::errc::permission_denied),
- kPathNotFound = static_cast<unsigned>(std::errc::no_such_file_or_directory),
- kNotADirectory = static_cast<unsigned>(std::errc::not_a_directory),
- kFileAlreadyExists = static_cast<unsigned>(std::errc::file_exists),
- kPathIsNotEmptyDirectory = static_cast<unsigned>(std::errc::directory_not_empty),
- kBusy = static_cast<unsigned>(std::errc::device_or_resource_busy),
-
- // non-errc codes start at 256
- kException = 256,
- kAuthenticationFailed = 257,
- kAccessControlException = 258,
- kStandbyException = 259,
- kSnapshotProtocolException = 260,
- kInvalidOffset = 261,
- };
-
- std::string get_exception_class_str() const {
- return exception_class_;
- }
-
- int get_server_exception_type() const {
- return code_;
- }
-
- private:
- int code_;
- std::string msg_;
-
- std::string exception_class_;
-};
-
-}
-
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/uri.h
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/uri.h b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/uri.h
deleted file mode 100644
index d8574d1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/uri.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COMMON_HDFS_URI_H_
-#define COMMON_HDFS_URI_H_
-
-#include <iostream>
-#include <string>
-#include <vector>
-#include <stdexcept>
-
-namespace hdfs
-{
-
-class uri_parse_error : public std::invalid_argument {
- public:
- uri_parse_error(const char *what_str) : std::invalid_argument(what_str) {}
- uri_parse_error(const std::string& what_str) : std::invalid_argument(what_str) {}
-};
-
-class URI {
-public:
- // Parse a string into a URI. Throw a hdfs::uri_parse_error if URI is malformed.
- static URI parse_from_string(const std::string &str);
-
- // URI encode/decode strings
- static std::string encode (const std::string &input);
- static std::string decode (const std::string &input);
-
- URI();
-
- std::string get_scheme(bool encoded_output=false) const;
-
- void set_scheme(const std::string &s, bool encoded_input=false);
-
- // empty if none.
- std::string get_host(bool encoded_output=false) const;
-
- void set_host(const std::string& h, bool encoded_input=false);
-
- // true if port has been set
- bool has_port() const;
-
- // undefined if port hasn't been set
- uint16_t get_port() const;
-
- // use default if port hasn't been set
- uint16_t get_port_or_default(uint16_t default_val) const;
-
- void set_port(uint16_t p);
-
- void clear_port();
-
- std::string get_path(bool encoded_output=false) const;
-
- void set_path(const std::string &p, bool encoded_input=false);
-
- void add_path(const std::string &p, bool encoded_input=false);
-
- std::vector<std::string> get_path_elements(bool encoded_output=false) const;
-
- struct Query {
- Query(const std::string& key, const std::string& val);
- std::string key;
- std::string value;
- };
-
- std::string get_query(bool encoded_output=false) const;
-
- std::vector<Query> get_query_elements(bool encoded_output=false) const;
-
- // Not that set_query must always pass in encoded strings
- void set_query(const std::string &q);
-
- // Adds a parameter onto the query; does not check if it already exists
- // e.g. parseFromString("foo?bar=baz").addQuery("bing","bang")
- // would leave "bar=baz&bing=bang" as the query
- void add_query(const std::string &name, const std::string & value, bool encoded_input=false);
-
- // Removes the query part if exists
- // e.g. parseFromString("foo?bar=baz&bing=bang&bar=bong").removeQueries("bar")
- // would leave bing=bang as the query
- void remove_query(const std::string &q_name, bool encoded_input=false);
-
- std::string get_fragment(bool encoded_output=false) const;
-
- void set_fragment(const std::string &f, bool encoded_input=false);
-
- std::string str(bool encoded_output=true) const;
-
- // Get a string with each URI field printed on a seperate line
- std::string GetDebugString() const;
-private:
- // These are stored in encoded form
- std::string scheme;
- std::string user;
- std::string pass;
- std::string host;
- std::vector<std::string> path;
- std::vector<Query> queries;
- std::string fragment;
- // implicitly narrowed to uint16_t if positive
- // -1 to indicate uninitialized
- int32_t _port;
-
- // URI encoding helpers
- static std::string from_encoded(bool encoded_output, const std::string & input);
- static std::string to_encoded(bool encoded_input, const std::string & input);
-
- bool has_authority() const;
- std::string build_authority(bool encoded_output) const;
-
- std::string build_path(bool encoded_output) const;
- void parse_path(bool input_encoded, const std::string &input_path);
-};
-
-inline std::ostream& operator<<(std::ostream &out, const URI &uri) {
- return out << uri.str();
-}
-
-}
-#endif
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/CMakeLists.txt
deleted file mode 100644
index c851597..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_subdirectory(common)
-add_subdirectory(fs)
-add_subdirectory(reader)
-add_subdirectory(rpc)
-add_subdirectory(proto)
-add_subdirectory(connection)
-add_subdirectory(bindings)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/CMakeLists.txt
deleted file mode 100644
index 93139ce..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_subdirectory(c)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/CMakeLists.txt
deleted file mode 100644
index 98b081f..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/bindings/c/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-
-add_library(bindings_c_obj OBJECT hdfs.cc)
-add_dependencies(bindings_c_obj fs rpc reader proto common fs rpc reader proto common)
-add_library(bindings_c $<TARGET_OBJECTS:bindings_c_obj>)
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[16/51] [abbrv] [partial] hadoop git commit: Revert "Merge branch
'trunk' into HDFS-7240"
Posted by ae...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_object_handle_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_object_handle_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_object_handle_service.hpp
deleted file mode 100644
index b937f8c..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_object_handle_service.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// detail/win_object_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// 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_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP
-#define ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_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_HAS_WINDOWS_OBJECT_HANDLE)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/wait_handler.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_object_handle_service
-{
-public:
- // The native type of an object handle.
- typedef HANDLE native_handle_type;
-
- // The implementation type of the object handle.
- class implementation_type
- {
- public:
- // Default constructor.
- implementation_type()
- : handle_(INVALID_HANDLE_VALUE),
- wait_handle_(INVALID_HANDLE_VALUE),
- owner_(0),
- next_(0),
- prev_(0)
- {
- }
-
- private:
- // Only this service will have access to the internal values.
- friend class win_object_handle_service;
-
- // The native object handle representation. May be accessed or modified
- // without locking the mutex.
- native_handle_type handle_;
-
- // The handle used to unregister the wait operation. The mutex must be
- // locked when accessing or modifying this member.
- HANDLE wait_handle_;
-
- // The operations waiting on the object handle. If there is a registered
- // wait then the mutex must be locked when accessing or modifying this
- // member
- op_queue<wait_op> op_queue_;
-
- // The service instance that owns the object handle implementation.
- win_object_handle_service* owner_;
-
- // Pointers to adjacent handle implementations in linked list. The mutex
- // must be locked when accessing or modifying these members.
- implementation_type* next_;
- implementation_type* prev_;
- };
-
- // Constructor.
- ASIO_DECL win_object_handle_service(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new handle implementation.
- ASIO_DECL void construct(implementation_type& impl);
-
- // Move-construct a new handle implementation.
- ASIO_DECL void move_construct(implementation_type& impl,
- implementation_type& other_impl);
-
- // Move-assign from another handle implementation.
- ASIO_DECL void move_assign(implementation_type& impl,
- win_object_handle_service& other_service,
- implementation_type& other_impl);
-
- // Destroy a handle implementation.
- ASIO_DECL void destroy(implementation_type& impl);
-
- // Assign a native handle to a handle implementation.
- ASIO_DECL asio::error_code assign(implementation_type& impl,
- const native_handle_type& handle, asio::error_code& ec);
-
- // Determine whether the handle is open.
- bool is_open(const implementation_type& impl) const
- {
- return impl.handle_ != INVALID_HANDLE_VALUE && impl.handle_ != 0;
- }
-
- // Destroy a handle implementation.
- ASIO_DECL asio::error_code close(implementation_type& impl,
- asio::error_code& ec);
-
- // Get the native handle representation.
- native_handle_type native_handle(const implementation_type& impl) const
- {
- return impl.handle_;
- }
-
- // Cancel all operations associated with the handle.
- ASIO_DECL asio::error_code cancel(implementation_type& impl,
- asio::error_code& ec);
-
- // Perform a synchronous wait for the object to enter a signalled state.
- ASIO_DECL void wait(implementation_type& impl,
- asio::error_code& ec);
-
- /// Start an asynchronous wait.
- template <typename Handler>
- void async_wait(implementation_type& impl, Handler& handler)
- {
- // Allocate and construct an operation to wrap the handler.
- typedef wait_handler<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "object_handle", &impl, "async_wait"));
-
- start_wait_op(impl, p.p);
- p.v = p.p = 0;
- }
-
-private:
- // Helper function to start an asynchronous wait operation.
- ASIO_DECL void start_wait_op(implementation_type& impl, wait_op* op);
-
- // Helper function to register a wait operation.
- ASIO_DECL void register_wait_callback(
- implementation_type& impl, mutex::scoped_lock& lock);
-
- // Callback function invoked when the registered wait completes.
- static ASIO_DECL VOID CALLBACK wait_callback(
- PVOID param, BOOLEAN timeout);
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex to protect access to internal state.
- mutex mutex_;
-
- // The head of a linked list of all implementations.
- implementation_type* impl_list_;
-
- // Flag to indicate that the dispatcher has been shut down.
- bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_object_handle_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#endif // ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_static_mutex.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_static_mutex.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_static_mutex.hpp
deleted file mode 100644
index 7d0251a..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_static_mutex.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// detail/win_static_mutex.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_DETAIL_WIN_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_WIN_STATIC_MUTEX_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_WINDOWS)
-
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct win_static_mutex
-{
- typedef asio::detail::scoped_lock<win_static_mutex> scoped_lock;
-
- // Initialise the mutex.
- ASIO_DECL void init();
-
- // Initialisation must be performed in a separate function to the "public"
- // init() function since the compiler does not support the use of structured
- // exceptions and C++ exceptions in the same function.
- ASIO_DECL int do_init();
-
- // Lock the mutex.
- void lock()
- {
- ::EnterCriticalSection(&crit_section_);
- }
-
- // Unlock the mutex.
- void unlock()
- {
- ::LeaveCriticalSection(&crit_section_);
- }
-
- bool initialised_;
- ::CRITICAL_SECTION crit_section_;
-};
-
-#if defined(UNDER_CE)
-# define ASIO_WIN_STATIC_MUTEX_INIT { false, { 0, 0, 0, 0, 0 } }
-#else // defined(UNDER_CE)
-# define ASIO_WIN_STATIC_MUTEX_INIT { false, { 0, 0, 0, 0, 0, 0 } }
-#endif // defined(UNDER_CE)
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_static_mutex.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_STATIC_MUTEX_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_thread.hpp
deleted file mode 100644
index 0f8abc4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_thread.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// detail/win_thread.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_DETAIL_WIN_THREAD_HPP
-#define ASIO_DETAIL_WIN_THREAD_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_WINDOWS) && !defined(UNDER_CE)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-ASIO_DECL unsigned int __stdcall win_thread_function(void* arg);
-
-#if defined(WINVER) && (WINVER < 0x0500)
-ASIO_DECL void __stdcall apc_function(ULONG data);
-#else
-ASIO_DECL void __stdcall apc_function(ULONG_PTR data);
-#endif
-
-template <typename T>
-class win_thread_base
-{
-public:
- static bool terminate_threads()
- {
- return ::InterlockedExchangeAdd(&terminate_threads_, 0) != 0;
- }
-
- static void set_terminate_threads(bool b)
- {
- ::InterlockedExchange(&terminate_threads_, b ? 1 : 0);
- }
-
-private:
- static long terminate_threads_;
-};
-
-template <typename T>
-long win_thread_base<T>::terminate_threads_ = 0;
-
-class win_thread
- : private noncopyable,
- public win_thread_base<win_thread>
-{
-public:
- // Constructor.
- template <typename Function>
- win_thread(Function f, unsigned int stack_size = 0)
- : thread_(0),
- exit_event_(0)
- {
- start_thread(new func<Function>(f), stack_size);
- }
-
- // Destructor.
- ASIO_DECL ~win_thread();
-
- // Wait for the thread to exit.
- ASIO_DECL void join();
-
-private:
- friend ASIO_DECL unsigned int __stdcall win_thread_function(void* arg);
-
-#if defined(WINVER) && (WINVER < 0x0500)
- friend ASIO_DECL void __stdcall apc_function(ULONG);
-#else
- friend ASIO_DECL void __stdcall apc_function(ULONG_PTR);
-#endif
-
- class func_base
- {
- public:
- virtual ~func_base() {}
- virtual void run() = 0;
- ::HANDLE entry_event_;
- ::HANDLE exit_event_;
- };
-
- struct auto_func_base_ptr
- {
- func_base* ptr;
- ~auto_func_base_ptr() { delete ptr; }
- };
-
- template <typename Function>
- class func
- : public func_base
- {
- public:
- func(Function f)
- : f_(f)
- {
- }
-
- virtual void run()
- {
- f_();
- }
-
- private:
- Function f_;
- };
-
- ASIO_DECL void start_thread(func_base* arg, unsigned int stack_size);
-
- ::HANDLE thread_;
- ::HANDLE exit_event_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_thread.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_WIN_THREAD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_tss_ptr.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_tss_ptr.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_tss_ptr.hpp
deleted file mode 100644
index 48a9498..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/win_tss_ptr.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/win_tss_ptr.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_DETAIL_WIN_TSS_PTR_HPP
-#define ASIO_DETAIL_WIN_TSS_PTR_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_WINDOWS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper function to create thread-specific storage.
-ASIO_DECL DWORD win_tss_ptr_create();
-
-template <typename T>
-class win_tss_ptr
- : private noncopyable
-{
-public:
- // Constructor.
- win_tss_ptr()
- : tss_key_(win_tss_ptr_create())
- {
- }
-
- // Destructor.
- ~win_tss_ptr()
- {
- ::TlsFree(tss_key_);
- }
-
- // Get the value.
- operator T*() const
- {
- return static_cast<T*>(::TlsGetValue(tss_key_));
- }
-
- // Set the value.
- void operator=(T* value)
- {
- ::TlsSetValue(tss_key_, value);
- }
-
-private:
- // Thread-specific storage to allow unlocked access to determine whether a
- // thread is a member of the pool.
- DWORD tss_key_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_tss_ptr.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_TSS_PTR_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wince_thread.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wince_thread.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wince_thread.hpp
deleted file mode 100644
index 5d33199..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/wince_thread.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// detail/wince_thread.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_DETAIL_WINCE_THREAD_HPP
-#define ASIO_DETAIL_WINCE_THREAD_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_WINDOWS) && defined(UNDER_CE)
-
-#include <memory>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-DWORD WINAPI wince_thread_function(LPVOID arg);
-
-class wince_thread
- : private noncopyable
-{
-public:
- // Constructor.
- template <typename Function>
- wince_thread(Function f, unsigned int = 0)
- {
- std::auto_ptr<func_base> arg(new func<Function>(f));
- DWORD thread_id = 0;
- thread_ = ::CreateThread(0, 0, wince_thread_function,
- arg.get(), 0, &thread_id);
- if (!thread_)
- {
- DWORD last_error = ::GetLastError();
- asio::error_code ec(last_error,
- asio::error::get_system_category());
- asio::detail::throw_error(ec, "thread");
- }
- arg.release();
- }
-
- // Destructor.
- ~wince_thread()
- {
- ::CloseHandle(thread_);
- }
-
- // Wait for the thread to exit.
- void join()
- {
- ::WaitForSingleObject(thread_, INFINITE);
- }
-
-private:
- friend DWORD WINAPI wince_thread_function(LPVOID arg);
-
- class func_base
- {
- public:
- virtual ~func_base() {}
- virtual void run() = 0;
- };
-
- template <typename Function>
- class func
- : public func_base
- {
- public:
- func(Function f)
- : f_(f)
- {
- }
-
- virtual void run()
- {
- f_();
- }
-
- private:
- Function f_;
- };
-
- ::HANDLE thread_;
-};
-
-inline DWORD WINAPI wince_thread_function(LPVOID arg)
-{
- std::auto_ptr<wince_thread::func_base> func(
- static_cast<wince_thread::func_base*>(arg));
- func->run();
- return 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_WINCE_THREAD_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_manager.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_manager.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_manager.hpp
deleted file mode 100644
index b02c696..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_manager.hpp
+++ /dev/null
@@ -1,294 +0,0 @@
-//
-// detail/winrt_async_manager.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_DETAIL_WINRT_ASYNC_MANAGER_HPP
-#define ASIO_DETAIL_WINRT_ASYNC_MANAGER_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_WINDOWS_RUNTIME)
-
-#include <future>
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_async_manager
- : public asio::detail::service_base<winrt_async_manager>
-{
-public:
- // Constructor.
- winrt_async_manager(asio::io_service& io_service)
- : asio::detail::service_base<winrt_async_manager>(io_service),
- io_service_(use_service<io_service_impl>(io_service)),
- outstanding_ops_(1)
- {
- }
-
- // Destructor.
- ~winrt_async_manager()
- {
- }
-
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- if (--outstanding_ops_ > 0)
- {
- // Block until last operation is complete.
- std::future<void> f = promise_.get_future();
- f.wait();
- }
- }
-
- void sync(Windows::Foundation::IAsyncAction^ action,
- asio::error_code& ec)
- {
- using namespace Windows::Foundation;
- using Windows::Foundation::AsyncStatus;
-
- auto promise = std::make_shared<std::promise<asio::error_code>>();
- auto future = promise->get_future();
-
- action->Completed = ref new AsyncActionCompletedHandler(
- [promise](IAsyncAction^ action, AsyncStatus status)
- {
- switch (status)
- {
- case AsyncStatus::Canceled:
- promise->set_value(asio::error::operation_aborted);
- break;
- case AsyncStatus::Error:
- case AsyncStatus::Completed:
- default:
- asio::error_code ec(
- action->ErrorCode.Value,
- asio::system_category());
- promise->set_value(ec);
- break;
- }
- });
-
- ec = future.get();
- }
-
- template <typename TResult>
- TResult sync(Windows::Foundation::IAsyncOperation<TResult>^ operation,
- asio::error_code& ec)
- {
- using namespace Windows::Foundation;
- using Windows::Foundation::AsyncStatus;
-
- auto promise = std::make_shared<std::promise<asio::error_code>>();
- auto future = promise->get_future();
-
- operation->Completed = ref new AsyncOperationCompletedHandler<TResult>(
- [promise](IAsyncOperation<TResult>^ operation, AsyncStatus status)
- {
- switch (status)
- {
- case AsyncStatus::Canceled:
- promise->set_value(asio::error::operation_aborted);
- break;
- case AsyncStatus::Error:
- case AsyncStatus::Completed:
- default:
- asio::error_code ec(
- operation->ErrorCode.Value,
- asio::system_category());
- promise->set_value(ec);
- break;
- }
- });
-
- ec = future.get();
- return operation->GetResults();
- }
-
- template <typename TResult, typename TProgress>
- TResult sync(
- Windows::Foundation::IAsyncOperationWithProgress<
- TResult, TProgress>^ operation,
- asio::error_code& ec)
- {
- using namespace Windows::Foundation;
- using Windows::Foundation::AsyncStatus;
-
- auto promise = std::make_shared<std::promise<asio::error_code>>();
- auto future = promise->get_future();
-
- operation->Completed
- = ref new AsyncOperationWithProgressCompletedHandler<TResult, TProgress>(
- [promise](IAsyncOperationWithProgress<TResult, TProgress>^ operation,
- AsyncStatus status)
- {
- switch (status)
- {
- case AsyncStatus::Canceled:
- promise->set_value(asio::error::operation_aborted);
- break;
- case AsyncStatus::Started:
- break;
- case AsyncStatus::Error:
- case AsyncStatus::Completed:
- default:
- asio::error_code ec(
- operation->ErrorCode.Value,
- asio::system_category());
- promise->set_value(ec);
- break;
- }
- });
-
- ec = future.get();
- return operation->GetResults();
- }
-
- void async(Windows::Foundation::IAsyncAction^ action,
- winrt_async_op<void>* handler)
- {
- using namespace Windows::Foundation;
- using Windows::Foundation::AsyncStatus;
-
- auto on_completed = ref new AsyncActionCompletedHandler(
- [this, handler](IAsyncAction^ action, AsyncStatus status)
- {
- switch (status)
- {
- case AsyncStatus::Canceled:
- handler->ec_ = asio::error::operation_aborted;
- break;
- case AsyncStatus::Started:
- return;
- case AsyncStatus::Completed:
- case AsyncStatus::Error:
- default:
- handler->ec_ = asio::error_code(
- action->ErrorCode.Value,
- asio::system_category());
- break;
- }
- io_service_.post_deferred_completion(handler);
- if (--outstanding_ops_ == 0)
- promise_.set_value();
- });
-
- io_service_.work_started();
- ++outstanding_ops_;
- action->Completed = on_completed;
- }
-
- template <typename TResult>
- void async(Windows::Foundation::IAsyncOperation<TResult>^ operation,
- winrt_async_op<TResult>* handler)
- {
- using namespace Windows::Foundation;
- using Windows::Foundation::AsyncStatus;
-
- auto on_completed = ref new AsyncOperationCompletedHandler<TResult>(
- [this, handler](IAsyncOperation<TResult>^ operation, AsyncStatus status)
- {
- switch (status)
- {
- case AsyncStatus::Canceled:
- handler->ec_ = asio::error::operation_aborted;
- break;
- case AsyncStatus::Started:
- return;
- case AsyncStatus::Completed:
- handler->result_ = operation->GetResults();
- // Fall through.
- case AsyncStatus::Error:
- default:
- handler->ec_ = asio::error_code(
- operation->ErrorCode.Value,
- asio::system_category());
- break;
- }
- io_service_.post_deferred_completion(handler);
- if (--outstanding_ops_ == 0)
- promise_.set_value();
- });
-
- io_service_.work_started();
- ++outstanding_ops_;
- operation->Completed = on_completed;
- }
-
- template <typename TResult, typename TProgress>
- void async(
- Windows::Foundation::IAsyncOperationWithProgress<
- TResult, TProgress>^ operation,
- winrt_async_op<TResult>* handler)
- {
- using namespace Windows::Foundation;
- using Windows::Foundation::AsyncStatus;
-
- auto on_completed
- = ref new AsyncOperationWithProgressCompletedHandler<TResult, TProgress>(
- [this, handler](IAsyncOperationWithProgress<
- TResult, TProgress>^ operation, AsyncStatus status)
- {
- switch (status)
- {
- case AsyncStatus::Canceled:
- handler->ec_ = asio::error::operation_aborted;
- break;
- case AsyncStatus::Started:
- return;
- case AsyncStatus::Completed:
- handler->result_ = operation->GetResults();
- // Fall through.
- case AsyncStatus::Error:
- default:
- handler->ec_ = asio::error_code(
- operation->ErrorCode.Value,
- asio::system_category());
- break;
- }
- io_service_.post_deferred_completion(handler);
- if (--outstanding_ops_ == 0)
- promise_.set_value();
- });
-
- io_service_.work_started();
- ++outstanding_ops_;
- operation->Completed = on_completed;
- }
-
-private:
- // The io_service implementation used to post completed handlers.
- io_service_impl& io_service_;
-
- // Count of outstanding operations.
- atomic_count outstanding_ops_;
-
- // Used to keep wait for outstanding operations to complete.
- std::promise<void> promise_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_op.hpp
deleted file mode 100644
index 7afe0cc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_async_op.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// detail/winrt_async_op.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_DETAIL_WINRT_ASYNC_OP_HPP
-#define ASIO_DETAIL_WINRT_ASYNC_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename TResult>
-class winrt_async_op
- : public operation
-{
-public:
- // The error code to be passed to the completion handler.
- asio::error_code ec_;
-
- // The result of the operation, to be passed to the completion handler.
- TResult result_;
-
-protected:
- winrt_async_op(func_type complete_func)
- : operation(complete_func),
- result_()
- {
- }
-};
-
-template <>
-class winrt_async_op<void>
- : public operation
-{
-public:
- // The error code to be passed to the completion handler.
- asio::error_code ec_;
-
-protected:
- winrt_async_op(func_type complete_func)
- : operation(complete_func)
- {
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WINRT_ASYNC_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolve_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolve_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolve_op.hpp
deleted file mode 100644
index 736f908..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolve_op.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// detail/winrt_resolve_op.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_DETAIL_WINRT_RESOLVE_OP_HPP
-#define ASIO_DETAIL_WINRT_RESOLVE_OP_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_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol, typename Handler>
-class winrt_resolve_op :
- public winrt_async_op<
- Windows::Foundation::Collections::IVectorView<
- Windows::Networking::EndpointPair^>^>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(winrt_resolve_op);
-
- typedef typename Protocol::endpoint endpoint_type;
- typedef asio::ip::basic_resolver_query<Protocol> query_type;
- typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
- winrt_resolve_op(const query_type& query, Handler& handler)
- : winrt_async_op<
- Windows::Foundation::Collections::IVectorView<
- Windows::Networking::EndpointPair^>^>(
- &winrt_resolve_op::do_complete),
- query_(query),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code&, std::size_t)
- {
- // Take ownership of the operation object.
- winrt_resolve_op* o(static_cast<winrt_resolve_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- iterator_type iterator = iterator_type();
- if (!o->ec_)
- {
- try
- {
- iterator = iterator_type::create(
- o->result_, o->query_.hints(),
- o->query_.host_name(), o->query_.service_name());
- }
- catch (Platform::Exception^ e)
- {
- o->ec_ = asio::error_code(e->HResult,
- asio::system_category());
- }
- }
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, iterator_type>
- handler(o->handler_, o->ec_, iterator);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- query_type query_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_RESOLVE_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolver_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolver_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolver_service.hpp
deleted file mode 100644
index a7dab1b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_resolver_service.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// detail/winrt_resolver_service.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_DETAIL_WINRT_RESOLVER_SERVICE_HPP
-#define ASIO_DETAIL_WINRT_RESOLVER_SERVICE_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_WINDOWS_RUNTIME)
-
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/winrt_async_manager.hpp"
-#include "asio/detail/winrt_resolve_op.hpp"
-#include "asio/detail/winrt_utils.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class winrt_resolver_service
-{
-public:
- // The implementation type of the resolver. A cancellation token is used to
- // indicate to the asynchronous operation that the operation has been
- // cancelled.
- typedef socket_ops::shared_cancel_token_type implementation_type;
-
- // The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- // The query type.
- typedef asio::ip::basic_resolver_query<Protocol> query_type;
-
- // The iterator type.
- typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
- // Constructor.
- winrt_resolver_service(asio::io_service& io_service)
- : io_service_(use_service<io_service_impl>(io_service)),
- async_manager_(use_service<winrt_async_manager>(io_service))
- {
- }
-
- // Destructor.
- ~winrt_resolver_service()
- {
- }
-
- // Destroy all user-defined handler objects owned by the service.
- void shutdown_service()
- {
- }
-
- // Perform any fork-related housekeeping.
- void fork_service(asio::io_service::fork_event)
- {
- }
-
- // Construct a new resolver implementation.
- void construct(implementation_type&)
- {
- }
-
- // Destroy a resolver implementation.
- void destroy(implementation_type&)
- {
- }
-
- // Cancel pending asynchronous operations.
- void cancel(implementation_type&)
- {
- }
-
- // Resolve a query to a list of entries.
- iterator_type resolve(implementation_type&,
- const query_type& query, asio::error_code& ec)
- {
- try
- {
- using namespace Windows::Networking::Sockets;
- auto endpoint_pairs = async_manager_.sync(
- DatagramSocket::GetEndpointPairsAsync(
- winrt_utils::host_name(query.host_name()),
- winrt_utils::string(query.service_name())), ec);
-
- if (ec)
- return iterator_type();
-
- return iterator_type::create(
- endpoint_pairs, query.hints(),
- query.host_name(), query.service_name());
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- return iterator_type();
- }
- }
-
- // Asynchronously resolve a query to a list of entries.
- template <typename Handler>
- void async_resolve(implementation_type&,
- const query_type& query, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef winrt_resolve_op<Protocol, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(query, handler);
-
- ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve"));
-
- try
- {
- using namespace Windows::Networking::Sockets;
- async_manager_.async(DatagramSocket::GetEndpointPairsAsync(
- winrt_utils::host_name(query.host_name()),
- winrt_utils::string(query.service_name())), p.p);
- p.v = p.p = 0;
- }
- catch (Platform::Exception^ e)
- {
- p.p->ec_ = asio::error_code(
- e->HResult, asio::system_category());
- io_service_.post_immediate_completion(p.p, is_continuation);
- p.v = p.p = 0;
- }
- }
-
- // Resolve an endpoint to a list of entries.
- iterator_type resolve(implementation_type&,
- const endpoint_type&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return iterator_type();
- }
-
- // Asynchronously resolve an endpoint to a list of entries.
- template <typename Handler>
- void async_resolve(implementation_type&,
- const endpoint_type&, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const iterator_type iterator;
- io_service_.get_io_service().post(
- detail::bind_handler(handler, ec, iterator));
- }
-
-private:
- io_service_impl& io_service_;
- winrt_async_manager& async_manager_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_connect_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_connect_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_connect_op.hpp
deleted file mode 100644
index 76bc4a1..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_connect_op.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// detail/winrt_socket_connect_op.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_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP
-#define ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_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_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class winrt_socket_connect_op :
- public winrt_async_op<void>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(winrt_socket_connect_op);
-
- winrt_socket_connect_op(Handler& handler)
- : winrt_async_op<void>(&winrt_socket_connect_op::do_complete),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code&, std::size_t)
- {
- // Take ownership of the operation object.
- winrt_socket_connect_op* o(static_cast<winrt_socket_connect_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder1<Handler, asio::error_code>
- handler(o->handler_, o->ec_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_recv_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_recv_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_recv_op.hpp
deleted file mode 100644
index b360e80..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_recv_op.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// detail/winrt_socket_recv_op.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_DETAIL_WINRT_SOCKET_RECV_OP_HPP
-#define ASIO_DETAIL_WINRT_SOCKET_RECV_OP_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_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class winrt_socket_recv_op :
- public winrt_async_op<Windows::Storage::Streams::IBuffer^>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(winrt_socket_recv_op);
-
- winrt_socket_recv_op(const MutableBufferSequence& buffers, Handler& handler)
- : winrt_async_op<Windows::Storage::Streams::IBuffer^>(
- &winrt_socket_recv_op::do_complete),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code&, std::size_t)
- {
- // Take ownership of the operation object.
- winrt_socket_recv_op* o(static_cast<winrt_socket_recv_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- // Check whether buffers are still valid.
- if (owner)
- {
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- std::size_t bytes_transferred = o->result_ ? o->result_->Length : 0;
- if (bytes_transferred == 0 && !o->ec_ &&
- !buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::all_empty(o->buffers_))
- {
- o->ec_ = asio::error::eof;
- }
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, bytes_transferred);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- MutableBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_send_op.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_send_op.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_send_op.hpp
deleted file mode 100644
index 8788030..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_socket_send_op.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/winrt_socket_send_op.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_DETAIL_WINRT_SOCKET_SEND_OP_HPP
-#define ASIO_DETAIL_WINRT_SOCKET_SEND_OP_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_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Handler>
-class winrt_socket_send_op :
- public winrt_async_op<unsigned int>
-{
-public:
- ASIO_DEFINE_HANDLER_PTR(winrt_socket_send_op);
-
- winrt_socket_send_op(const ConstBufferSequence& buffers, Handler& handler)
- : winrt_async_op<unsigned int>(&winrt_socket_send_op::do_complete),
- buffers_(buffers),
- handler_(ASIO_MOVE_CAST(Handler)(handler))
- {
- }
-
- static void do_complete(io_service_impl* owner, operation* base,
- const asio::error_code&, std::size_t)
- {
- // Take ownership of the operation object.
- winrt_socket_send_op* o(static_cast<winrt_socket_send_op*>(base));
- ptr p = { asio::detail::addressof(o->handler_), o, o };
-
- ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
- // Check whether buffers are still valid.
- if (owner)
- {
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::validate(o->buffers_);
- }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
- // Make a copy of the handler so that the memory can be deallocated before
- // the upcall is made. Even if we're not about to make an upcall, a
- // sub-object of the handler may be the true owner of the memory associated
- // with the handler. Consequently, a local copy of the handler is required
- // to ensure that any owning sub-object remains valid until after we have
- // deallocated the memory here.
- detail::binder2<Handler, asio::error_code, std::size_t>
- handler(o->handler_, o->ec_, o->result_);
- p.h = asio::detail::addressof(handler.handler_);
- p.reset();
-
- // Make the upcall if required.
- if (owner)
- {
- fenced_block b(fenced_block::half);
- ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
- asio_handler_invoke_helpers::invoke(handler, handler.handler_);
- ASIO_HANDLER_INVOCATION_END;
- }
- }
-
-private:
- ConstBufferSequence buffers_;
- Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service.hpp
deleted file mode 100644
index c793114..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service.hpp
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// detail/winrt_ssocket_service.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_DETAIL_WINRT_SSOCKET_SERVICE_HPP
-#define ASIO_DETAIL_WINRT_SSOCKET_SERVICE_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_WINDOWS_RUNTIME)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/winrt_socket_connect_op.hpp"
-#include "asio/detail/winrt_ssocket_service_base.hpp"
-#include "asio/detail/winrt_utils.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class winrt_ssocket_service :
- public winrt_ssocket_service_base
-{
-public:
- // The protocol type.
- typedef Protocol protocol_type;
-
- // The endpoint type.
- typedef typename Protocol::endpoint endpoint_type;
-
- // The native type of a socket.
- typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type;
-
- // The implementation type of the socket.
- struct implementation_type : base_implementation_type
- {
- // Default constructor.
- implementation_type()
- : base_implementation_type(),
- protocol_(endpoint_type().protocol())
- {
- }
-
- // The protocol associated with the socket.
- protocol_type protocol_;
- };
-
- // Constructor.
- winrt_ssocket_service(asio::io_service& io_service)
- : winrt_ssocket_service_base(io_service)
- {
- }
-
- // Move-construct a new socket implementation.
- void move_construct(implementation_type& impl,
- implementation_type& other_impl)
- {
- this->base_move_construct(impl, other_impl);
-
- impl.protocol_ = other_impl.protocol_;
- other_impl.protocol_ = endpoint_type().protocol();
- }
-
- // Move-assign from another socket implementation.
- void move_assign(implementation_type& impl,
- winrt_ssocket_service& other_service,
- implementation_type& other_impl)
- {
- this->base_move_assign(impl, other_service, other_impl);
-
- impl.protocol_ = other_impl.protocol_;
- other_impl.protocol_ = endpoint_type().protocol();
- }
-
- // Move-construct a new socket implementation from another protocol type.
- template <typename Protocol1>
- void converting_move_construct(implementation_type& impl,
- typename winrt_ssocket_service<
- Protocol1>::implementation_type& other_impl)
- {
- this->base_move_construct(impl, other_impl);
-
- impl.protocol_ = protocol_type(other_impl.protocol_);
- other_impl.protocol_ = typename Protocol1::endpoint().protocol();
- }
-
- // Open a new socket implementation.
- asio::error_code open(implementation_type& impl,
- const protocol_type& protocol, asio::error_code& ec)
- {
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- try
- {
- impl.socket_ = ref new Windows::Networking::Sockets::StreamSocket;
- impl.protocol_ = protocol;
- ec = asio::error_code();
- }
- catch (Platform::Exception^ e)
- {
- ec = asio::error_code(e->HResult,
- asio::system_category());
- }
-
- return ec;
- }
-
- // Assign a native socket to a socket implementation.
- asio::error_code assign(implementation_type& impl,
- const protocol_type& protocol, const native_handle_type& native_socket,
- asio::error_code& ec)
- {
- if (is_open(impl))
- {
- ec = asio::error::already_open;
- return ec;
- }
-
- impl.socket_ = native_socket;
- impl.protocol_ = protocol;
- ec = asio::error_code();
-
- return ec;
- }
-
- // Bind the socket to the specified local endpoint.
- asio::error_code bind(implementation_type&,
- const endpoint_type&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Get the local endpoint.
- endpoint_type local_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- endpoint_type endpoint;
- endpoint.resize(do_get_endpoint(impl, true,
- endpoint.data(), endpoint.size(), ec));
- return endpoint;
- }
-
- // Get the remote endpoint.
- endpoint_type remote_endpoint(const implementation_type& impl,
- asio::error_code& ec) const
- {
- endpoint_type endpoint;
- endpoint.resize(do_get_endpoint(impl, false,
- endpoint.data(), endpoint.size(), ec));
- return endpoint;
- }
-
- // Set a socket option.
- template <typename Option>
- asio::error_code set_option(implementation_type& impl,
- const Option& option, asio::error_code& ec)
- {
- return do_set_option(impl, option.level(impl.protocol_),
- option.name(impl.protocol_), option.data(impl.protocol_),
- option.size(impl.protocol_), ec);
- }
-
- // Get a socket option.
- template <typename Option>
- asio::error_code get_option(const implementation_type& impl,
- Option& option, asio::error_code& ec) const
- {
- std::size_t size = option.size(impl.protocol_);
- do_get_option(impl, option.level(impl.protocol_),
- option.name(impl.protocol_),
- option.data(impl.protocol_), &size, ec);
- if (!ec)
- option.resize(impl.protocol_, size);
- return ec;
- }
-
- // Connect the socket to the specified endpoint.
- asio::error_code connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, asio::error_code& ec)
- {
- return do_connect(impl, peer_endpoint.data(), ec);
- }
-
- // Start an asynchronous connect.
- template <typename Handler>
- void async_connect(implementation_type& impl,
- const endpoint_type& peer_endpoint, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef winrt_socket_connect_op<Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect"));
-
- start_connect_op(impl, peer_endpoint.data(), p.p, is_continuation);
- p.v = p.p = 0;
- }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service_base.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service_base.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service_base.hpp
deleted file mode 100644
index 592f58b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_ssocket_service_base.hpp
+++ /dev/null
@@ -1,355 +0,0 @@
-//
-// detail/winrt_ssocket_service_base.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_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP
-#define ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_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_WINDOWS_RUNTIME)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winrt_async_manager.hpp"
-#include "asio/detail/winrt_socket_recv_op.hpp"
-#include "asio/detail/winrt_socket_send_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_ssocket_service_base
-{
-public:
- // The native type of a socket.
- typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type;
-
- // The implementation type of the socket.
- struct base_implementation_type
- {
- // Default constructor.
- base_implementation_type()
- : socket_(nullptr),
- next_(0),
- prev_(0)
- {
- }
-
- // The underlying native socket.
- native_handle_type socket_;
-
- // Pointers to adjacent socket implementations in linked list.
- base_implementation_type* next_;
- base_implementation_type* prev_;
- };
-
- // Constructor.
- ASIO_DECL winrt_ssocket_service_base(
- asio::io_service& io_service);
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Construct a new socket implementation.
- ASIO_DECL void construct(base_implementation_type&);
-
- // Move-construct a new socket implementation.
- ASIO_DECL void base_move_construct(base_implementation_type& impl,
- base_implementation_type& other_impl);
-
- // Move-assign from another socket implementation.
- ASIO_DECL void base_move_assign(base_implementation_type& impl,
- winrt_ssocket_service_base& other_service,
- base_implementation_type& other_impl);
-
- // Destroy a socket implementation.
- ASIO_DECL void destroy(base_implementation_type& impl);
-
- // Determine whether the socket is open.
- bool is_open(const base_implementation_type& impl) const
- {
- return impl.socket_ != nullptr;
- }
-
- // Destroy a socket implementation.
- ASIO_DECL asio::error_code close(
- base_implementation_type& impl, asio::error_code& ec);
-
- // Get the native socket representation.
- native_handle_type native_handle(base_implementation_type& impl)
- {
- return impl.socket_;
- }
-
- // Cancel all operations associated with the socket.
- asio::error_code cancel(base_implementation_type&,
- asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Determine whether the socket is at the out-of-band data mark.
- bool at_mark(const base_implementation_type&,
- asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return false;
- }
-
- // Determine the number of bytes available for reading.
- std::size_t available(const base_implementation_type&,
- asio::error_code& ec) const
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Perform an IO control command on the socket.
- template <typename IO_Control_Command>
- asio::error_code io_control(base_implementation_type&,
- IO_Control_Command&, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Gets the non-blocking mode of the socket.
- bool non_blocking(const base_implementation_type&) const
- {
- return false;
- }
-
- // Sets the non-blocking mode of the socket.
- asio::error_code non_blocking(base_implementation_type&,
- bool, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Gets the non-blocking mode of the native socket implementation.
- bool native_non_blocking(const base_implementation_type&) const
- {
- return false;
- }
-
- // Sets the non-blocking mode of the native socket implementation.
- asio::error_code native_non_blocking(base_implementation_type&,
- bool, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Disable sends or receives on the socket.
- asio::error_code shutdown(base_implementation_type&,
- socket_base::shutdown_type, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return ec;
- }
-
- // Send the given data to the peer.
- template <typename ConstBufferSequence>
- std::size_t send(base_implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return do_send(impl,
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::first(buffers), flags, ec);
- }
-
- // Wait until data can be sent without blocking.
- std::size_t send(base_implementation_type&, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous send. The data being sent must be valid for the
- // lifetime of the asynchronous operation.
- template <typename ConstBufferSequence, typename Handler>
- void async_send(base_implementation_type& impl,
- const ConstBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef winrt_socket_send_op<ConstBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send"));
-
- start_send_op(impl,
- buffer_sequence_adapter<asio::const_buffer,
- ConstBufferSequence>::first(buffers),
- flags, p.p, is_continuation);
- p.v = p.p = 0;
- }
-
- // Start an asynchronous wait until data can be sent without blocking.
- template <typename Handler>
- void async_send(base_implementation_type&, const null_buffers&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.get_io_service().post(
- detail::bind_handler(handler, ec, bytes_transferred));
- }
-
- // Receive some data from the peer. Returns the number of bytes received.
- template <typename MutableBufferSequence>
- std::size_t receive(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, asio::error_code& ec)
- {
- return do_receive(impl,
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::first(buffers), flags, ec);
- }
-
- // Wait until data can be received without blocking.
- std::size_t receive(base_implementation_type&, const null_buffers&,
- socket_base::message_flags, asio::error_code& ec)
- {
- ec = asio::error::operation_not_supported;
- return 0;
- }
-
- // Start an asynchronous receive. The buffer for the data being received
- // must be valid for the lifetime of the asynchronous operation.
- template <typename MutableBufferSequence, typename Handler>
- void async_receive(base_implementation_type& impl,
- const MutableBufferSequence& buffers,
- socket_base::message_flags flags, Handler& handler)
- {
- bool is_continuation =
- asio_handler_cont_helpers::is_continuation(handler);
-
- // Allocate and construct an operation to wrap the handler.
- typedef winrt_socket_recv_op<MutableBufferSequence, Handler> op;
- typename op::ptr p = { asio::detail::addressof(handler),
- asio_handler_alloc_helpers::allocate(
- sizeof(op), handler), 0 };
- p.p = new (p.v) op(buffers, handler);
-
- ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive"));
-
- start_receive_op(impl,
- buffer_sequence_adapter<asio::mutable_buffer,
- MutableBufferSequence>::first(buffers),
- flags, p.p, is_continuation);
- p.v = p.p = 0;
- }
-
- // Wait until data can be received without blocking.
- template <typename Handler>
- void async_receive(base_implementation_type&, const null_buffers&,
- socket_base::message_flags, Handler& handler)
- {
- asio::error_code ec = asio::error::operation_not_supported;
- const std::size_t bytes_transferred = 0;
- io_service_.get_io_service().post(
- detail::bind_handler(handler, ec, bytes_transferred));
- }
-
-protected:
- // Helper function to obtain endpoints associated with the connection.
- ASIO_DECL std::size_t do_get_endpoint(
- const base_implementation_type& impl, bool local,
- void* addr, std::size_t addr_len, asio::error_code& ec) const;
-
- // Helper function to set a socket option.
- ASIO_DECL asio::error_code do_set_option(
- base_implementation_type& impl,
- int level, int optname, const void* optval,
- std::size_t optlen, asio::error_code& ec);
-
- // Helper function to get a socket option.
- ASIO_DECL void do_get_option(
- const base_implementation_type& impl,
- int level, int optname, void* optval,
- std::size_t* optlen, asio::error_code& ec) const;
-
- // Helper function to perform a synchronous connect.
- ASIO_DECL asio::error_code do_connect(
- base_implementation_type& impl,
- const void* addr, asio::error_code& ec);
-
- // Helper function to start an asynchronous connect.
- ASIO_DECL void start_connect_op(
- base_implementation_type& impl, const void* addr,
- winrt_async_op<void>* op, bool is_continuation);
-
- // Helper function to perform a synchronous send.
- ASIO_DECL std::size_t do_send(
- base_implementation_type& impl, const asio::const_buffer& data,
- socket_base::message_flags flags, asio::error_code& ec);
-
- // Helper function to start an asynchronous send.
- ASIO_DECL void start_send_op(base_implementation_type& impl,
- const asio::const_buffer& data, socket_base::message_flags flags,
- winrt_async_op<unsigned int>* op, bool is_continuation);
-
- // Helper function to perform a synchronous receive.
- ASIO_DECL std::size_t do_receive(
- base_implementation_type& impl, const asio::mutable_buffer& data,
- socket_base::message_flags flags, asio::error_code& ec);
-
- // Helper function to start an asynchronous receive.
- ASIO_DECL void start_receive_op(base_implementation_type& impl,
- const asio::mutable_buffer& data, socket_base::message_flags flags,
- winrt_async_op<Windows::Storage::Streams::IBuffer^>* op,
- bool is_continuation);
-
- // The io_service implementation used for delivering completions.
- io_service_impl& io_service_;
-
- // The manager that keeps track of outstanding operations.
- winrt_async_manager& async_manager_;
-
- // Mutex to protect access to the linked list of implementations.
- asio::detail::mutex mutex_;
-
- // The head of a linked list of all implementations.
- base_implementation_type* impl_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/winrt_ssocket_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_timer_scheduler.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_timer_scheduler.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_timer_scheduler.hpp
deleted file mode 100644
index b4cbb63..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_timer_scheduler.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// detail/winrt_timer_scheduler.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_DETAIL_WINRT_TIMER_SCHEDULER_HPP
-#define ASIO_DETAIL_WINRT_TIMER_SCHEDULER_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_WINDOWS_RUNTIME)
-
-#include <cstddef>
-#include "asio/detail/event.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/thread.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/thread.hpp"
-#endif // defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_timer_scheduler
- : public asio::detail::service_base<winrt_timer_scheduler>
-{
-public:
- // Constructor.
- ASIO_DECL winrt_timer_scheduler(asio::io_service& io_service);
-
- // Destructor.
- ASIO_DECL ~winrt_timer_scheduler();
-
- // Destroy all user-defined handler objects owned by the service.
- ASIO_DECL void shutdown_service();
-
- // Recreate internal descriptors following a fork.
- ASIO_DECL void fork_service(
- asio::io_service::fork_event fork_ev);
-
- // Initialise the task. No effect as this class uses its own thread.
- ASIO_DECL void init_task();
-
- // Add a new timer queue to the reactor.
- template <typename Time_Traits>
- void add_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Remove a timer queue from the reactor.
- template <typename Time_Traits>
- void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
- // Schedule a new operation in the given timer queue to expire at the
- // specified absolute time.
- template <typename Time_Traits>
- void schedule_timer(timer_queue<Time_Traits>& queue,
- const typename Time_Traits::time_type& time,
- typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
- // Cancel the timer operations associated with the given token. Returns the
- // number of operations that have been posted or dispatched.
- template <typename Time_Traits>
- std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
- typename timer_queue<Time_Traits>::per_timer_data& timer,
- std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-private:
- // Run the select loop in the thread.
- ASIO_DECL void run_thread();
-
- // Entry point for the select loop thread.
- ASIO_DECL static void call_run_thread(winrt_timer_scheduler* reactor);
-
- // Helper function to add a new timer queue.
- ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
- // Helper function to remove a timer queue.
- ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
- // The io_service implementation used to post completions.
- io_service_impl& io_service_;
-
- // Mutex used to protect internal variables.
- asio::detail::mutex mutex_;
-
- // Event used to wake up background thread.
- asio::detail::event event_;
-
- // The timer queues.
- timer_queue_set timer_queues_;
-
- // The background thread that is waiting for timers to expire.
- asio::detail::thread* thread_;
-
- // Does the background thread need to stop.
- bool stop_thread_;
-
- // Whether the service has been shut down.
- bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/winrt_timer_scheduler.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/winrt_timer_scheduler.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_utils.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_utils.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_utils.hpp
deleted file mode 100644
index 3d41fdc..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winrt_utils.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// detail/winrt_utils.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_DETAIL_WINRT_UTILS_HPP
-#define ASIO_DETAIL_WINRT_UTILS_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_WINDOWS_RUNTIME)
-
-#include <codecvt>
-#include <cstdlib>
-#include <future>
-#include <locale>
-#include <memory>
-#include <robuffer.h>
-#include <windows.storage.streams.h>
-#include <wrl/implements.h>
-#include "asio/buffer.hpp"
-#include "asio/error_code.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace winrt_utils {
-
-inline Platform::String^ string(const char* from)
-{
- std::wstring tmp(from, from + std::strlen(from));
- return ref new Platform::String(tmp.c_str());
-}
-
-inline Platform::String^ string(const std::string& from)
-{
- std::wstring tmp(from.begin(), from.end());
- return ref new Platform::String(tmp.c_str());
-}
-
-inline std::string string(Platform::String^ from)
-{
- std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
- return converter.to_bytes(from->Data());
-}
-
-inline Platform::String^ string(unsigned short from)
-{
- return string(std::to_string(from));
-}
-
-template <typename T>
-inline Platform::String^ string(const T& from)
-{
- return string(from.to_string());
-}
-
-inline int integer(Platform::String^ from)
-{
- return _wtoi(from->Data());
-}
-
-template <typename T>
-inline Windows::Networking::HostName^ host_name(const T& from)
-{
- return ref new Windows::Networking::HostName((string)(from));
-}
-
-template <typename ConstBufferSequence>
-inline Windows::Storage::Streams::IBuffer^ buffer_dup(
- const ConstBufferSequence& buffers)
-{
- using Microsoft::WRL::ComPtr;
- std::size_t size = asio::buffer_size(buffers);
- auto b = ref new Windows::Storage::Streams::Buffer(size);
- ComPtr<IInspectable> insp = reinterpret_cast<IInspectable*>(b);
- ComPtr<Windows::Storage::Streams::IBufferByteAccess> bacc;
- insp.As(&bacc);
- byte* bytes = nullptr;
- bacc->Buffer(&bytes);
- asio::buffer_copy(asio::buffer(bytes, size), buffers);
- b->Length = size;
- return b;
-}
-
-} // namespace winrt_utils
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_UTILS_HPP
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a542fb3/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winsock_init.hpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winsock_init.hpp b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winsock_init.hpp
deleted file mode 100644
index a2cb903..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/third_party/asio-1.10.2/include/asio/detail/winsock_init.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// detail/winsock_init.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_DETAIL_WINSOCK_INIT_HPP
-#define ASIO_DETAIL_WINSOCK_INIT_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_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winsock_init_base
-{
-protected:
- // Structure to track result of initialisation and number of uses. POD is used
- // to ensure that the values are zero-initialised prior to any code being run.
- struct data
- {
- long init_count_;
- long result_;
- };
-
- ASIO_DECL static void startup(data& d,
- unsigned char major, unsigned char minor);
-
- ASIO_DECL static void manual_startup(data& d);
-
- ASIO_DECL static void cleanup(data& d);
-
- ASIO_DECL static void manual_cleanup(data& d);
-
- ASIO_DECL static void throw_on_error(data& d);
-};
-
-template <int Major = 2, int Minor = 0>
-class winsock_init : private winsock_init_base
-{
-public:
- winsock_init(bool allow_throw = true)
- {
- startup(data_, Major, Minor);
- if (allow_throw)
- throw_on_error(data_);
- }
-
- winsock_init(const winsock_init&)
- {
- startup(data_, Major, Minor);
- throw_on_error(data_);
- }
-
- ~winsock_init()
- {
- cleanup(data_);
- }
-
- // This class may be used to indicate that user code will manage Winsock
- // initialisation and cleanup. This may be required in the case of a DLL, for
- // example, where it is not safe to initialise Winsock from global object
- // constructors.
- //
- // To prevent asio from initialising Winsock, the object must be constructed
- // before any Asio's own global objects. With MSVC, this may be accomplished
- // by adding the following code to the DLL:
- //
- // #pragma warning(push)
- // #pragma warning(disable:4073)
- // #pragma init_seg(lib)
- // asio::detail::winsock_init<>::manual manual_winsock_init;
- // #pragma warning(pop)
- class manual
- {
- public:
- manual()
- {
- manual_startup(data_);
- }
-
- manual(const manual&)
- {
- manual_startup(data_);
- }
-
- ~manual()
- {
- manual_cleanup(data_);
- }
- };
-
-private:
- friend class manual;
- static data data_;
-};
-
-template <int Major, int Minor>
-winsock_init_base::data winsock_init<Major, Minor>::data_;
-
-// Static variable to ensure that winsock is initialised before main, and
-// therefore before any other threads can get started.
-static const winsock_init<>& winsock_init_instance = winsock_init<>(false);
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/winsock_init.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_WINSOCK_INIT_HPP
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org