From b101481315dec728b7c4fb466322ac861cd6dcf2 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Wed, 14 Aug 2024 17:18:08 +0200 Subject: wip --- modules/remote-filesystem/c++/transfer.hpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'modules/remote-filesystem/c++/transfer.hpp') diff --git a/modules/remote-filesystem/c++/transfer.hpp b/modules/remote-filesystem/c++/transfer.hpp index 1e42cf5..22a35a8 100644 --- a/modules/remote-filesystem/c++/transfer.hpp +++ b/modules/remote-filesystem/c++/transfer.hpp @@ -7,6 +7,8 @@ #include +#include + namespace saw { template class data_server final : public i_data_server { @@ -41,7 +43,7 @@ public: return generate_invalid_id_error(); } - std::basic_fstream s{addr_.get_path(), s.binary | s.out}; + std::basic_ofstream s{addr_.get_path(), s.binary | s.out | s.trunc}; if(!s.is_open()){ return make_error("Couldn't open file"); } @@ -50,9 +52,16 @@ public: buffer_view buff_v{buff}; while(buff_v.read_segment_length() > 0u){ s.write(&buff_v.read(), buff_v.read_segment_length()); - buff_v.read_advance(buff_v.read_segment_length()); } + s.flush(); + if(s.bad()){ + return make_error("Stream failed to write."); + } + + if(s.fail()){ + return make_error("Stream encountered non-integer data."); + } return make_void(); } @@ -76,13 +85,15 @@ public: } data dat{heap(1u)}; + std::basic_fstream s{addr_.get_path(), s.binary | s.in}; if(!s.is_open()){ return make_error("Couldn't open file"); } uint8_t ele{}; while(s.readsome(&ele, 1u) > 0u){ - auto err = dat.get_buffer().push(ele); + + auto err = dat.get_buffer().push(ele,1u); if(err.failed()){ return err; } -- cgit v1.2.3