diff --git a/Cargo.lock b/Cargo.lock index 8983bbeb..2c32ea04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1347,6 +1347,7 @@ dependencies = [ "embed-resource", "ironrdp", "ironrdp-cliprdr-native", + "ironrdp-core", "sspi", "thiserror", "tracing", @@ -2012,6 +2013,7 @@ version = "0.1.0" dependencies = [ "ironrdp-async", "ironrdp-connector", + "ironrdp-core", "ironrdp-pdu", "ironrdp-svc", "tracing", @@ -2035,6 +2037,7 @@ version = "0.1.0" dependencies = [ "bytes", "ironrdp-connector", + "ironrdp-core", "ironrdp-pdu", "tracing", ] @@ -2045,6 +2048,7 @@ version = "0.1.0" dependencies = [ "bytes", "ironrdp-connector", + "ironrdp-core", "ironrdp-pdu", "tracing", ] @@ -2058,6 +2062,7 @@ dependencies = [ "inquire", "ironrdp", "ironrdp-cliprdr-native", + "ironrdp-core", "ironrdp-rdpsnd-native", "ironrdp-tls", "ironrdp-tokio", diff --git a/crates/ironrdp-acceptor/Cargo.toml b/crates/ironrdp-acceptor/Cargo.toml index 6056c337..77cc242f 100644 --- a/crates/ironrdp-acceptor/Cargo.toml +++ b/crates/ironrdp-acceptor/Cargo.toml @@ -21,6 +21,7 @@ ironrdp-svc.workspace = true ironrdp-connector.workspace = true ironrdp-async.workspace = true tracing.workspace = true +ironrdp-core = { workspace = true, features = ["alloc"] } [lints] workspace = true diff --git a/crates/ironrdp-acceptor/src/channel_connection.rs b/crates/ironrdp-acceptor/src/channel_connection.rs index b1e33317..a058c0ea 100644 --- a/crates/ironrdp-acceptor/src/channel_connection.rs +++ b/crates/ironrdp-acceptor/src/channel_connection.rs @@ -1,9 +1,9 @@ use std::collections::HashSet; use ironrdp_connector::{reason_err, ConnectorError, ConnectorErrorExt, ConnectorResult, Sequence, State, Written}; +use ironrdp_core::WriteBuf; use ironrdp_pdu as pdu; use pdu::mcs; -use pdu::write_buf::WriteBuf; #[derive(Debug)] pub struct ChannelConnectionSequence { diff --git a/crates/ironrdp-acceptor/src/connection.rs b/crates/ironrdp-acceptor/src/connection.rs index d1f99ee6..16218627 100644 --- a/crates/ironrdp-acceptor/src/connection.rs +++ b/crates/ironrdp-acceptor/src/connection.rs @@ -5,12 +5,12 @@ use ironrdp_connector::{ encode_x224_packet, reason_err, ConnectorError, ConnectorErrorExt, ConnectorResult, DesktopSize, Sequence, State, Written, }; +use ironrdp_core::WriteBuf; use ironrdp_pdu as pdu; use ironrdp_svc::{StaticChannelSet, SvcServerProcessor}; use pdu::rdp::capability_sets::CapabilitySet; use pdu::rdp::headers::ShareControlPdu; use pdu::rdp::server_license::{LicensePdu, LicensingErrorMessage}; -use pdu::write_buf::WriteBuf; use pdu::{decode, gcc, mcs, nego, rdp}; use super::channel_connection::ChannelConnectionSequence; diff --git a/crates/ironrdp-acceptor/src/finalization.rs b/crates/ironrdp-acceptor/src/finalization.rs index c3eb3e69..9b5661d4 100644 --- a/crates/ironrdp-acceptor/src/finalization.rs +++ b/crates/ironrdp-acceptor/src/finalization.rs @@ -1,7 +1,7 @@ use ironrdp_connector::{ConnectorError, ConnectorErrorExt, ConnectorResult, Sequence, State, Written}; +use ironrdp_core::WriteBuf; use ironrdp_pdu as pdu; use pdu::rdp; -use pdu::write_buf::WriteBuf; use crate::util::{self, wrap_share_data}; diff --git a/crates/ironrdp-acceptor/src/lib.rs b/crates/ironrdp-acceptor/src/lib.rs index 24e63b1e..f49d7cec 100644 --- a/crates/ironrdp-acceptor/src/lib.rs +++ b/crates/ironrdp-acceptor/src/lib.rs @@ -4,7 +4,7 @@ extern crate tracing; use ironrdp_async::bytes::Bytes; use ironrdp_async::{single_sequence_step, Framed, FramedRead, FramedWrite, StreamWrapper}; use ironrdp_connector::ConnectorResult; -use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_core::WriteBuf; mod channel_connection; mod connection; diff --git a/crates/ironrdp-acceptor/src/util.rs b/crates/ironrdp-acceptor/src/util.rs index 0cafcaa7..66897057 100644 --- a/crates/ironrdp-acceptor/src/util.rs +++ b/crates/ironrdp-acceptor/src/util.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use ironrdp_connector::{ConnectorError, ConnectorErrorExt, ConnectorResult}; -use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_core::WriteBuf; use ironrdp_pdu::{encode_vec, rdp, PduEncode}; pub(crate) fn encode_send_data_indication( diff --git a/crates/ironrdp-async/Cargo.toml b/crates/ironrdp-async/Cargo.toml index 97830b33..b63d29e4 100644 --- a/crates/ironrdp-async/Cargo.toml +++ b/crates/ironrdp-async/Cargo.toml @@ -18,6 +18,7 @@ test = false [dependencies] bytes = "1" ironrdp-connector.workspace = true +ironrdp-core = { workspace = true, features = ["alloc"] } ironrdp-pdu.workspace = true # ironrdp-session.workspace = true tracing.workspace = true diff --git a/crates/ironrdp-async/src/connector.rs b/crates/ironrdp-async/src/connector.rs index d18de69a..23a300f4 100644 --- a/crates/ironrdp-async/src/connector.rs +++ b/crates/ironrdp-async/src/connector.rs @@ -5,7 +5,7 @@ use ironrdp_connector::{ custom_err, general_err, ClientConnector, ClientConnectorState, ConnectionResult, ConnectorError, ConnectorResult, ServerName, State as _, }; -use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_core::WriteBuf; use crate::framed::{Framed, FramedRead, FramedWrite}; use crate::{single_sequence_step, AsyncNetworkClient}; diff --git a/crates/ironrdp-async/src/framed.rs b/crates/ironrdp-async/src/framed.rs index 2fcf0652..8d0f48a2 100644 --- a/crates/ironrdp-async/src/framed.rs +++ b/crates/ironrdp-async/src/framed.rs @@ -2,7 +2,8 @@ use std::io; use bytes::{Bytes, BytesMut}; use ironrdp_connector::{ConnectorResult, Sequence, Written}; -use ironrdp_pdu::{write_buf::WriteBuf, PduHint}; +use ironrdp_core::WriteBuf; +use ironrdp_pdu::PduHint; // TODO: investigate if we could use static async fn / return position impl trait in traits when stabilized: // https://github.com/rust-lang/rust/issues/91611 diff --git a/crates/ironrdp-blocking/Cargo.toml b/crates/ironrdp-blocking/Cargo.toml index bfe9b529..6eb4b94c 100644 --- a/crates/ironrdp-blocking/Cargo.toml +++ b/crates/ironrdp-blocking/Cargo.toml @@ -18,6 +18,7 @@ test = false [dependencies] bytes = "1" ironrdp-connector.workspace = true +ironrdp-core = { workspace = true, features = ["alloc"] } ironrdp-pdu.workspace = true # ironrdp-session.workspace = true tracing.workspace = true diff --git a/crates/ironrdp-blocking/src/connector.rs b/crates/ironrdp-blocking/src/connector.rs index e10611d8..f98915c9 100644 --- a/crates/ironrdp-blocking/src/connector.rs +++ b/crates/ironrdp-blocking/src/connector.rs @@ -9,7 +9,7 @@ use ironrdp_connector::{ general_err, ClientConnector, ClientConnectorState, ConnectionResult, ConnectorError, ConnectorResult, Sequence as _, ServerName, State as _, }; -use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_core::WriteBuf; use crate::framed::Framed; diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index 9dce16ca..ac2e0e07 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -72,6 +72,7 @@ semver = "1" reqwest = "0.12" url = "2.5" raw-window-handle = "0.6.2" +ironrdp-core = { workspace = true, features = ["alloc"] } [target.'cfg(windows)'.dependencies] windows = { workspace = true, features = ["Win32_Foundation"] } diff --git a/crates/ironrdp-client/src/rdp.rs b/crates/ironrdp-client/src/rdp.rs index 04f38eca..44b26104 100644 --- a/crates/ironrdp-client/src/rdp.rs +++ b/crates/ironrdp-client/src/rdp.rs @@ -5,10 +5,10 @@ use ironrdp::displaycontrol::client::DisplayControlClient; use ironrdp::displaycontrol::pdu::MonitorLayoutEntry; use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::pdu::input::fast_path::FastPathInputEvent; -use ironrdp::pdu::write_buf::WriteBuf; use ironrdp::session::image::DecodedImage; use ironrdp::session::{fast_path, ActiveStage, ActiveStageOutput, GracefulDisconnectReason, SessionResult}; use ironrdp::{cliprdr, connector, rdpdr, rdpsnd, session}; +use ironrdp_core::WriteBuf; use ironrdp_rdpsnd_native::cpal; use ironrdp_tokio::single_sequence_step_read; use rdpdr::NoopRdpdrBackend; diff --git a/crates/ironrdp-connector/src/channel_connection.rs b/crates/ironrdp-connector/src/channel_connection.rs index 4cb71845..fbb4d1e6 100644 --- a/crates/ironrdp-connector/src/channel_connection.rs +++ b/crates/ironrdp-connector/src/channel_connection.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use std::mem; -use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_core::WriteBuf; use ironrdp_pdu::{mcs, PduHint}; use crate::{ConnectorError, ConnectorErrorExt as _, ConnectorResult, Sequence, State, Written}; diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index 71680c63..c44e5878 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -2,8 +2,8 @@ use std::borrow::Cow; use std::mem; use std::net::SocketAddr; +use ironrdp_core::WriteBuf; use ironrdp_pdu::rdp::client_info::TimezoneInfo; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{decode, encode_vec, gcc, mcs, nego, rdp, PduEncode, PduHint}; use ironrdp_svc::{StaticChannelSet, StaticVirtualChannel, SvcClientProcessor}; diff --git a/crates/ironrdp-connector/src/connection_activation.rs b/crates/ironrdp-connector/src/connection_activation.rs index beba3c5b..a85bac88 100644 --- a/crates/ironrdp-connector/src/connection_activation.rs +++ b/crates/ironrdp-connector/src/connection_activation.rs @@ -83,7 +83,7 @@ impl Sequence for ConnectionActivationSequence { &self.state } - fn step(&mut self, input: &[u8], output: &mut ironrdp_pdu::write_buf::WriteBuf) -> ConnectorResult { + fn step(&mut self, input: &[u8], output: &mut ironrdp_core::WriteBuf) -> ConnectorResult { let (written, next_state) = match mem::take(&mut self.state) { ConnectionActivationState::Consumed | ConnectionActivationState::Finalized { .. } => { return Err(general_err!( diff --git a/crates/ironrdp-connector/src/connection_finalization.rs b/crates/ironrdp-connector/src/connection_finalization.rs index e3a6483f..24ba44d5 100644 --- a/crates/ironrdp-connector/src/connection_finalization.rs +++ b/crates/ironrdp-connector/src/connection_finalization.rs @@ -1,9 +1,9 @@ use std::mem; +use ironrdp_core::WriteBuf; use ironrdp_pdu::rdp::capability_sets::SERVER_CHANNEL_ID; use ironrdp_pdu::rdp::headers::ShareDataPdu; use ironrdp_pdu::rdp::{finalization_messages, server_error_info}; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::PduHint; use crate::{legacy, ConnectorResult, Sequence, State, Written}; diff --git a/crates/ironrdp-connector/src/credssp.rs b/crates/ironrdp-connector/src/credssp.rs index 1ae80cdd..b53031ec 100644 --- a/crates/ironrdp-connector/src/credssp.rs +++ b/crates/ironrdp-connector/src/credssp.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_core::WriteBuf; use ironrdp_pdu::{nego, PduHint}; use picky::key::PrivateKey; use picky_asn1_x509::{oids, Certificate, ExtensionView, GeneralName}; diff --git a/crates/ironrdp-connector/src/legacy.rs b/crates/ironrdp-connector/src/legacy.rs index 1b0ff06c..ad000a95 100644 --- a/crates/ironrdp-connector/src/legacy.rs +++ b/crates/ironrdp-connector/src/legacy.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; +use ironrdp_core::WriteBuf; use ironrdp_pdu::rdp::headers::ServerDeactivateAll; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{decode, encode_vec, rdp, PduDecode, PduEncode}; use crate::{ConnectorError, ConnectorErrorExt as _, ConnectorResult}; diff --git a/crates/ironrdp-connector/src/lib.rs b/crates/ironrdp-connector/src/lib.rs index 8a77e876..91b21cff 100644 --- a/crates/ironrdp-connector/src/lib.rs +++ b/crates/ironrdp-connector/src/lib.rs @@ -23,9 +23,9 @@ use core::fmt; pub use channel_connection::{ChannelConnectionSequence, ChannelConnectionState}; pub use connection::{encode_send_data_request, ClientConnector, ClientConnectorState, ConnectionResult}; pub use connection_finalization::{ConnectionFinalizationSequence, ConnectionFinalizationState}; +use ironrdp_core::WriteBuf; use ironrdp_pdu::rdp::capability_sets; use ironrdp_pdu::rdp::client_info::PerformanceFlags; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{encode_buf, encode_vec, gcc, x224, PduEncode, PduHint}; pub use license_exchange::{LicenseExchangeSequence, LicenseExchangeState}; pub use server_name::ServerName; diff --git a/crates/ironrdp-connector/src/license_exchange.rs b/crates/ironrdp-connector/src/license_exchange.rs index 09f5be05..817ccac0 100644 --- a/crates/ironrdp-connector/src/license_exchange.rs +++ b/crates/ironrdp-connector/src/license_exchange.rs @@ -1,8 +1,8 @@ use core::fmt; use std::mem; +use ironrdp_core::WriteBuf; use ironrdp_pdu::rdp::server_license::{self, LicensePdu, ServerLicenseError}; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::PduHint; use rand_core::{OsRng, RngCore as _}; diff --git a/crates/ironrdp-core/src/lib.rs b/crates/ironrdp-core/src/lib.rs index 45142e86..9ffa9db2 100644 --- a/crates/ironrdp-core/src/lib.rs +++ b/crates/ironrdp-core/src/lib.rs @@ -13,12 +13,16 @@ mod macros; mod as_any; mod cursor; mod into_owned; +#[cfg(feature = "alloc")] +mod write_buf; // Flat API hierarchy of common traits and types pub use self::as_any::*; pub use self::cursor::*; pub use self::into_owned::*; +#[cfg(feature = "alloc")] +pub use self::write_buf::*; // Trait that can only be implemented within the current module pub(crate) mod private { diff --git a/crates/ironrdp-pdu/src/write_buf.rs b/crates/ironrdp-core/src/write_buf.rs similarity index 90% rename from crates/ironrdp-pdu/src/write_buf.rs rename to crates/ironrdp-core/src/write_buf.rs index e3a7b0a0..09023c00 100644 --- a/crates/ironrdp-pdu/src/write_buf.rs +++ b/crates/ironrdp-core/src/write_buf.rs @@ -1,3 +1,4 @@ +use alloc::vec::Vec; use core::ops::{Index, Range, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive}; /// Max capacity to keep for the inner Vec when `WriteBuf::clear` is called. @@ -32,6 +33,7 @@ impl WriteBuf { } } + /// Constructs a new `WriteBuf` from a given `Vec`. #[inline] pub const fn from_vec(buffer: Vec) -> Self { Self { @@ -40,6 +42,7 @@ impl WriteBuf { } } + /// Consumes the `WriteBuf`, returning the underlying `Vec`. #[inline] pub fn into_inner(self) -> Vec { self.inner @@ -81,6 +84,7 @@ impl WriteBuf { &mut self.inner[self.filled..] } + /// Writes an array of bytes into the buffer. #[inline] pub fn write_array(&mut self, array: [u8; N]) { self.initialize(N); @@ -88,6 +92,7 @@ impl WriteBuf { self.filled += N; } + /// Writes a slice of bytes into the buffer. #[inline] pub fn write_slice(&mut self, slice: &[u8]) { let n = slice.len(); @@ -96,36 +101,43 @@ impl WriteBuf { self.filled += n; } + /// Writes a single byte into the buffer. #[inline] pub fn write_u8(&mut self, value: u8) { self.write_array(value.to_le_bytes()) } + /// Writes a `u16` into the buffer as little-endian. #[inline] pub fn write_u16(&mut self, value: u16) { self.write_array(value.to_le_bytes()) } + /// Writes a `u16` into the buffer as big-endian. #[inline] pub fn write_u16_be(&mut self, value: u16) { self.write_array(value.to_be_bytes()) } + /// Writes a `u32` into the buffer as little-endian. #[inline] pub fn write_u32(&mut self, value: u32) { self.write_array(value.to_le_bytes()) } + /// Writes a `u32` into the buffer as big-endian. #[inline] pub fn write_u32_be(&mut self, value: u32) { self.write_array(value.to_be_bytes()) } + /// Writes a `u64` into the buffer as little-endian. #[inline] pub fn write_u64(&mut self, value: u64) { self.write_array(value.to_le_bytes()) } + /// Writes a `u64` into the buffer as big-endian. #[inline] pub fn write_u64_be(&mut self, value: u64) { self.write_array(value.to_be_bytes()) diff --git a/crates/ironrdp-dvc/Cargo.toml b/crates/ironrdp-dvc/Cargo.toml index 7601e92f..d86429c6 100644 --- a/crates/ironrdp-dvc/Cargo.toml +++ b/crates/ironrdp-dvc/Cargo.toml @@ -20,7 +20,7 @@ default = [] std = [] [dependencies] -ironrdp-core.workspace = true +ironrdp-core = { workspace = true, features = ["alloc"] } ironrdp-svc.workspace = true ironrdp-pdu = { workspace = true, features = ["alloc"] } tracing.workspace = true diff --git a/crates/ironrdp-pdu/src/lib.rs b/crates/ironrdp-pdu/src/lib.rs index 062c801b..3a8141c5 100644 --- a/crates/ironrdp-pdu/src/lib.rs +++ b/crates/ironrdp-pdu/src/lib.rs @@ -8,7 +8,7 @@ use core::fmt; use ironrdp_core::{ReadCursor, WriteCursor}; #[cfg(feature = "alloc")] -use write_buf::WriteBuf; +use ironrdp_core::WriteBuf; #[macro_use] mod macros; @@ -26,8 +26,6 @@ pub mod tpdu; pub mod tpkt; pub mod utf16; pub mod utils; -#[cfg(feature = "alloc")] -pub mod write_buf; pub mod x224; pub(crate) mod basic_output; diff --git a/crates/ironrdp-session/src/active_stage.rs b/crates/ironrdp-session/src/active_stage.rs index 12000c80..98f5f8e0 100644 --- a/crates/ironrdp-session/src/active_stage.rs +++ b/crates/ironrdp-session/src/active_stage.rs @@ -2,13 +2,13 @@ use std::rc::Rc; use ironrdp_connector::connection_activation::ConnectionActivationSequence; use ironrdp_connector::ConnectionResult; +use ironrdp_core::WriteBuf; use ironrdp_displaycontrol::client::DisplayControlClient; use ironrdp_dvc::{DrdynvcClient, DvcProcessor, DynamicVirtualChannel}; use ironrdp_graphics::pointer::DecodedPointer; use ironrdp_pdu::geometry::InclusiveRectangle; use ironrdp_pdu::input::fast_path::{FastPathInput, FastPathInputEvent}; use ironrdp_pdu::rdp::headers::ShareDataPdu; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{mcs, Action}; use ironrdp_svc::{SvcProcessor, SvcProcessorMessages}; diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index e992098a..048c13ba 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -1,6 +1,6 @@ use std::rc::Rc; -use ironrdp_core::ReadCursor; +use ironrdp_core::{ReadCursor, WriteBuf}; use ironrdp_graphics::image_processing::PixelFormat; use ironrdp_graphics::pointer::{DecodedPointer, PointerBitmapTarget}; use ironrdp_graphics::rdp6::BitmapStreamDecoder; @@ -11,7 +11,6 @@ use ironrdp_pdu::geometry::{InclusiveRectangle, Rectangle as _}; use ironrdp_pdu::pointer::PointerUpdateData; use ironrdp_pdu::rdp::headers::ShareDataPdu; use ironrdp_pdu::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{decode_cursor, PduErrorKind}; use crate::image::DecodedImage; diff --git a/crates/ironrdp-session/src/x224/mod.rs b/crates/ironrdp-session/src/x224/mod.rs index 18d28ac7..15151e8f 100644 --- a/crates/ironrdp-session/src/x224/mod.rs +++ b/crates/ironrdp-session/src/x224/mod.rs @@ -1,11 +1,11 @@ use ironrdp_connector::connection_activation::ConnectionActivationSequence; use ironrdp_connector::legacy::SendDataIndicationCtx; +use ironrdp_core::WriteBuf; use ironrdp_dvc::DynamicVirtualChannel; use ironrdp_dvc::{DrdynvcClient, DvcProcessor}; use ironrdp_pdu::mcs::{DisconnectProviderUltimatum, DisconnectReason, McsMessage}; use ironrdp_pdu::rdp::headers::ShareDataPdu; use ironrdp_pdu::rdp::server_error_info::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_svc::{client_encode_svc_messages, StaticChannelSet, SvcMessage, SvcProcessor, SvcProcessorMessages}; use crate::{SessionError, SessionErrorExt as _, SessionResult}; diff --git a/crates/ironrdp-svc/src/lib.rs b/crates/ironrdp-svc/src/lib.rs index 8b6c4f57..aa947549 100644 --- a/crates/ironrdp-svc/src/lib.rs +++ b/crates/ironrdp-svc/src/lib.rs @@ -15,10 +15,8 @@ use std::borrow::Cow; use std::marker::PhantomData; use bitflags::bitflags; -use ironrdp_core::assert_obj_safe; -use ironrdp_core::{ReadCursor, WriteCursor}; +use ironrdp_core::{assert_obj_safe, ReadCursor, WriteBuf, WriteCursor}; use ironrdp_pdu::gcc::{ChannelName, ChannelOptions}; -use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{mcs, PduResult}; use pdu::gcc::ChannelDef; use pdu::rdp::vc::ChannelControlFlags; diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index af1e8bd0..9137e040 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -21,9 +21,9 @@ use ironrdp::connector::{self, ClientConnector, Credentials}; use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::pdu::input::fast_path::FastPathInputEvent; use ironrdp::pdu::rdp::client_info::PerformanceFlags; -use ironrdp::pdu::write_buf::WriteBuf; use ironrdp::session::image::DecodedImage; use ironrdp::session::{fast_path, ActiveStage, ActiveStageOutput, GracefulDisconnectReason}; +use ironrdp_core::WriteBuf; use ironrdp_futures::single_sequence_step_read; use rgb::AsPixels as _; use tap::prelude::*; diff --git a/ffi/Cargo.toml b/ffi/Cargo.toml index 0a3ea8f4..fb446fa6 100644 --- a/ffi/Cargo.toml +++ b/ffi/Cargo.toml @@ -21,6 +21,7 @@ diplomat = "0.7" diplomat-runtime = "0.7" ironrdp = { workspace = true, features = ["connector", "dvc", "svc", "rdpdr", "rdpsnd", "graphics", "input", "cliprdr", "displaycontrol"] } ironrdp-cliprdr-native = { workspace = true } +ironrdp-core = { workspace = true, features = ["alloc"] } sspi = { workspace = true, features = ["network_client"] } thiserror.workspace = true tracing.workspace = true diff --git a/ffi/src/pdu.rs b/ffi/src/pdu.rs index 73f6774a..d74bc3a3 100644 --- a/ffi/src/pdu.rs +++ b/ffi/src/pdu.rs @@ -6,11 +6,11 @@ pub mod ffi { use crate::{error::ffi::IronRdpError, utils::ffi::VecU8}; #[diplomat::opaque] - pub struct WriteBuf(pub ironrdp::pdu::write_buf::WriteBuf); + pub struct WriteBuf(pub ironrdp_core::WriteBuf); impl WriteBuf { pub fn new() -> Box { - Box::new(WriteBuf(ironrdp::pdu::write_buf::WriteBuf::new())) + Box::new(WriteBuf(ironrdp_core::WriteBuf::new())) } pub fn clear(&mut self) { diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 5aa99132..ab89ec64 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -276,6 +276,7 @@ name = "ironrdp-cliprdr" version = "0.1.0" dependencies = [ "bitflags 2.5.0", + "ironrdp-core", "ironrdp-pdu", "ironrdp-svc", "thiserror", @@ -286,15 +287,24 @@ dependencies = [ name = "ironrdp-cliprdr-format" version = "0.1.0" dependencies = [ + "ironrdp-core", "ironrdp-pdu", "png", "thiserror", ] +[[package]] +name = "ironrdp-core" +version = "0.1.0" +dependencies = [ + "ironrdp-error", +] + [[package]] name = "ironrdp-displaycontrol" version = "0.1.0" dependencies = [ + "ironrdp-core", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -305,6 +315,7 @@ dependencies = [ name = "ironrdp-dvc" version = "0.1.0" dependencies = [ + "ironrdp-core", "ironrdp-pdu", "ironrdp-svc", "slab", @@ -346,6 +357,7 @@ dependencies = [ "bitflags 2.5.0", "bitvec", "byteorder", + "ironrdp-core", "ironrdp-error", "ironrdp-pdu", "lazy_static", @@ -362,6 +374,7 @@ dependencies = [ "bitflags 2.5.0", "byteorder", "der-parser", + "ironrdp-core", "ironrdp-error", "md-5", "num-bigint", @@ -380,6 +393,7 @@ name = "ironrdp-rdpdr" version = "0.1.0" dependencies = [ "bitflags 2.5.0", + "ironrdp-core", "ironrdp-error", "ironrdp-pdu", "ironrdp-svc", @@ -391,6 +405,7 @@ name = "ironrdp-rdpsnd" version = "0.1.0" dependencies = [ "bitflags 2.5.0", + "ironrdp-core", "ironrdp-pdu", "ironrdp-svc", "tracing", @@ -401,6 +416,7 @@ name = "ironrdp-svc" version = "0.1.0" dependencies = [ "bitflags 2.5.0", + "ironrdp-core", "ironrdp-pdu", ]