You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/02/10 07:24:06 UTC
[22/26] ignite git commit: IGNITE-1563 .NET: Implemented "atomics":
AtomicReference and AtomicSequence. This closes #455.
http://git-wip-us.apache.org/repos/asf/ignite/blob/f7c1296c/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
index ad62f38..cdcddf0 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
@@ -281,6 +281,40 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
}
}
+ internal static IUnmanagedTarget ProcessorAtomicSequence(IUnmanagedTarget target, string name, long initialValue,
+ bool create)
+ {
+ var name0 = IgniteUtils.StringToUtf8Unmanaged(name);
+
+ try
+ {
+ var res = JNI.ProcessorAtomicSequence(target.Context, target.Target, name0, initialValue, create);
+
+ return res == null ? null : target.ChangeTarget(res);
+ }
+ finally
+ {
+ Marshal.FreeHGlobal(new IntPtr(name0));
+ }
+ }
+
+ internal static IUnmanagedTarget ProcessorAtomicReference(IUnmanagedTarget target, string name, long memPtr,
+ bool create)
+ {
+ var name0 = IgniteUtils.StringToUtf8Unmanaged(name);
+
+ try
+ {
+ var res = JNI.ProcessorAtomicReference(target.Context, target.Target, name0, memPtr, create);
+
+ return res == null ? null : target.ChangeTarget(res);
+ }
+ finally
+ {
+ Marshal.FreeHGlobal(new IntPtr(name0));
+ }
+ }
+
internal static void ProcessorGetIgniteConfiguration(IUnmanagedTarget target, long memPtr)
{
JNI.ProcessorGetIgniteConfiguration(target.Context, target.Target, memPtr);
@@ -867,6 +901,51 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
JNI.AtomicLongClose(target.Context, target.Target);
}
+ internal static long AtomicSequenceGet(IUnmanagedTarget target)
+ {
+ return JNI.AtomicSequenceGet(target.Context, target.Target);
+ }
+
+ internal static long AtomicSequenceIncrementAndGet(IUnmanagedTarget target)
+ {
+ return JNI.AtomicSequenceIncrementAndGet(target.Context, target.Target);
+ }
+
+ internal static long AtomicSequenceAddAndGet(IUnmanagedTarget target, long value)
+ {
+ return JNI.AtomicSequenceAddAndGet(target.Context, target.Target, value);
+ }
+
+ internal static int AtomicSequenceGetBatchSize(IUnmanagedTarget target)
+ {
+ return JNI.AtomicSequenceGetBatchSize(target.Context, target.Target);
+ }
+
+ internal static void AtomicSequenceSetBatchSize(IUnmanagedTarget target, int size)
+ {
+ JNI.AtomicSequenceSetBatchSize(target.Context, target.Target, size);
+ }
+
+ internal static bool AtomicSequenceIsClosed(IUnmanagedTarget target)
+ {
+ return JNI.AtomicSequenceIsClosed(target.Context, target.Target);
+ }
+
+ internal static void AtomicSequenceClose(IUnmanagedTarget target)
+ {
+ JNI.AtomicSequenceClose(target.Context, target.Target);
+ }
+
+ internal static bool AtomicReferenceIsClosed(IUnmanagedTarget target)
+ {
+ return JNI.AtomicReferenceIsClosed(target.Context, target.Target);
+ }
+
+ internal static void AtomicReferenceClose(IUnmanagedTarget target)
+ {
+ JNI.AtomicReferenceClose(target.Context, target.Target);
+ }
+
internal static bool ListenableCancel(IUnmanagedTarget target)
{
return JNI.ListenableCancel(target.Context, target.Target);