Max Barashev acebaaec90 Added RPC tests
- Added test_cloud_point.dll
 - Added RpcTest.cs for test connection
2026-04-21 14:14:55 +03:00

62 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;
using CloudPointRpc;
public class RpcTest : MonoBehaviour
{
private static Queue<Task> _callbackTasks = new Queue<Task>();
[AOT.MonoPInvokeCallback(typeof(CrpcTestApi.RpcStringCallback))]
public static IntPtr RpcStringCallback(IntPtr rpcString)
{
Debug.Log("smth recieved");
var rpc = new RpcString(rpcString);
var message = rpc.Data;
rpc.Dispose();
var task = new Task(() => Debug.Log($"[RpcTest] Callback received: {message}"));
lock (_callbackTasks)
{
_callbackTasks.Enqueue(task);
}
task.Wait();
var responce = new RpcString("1");
return responce.Handle;
}
void Start()
{
CrpcTestApi.crpc_test_init();
CrpcTestExtensions.CrpcTestAddMethod(RpcStringCallback, "test_method");
Debug.Log("[RpcTest] Initialized and method added");
}
private void Update()
{
lock (_callbackTasks)
{
while (_callbackTasks.Count > 0)
{
var task = _callbackTasks.Dequeue();
task.Start();
}
}
}
private void OnDestroy()
{
lock (_callbackTasks)
{
_callbackTasks.Clear();
}
CrpcTestApi.crpc_test_deinit();
}
}