refactor(core): move impl_as_any macros

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
Marc-André Lureau
2024-08-30 00:05:16 -04:00
committed by Benoît Cortier
parent 40cd8405f2
commit 4154ceea05
29 changed files with 95 additions and 54 deletions
Generated
+8
View File
@@ -2082,6 +2082,7 @@ name = "ironrdp-cliprdr"
version = "0.1.0"
dependencies = [
"bitflags 2.6.0",
"ironrdp-core",
"ironrdp-pdu",
"ironrdp-svc",
"thiserror",
@@ -2102,6 +2103,7 @@ name = "ironrdp-cliprdr-native"
version = "0.1.0"
dependencies = [
"ironrdp-cliprdr",
"ironrdp-core",
"ironrdp-svc",
"thiserror",
"tracing",
@@ -2138,6 +2140,7 @@ dependencies = [
name = "ironrdp-displaycontrol"
version = "0.1.0"
dependencies = [
"ironrdp-core",
"ironrdp-dvc",
"ironrdp-pdu",
"ironrdp-svc",
@@ -2250,6 +2253,7 @@ name = "ironrdp-rdpdr"
version = "0.1.0"
dependencies = [
"bitflags 2.6.0",
"ironrdp-core",
"ironrdp-error",
"ironrdp-pdu",
"ironrdp-svc",
@@ -2260,6 +2264,7 @@ dependencies = [
name = "ironrdp-rdpdr-native"
version = "0.1.0"
dependencies = [
"ironrdp-core",
"ironrdp-pdu",
"ironrdp-rdpdr",
"ironrdp-svc",
@@ -2272,6 +2277,7 @@ name = "ironrdp-rdpsnd"
version = "0.1.0"
dependencies = [
"bitflags 2.6.0",
"ironrdp-core",
"ironrdp-pdu",
"ironrdp-svc",
"tracing",
@@ -2298,6 +2304,7 @@ dependencies = [
"ironrdp-ainput",
"ironrdp-async",
"ironrdp-cliprdr",
"ironrdp-core",
"ironrdp-displaycontrol",
"ironrdp-dvc",
"ironrdp-graphics",
@@ -2400,6 +2407,7 @@ dependencies = [
"gloo-timers",
"ironrdp",
"ironrdp-cliprdr-format",
"ironrdp-core",
"ironrdp-futures",
"ironrdp-rdcleanpath",
"js-sys",
+1
View File
@@ -17,6 +17,7 @@ doctest = false
test = false
[dependencies]
ironrdp-core.workspace = true
ironrdp-cliprdr.workspace = true
ironrdp-svc.workspace = true
tracing.workspace = true
+1 -1
View File
@@ -3,7 +3,7 @@ use ironrdp_cliprdr::pdu::{
ClipboardFormat, ClipboardGeneralCapabilityFlags, FileContentsRequest, FileContentsResponse, FormatDataRequest,
FormatDataResponse, LockDataId,
};
use ironrdp_svc::impl_as_any;
use ironrdp_core::impl_as_any;
use tracing::debug;
pub struct StubClipboard;
@@ -1,11 +1,11 @@
use std::sync::mpsc as mpsc_sync;
use ironrdp_core::impl_as_any;
use ironrdp_cliprdr::backend::CliprdrBackend;
use ironrdp_cliprdr::pdu::{
ClipboardFormat, ClipboardGeneralCapabilityFlags, FileContentsRequest, FileContentsResponse, FormatDataRequest,
FormatDataResponse, LockDataId,
};
use ironrdp_svc::impl_as_any;
use windows::Win32::Foundation::{HWND, LPARAM, WPARAM};
use windows::Win32::UI::WindowsAndMessaging::PostMessageW;
+1 -1
View File
@@ -17,6 +17,7 @@ doctest = false
test = false
[dependencies]
ironrdp-core.workspace = true
ironrdp-pdu.workspace = true
ironrdp-svc.workspace = true
thiserror.workspace = true
@@ -25,4 +26,3 @@ bitflags.workspace = true
[lints]
workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
//! This module provides infrastructure for implementing OS-specific clipboard backend.
use ironrdp_svc::AsAny;
use ironrdp_core::AsAny;
use crate::pdu::{
ClipboardFormat, ClipboardFormatId, ClipboardGeneralCapabilityFlags, FileContentsRequest, FileContentsResponse,
+2 -1
View File
@@ -9,10 +9,11 @@ pub mod backend;
pub mod pdu;
use backend::CliprdrBackend;
use ironrdp_core::AsAny;
use ironrdp_pdu::gcc::ChannelName;
use ironrdp_pdu::{decode, PduResult};
use ironrdp_svc::{
AsAny, ChannelFlags, CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor, SvcProcessorMessages,
ChannelFlags, CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor, SvcProcessorMessages,
SvcServerProcessor,
};
use pdu::{
+28
View File
@@ -0,0 +1,28 @@
use core::any::Any;
/// Implement [`AsAny`] for the given type.
#[macro_export]
macro_rules! impl_as_any {
($t:ty) => {
impl $crate::AsAny for $t {
#[inline]
fn as_any(&self) -> &dyn core::any::Any {
self
}
#[inline]
fn as_any_mut(&mut self) -> &mut dyn core::any::Any {
self
}
}
};
}
/// Type information (`TypeId`) may be retrieved at runtime for this type.
pub trait AsAny: 'static {
/// Returns a reference to the type information for this type.
fn as_any(&self) -> &dyn Any;
/// Returns a mutable reference to the type information for this type.
fn as_any_mut(&mut self) -> &mut dyn Any;
}
+6
View File
@@ -10,6 +10,12 @@ extern crate alloc;
#[macro_use]
mod macros;
mod as_any;
// Flat API hierarchy of common traits and types
pub use self::as_any::*;
// Trait that can only be implemented within the current module
pub(crate) mod private {
#[doc(hidden)]
+1 -1
View File
@@ -12,6 +12,7 @@ keywords.workspace = true
categories.workspace = true
[dependencies]
ironrdp-core.workspace = true
ironrdp-dvc.workspace = true
ironrdp-pdu.workspace = true
ironrdp-svc.workspace = true
@@ -19,4 +20,3 @@ tracing.workspace = true
[lints]
workspace = true
+2 -1
View File
@@ -2,9 +2,10 @@ use crate::{
pdu::{DisplayControlCapabilities, DisplayControlMonitorLayout, DisplayControlPdu},
CHANNEL_NAME,
};
use ironrdp_core::impl_as_any;
use ironrdp_dvc::{encode_dvc_messages, DvcClientProcessor, DvcMessage, DvcProcessor};
use ironrdp_pdu::{cursor::ReadCursor, PduDecode, PduResult};
use ironrdp_svc::{impl_as_any, ChannelFlags, SvcMessage};
use ironrdp_svc::{ChannelFlags, SvcMessage};
use tracing::debug;
/// A client for the Display Control Virtual Channel.
+1 -1
View File
@@ -1,6 +1,6 @@
use ironrdp_core::impl_as_any;
use ironrdp_dvc::{DvcMessage, DvcProcessor, DvcServerProcessor};
use ironrdp_pdu::{decode, PduResult};
use ironrdp_svc::impl_as_any;
use tracing::debug;
use crate::{
+2 -1
View File
@@ -6,8 +6,9 @@ use crate::{encode_dvc_messages, DvcProcessor, DynamicChannelSet, DynamicVirtual
use alloc::vec::Vec;
use core::any::TypeId;
use core::fmt;
use ironrdp_core::impl_as_any;
use ironrdp_pdu as pdu;
use ironrdp_svc::{impl_as_any, ChannelFlags, CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor};
use ironrdp_svc::{ChannelFlags, CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor};
use pdu::cursor::ReadCursor;
use pdu::gcc::ChannelName;
use pdu::other_err;
+2 -2
View File
@@ -16,9 +16,9 @@ use alloc::vec::Vec;
// Re-export ironrdp_pdu crate for convenience
#[rustfmt::skip] // do not re-order this pub use
pub use ironrdp_pdu;
use ironrdp_core::assert_obj_safe;
use ironrdp_core::{assert_obj_safe, AsAny};
use ironrdp_pdu::{cast_length, encode_vec, other_err, PduEncode, PduResult};
use ironrdp_svc::{self, AsAny, SvcMessage};
use ironrdp_svc::{self, SvcMessage};
mod complete_data;
use complete_data::CompleteData;
+2 -1
View File
@@ -5,8 +5,9 @@ use crate::{encode_dvc_messages, CompleteData, DvcProcessor};
use alloc::boxed::Box;
use alloc::vec::Vec;
use core::fmt;
use ironrdp_core::impl_as_any;
use ironrdp_pdu as pdu;
use ironrdp_svc::{impl_as_any, ChannelFlags, CompressionCondition, SvcMessage, SvcProcessor, SvcServerProcessor};
use ironrdp_svc::{ChannelFlags, CompressionCondition, SvcMessage, SvcProcessor, SvcServerProcessor};
use pdu::cursor::ReadCursor;
use pdu::gcc::ChannelName;
use pdu::PduDecode as _;
+1
View File
@@ -17,6 +17,7 @@ test = false
[target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies]
ironrdp-core.workspace = true
ironrdp-pdu.workspace = true
ironrdp-svc.workspace = true
ironrdp-rdpdr.workspace = true
@@ -1,9 +1,10 @@
use ironrdp_core::impl_as_any;
use ironrdp_pdu::PduResult;
use ironrdp_rdpdr::pdu::efs::*;
use ironrdp_rdpdr::pdu::esc::{ScardCall, ScardIoCtlCode};
use ironrdp_rdpdr::pdu::RdpdrPdu;
use ironrdp_rdpdr::RdpdrBackend;
use ironrdp_svc::{impl_as_any, SvcMessage};
use ironrdp_svc::SvcMessage;
use nix::dir::{Dir, OwningIter};
use std::ffi::CString;
use std::io::Read;
+1 -1
View File
@@ -16,6 +16,7 @@ doctest = false
test = false
[dependencies]
ironrdp-core.workspace = true
ironrdp-error.workspace = true
ironrdp-pdu.workspace = true
ironrdp-svc.workspace = true
@@ -24,4 +25,3 @@ bitflags.workspace = true
[lints]
workspace = true
+1 -1
View File
@@ -2,8 +2,8 @@ pub mod noop;
use core::fmt;
use ironrdp_core::AsAny;
use ironrdp_pdu::PduResult;
use ironrdp_svc::AsAny;
use crate::pdu::efs::{DeviceControlRequest, ServerDeviceAnnounceResponse, ServerDriveIoRequest};
use crate::pdu::esc::{ScardCall, ScardIoCtlCode};
+2 -1
View File
@@ -1,5 +1,6 @@
use ironrdp_core::impl_as_any;
use ironrdp_pdu::PduResult;
use ironrdp_svc::{impl_as_any, SvcMessage};
use ironrdp_svc::SvcMessage;
use super::RdpdrBackend;
use crate::pdu::efs::{DeviceControlRequest, ServerDeviceAnnounceResponse};

Some files were not shown because too many files have changed in this diff Show More