Skip to content

Commit 521e927

Browse files
committed
refactor cloud auth
1 parent e8a8217 commit 521e927

File tree

11 files changed

+45
-81
lines changed

11 files changed

+45
-81
lines changed

api/AltV.Net.Async/Elements/Entities/AsyncConnectionInfo.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,15 @@ public void Decline(string reason)
212212
}
213213
}
214214

215-
public Task<string> RequestCloudId()
215+
public string CloudId
216216
{
217-
lock (ConnectionInfo)
217+
get
218218
{
219-
if (!AsyncContext.CheckIfExistsNullable(ConnectionInfo)) return Task.FromResult<string>(default);
220-
return ConnectionInfo.RequestCloudId();
219+
lock (ConnectionInfo)
220+
{
221+
if (!AsyncContext.CheckIfExistsOrCachedNullable(ConnectionInfo)) return default;
222+
return ConnectionInfo.CloudId;
223+
}
221224
}
222225
}
223226

api/AltV.Net.Async/Elements/Entities/AsyncPlayer.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,12 +1452,15 @@ public void PlayScenario(string name)
14521452
}
14531453
}
14541454

1455-
public Task<string> RequestCloudId()
1455+
public string CloudId
14561456
{
1457-
lock (Player)
1457+
get
14581458
{
1459-
if (!AsyncContext.CheckIfExistsNullable(Player)) return Task.FromResult<string>(default);
1460-
return Player.RequestCloudId();
1459+
lock (Player)
1460+
{
1461+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Player)) return default;
1462+
return Player.CloudId;
1463+
}
14611464
}
14621465
}
14631466

api/AltV.Net.CApi/Libraries/ClientLibrary.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3512,7 +3512,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
35123512
public ClientLibrary(Dictionary<ulong, IntPtr> funcTable)
35133513
{
35143514
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
3515-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 3415677601440942791UL) Outdated = true;
3515+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 557522308693843528UL) Outdated = true;
35163516
Audio_AddOutput = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Audio_AddOutputDelegate>(funcTable, 9914412815391408844UL, Audio_AddOutputFallback);
35173517
Audio_GetBaseObject = (delegate* unmanaged[Cdecl]<nint, nint>) GetUnmanagedPtr<Audio_GetBaseObjectDelegate>(funcTable, 6330360502401226894UL, Audio_GetBaseObjectFallback);
35183518
Audio_GetCurrentTime = (delegate* unmanaged[Cdecl]<nint, double>) GetUnmanagedPtr<Audio_GetCurrentTimeDelegate>(funcTable, 2944324482134975819UL, Audio_GetCurrentTimeFallback);

api/AltV.Net.CApi/Libraries/ServerLibrary.cs

Lines changed: 11 additions & 11 deletions
Large diffs are not rendered by default.

api/AltV.Net.CApi/Libraries/SharedLibrary.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1608,7 +1608,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
16081608
public SharedLibrary(Dictionary<ulong, IntPtr> funcTable)
16091609
{
16101610
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
1611-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 3415677601440942791UL) Outdated = true;
1611+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 557522308693843528UL) Outdated = true;
16121612
Audio_GetID = (delegate* unmanaged[Cdecl]<nint, uint>) GetUnmanagedPtr<Audio_GetIDDelegate>(funcTable, 4464042055475980737UL, Audio_GetIDFallback);
16131613
AudioAttachedOutput_GetID = (delegate* unmanaged[Cdecl]<nint, uint>) GetUnmanagedPtr<AudioAttachedOutput_GetIDDelegate>(funcTable, 17725794901805112189UL, AudioAttachedOutput_GetIDFallback);
16141614
AudioFilter_GetID = (delegate* unmanaged[Cdecl]<nint, uint>) GetUnmanagedPtr<AudioFilter_GetIDDelegate>(funcTable, 8824535635529306325UL, AudioFilter_GetIDFallback);

api/AltV.Net.Mock/MockConnectionInfo.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ public void Decline(string reason)
4040
throw new NotImplementedException();
4141
}
4242

