1
0
Fork 0
mirror of https://gitee.com/fantix/kloop.git synced 2024-04-30 20:28:45 +00:00
kloop/resolver/src/kloop.rs
2022-06-26 11:48:34 -04:00

62 lines
1.9 KiB
Rust

/*
Copyright (c) 2022 Fantix King https://fantix.pro
kLoop is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
use core::marker;
use std::task::Waker;
use libc;
use crate::resolve::KLoopResolver;
#[repr(C)]
pub struct CResolver {
_data: [u8; 0],
_marker: marker::PhantomData<(*mut u8, marker::PhantomPinned)>,
}
#[repr(C)]
pub struct CResolve {
_data: [u8; 0],
_marker: marker::PhantomData<(*mut u8, marker::PhantomPinned)>,
}
#[repr(C)]
pub struct UDPAction {
_data: [u8; 0],
_marker: marker::PhantomData<(*mut u8, marker::PhantomPinned)>,
}
extern "C" {
pub fn resolver_set(c_resolver: *const CResolver, resolver: *mut KLoopResolver);
// pub fn resolve_set_poller(resolve: *const CResolve, poller: *mut Poller);
pub fn resolve_prep_addr(resolve: *const CResolve) -> *mut libc::sockaddr;
pub fn resolve_done_cb(resolve: *const CResolve) -> libc::c_int;
pub fn udp_bind(addr: *const libc::sockaddr, addrlen: libc::socklen_t) -> libc::c_int;
pub fn udp_action_init(fd: libc::c_int, resolver: *const CResolver) -> libc::c_ulong;
pub fn udp_send_poll(
send: libc::c_ulong,
data: *const u8,
datalen: libc::size_t,
addr: *const libc::sockaddr,
addrlen: libc::socklen_t,
waker: *mut Waker,
) -> libc::c_int;
pub fn udp_recv_poll(
recv: libc::c_ulong,
data: *mut u8,
datalen: libc::size_t,
waker: *mut Waker,
) -> libc::c_int;
pub fn udp_get_addr(action: libc::c_ulong) -> *const libc::sockaddr;
pub fn udp_action_free(action: libc::c_ulong);
}