-
Notifications
You must be signed in to change notification settings - Fork 80
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(csharp/client): Wrappers for some Enterprise Core+ features (#6003)
Adding C# client support for a few of the needed Enterprise Core+ features.
- Loading branch information
Showing
12 changed files
with
192 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,16 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>net7.0</TargetFramework> | ||
<TargetFramework>net8.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<Compile Remove="dh_client\**" /> | ||
<EmbeddedResource Remove="dh_client\**" /> | ||
<None Remove="dh_client\**" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
57 changes: 57 additions & 0 deletions
57
csharp/client/DeephavenClient/dhe_client/session/DndClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
using System.Runtime.InteropServices; | ||
using Deephaven.DeephavenClient; | ||
using Deephaven.DeephavenClient.Interop; | ||
|
||
namespace Deephaven.DheClient.Session; | ||
|
||
public sealed class DndClient : Client { | ||
internal new NativePtr<NativeDndClient> Self; | ||
public Int64 PqSerial; | ||
|
||
internal static DndClient OfNativePtr(NativePtr<NativeDndClient> dndClient) { | ||
NativeDndClient.deephaven_enterprise_session_DndClient_GetManager(dndClient, | ||
out var dndManagerResult, out var status1); | ||
status1.OkOrThrow(); | ||
NativeDndClient.deephaven_enterprise_session_DndClient_PqSerial(dndClient, | ||
out var pqSerial, out var status2); | ||
status2.OkOrThrow(); | ||
var dndManager = new DndTableHandleManager(dndManagerResult); | ||
|
||
return new DndClient(dndClient, dndManager, pqSerial); | ||
} | ||
|
||
private DndClient(NativePtr<NativeDndClient> self, DndTableHandleManager manager, | ||
Int64 pqSerial) | ||
: base(self.UnsafeCast<NativeClient>(), manager) { | ||
Self = self; | ||
PqSerial = pqSerial; | ||
} | ||
|
||
protected override void ReleaseUnmanagedResources(bool destructSelf) { | ||
base.ReleaseUnmanagedResources(false); | ||
if (!Self.TryRelease(out var old)) { | ||
return; | ||
} | ||
if (!destructSelf) { | ||
return; | ||
} | ||
NativeDndClient.deephaven_enterprise_session_DndClient_dtor(old); | ||
} | ||
} | ||
|
||
|
||
internal partial class NativeDndClient { | ||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_DndClient_dtor( | ||
NativePtr<NativeDndClient> self); | ||
|
||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_DndClient_GetManager( | ||
NativePtr<NativeDndClient> self, | ||
out NativePtr<NativeDndTableHandleManager> result, out ErrorStatus status); | ||
|
||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_DndClient_PqSerial( | ||
NativePtr<NativeDndClient> self, | ||
out Int64 result, out ErrorStatus status); | ||
} |
32 changes: 32 additions & 0 deletions
32
csharp/client/DeephavenClient/dhe_client/session/DndTableHandleManager.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
using System.Runtime.InteropServices; | ||
using Deephaven.DeephavenClient; | ||
using Deephaven.DeephavenClient.Interop; | ||
|
||
namespace Deephaven.DheClient.Session; | ||
|
||
public sealed class DndTableHandleManager : TableHandleManager { | ||
internal new NativePtr<NativeDndTableHandleManager> Self; | ||
|
||
internal DndTableHandleManager(NativePtr<NativeDndTableHandleManager> self) : | ||
base(self.UnsafeCast<NativeTableHandleManager>()) { | ||
Self = self; | ||
} | ||
|
||
protected override void ReleaseUnmanagedResources(bool destructSelf) { | ||
base.ReleaseUnmanagedResources(false); | ||
if (!Self.TryRelease(out var old)) { | ||
return; | ||
} | ||
if (!destructSelf) { | ||
return; | ||
} | ||
NativeDndTableHandleManager.deephaven_enterprise_session_DndTableHandleManager_dtor(old); | ||
} | ||
|
||
} | ||
|
||
internal partial class NativeDndTableHandleManager { | ||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_DndTableHandleManager_dtor( | ||
NativePtr<NativeDndTableHandleManager> self); | ||
} |
73 changes: 73 additions & 0 deletions
73
csharp/client/DeephavenClient/dhe_client/session/SessionManager.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
using System.Runtime.InteropServices; | ||
using Deephaven.DeephavenClient.Interop; | ||
|
||
namespace Deephaven.DheClient.Session; | ||
|
||
public class SessionManager : IDisposable { | ||
internal NativePtr<NativeSessionManager> Self; | ||
|
||
public static SessionManager FromUrl(string descriptiveName, string jsonUrl) { | ||
NativeSessionManager.deephaven_enterprise_session_SessionManager_FromUrl(descriptiveName, | ||
jsonUrl, out var sessionResult, out var status); | ||
status.OkOrThrow(); | ||
return new SessionManager(sessionResult); | ||
} | ||
|
||
private SessionManager(NativePtr<NativeSessionManager> self) { | ||
Self = self; | ||
} | ||
|
||
~SessionManager() { | ||
ReleaseUnmanagedResources(); | ||
} | ||
|
||
public void Close() { | ||
Dispose(); | ||
} | ||
|
||
public void Dispose() { | ||
ReleaseUnmanagedResources(); | ||
GC.SuppressFinalize(this); | ||
} | ||
|
||
public bool PasswordAuthentication(string user, string password, string operateAs) { | ||
NativeSessionManager.deephaven_enterprise_session_SessionManager_PasswordAuthentication( | ||
Self, user, password, operateAs, out var result, out var status); | ||
status.OkOrThrow(); | ||
return (bool)result; | ||
} | ||
|
||
public DndClient ConnectToPqByName(string pqName, bool removeOnClose) { | ||
NativeSessionManager.deephaven_enterprise_session_SessionManager_ConnectToPqByName( | ||
Self, pqName, (InteropBool)removeOnClose, out var result, out var status); | ||
status.OkOrThrow(); | ||
return DndClient.OfNativePtr(result); | ||
} | ||
|
||
private void ReleaseUnmanagedResources() { | ||
if (!Self.TryRelease(out var old)) { | ||
return; | ||
} | ||
NativeSessionManager.deephaven_enterprise_session_SessionManager_dtor(old); | ||
} | ||
} | ||
|
||
internal partial class NativeSessionManager { | ||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_SessionManager_dtor( | ||
NativePtr<NativeSessionManager> self); | ||
|
||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_SessionManager_FromUrl(string descriptiveName, | ||
string jsonUrl, out NativePtr<NativeSessionManager> result, out ErrorStatus status); | ||
|
||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_SessionManager_PasswordAuthentication( | ||
NativePtr<NativeSessionManager> self, string user, string password, string operateAs, | ||
out InteropBool result, out ErrorStatus status); | ||
|
||
[LibraryImport(LibraryPaths.DhEnterprise, StringMarshalling = StringMarshalling.Utf8)] | ||
public static partial void deephaven_enterprise_session_SessionManager_ConnectToPqByName( | ||
NativePtr<NativeSessionManager> self, string pqName, InteropBool removeOnClose, | ||
out NativePtr<NativeDndClient> result, out ErrorStatus status); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.