Skip to content

Commit 08b3048

Browse files
olsonjefferybrson
authored andcommitted
std: misc cleanup for uv::ll
* tweaked the layout of sockaddr_in6 struct in anticipation of future use * changed several uv:ll fn signatures to use generics and be more flexible with ptr types they get passed * add uv_err_data and a help fn to return it.. packages up err_name and err_msg info from uv_get_last_error() stuff..
1 parent d99b7bc commit 08b3048

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

src/libstd/uv_ll.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ type sockaddr_in = {
250250
#[cfg(target_os = "win32")]
251251
type sockaddr_in6 = {
252252
a0: *u8, a1: *u8,
253-
a2: *u8, a3: *u8
253+
a2: *u8, a3: (u8, u8, u8, u8)
254254
};
255255

256256
mod uv_ll_struct_stubgen {
@@ -777,12 +777,13 @@ unsafe fn set_data_for_uv_handle<T, U>(handle: *T,
777777
rustrt::rust_uv_set_data_for_uv_handle(handle as *libc::c_void,
778778
data as *libc::c_void);
779779
}
780-
unsafe fn get_data_for_req(req: *libc::c_void) -> *libc::c_void {
781-
ret rustrt::rust_uv_get_data_for_req(req);
780+
unsafe fn get_data_for_req<T>(req: *T) -> *libc::c_void {
781+
ret rustrt::rust_uv_get_data_for_req(req as *libc::c_void);
782782
}
783-
unsafe fn set_data_for_req(req: *libc::c_void,
784-
data: *libc::c_void) {
785-
rustrt::rust_uv_set_data_for_req(req, data);
783+
unsafe fn set_data_for_req<T, U>(req: *T,
784+
data: *U) {
785+
rustrt::rust_uv_set_data_for_req(req as *libc::c_void,
786+
data as *libc::c_void);
786787
}
787788
unsafe fn get_base_from_buf(buf: uv_buf_t) -> *u8 {
788789
ret rustrt::rust_uv_get_base_from_buf(buf);
@@ -807,6 +808,19 @@ unsafe fn get_last_err_info(uv_loop: *libc::c_void) -> str {
807808
err_name, err_msg);
808809
}
809810

811+
unsafe fn get_last_err_data(uv_loop: *libc::c_void) -> uv_err_data {
812+
let err = last_error(uv_loop);
813+
let err_ptr = ptr::addr_of(err);
814+
let err_name = str::unsafe::from_c_str(err_name(err_ptr));
815+
let err_msg = str::unsafe::from_c_str(strerror(err_ptr));
816+
{ err_name: err_name, err_msg: err_msg }
817+
}
818+
819+
type uv_err_data = {
820+
err_name: str,
821+
err_msg: str
822+
};
823+
810824
#[cfg(test)]
811825
mod test {
812826
enum tcp_read_data {

0 commit comments

Comments
 (0)