Skip to content

Instantly share code, notes, and snippets.

View jnm2's full-sized avatar

Joseph Musser jnm2

View GitHub Profile
internal static class RxExtensions
{
/// <summary>
/// <para>
/// Fixes an issue when awaiting Rx.NET observables when <see cref="SynchronizationContext.Current"/> is <see
/// langword="null"/>, where the <see langword="await"/> resumes without disposing resources in the observables.
/// Those resources are not disposed until the program suspends at a later unrelated <see langword="await"/>.
/// </para>
/// <para>
/// This indefinite delay in disposing resources happens because Rx.NET forwards OnCompleted and OnError to the
@jnm2
jnm2 / SqlServerDiscoverer.cs
Created August 1, 2025 22:01
SqlServerDiscoverer (IObservable)
using System.Buffers;
using System.Buffers.Binary;
using System.Collections.Immutable;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
/// <summary>
/// Discovers SQL Server instances on the local network asynchronously using <see
public sealed class Debouncer : IAsyncDisposable
{
private readonly TimeSpan delay;
private readonly Action action;
private readonly ITimer timer;
private bool isWaitingOrActing;
public Debouncer(TimeSpan delay, Action action, TimeProvider? timeProvider = null)
{
this.delay = delay;
using System.Buffers;
using System.Globalization;
public sealed class KdlWriter(TextWriter writer)
{
private static readonly NumberFormatInfo DefaultNumberFormat = new()
{
NumberGroupSeparator = "_",
NumberGroupSizes = [3],
};
public sealed class AsyncAutoResetEvent
{
private readonly Lock @lock = new();
private Task? currentWait;
private TaskCompletionSource? taskCompletionSource;
public void Set()
{
lock (@lock)
{
using Microsoft.Win32;
using Microsoft.Win32.SafeHandles;
using System;
using System.ComponentModel;
using System.Threading;
using Windows.Win32;
using Windows.Win32.Foundation;
using Windows.Win32.System.Registry;
/// <summary>
System.Tuple (System.Runtime 9.0.0.0):
- Tuple<T1> Create<T1>(T1)
System.Tuple (System.Runtime 9.0.0.0):
- Tuple<T1, T2> Create<T1, T2>(T1, T2)
System.Tuple (System.Runtime 9.0.0.0):
- Tuple<T1, T2, T3> Create<T1, T2, T3>(T1, T2, T3)
System.Tuple (System.Runtime 9.0.0.0):
create or alter proc dbo.RestoreDatabase(@databaseName sysname, @backupFilePath nvarchar(max), @replace bit, @progressPercentIncrement tinyint = 10)
as
set nocount on;
-- Get backup database name
declare @backups table (BackupName nvarchar(128), BackupDescription nvarchar(255), BackupType smallint, ExpirationDate datetime, Compressed binary(1), Position smallint, DeviceType tinyint, UserName nvarchar(128), ServerName nvarchar(128), DatabaseName nvarchar(128), DatabaseVersion int, DatabaseCreationDate datetime, BackupSize numeric(20,0), FirstLSN numeric(25,0), LastLSN numeric(25,0), CheckpointLSN numeric(25,0), DatabaseBackupLSN numeric(25,0), BackupStartDate datetime, BackupFinishDate datetime, SortOrder smallint, CodePage smallint, UnicodeLocaleId int, UnicodeComparisonStyle int, CompatibilityLevel tinyint, SoftwareVendorId int, SoftwareVersionMajor int, SoftwareVersionMinor int, SoftwareVersionBuild int, MachineName nvarchar(128), Flags int, BindingID uniqueidentifier, RecoveryForkID uniqueidentifier, Col
using System.Buffers;
using System.Buffers.Binary;
using System.Collections.Immutable;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Threading.Channels;
using System.Reflection;
internal static class ReflectionUtils
{
public static bool IsVisibleOutsideAssembly(Type type)
{
return (type.Attributes & TypeAttributes.VisibilityMask) switch
{
TypeAttributes.Public => true,
TypeAttributes.NestedFamily or TypeAttributes.NestedFamORAssem => IsVisibleOutsideAssembly(type.DeclaringType!),