@@ -102,8 +102,8 @@ namespace asyncpp::io {
102102 detail::io_engine::completion_data m_completion;
103103
104104 public:
105- constexpr file_read_awaitable (io_engine* engine, io_engine::file_handle_t fd, void * buf, size_t len,
106- uint64_t offset, std::error_code* ec) noexcept
105+ file_read_awaitable (io_engine* engine, io_engine::file_handle_t fd, void * buf, size_t len, uint64_t offset ,
106+ std::error_code* ec) noexcept
107107 : m_engine(engine), m_fd(fd), m_buf(buf), m_len(len), m_offset(offset), m_ec(ec), m_completion{} {}
108108 bool await_ready () const noexcept { return false ; }
109109 bool await_suspend (coroutine_handle<> hdl) {
@@ -112,10 +112,9 @@ namespace asyncpp::io {
112112 return !m_engine->enqueue_readv (m_fd, m_buf, m_len, m_offset, &m_completion);
113113 }
114114 size_t await_resume () {
115- if (m_completion.result >= 0 ) return static_cast <size_t >(m_completion.result );
116- if (m_ec == nullptr )
117- throw std::system_error (std::error_code (-m_completion.result , std::system_category ()));
118- *m_ec = std::error_code (-m_completion.result , std::system_category ());
115+ if (!m_completion.result ) return m_completion.result_size ;
116+ if (m_ec == nullptr ) throw std::system_error (m_completion.result );
117+ *m_ec = m_completion.result ;
119118 return 0 ;
120119 }
121120 };
@@ -140,8 +139,8 @@ namespace asyncpp::io {
140139 detail::io_engine::completion_data m_completion;
141140
142141 public:
143- constexpr file_write_awaitable (io_engine* engine, io_engine::file_handle_t fd, const void * buf, size_t len,
144- uint64_t offset, std::error_code* ec) noexcept
142+ file_write_awaitable (io_engine* engine, io_engine::file_handle_t fd, const void * buf, size_t len,
143+ uint64_t offset, std::error_code* ec) noexcept
145144 : m_engine(engine), m_fd(fd), m_buf(buf), m_len(len), m_offset(offset), m_ec(ec), m_completion{} {}
146145 bool await_ready () const noexcept { return false ; }
147146 bool await_suspend (coroutine_handle<> hdl) {
@@ -150,10 +149,9 @@ namespace asyncpp::io {
150149 return !m_engine->enqueue_writev (m_fd, m_buf, m_len, m_offset, &m_completion);
151150 }
152151 size_t await_resume () {
153- if (m_completion.result >= 0 ) return static_cast <size_t >(m_completion.result );
154- if (m_ec == nullptr )
155- throw std::system_error (std::error_code (-m_completion.result , std::system_category ()));
156- *m_ec = std::error_code (-m_completion.result , std::system_category ());
152+ if (!m_completion.result ) return m_completion.result_size ;
153+ if (m_ec == nullptr ) throw std::system_error (m_completion.result );
154+ *m_ec = m_completion.result ;
157155 return 0 ;
158156 }
159157 };
@@ -175,7 +173,7 @@ namespace asyncpp::io {
175173 detail::io_engine::completion_data m_completion;
176174
177175 public:
178- constexpr file_fsync_awaitable (io_engine* engine, io_engine::file_handle_t fd, std::error_code* ec) noexcept
176+ file_fsync_awaitable (io_engine* engine, io_engine::file_handle_t fd, std::error_code* ec) noexcept
179177 : m_engine(engine), m_fd(fd), m_ec(ec), m_completion{} {}
180178 bool await_ready () const noexcept { return false ; }
181179 bool await_suspend (coroutine_handle<> hdl) {
@@ -184,10 +182,9 @@ namespace asyncpp::io {
184182 return !m_engine->enqueue_fsync (m_fd, io_engine::fsync_flags::none, &m_completion);
185183 }
186184 void await_resume () {
187- if (m_completion.result >= 0 ) return ;
188- if (m_ec == nullptr )
189- throw std::system_error (std::error_code (-m_completion.result , std::system_category ()));
190- *m_ec = std::error_code (-m_completion.result , std::system_category ());
185+ if (!m_completion.result ) return ;
186+ if (m_ec == nullptr ) throw std::system_error (m_completion.result );
187+ *m_ec = m_completion.result ;
191188 }
192189 };
193190 } // namespace detail
@@ -269,7 +266,7 @@ namespace asyncpp::io {
269266 file (const file&) = delete ;
270267 file (file&&) noexcept ;
271268 file& operator =(const file&) = delete ;
272- file& operator =(file&&);
269+ file& operator =(file&&) noexcept ;
273270 ~file ();
274271
275272 [[nodiscard]] io_service& service () const noexcept { return *m_io; }
0 commit comments