43-
public Task<string> RequestCloudId()
44-
{
45-
throw new NotImplementedException();
46-
}
43+
public string CloudId { get; }
4744
}
4845
}

api/AltV.Net/Elements/Entities/ConnectionInfo.cs

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -242,36 +242,16 @@ public void Decline(string reason)
242242
}
243243
}
244244

245-
public async Task<string> RequestCloudId()
245+
public string CloudId
246246
{
247-
GCHandle handle;
248-
bool success = false;
249-
string data = null;
250-
var semaphore = new SemaphoreSlim(0, 1);
251-
252-
unsafe
247+
get
253248
{
254-
void ResolveTask(byte ok, IntPtr resultPtr)
249+
unsafe
255250
{
256-
success = ok == 1;
257-
data = Marshal.PtrToStringUTF8(resultPtr);
258-
semaphore.Release();
251+
var size = 0;
252+
return Core.PtrToStringUtf8AndFree(
253+
Core.Library.Server.ConnectionInfo_GetCloudID(ConnectionInfoNativePointer, &size), size);
259254
}
260-
261-
RequestAuthCallbackDelegate resolveTask = ResolveTask;
262-
handle = GCHandle.Alloc(resolveTask);
263-
Core.Library.Server.ConnectionInfo_RequestCloudID(ConnectionInfoNativePointer, resolveTask);
264-
}
265-
266-
await semaphore.WaitAsync();
267-
handle.Free();
268-
semaphore.Dispose();
269-
270-
if (!success)
271-
{
272-
throw new CloudIDRequestException(data);
273255
}
274-
275-
return data;
276256
}
277257
}

api/AltV.Net/Elements/Entities/IConnectionInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ public interface IConnectionInfo : IBaseObject
2727

2828
void Accept(bool sendNames = true);
2929
void Decline(string reason);
30-
Task<string> RequestCloudId();
30+
string CloudId { get; }
3131
}

api/AltV.Net/Elements/Entities/IPlayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ void PlayAnimation(string animDict, string animName, float blendInSpeed, float b
458458
void ClearDecorations();
459459
Decoration[] GetDecorations();
460460
void PlayScenario(string name);
461-
Task<string> RequestCloudId();
461+
string CloudId { get; }
462462
}
463463

464464
public static class PlayerExtensions

api/AltV.Net/Elements/Entities/Player.cs

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public string SocialClubName
192192
}
193193
}
194194
}
195-
195+
196196
public void SetAmmo(uint ammoHash, ushort ammo)
197197
{
198198
unsafe
@@ -386,37 +386,18 @@ public void PlayScenario(string name)
386386
}
387387
}
388388

389-
public async Task<string> RequestCloudId()
389+
public string CloudId
390390
{
391-
GCHandle handle;
392-
bool success = false;
393-
string data = null;
394-
var semaphore = new SemaphoreSlim(0, 1);
395-
396-
unsafe
391+
get
397392
{
398-
void ResolveTask(byte ok, IntPtr resultPtr)
393+
unsafe
399394
{
400-
success = ok == 1;
401-
data = Marshal.PtrToStringUTF8(resultPtr);
402-
semaphore.Release();
395+
CheckIfEntityExistsOrCached();
396+
var size = 0;
397+
return Core.PtrToStringUtf8AndFree(
398+
Core.Library.Server.Player_GetCloudID(PlayerNativePointer, &size), size);
403399
}
404-
405-
RequestAuthCallbackDelegate resolveTask = ResolveTask;
406-
handle = GCHandle.Alloc(resolveTask);
407-
Core.Library.Server.Player_RequestCloudID(PlayerNativePointer, resolveTask);
408400
}
409-
410-
await semaphore.WaitAsync();
411-
handle.Free();
412-
semaphore.Dispose();
413-
414-
if (!success)
415-
{
416-
throw new CloudIDRequestException(data);
417-
}
418-
419-
return data;
420401
}
421402

422403
public bool IsConnected

0 commit comments

Comments
 (0)