]>
git.proxmox.com Git - cargo.git/blob - vendor/miow-0.2.1/src/handle.rs
8 pub struct Handle(HANDLE
);
10 unsafe impl Send
for Handle {}
11 unsafe impl Sync
for Handle {}
14 pub fn new(handle
: HANDLE
) -> Handle
{
18 pub fn raw(&self) -> HANDLE { self.0 }
20 pub fn into_raw(self) -> HANDLE
{
28 pub fn write(&self, buf
: &[u8]) -> io
::Result
<usize> {
30 let len
= cmp
::min(buf
.len(), <DWORD
>::max_value() as usize) as DWORD
;
32 WriteFile(self.0, buf
.as_ptr() as *const _
, len
, &mut bytes
,
38 pub fn read(&self, buf
: &mut [u8]) -> io
::Result
<usize> {
40 let len
= cmp
::min(buf
.len(), <DWORD
>::max_value() as usize) as DWORD
;
42 ReadFile(self.0, buf
.as_mut_ptr() as *mut _
, len
, &mut bytes
,
48 pub unsafe fn read_overlapped(&self, buf
: &mut [u8],
49 overlapped
: *mut OVERLAPPED
)
50 -> io
::Result
<Option
<usize>> {
51 let len
= cmp
::min(buf
.len(), <DWORD
>::max_value() as usize) as DWORD
;
55 buf
.as_mut_ptr() as *mut _
,
61 Ok(_
) => Ok(Some(bytes
as usize)),
62 Err(ref e
) if e
.raw_os_error() == Some(ERROR_IO_PENDING
as i32)
68 pub unsafe fn write_overlapped(&self, buf
: &[u8],
69 overlapped
: *mut OVERLAPPED
)
70 -> io
::Result
<Option
<usize>> {
71 let len
= cmp
::min(buf
.len(), <DWORD
>::max_value() as usize) as DWORD
;
75 buf
.as_ptr() as *const _
,
81 Ok(_
) => Ok(Some(bytes
as usize)),
82 Err(ref e
) if e
.raw_os_error() == Some(ERROR_IO_PENDING
as i32)
89 impl Drop
for Handle
{
91 unsafe { CloseHandle(self.0) }
;