summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDaniil Rozanov <daniilrozzanov@gmail.com>2023-07-05 03:11:34 +0300
committerDaniil Rozanov <daniilrozzanov@gmail.com>2023-07-05 03:11:34 +0300
commitd3f11e3b7b86eda4733ece84294d9dc8da1d23bc (patch)
tree860fea9c8e63d0f62e28a513c0e50d2d7171a8d4 /include
parentf51c3ac3f1c0cac99eb8cfe91b280d84f128cdc9 (diff)
Added declaration of connection class with connect and execute members. Created detail and impl folder. Created one example's fileHEADmain
Diffstat (limited to 'include')
-rw-r--r--include/ftp/connection.hpp30
-rw-r--r--include/ftp/detail/network_algorithms.hpp31
-rw-r--r--include/ftp/error_code.hpp10
-rw-r--r--include/ftp/handshake_params.hpp16
-rw-r--r--include/ftp/impl/networking_algorithms.cpp34
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