1 use crate::p2::SocketResult; 2 use crate::p2::bindings::{sockets::network::IpAddressFamily, sockets::tcp_create_socket}; 3 use crate::sockets::{SocketAddressFamily, TcpSocket, WasiSocketsCtxView}; 4 use wasmtime::component::Resource; 5 6 impl tcp_create_socket::Host for WasiSocketsCtxView<'_> { create_tcp_socket( &mut self, address_family: IpAddressFamily, ) -> SocketResult<Resource<TcpSocket>>7 fn create_tcp_socket( 8 &mut self, 9 address_family: IpAddressFamily, 10 ) -> SocketResult<Resource<TcpSocket>> { 11 let socket = TcpSocket::new(self.ctx, address_family.into())?; 12 let socket = self.table.push(socket)?; 13 Ok(socket) 14 } 15 } 16 17 impl From<IpAddressFamily> for SocketAddressFamily { from(family: IpAddressFamily) -> SocketAddressFamily18 fn from(family: IpAddressFamily) -> SocketAddressFamily { 19 match family { 20 IpAddressFamily::Ipv4 => Self::Ipv4, 21 IpAddressFamily::Ipv6 => Self::Ipv6, 22 } 23 } 24 } 25