singrdk/base/Kernel/Singularity/V1/Services/DeliveryHandle.cs

40 lines
1.2 KiB
C#

////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: DeliveryHandle.cs
//
// Note: An indirection mechanism used by EndpointCore to abstract the
// Delivery mechanism used to notify the another endpoint of a new
// message and potentially marshall and copy the message to another
// Domain.
//
using System;
using System.Runtime.CompilerServices;
using System.Threading;
using Microsoft.Singularity;
using Microsoft.Singularity.Memory;
namespace Microsoft.Singularity.V1.Services
{
using DeliveryHandleImp = Microsoft.Singularity.Channels.DeliveryHandle;
[CLSCompliant(false)]
public struct DeliveryHandle
{
public readonly UIntPtr id;
[ExternalEntryPoint]
public static unsafe void Dispose(ref DeliveryHandle handle)
{
fixed (DeliveryHandle* h = &handle) {
DeliveryHandleImp* himp = (DeliveryHandleImp*) h;
DeliveryHandleImp.Dispose(Thread.CurrentProcess, *himp);
}
}
}
}