[+] TEngineServer

[+] TEngineServer
This commit is contained in:
ALEXTANG
2023-07-13 17:17:26 +08:00
parent a69f53592e
commit 0c8f3a5f92
790 changed files with 52737 additions and 2533 deletions

View File

@@ -0,0 +1,26 @@
using System;
namespace TEngine
{
public partial class FTask
{
public static FTaskCompleted CompletedTask => new();
public static FTask Run(Func<FTask> factory)
{
return factory();
}
public static FTask<T> Run<T>(Func<FTask<T>> factory)
{
return factory();
}
public static FTask<T> FromResult<T>(T value)
{
var sAwaiter = FTask<T>.Create();
sAwaiter.SetResult(value);
return sAwaiter;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ac04f3959fd37ad48b2bb6bb7ddb4d46
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace TEngine
{
public partial class FTask
{
[DebuggerHidden]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static FTask Create(bool isFromPool = true)
{
var task = isFromPool ? Pool<FTask>.Rent() : new FTask();
task._isFromPool = isFromPool;
return task;
}
}
public partial class FTask<T>
{
[DebuggerHidden]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static FTask<T> Create(bool isFromPool = true)
{
var task = isFromPool ? Pool<FTask<T>>.Rent() : new FTask<T>();
task._isFromPool = isFromPool;
return task;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: dfe1e7044d17abb41a98dd6e2ad51896
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,157 @@
using System.Collections.Generic;
namespace TEngine
{
public partial class FTask
{
public static async FTask WhenAll(List<FTask> tasks)
{
if (tasks.Count <= 0)
{
return;
}
var count = tasks.Count;
var sTaskCompletionSource = Create();
foreach (var task in tasks)
{
RunSTask(sTaskCompletionSource, task).Coroutine();
}
await sTaskCompletionSource;
async FVoid RunSTask(FTask tcs, FTask task)
{
await task;
count--;
if (count <= 0)
{
tcs.SetResult();
}
}
}
public static async FTask Any(params FTask[] tasks)
{
if (tasks == null || tasks.Length <= 0)
{
return;
}
var tcs = FTask.Create();
int count = 1;
foreach (FTask task in tasks)
{
RunSTask(task).Coroutine();
}
await tcs;
async FVoid RunSTask(FTask task)
{
await task;
count--;
if (count == 0)
{
tcs.SetResult();
}
}
}
}
public partial class FTask<T>
{
public static async FTask WhenAll(List<FTask<T>> tasks)
{
if (tasks.Count <= 0)
{
return;
}
var count = tasks.Count;
var sTaskCompletionSource = FTask.Create();
foreach (var task in tasks)
{
RunSTask(sTaskCompletionSource, task).Coroutine();
}
await sTaskCompletionSource;
async FVoid RunSTask(FTask tcs, FTask<T> task)
{
await task;
count--;
if (count == 0)
{
tcs.SetResult();
}
}
}
public static async FTask WhenAll(params FTask<T>[] tasks)
{
if (tasks == null || tasks.Length <= 0)
{
return;
}
var count = tasks.Length;
var tcs = FTask.Create();
foreach (var task in tasks)
{
RunSTask(task).Coroutine();
}
await tcs;
async FVoid RunSTask(FTask<T> task)
{
await task;
count--;
if (count == 0)
{
tcs.SetResult();
}
}
}
public static async FTask WaitAny(params FTask<T>[] tasks)
{
if (tasks == null || tasks.Length <= 0)
{
return;
}
var tcs = FTask.Create();
int count = 1;
foreach (FTask<T> task in tasks)
{
RunSTask(task).Coroutine();
}
await tcs;
async FVoid RunSTask(FTask<T> task)
{
await task;
count--;
if (count == 0)
{
tcs.SetResult();
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ef20b979a90164a45ad1e3ee2e5b1b09
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: