diff options
Diffstat (limited to 'include/ftp')
-rw-r--r-- | include/ftp/connection.hpp | 30 | ||||
-rw-r--r-- | include/ftp/detail/network_algorithms.hpp | 31 | ||||
-rw-r--r-- | include/ftp/error_code.hpp | 10 | ||||
-rw-r--r-- | include/ftp/handshake_params.hpp | 16 | ||||
-rw-r--r-- | include/ftp/impl/networking_algorithms.cpp | 34 |
5 files changed, 121 insertions, 0 deletions
diff --git a/include/ftp/connection.hpp b/include/ftp/connection.hpp index e69de29..f0291f3 100644 --- a/include/ftp/connection.hpp +++ b/include/ftp/connection.hpp @@ -0,0 +1,30 @@ +#ifndef _CONNECTION_HPP_ +#define _CONNECTION_HPP_ + +#include <boost/asio/io_context.hpp> +#include <boost/asio/ip/tcp.hpp> +#include <ftp/error_code.hpp> +#include <ftp/handshake_params.hpp> + +namespace ftp { +namespace asio = boost::asio; + +using boost::asio::ip::tcp; + +class connection +{ + asio::io_context& ioc_; + tcp::socket cmd_socket_; + +public: + connection(asio::io_context& ioc) : ioc_(ioc), cmd_socket_(ioc_){}; + + void connect(const tcp::resolver::results_type& endpoints, const handshake_params& params); + + void connect(const tcp::resolver::results_type& endpoint, const handshake_params& params, error_code& ec); + + void execute(const std::string& command); +}; +} // namespace ftp + +#endif // !_CONNECTION_HPP_ diff --git a/include/ftp/detail/network_algorithms.hpp b/include/ftp/detail/network_algorithms.hpp new file mode 100644 index 0000000..159e6e2 --- /dev/null +++ b/include/ftp/detail/network_algorithms.hpp @@ -0,0 +1,31 @@ +#ifndef _NETWORKING_ALGORITHMS_HPP_ +#define _NETWORKING_ALGORITHMS_HPP_ + +#include <boost/asio/ip/tcp.hpp> +#include <ftp/error_code.hpp> +#include <ftp/handshake_params.hpp> + +namespace ftp { + +namespace detail { + +using boost::asio::ip::tcp; + +inline void connect_interface( + tcp::socket& socket, + const tcp::resolver::results_type& endpoints, + const handshake_params& params, + error_code& ec +); + +inline void handshake_interface(tcp::socket& socket, const handshake_params& params, error_code& ec); + +} // namespace detail + +} // namespace ftp + +#ifdef FTP_HEADER_ONLY +#include <ftp/impl/networking_algorithms.cpp> +#endif // FTP_HEADER_ONLY + +#endif // !_NETWORKING_ALGORITHMS_HPP_ diff --git a/include/ftp/error_code.hpp b/include/ftp/error_code.hpp new file mode 100644 index 0000000..a3f789f --- /dev/null +++ b/include/ftp/error_code.hpp @@ -0,0 +1,10 @@ +#ifndef _ERROR_CODE_HPP +#define _ERROR_CODE_HPP + +#include <boost/system/detail/error_code.hpp> + +namespace ftp { +using error_code = boost::system::error_code; +} + +#endif // !_ERROR_CODE_HPP diff --git a/include/ftp/handshake_params.hpp b/include/ftp/handshake_params.hpp new file mode 100644 index 0000000..a616c20 --- /dev/null +++ b/include/ftp/handshake_params.hpp @@ -0,0 +1,16 @@ +#ifndef _HANDSHAKE_PARAMS_HPP_ +#define _HANDSHAKE_PARAMS_HPP_ + +#include <string> + +namespace ftp { +class handshake_params +{ + std::string host_; + std::string username_; + std::string password_; + int port; +}; +} // namespace ftp + +#endif // !_HANDSHAKE_PARAMS_HPP_ diff --git a/include/ftp/impl/networking_algorithms.cpp b/include/ftp/impl/networking_algorithms.cpp new file mode 100644 index 0000000..9920cfb --- /dev/null +++ b/include/ftp/impl/networking_algorithms.cpp @@ -0,0 +1,34 @@ +#ifndef _NETWORKING_ALGORITHMS_CPP_ +#define _NETWORKING_ALGORITHMS_CPP_ + +#pragma once + +#include <boost/asio/connect.hpp> +#include <ftp/detail/network_algorithms.hpp> +#include <ftp/handshake_params.hpp> + +namespace asio = boost::asio; + +inline void ftp::detail::connect_interface( + tcp::socket& socket, + const tcp::resolver::results_type& endpoints, + const handshake_params& params, + error_code& ec +) +{ + asio::connect(socket, endpoints, ec); + if (ec) + { + return; + } +} + +inline void ftp::detail::handshake_interface( + tcp::socket& socket, + const handshake_params& params, + error_code& ec +) +{ +} + +#endif |