< Summary

Class:KernelCommunication.KernelBinaryMessageProcessor
Assembly:KernelCommunication.BinaryMessageProcessor
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/KernelCommunication/BinaryMessage/MessageProcessor/KernelBinaryMessageProcessor.cs
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:56
Line coverage:0% (0 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
KernelBinaryMessageProcessor(...)0%2100%
Process(...)0%2100%
Process(...)0%2100%
Process(...)0%20400%
OnCRDTMessage(...)0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/KernelCommunication/BinaryMessage/MessageProcessor/KernelBinaryMessageProcessor.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using DCL.CRDT;
 5
 6namespace KernelCommunication
 7{
 8    public class KernelBinaryMessageProcessor
 9    {
 10        private readonly IMessageQueueHandler messageQueueHanlder;
 11
 012        public KernelBinaryMessageProcessor(IMessageQueueHandler messageQueueHanlder)
 13        {
 014            this.messageQueueHanlder = messageQueueHanlder;
 015        }
 16
 17        public void Process(string sceneId, IntPtr messageIntPtr, int messageLength)
 18        {
 019            Process(sceneId, KernelBinaryMessageDeserializer.Deserialize(messageIntPtr, messageLength));
 020        }
 21
 22        public void Process(string sceneId, byte[] message)
 23        {
 024            Process(sceneId, KernelBinaryMessageDeserializer.Deserialize(message));
 025        }
 26
 27        private void Process(string sceneId, IEnumerator<object> deserializer)
 28        {
 029            using (var iterator = deserializer)
 30            {
 031                while (iterator.MoveNext())
 32                {
 033                    if (iterator.Current is CRDTMessage crdtMessage)
 34                    {
 035                        OnCRDTMessage(sceneId, crdtMessage);
 36                    }
 37                }
 038            }
 039        }
 40
 41        private void OnCRDTMessage(string sceneId, CRDTMessage message)
 42        {
 043            var sceneMessagesPool = messageQueueHanlder.sceneMessagesPool;
 044            if (!sceneMessagesPool.TryDequeue(out QueuedSceneMessage_Scene queuedMessage))
 45            {
 046                queuedMessage = new QueuedSceneMessage_Scene();
 47            }
 048            queuedMessage.method = MessagingTypes.CRDT_MESSAGE;
 049            queuedMessage.type = QueuedSceneMessage.Type.SCENE_MESSAGE;
 050            queuedMessage.sceneId = sceneId;
 051            queuedMessage.payload = message;
 52
 053            messageQueueHanlder.EnqueueSceneMessage(queuedMessage);
 054        }
 55    }
 56}