< Summary

Class:RPC.Transports.WebGLTransport
Assembly:RPC.Transports.WebGLTransport
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/KernelCommunication/RPC/Transports/WebGLTransport/WebGLTransport.cs
Covered lines:0
Uncovered lines:14
Coverable lines:14
Total lines:62
Line coverage:0% (0 of 14)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
WebGLTransport()0%2100%
SendMessage(...)0%2100%
Close()0%2100%
OnWebgGLMessageReceived(...)0%6200%
BinaryMessageFromEngine(...)0%2100%
BinaryMessage(...)0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/KernelCommunication/RPC/Transports/WebGLTransport/WebGLTransport.cs

#LineLine coverage
 1using System;
 2using System.Runtime.InteropServices;
 3using AOT;
 4using rpc_csharp.transport;
 5
 6namespace RPC.Transports
 7{
 8    public class WebGLTransport : ITransport
 9    {
 10        public event Action OnCloseEvent;
 11
 12        public event Action<string> OnErrorEvent;
 13
 14        public event Action<byte[]> OnMessageEvent;
 15
 16        public event Action OnConnectEvent;
 17
 018        public WebGLTransport()
 19        {
 20#if UNITY_WEBGL && !UNITY_EDITOR
 21            SetCallback_BinaryMessage(BinaryMessage);
 22#endif
 023            OnWebGLMessage += OnWebgGLMessageReceived;
 024        }
 25
 26        public void SendMessage(byte[] data)
 27        {
 028            BinaryMessageFromEngine(data, data.Length);
 029        }
 30
 31        public void Close()
 32        {
 033            OnWebGLMessage -= OnWebgGLMessageReceived;
 034        }
 35
 36        private void OnWebgGLMessageReceived(byte[] data)
 37        {
 038            OnMessageEvent?.Invoke(data);
 039        }
 40
 41        delegate void JS_Delegate_VII(int a, int b);
 42
 43#if UNITY_WEBGL && !UNITY_EDITOR
 44        [DllImport("__Internal")] public static extern void BinaryMessageFromEngine(byte[] bytes, int size);
 45#else
 046        private static void BinaryMessageFromEngine(byte[] bytes, int size) { }
 47#endif
 48
 49        private static event Action<byte[]> OnWebGLMessage;
 50
 51        [DllImport("__Internal")]
 52        private static extern void SetCallback_BinaryMessage(JS_Delegate_VII callback);
 53
 54        [MonoPInvokeCallback(typeof(JS_Delegate_VII))]
 55        internal static void BinaryMessage(int intPtr, int length)
 56        {
 057            byte[] data = new byte[length];
 058            Marshal.Copy(new IntPtr(intPtr), data, 0, length);
 059            OnWebGLMessage?.Invoke(data);
 060        }
 61    }
 62}