< 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:16
Coverable lines:16
Total lines:67
Line coverage:0% (0 of 16)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
WebGLTransport()0%2100%
Dispose()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 Dispose()
 27        {
 028            OnWebGLMessage -= OnWebgGLMessageReceived;
 029        }
 30
 31        public void SendMessage(byte[] data)
 32        {
 033            BinaryMessageFromEngine(data, data.Length);
 034        }
 35
 36        public void Close()
 37        {
 038            OnWebGLMessage -= OnWebgGLMessageReceived;
 039        }
 40
 41        private void OnWebgGLMessageReceived(byte[] data)
 42        {
 043            OnMessageEvent?.Invoke(data);
 044        }
 45
 46        delegate void JS_Delegate_VII(int a, int b);
 47
 48#if UNITY_WEBGL && !UNITY_EDITOR
 49        [DllImport("__Internal")] public static extern void BinaryMessageFromEngine(byte[] bytes, int size);
 50#else
 051        private static void BinaryMessageFromEngine(byte[] bytes, int size) { }
 52#endif
 53
 54        private static event Action<byte[]> OnWebGLMessage;
 55
 56        [DllImport("__Internal")]
 57        private static extern void SetCallback_BinaryMessage(JS_Delegate_VII callback);
 58
 59        [MonoPInvokeCallback(typeof(JS_Delegate_VII))]
 60        internal static void BinaryMessage(int intPtr, int length)
 61        {
 062            byte[] data = new byte[length];
 063            Marshal.Copy(new IntPtr(intPtr), data, 0, length);
 064            OnWebGLMessage?.Invoke(data);
 065        }
 66    }
 67}