Skip to content

Commit 847ef2f

Browse files
committed
fix: added missing session IDs to async C++ wrapper fns
1 parent 644c82a commit 847ef2f

File tree

1 file changed

+30
-22
lines changed

1 file changed

+30
-22
lines changed

ecsact/runtime/async.hh

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ template<
1414
class async_events_collector {
1515
public:
1616
using async_error_callback_t = CallbackContainer<
17-
void(ecsact_async_error, std::span<ecsact_async_request_id>)>;
17+
void(ecsact_async_session_id, ecsact_async_error, std::span<ecsact_async_request_id>)>;
1818

19-
using async_requests_done_callback_t =
20-
CallbackContainer<void(std::span<ecsact_async_request_id>)>;
19+
using async_requests_done_callback_t = CallbackContainer<
20+
void(ecsact_async_session_id, std::span<ecsact_async_request_id>)>;
2121

22-
using system_error_callback_t =
23-
CallbackContainer<void(ecsact_execute_systems_error)>;
22+
using system_error_callback_t = CallbackContainer<
23+
void(ecsact_async_session_id, ecsact_execute_systems_error)>;
2424

2525
/**
2626
* Set async error callback. If callback is already set it will be
@@ -95,6 +95,7 @@ private:
9595
std::optional<async_requests_done_callback_t> _async_requests_done_cb;
9696

9797
static void async_error_callback(
98+
ecsact_async_session_id session_id,
9899
ecsact_async_error async_err,
99100
int request_ids_length,
100101
ecsact_async_request_id* request_ids,
@@ -107,22 +108,24 @@ private:
107108
request_ids,
108109
static_cast<size_t>(request_ids_length),
109110
};
110-
self->_async_error_cb.value()(async_err, request_ids_span);
111+
self->_async_error_cb.value()(session_id, async_err, request_ids_span);
111112
}
112113
}
113114

114115
static void system_error_callback(
116+
ecsact_async_session_id session_id,
115117
ecsact_execute_systems_error err,
116118
void* callback_user_data
117119
) {
118120
auto self = static_cast<async_events_collector*>(callback_user_data);
119121

120122
if(self->_system_error_cb.has_value()) {
121-
self->_system_error_cb.value()(err);
123+
self->_system_error_cb.value()(session_id, err);
122124
}
123125
}
124126

125127
static void async_requests_done_callback(
128+
ecsact_async_session_id session_id,
126129
int request_ids_length,
127130
ecsact_async_request_id* request_ids,
128131
void* callback_user_data
@@ -134,20 +137,20 @@ private:
134137
request_ids,
135138
static_cast<size_t>(request_ids_length),
136139
};
137-
self->_async_requests_done_cb.value()(request_ids_span);
140+
self->_async_requests_done_cb.value()(session_id, request_ids_span);
138141
}
139142
}
140143
};
141144

142145
[[nodiscard]] ECSACT_ALWAYS_INLINE auto start() -> ecsact_async_session_id {
143-
return ecsact_async_start(0, nullptr);
146+
return ecsact_async_start(nullptr, 0);
144147
}
145148

146149
[[nodiscard]] ECSACT_ALWAYS_INLINE auto start( //
147-
int32_t size,
148-
const void* data
150+
const void* data,
151+
int32_t size
149152
) -> ecsact_async_session_id {
150-
return ecsact_async_start(size, data);
153+
return ecsact_async_start(data, size);
151154
}
152155

153156
ECSACT_ALWAYS_INLINE auto stop(ecsact_async_session_id id) -> void {
@@ -167,39 +170,44 @@ ECSACT_ALWAYS_INLINE auto stop(ecsact_async_session_id id) -> void {
167170
return ecsact_async_enqueue_execution_options(id, options.c());
168171
}
169172

170-
ECSACT_ALWAYS_INLINE auto flush_events() -> void {
171-
ecsact_async_flush_events(nullptr, nullptr);
173+
ECSACT_ALWAYS_INLINE auto flush_events( //
174+
ecsact_async_session_id session_id
175+
) -> void {
176+
ecsact_async_flush_events(session_id, nullptr, nullptr);
172177
}
173178

174179
template<typename ExecutionEventsCollector>
175180
requires(std::convertible_to<
176-
decltype(std::declval<ExecutionEventsCollector>().c()),
177-
const ecsact_execution_events_collector>)
181+
decltype(std::declval<ExecutionEventsCollector>().c()),
182+
const ecsact_execution_events_collector>)
178183
ECSACT_ALWAYS_INLINE auto flush_events( //
184+
ecsact_async_session_id session_id,
179185
ExecutionEventsCollector&& evc
180186
) -> void {
181187
const ecsact_execution_events_collector evc_c = evc.c();
182-
ecsact_async_flush_events(&evc_c, nullptr);
188+
ecsact_async_flush_events(session_id, &evc_c, nullptr);
183189
}
184190

185191
template<typename AsyncEventsCollector>
186192
requires(std::convertible_to<
187-
decltype(std::declval<AsyncEventsCollector>().c()),
188-
const ecsact_async_events_collector>)
193+
decltype(std::declval<AsyncEventsCollector>().c()),
194+
const ecsact_async_events_collector>)
189195
ECSACT_ALWAYS_INLINE auto flush_events( //
190-
AsyncEventsCollector&& async_evc
196+
ecsact_async_session_id session_id,
197+
AsyncEventsCollector&& async_evc
191198
) -> void {
192199
const ecsact_async_events_collector async_evc_c = async_evc.c();
193-
ecsact_async_flush_events(nullptr, &async_evc_c);
200+
ecsact_async_flush_events(session_id, nullptr, &async_evc_c);
194201
}
195202

196203
template<typename ExecutionEventsCollector, typename AsyncEventsCollector>
197204
ECSACT_ALWAYS_INLINE auto flush_events(
205+
ecsact_async_session_id session_id,
198206
ExecutionEventsCollector&& evc,
199207
AsyncEventsCollector&& async_evc
200208
) -> void {
201209
const ecsact_execution_events_collector evc_c = evc.c();
202210
const ecsact_async_events_collector async_evc_c = async_evc.c();
203-
ecsact_async_flush_events(&evc_c, &async_evc_c);
211+
ecsact_async_flush_events(session_id, &evc_c, &async_evc_c);
204212
}
205213
} // namespace ecsact::async

0 commit comments

Comments
 (0)