@@ -38,8 +38,8 @@ void IOUring::AddEntries() {
3838 io_uring_prep_read (sqEntry, entry.fd , entry.toRead .value (), 256 , 0 );
3939 } else if (entry.type == IOUring::ACCEPT ) {
4040 io_uring_prep_accept (sqEntry, entry.fd , nullptr , nullptr , 0 );
41- } else {
42- const char *ptr = sqeData->writeData -> data () + sqeData->writeOffset ;
41+ } else [[likely]] {
42+ const char *ptr = sqeData->writeData . data () + sqeData->writeOffset ;
4343 io_uring_prep_write (sqEntry, entry.fd , ptr, sqeData->writeLen , 0 );
4444 }
4545 io_uring_sqe_set_data (sqEntry, sqeData);
@@ -73,15 +73,15 @@ void IOUring::Poll() {
7373 }
7474}
7575
76- void IOUring::Write (int fileDescriptor, std::shared_ptr<std::string> data, size_t offset,
76+ void IOUring::Write (int fileDescriptor, std::string_view data, size_t offset,
7777 size_t len, std::function<void (int )> complete) {
7878 if (fileDescriptor < 0 ) {
7979 throw std::runtime_error (" Invalid file descriptor" );
8080 }
8181 Entry entry;
8282 entry.type = IOUring::WRITE ;
8383 entry.fd = fileDescriptor;
84- entry.writeData = std::move ( data) ;
84+ entry.writeData = data;
8585 entry.writeOffset = offset;
8686 entry.writeLen = len;
8787 entry.complete = std::move (complete);
@@ -102,11 +102,11 @@ void IOUring::Read(int fileDescriptor, std::array<char, 256> &buffer,
102102 queue_.push_back (entry);
103103}
104104
105- CoFuture<size_t > IOUring::ReadAsync (int fileDescriptor, std::array<char , 256 > &buffer) {
106- auto promise = std::make_shared<CoPromise<size_t >>();
105+ CoFuture<int > IOUring::ReadAsync (int fileDescriptor, std::array<char , 256 > &buffer) {
106+ auto promise = std::make_shared<CoPromise<int >>();
107107 auto future = promise->GetFuture ();
108108 Read (fileDescriptor, buffer, [promise](int result) {
109- promise->Set (result < 0 ? 0 : static_cast < size_t >(result) );
109+ promise->Set (result);
110110 });
111111 return future;
112112}
@@ -132,12 +132,12 @@ CoFuture<int> IOUring::AcceptAsync(int fileDescriptor) {
132132 return future;
133133}
134134
135- CoFuture<size_t > IOUring::WriteAsync (int fileDescriptor, std::shared_ptr<std::string> data,
135+ CoFuture<int > IOUring::WriteAsync (int fileDescriptor, std::string_view data,
136136 size_t offset, size_t len) {
137- auto promise = std::make_shared<CoPromise<size_t >>();
137+ auto promise = std::make_shared<CoPromise<int >>();
138138 auto future = promise->GetFuture ();
139- Write (fileDescriptor, std::move ( data) , offset, len, [promise](int result) {
140- promise->Set (result < 0 ? 0 : static_cast < size_t >(result) );
139+ Write (fileDescriptor, data, offset, len, [promise](int result) {
140+ promise->Set (result);
141141 });
142142 return future;
143143}
0 commit comments