winsocks scope
This commit is contained in:
parent
049b2b1a49
commit
ffe2cc2f51
@ -5,3 +5,8 @@ mod servers_context;
|
|||||||
|
|
||||||
pub type Address = windows::WindowsAddressKnown;
|
pub type Address = windows::WindowsAddressKnown;
|
||||||
use allocator::Allocator;
|
use allocator::Allocator;
|
||||||
|
use crate::io::windows::winsocks_scope;
|
||||||
|
|
||||||
|
pub(crate) fn network_scope<R>(scope: impl FnOnce() -> R) -> R {
|
||||||
|
return winsocks_scope(scope);
|
||||||
|
}
|
||||||
@ -2,5 +2,7 @@ mod address;
|
|||||||
mod errors;
|
mod errors;
|
||||||
mod eventloop;
|
mod eventloop;
|
||||||
mod task;
|
mod task;
|
||||||
|
mod winsocks_scope;
|
||||||
|
|
||||||
pub use address::{WindowsAddressAny, WindowsAddressKnown};
|
pub use address::{WindowsAddressAny, WindowsAddressKnown};
|
||||||
|
pub(super) use winsocks_scope::winsocks_scope;
|
||||||
21
src/io/windows/winsocks_scope.rs
Normal file
21
src/io/windows/winsocks_scope.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
use super::errors::throw_from_windows_err_code;
|
||||||
|
use std::mem::uninitialized;
|
||||||
|
use windows::Win32::Networking::WinSock::{WSACleanup, WSAStartup};
|
||||||
|
|
||||||
|
pub(in super::super) fn winsocks_scope<R>(scope: impl FnOnce() -> R) -> R {
|
||||||
|
unsafe {
|
||||||
|
match WSAStartup(0x0202, &mut uninitialized()) {
|
||||||
|
0 => {}
|
||||||
|
errcode => throw_from_windows_err_code(errcode),
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = scope();
|
||||||
|
|
||||||
|
match WSACleanup() {
|
||||||
|
0 => {}
|
||||||
|
errcode => throw_from_windows_err_code(errcode),
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
|
use crate::io::network_scope;
|
||||||
|
|
||||||
mod data;
|
mod data;
|
||||||
mod io;
|
mod io;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Hello, world!");
|
network_scope(|| {
|
||||||
|
println!("Hello, world!");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user