// by Diplomat #pragma warning disable 0105 using System; using System.Runtime.InteropServices; using Devolutions.IronRdp.Diplomat; #pragma warning restore 0105 namespace Devolutions.IronRdp; #nullable enable public partial class ConnectionActivationState: IDisposable { private unsafe Raw.ConnectionActivationState* _inner; public ConnectionActivationStateCapabilitiesExchange CapabilitiesExchange { get { return GetCapabilitiesExchange(); } } public ConnectionActivationStateConnectionFinalization ConnectionFinalization { get { return GetConnectionFinalization(); } } public ConnectionActivationStateFinalized Finalized { get { return GetFinalized(); } } public ConnectionActivationStateType Type { get { return GetType(); } } /// /// Creates a managed ConnectionActivationState from a raw handle. /// /// /// Safety: you should not build two managed objects using the same raw handle (may causes use-after-free and double-free). ///
/// This constructor assumes the raw struct is allocated on Rust side. /// If implemented, the custom Drop implementation on Rust side WILL run on destruction. ///
public unsafe ConnectionActivationState(Raw.ConnectionActivationState* handle) { _inner = handle; } /// /// A ConnectionActivationStateType allocated on C# side. /// public ConnectionActivationStateType GetType() { unsafe { if (_inner == null) { throw new ObjectDisposedException("ConnectionActivationState"); } Raw.ConnectionActivationStateType retVal = Raw.ConnectionActivationState.GetType(_inner); return (ConnectionActivationStateType)retVal; } } /// /// /// A ConnectionActivationStateCapabilitiesExchange allocated on Rust side. /// public ConnectionActivationStateCapabilitiesExchange GetCapabilitiesExchange() { unsafe { if (_inner == null) { throw new ObjectDisposedException("ConnectionActivationState"); } Raw.ConnectorActivationFfiResultBoxConnectionActivationStateCapabilitiesExchangeBoxIronRdpError result = Raw.ConnectionActivationState.GetCapabilitiesExchange(_inner); if (!result.isOk) { throw new IronRdpException(new IronRdpError(result.Err)); } Raw.ConnectionActivationStateCapabilitiesExchange* retVal = result.Ok; return new ConnectionActivationStateCapabilitiesExchange(retVal); } } /// /// /// A ConnectionActivationStateConnectionFinalization allocated on Rust side. /// public ConnectionActivationStateConnectionFinalization GetConnectionFinalization() { unsafe { if (_inner == null) { throw new ObjectDisposedException("ConnectionActivationState"); } Raw.ConnectorActivationFfiResultBoxConnectionActivationStateConnectionFinalizationBoxIronRdpError result = Raw.ConnectionActivationState.GetConnectionFinalization(_inner); if (!result.isOk) { throw new IronRdpException(new IronRdpError(result.Err)); } Raw.ConnectionActivationStateConnectionFinalization* retVal = result.Ok; return new ConnectionActivationStateConnectionFinalization(retVal); } } /// /// /// A ConnectionActivationStateFinalized allocated on Rust side. /// public ConnectionActivationStateFinalized GetFinalized() { unsafe { if (_inner == null) { throw new ObjectDisposedException("ConnectionActivationState"); } Raw.ConnectorActivationFfiResultBoxConnectionActivationStateFinalizedBoxIronRdpError result = Raw.ConnectionActivationState.GetFinalized(_inner); if (!result.isOk) { throw new IronRdpException(new IronRdpError(result.Err)); } Raw.ConnectionActivationStateFinalized* retVal = result.Ok; return new ConnectionActivationStateFinalized(retVal); } } /// /// Returns the underlying raw handle. /// public unsafe Raw.ConnectionActivationState* AsFFI() { return _inner; } /// /// Destroys the underlying object immediately. /// public void Dispose() { unsafe { if (_inner == null) { return; } Raw.ConnectionActivationState.Destroy(_inner); _inner = null; GC.SuppressFinalize(this); } } ~ConnectionActivationState() { Dispose(); } }