1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2022 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker use winapi::shared::ws2def::WSABUF; 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard Worker use crate::iobuf::PlatformIoBuf; 8*bb4ee6a4SAndroid Build Coastguard Worker 9*bb4ee6a4SAndroid Build Coastguard Worker /// Cross platform binary compatible iovec. See [`crate::IoBufMut`] for documentation. 10*bb4ee6a4SAndroid Build Coastguard Worker pub type IoBuf = WSABUF; 11*bb4ee6a4SAndroid Build Coastguard Worker 12*bb4ee6a4SAndroid Build Coastguard Worker impl PlatformIoBuf for IoBuf { 13*bb4ee6a4SAndroid Build Coastguard Worker #[inline] new(ptr: *mut u8, len: usize) -> Self14*bb4ee6a4SAndroid Build Coastguard Worker fn new(ptr: *mut u8, len: usize) -> Self { 15*bb4ee6a4SAndroid Build Coastguard Worker WSABUF { 16*bb4ee6a4SAndroid Build Coastguard Worker buf: ptr as *mut i8, 17*bb4ee6a4SAndroid Build Coastguard Worker len: len.try_into().unwrap(), 18*bb4ee6a4SAndroid Build Coastguard Worker } 19*bb4ee6a4SAndroid Build Coastguard Worker } 20*bb4ee6a4SAndroid Build Coastguard Worker 21*bb4ee6a4SAndroid Build Coastguard Worker #[inline] len(&self) -> usize22*bb4ee6a4SAndroid Build Coastguard Worker fn len(&self) -> usize { 23*bb4ee6a4SAndroid Build Coastguard Worker self.len as usize 24*bb4ee6a4SAndroid Build Coastguard Worker } 25*bb4ee6a4SAndroid Build Coastguard Worker 26*bb4ee6a4SAndroid Build Coastguard Worker #[inline] ptr(&self) -> *mut u827*bb4ee6a4SAndroid Build Coastguard Worker fn ptr(&self) -> *mut u8 { 28*bb4ee6a4SAndroid Build Coastguard Worker self.buf as *mut u8 29*bb4ee6a4SAndroid Build Coastguard Worker } 30*bb4ee6a4SAndroid Build Coastguard Worker 31*bb4ee6a4SAndroid Build Coastguard Worker #[inline] set_len(&mut self, len: usize)32*bb4ee6a4SAndroid Build Coastguard Worker fn set_len(&mut self, len: usize) { 33*bb4ee6a4SAndroid Build Coastguard Worker self.len = len.try_into().unwrap(); 34*bb4ee6a4SAndroid Build Coastguard Worker } 35*bb4ee6a4SAndroid Build Coastguard Worker 36*bb4ee6a4SAndroid Build Coastguard Worker #[inline] set_ptr(&mut self, ptr: *mut u8)37*bb4ee6a4SAndroid Build Coastguard Worker fn set_ptr(&mut self, ptr: *mut u8) { 38*bb4ee6a4SAndroid Build Coastguard Worker self.buf = ptr as *mut i8; 39*bb4ee6a4SAndroid Build Coastguard Worker } 40*bb4ee6a4SAndroid Build Coastguard Worker } 41