@@ -89,10 +89,10 @@ struct connection_t;
89
89
struct engine_t ;
90
90
struct automata_t ;
91
91
92
+ static constexpr std::size_t uring_acpt_tag_k{0 };
92
93
static constexpr std::size_t uring_recv_tag_k{1 };
93
94
static constexpr std::size_t uring_send_tag_k{2 };
94
95
static constexpr std::size_t uring_stat_tag_k{3 };
95
- static constexpr std::size_t uring_acpt_tag_k{4 };
96
96
97
97
enum class stage_t {
98
98
waiting_to_accept_k = 0 ,
@@ -764,8 +764,8 @@ template <std::size_t max_count_ak> std::size_t engine_t::pop_completed(complete
764
764
if (!uring_cqe->user_data )
765
765
continue ;
766
766
767
- events[completed].connection_ptr = (connection_t *)(uring_cqe->user_data & 0x0fffffffffffffff );
768
- events[completed].type = ( uring_cqe->user_data >> 60 ) & 0xF ; // & 0xf000000000000000 ;
767
+ events[completed].connection_ptr = (connection_t *)(uring_cqe->user_data & ~ 0x3 );
768
+ events[completed].type = uring_cqe->user_data & 0x3 ;
769
769
events[completed].stage = events[completed].connection_ptr ->stage ;
770
770
events[completed].result = uring_cqe->res ;
771
771
++completed;
@@ -800,7 +800,7 @@ bool engine_t::consider_accepting_new_connection() noexcept {
800
800
uring_sqe = io_uring_get_sqe (&uring);
801
801
io_uring_prep_accept_direct (uring_sqe, socket, &connection.client_address , &connection.client_address_len , 0 ,
802
802
IORING_FILE_INDEX_ALLOC);
803
- io_uring_sqe_set_data (uring_sqe, (void *)(( uring_acpt_tag_k<< 60 ) | uint64_t (&connection)));
803
+ io_uring_sqe_set_data (uring_sqe, (void *)(uring_acpt_tag_k | uint64_t (&connection)));
804
804
805
805
// Accepting new connections can be time-less.
806
806
// io_uring_sqe_set_flags(uring_sqe, IOSQE_IO_LINK);
@@ -830,7 +830,7 @@ void engine_t::submit_stats_heartbeat() noexcept {
830
830
831
831
uring_sqe = io_uring_get_sqe (&uring);
832
832
io_uring_prep_timeout (uring_sqe, &connection.next_wakeup , 0 , 0 );
833
- io_uring_sqe_set_data (uring_sqe, (void *)(( uring_stat_tag_k<< 60 ) | uint64_t (&connection)));
833
+ io_uring_sqe_set_data (uring_sqe, (void *)(uring_stat_tag_k | uint64_t (&connection)));
834
834
uring_result = io_uring_submit (&uring);
835
835
submission_mutex.unlock ();
836
836
}
@@ -902,7 +902,7 @@ void automata_t::send_next() noexcept {
902
902
uring_sqe->flags |= IOSQE_FIXED_FILE;
903
903
uring_sqe->buf_index = engine.connections .offset_of (connection) * 2u + 1u ;
904
904
}
905
- io_uring_sqe_set_data (uring_sqe, (void *)(( uring_send_tag_k<< 60 ) | uint64_t (&connection)));
905
+ io_uring_sqe_set_data (uring_sqe, (void *)(uring_send_tag_k | uint64_t (&connection)));
906
906
io_uring_sqe_set_flags (uring_sqe, 0 );
907
907
uring_result = io_uring_submit (&engine.uring );
908
908
engine.submission_mutex .unlock ();
@@ -928,7 +928,7 @@ void automata_t::receive_next() noexcept {
928
928
uring_sqe = io_uring_get_sqe (&engine.uring );
929
929
io_uring_prep_read_fixed (uring_sqe, int (connection.descriptor ), (void *)pipes.next_input_address (),
930
930
pipes.next_input_length (), 0 , engine.connections .offset_of (connection) * 2u );
931
- io_uring_sqe_set_data (uring_sqe, (void *)(( uring_recv_tag_k<< 60 ) | uint64_t (&connection)));
931
+ io_uring_sqe_set_data (uring_sqe, (void *)(uring_recv_tag_k | uint64_t (&connection)));
932
932
io_uring_sqe_set_flags (uring_sqe, IOSQE_IO_LINK);
933
933
934
934
// More than other operations this depends on the information coming from the client.
@@ -947,13 +947,13 @@ void automata_t::receive_next() noexcept {
947
947
void automata_t::operator ()() noexcept {
948
948
949
949
if (is_corrupted ())
950
- if ( connection.stage != stage_t ::waiting_to_close_k )
950
+ if (connection.stage != stage_t ::waiting_to_close_k)
951
951
return close_gracefully ();
952
952
953
953
switch (connection.stage ) {
954
954
955
955
case stage_t ::waiting_to_accept_k:
956
- if ( type != uring_acpt_tag_k ) {
956
+ if (type != uring_acpt_tag_k) {
957
957
return ;
958
958
}
959
959
@@ -973,7 +973,7 @@ void automata_t::operator()() noexcept {
973
973
974
974
case stage_t ::expecting_reception_k:
975
975
976
- if ( type != uring_recv_tag_k ) {
976
+ if (type != uring_recv_tag_k) {
977
977
return ;
978
978
}
979
979
// From documentation:
0 commit comments