-
Notifications
You must be signed in to change notification settings - Fork 566
External Execution Interface #4616
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4616 +/- ##
==========================================
- Coverage 85.81% 85.73% -0.09%
==========================================
Files 59 59
Lines 17995 18035 +40
==========================================
+ Hits 15443 15462 +19
- Misses 2552 2573 +21 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
||
#[cfg(target_os = "windows")] | ||
#[repr(C)] | ||
pub struct OVERLAPPED { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
U can allowlist the bindgen types by add them here:
https://github.com/microsoft/msquic/blob/58fd56c6ba8b8190042660ca83d7748b7a1ca558/scripts/build.rs#L210C1-L210C61
This saves the manual work here but can get a lot more generated code.
I originally blocklisted QUIC_ADDR because it creates too much code for manipulating socket_addr.
Maybe we should allowlist all types and get rid of the c_types dependencies.
if (GetQueuedCompletionStatusEx(IOCP, Overlapped, ARRAYSIZE(Overlapped), &OverlappedCount, WaitTime, FALSE)) { | ||
for (ULONG i = 0; i < OverlappedCount; ++i) { | ||
QUIC_SQE* Sqe = CONTAINING_RECORD(Overlapped[i].lpOverlapped, QUIC_SQE, Overlapped); | ||
Sqe->Completion(&Overlapped[i]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can user quic callback event be invoked on this user thread here?
(I am thinking about if it is possible to write a single thread application, and potential deadlocks.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the app I added in this PR is single threaded. It works and I have the logs to prove it.
Description
Closes #1923.
Provides an interface for the application layer to completely control execution of all MsQuic work. In other words, MsQuic would create no threads internally.
Testing
Added a sample application that uses the new interface to drive MsQuic execution.
Needs to add some automation.
Documentation
Added some overview docs.
Need to add docs for the new APIs.