Skip to content

Commit 91741f2

Browse files
committed
Update to the latest tftp library version
1 parent 2ff921e commit 91741f2

File tree

6 files changed

+30
-29
lines changed

6 files changed

+30
-29
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "3rdparty/modules/tftp"]
2+
path = 3rdparty/modules/tftp
3+
url = git@github.com:eoan-ermine/tftp.git

3rdparty/modules/tftp

Submodule tftp added at 1efbec0

CMakeLists.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@ project(tftp_client)
44

55
add_executable(tftp_client tftp_client/main.cpp)
66

7-
find_package(tftp_common 1.2.0)
7+
find_package(tftp 1.2.0)
88

9-
if (NOT tftp_common_FOUND)
9+
if (NOT tftp_FOUND)
1010
include(FetchContent)
1111

1212
FetchContent_Declare(
13-
tftp_common
14-
URL https://github.com/eoan-ermine/tftp_common/archive/refs/tags/v1.2.0.zip
13+
tftp
14+
URL https://github.com/eoan-ermine/tftp/archive/refs/tags/v1.2.0.zip
1515
)
1616

17-
FetchContent_GetProperties(tftp_common)
18-
if (NOT tftp_common_POPULATED)
19-
FetchContent_Populate(tftp_common)
17+
FetchContent_GetProperties(tftp)
18+
if (NOT tftp_POPULATED)
19+
FetchContent_Populate(tftp)
2020
endif()
2121

22-
add_library(tftp_common INTERFACE)
23-
target_include_directories(tftp_common INTERFACE ${tftp_common_SOURCE_DIR})
24-
target_link_libraries(tftp_client tftp_common)
22+
add_library(tftp INTERFACE)
23+
target_include_directories(tftp INTERFACE ${tftp_SOURCE_DIR})
24+
target_link_libraries(tftp_client tftp)
2525
endif()
2626

2727

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ A simple Trivial File Transfer Protocol (TFTP) client.
88

99
| Dependency name | Minimum required version | Ubuntu 22.04 |
1010
|-------------------------|--------------------------|--------------------------------------|
11-
| C++ | C++17 | sudo apt-get install build-essential |
12-
| tftp_common | 1.2.0 | --- |
13-
| Boost.System, Boost.Program_Options | 1.74 | sudo apt install libboost-system-dev libboost-program-options-dev |
11+
| C++ | C++17 | sudo apt-get install build-essential |
12+
| tftp | [1efbec0864324e1dc18bb6879eff2b7c60aba6b4](https://github.com/eoan-ermine/tftp/commit/1efbec0864324e1dc18bb6879eff2b7c60aba6b4) | --- |
13+
| Boost.System, Boost.Program_Options | 1.74 | sudo apt install libboost-system-dev libboost-program-options-dev |
1414

1515
## Usage
1616

@@ -41,6 +41,6 @@ tftp_client host [GET | PUT] source destination [--transfer_mode [netascii | oct
4141
| Extension | Implementation status |
4242
| ----------- | ----------------- |
4343
| [RFC 2347: TFTP Option Extension](https://datatracker.ietf.org/doc/html/rfc2347) | ${\color{green}\text{Done}}$ |
44-
| [RFC 2348: TFTP Blocksize Option](https://datatracker.ietf.org/doc/html/rfc2348) | ${\color{red}\text{Done}}$ |
44+
| [RFC 2348: TFTP Blocksize Option](https://datatracker.ietf.org/doc/html/rfc2348) | ${\color{green}\text{Done}}$ |
4545
| [RFC 2349: TFTP Timeout Interval and Transfer Size Options](https://datatracker.ietf.org/doc/html/rfc2349) | ${\color{red}\text{TODO}}$ |
4646
| [RFC 7440: TFTP Windowsize Option](https://datatracker.ietf.org/doc/html/rfc7440) | ${\color{red}\text{TODO}}$ |

tftp_client/client.hpp

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
11
#include <boost/asio.hpp>
22

3-
#ifdef BUILD_EXAMPLES
4-
#include "../../../tftp_common/tftp_common.hpp"
5-
#else
6-
#include <tftp_common/tftp_common.hpp>
7-
#endif
3+
#include <tftp/tftp.hpp>
84

95
#include <algorithm>
106
#include <cstdlib>
117
#include <fstream>
128
#include <iostream>
139
#include <string>
1410

15-
using namespace tftp_common::packets;
11+
using namespace tftp::packets;
1612
using boost::asio::ip::udp;
1713

1814
namespace tftp_client {
1915

2016
template <typename Packet> bool try_parse(std::uint8_t *data, std::size_t len, Packet &packet) {
21-
auto [result, _] = parse(data, len, packet);
22-
if (result)
17+
auto result = Parser<Packet>::parse(data, len);
18+
packet = std::move(result.get().Packet);
19+
20+
if (result.isSuccess())
2321
return true;
2422
else {
2523
Error errPacket;
26-
auto [result, _] = parse(data, len, errPacket);
27-
if (result)
24+
auto result = Parser<Error>::parse(data, len);
25+
if (result.isSuccess())
2826
throw errPacket;
2927
}
3028
return false;
@@ -38,8 +36,7 @@ class TFTPClient {
3836
std::size_t blockSize = 512;
3937

4038
std::size_t getBlockSize(const OptionAcknowledgment &packet) const {
41-
const auto &Options = packet.getOptions();
42-
if (Options.count("blksize") != 0) {
39+
if (packet.hasOption("blksize")) {
4340
return std::atoi(packet.getOptionValue("blksize").data());
4441
}
4542
return 512;
@@ -58,7 +55,7 @@ class TFTPClient {
5855
if (!file && file.eof())
5956
return;
6057

61-
std::size_t packetSize = Request(Type::WriteRequest, toPath, transferMode, optionsNames, optionsValues)
58+
std::size_t packetSize = Request(tftp::packets::types::Type::WriteRequest, toPath, transferMode, optionsNames, optionsValues)
6259
.serialize(sendBuffer.begin());
6360
socket.send_to(boost::asio::buffer(sendBuffer, packetSize), receiverEndpoint);
6461
std::size_t bytesRead = socket.receive_from(boost::asio::buffer(recvBuffer), senderEndpoint);
@@ -108,7 +105,7 @@ class TFTPClient {
108105
if (!file)
109106
return;
110107

111-
std::size_t packetSize = Request(Type::ReadRequest, fromPath, transferMode, optionsNames, optionsValues)
108+
std::size_t packetSize = Request(tftp::packets::types::Type::ReadRequest, fromPath, transferMode, optionsNames, optionsValues)
112109
.serialize(sendBuffer.begin());
113110
socket.send_to(boost::asio::buffer(sendBuffer, packetSize), receiverEndpoint);
114111
std::size_t bytesRead = socket.receive_from(boost::asio::buffer(recvBuffer), senderEndpoint);

tftp_client/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <iostream>
88
#include <string_view>
99

10-
using namespace tftp_common::packets;
10+
using namespace tftp::packets;
1111
using boost::asio::ip::udp;
1212
namespace po = boost::program_options;
1313

0 commit comments

Comments
 (0)