Adds gateway support including SingalR
This commit is contained in:
parent
c207c2c19f
commit
fde85a5f7c
13 changed files with 692 additions and 2 deletions
48
Projects/Server/Tasks/TaskExtensions.cs
Normal file
48
Projects/Server/Tasks/TaskExtensions.cs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Server.Tasks;
|
||||
|
||||
public static class TaskExtensions
|
||||
{
|
||||
public static void OnFaultedCurrentSyncContext(this Task task, Action<Task> onFaulted, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
|
||||
task.ContinueWith(onFaulted, cancellationToken, TaskContinuationOptions.OnlyOnFaulted, scheduler);
|
||||
}
|
||||
|
||||
public static void ContinueWithOnCurrentSyncContext<T>(
|
||||
this Task<T> task,
|
||||
Action<Task<T>> onRanToCompletion,
|
||||
Action<Task<T>> onFaulted,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
|
||||
task.ContinueWith(onRanToCompletion, cancellationToken, TaskContinuationOptions.OnlyOnRanToCompletion, scheduler);
|
||||
task.ContinueWith(onFaulted, cancellationToken, TaskContinuationOptions.OnlyOnFaulted, scheduler);
|
||||
}
|
||||
|
||||
public static void ContinueWithOnCurrentSyncContext<T>(
|
||||
this Task<T> task,
|
||||
Action<Task<T>> onCompletion,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
|
||||
task.ContinueWith(onCompletion, cancellationToken, TaskContinuationOptions.None, scheduler);
|
||||
}
|
||||
|
||||
public static void ContinueWithOnGameThread<T>(
|
||||
this Task<T> task,
|
||||
Action<Task<T>> onCompletion,
|
||||
CancellationToken cancellationToken = default
|
||||
) => task.ContinueWith(onCompletion, cancellationToken, TaskContinuationOptions.None, Core.LoopContextTaskScheduler);
|
||||
|
||||
public static void ContinueWithOnGameThread(
|
||||
this Task task,
|
||||
Action<Task> onCompletion,
|
||||
CancellationToken cancellationToken = default
|
||||
) => task.ContinueWith(onCompletion, cancellationToken, TaskContinuationOptions.None, Core.LoopContextTaskScheduler);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue