< Summary

Class:DCL.ECSRuntime.ECSComponentWriter
Assembly:DCL.ECSRuntime.ComponentWriter
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentWriter/ECSComponentWriter.cs
Covered lines:18
Uncovered lines:11
Coverable lines:29
Total lines:81
Line coverage:62% (18 of 29)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentWriter(...)0%110100%
AddOrReplaceComponentSerializer[T](...)0%110100%
RemoveComponentSerializer(...)0%2100%
PutComponent[T](...)0%110100%
PutComponent[T](...)0%2100%
PutComponent[T](...)0%4.123050%
RemoveComponent(...)0%110100%
RemoveComponent(...)0%110100%
RemoveComponent(...)0%110100%
Dispose()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentWriter/ECSComponentWriter.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.Controllers;
 4using DCL.Models;
 5using UnityEngine;
 6
 7namespace DCL.ECSRuntime
 8{
 9    public class ECSComponentWriter : IECSComponentWriter
 10    {
 11        public delegate void WriteComponent(string sceneId, long entityId, int componentId, byte[] data,
 12            long minTimeStamp, ECSComponentWriteType writeType);
 13
 214        private readonly Dictionary<int, object> serializers = new Dictionary<int, object>();
 15        private WriteComponent writeComponent;
 16
 217        public ECSComponentWriter(WriteComponent writeComponent)
 18        {
 219            this.writeComponent = writeComponent;
 220        }
 21
 22        public void AddOrReplaceComponentSerializer<T>(int componentId, Func<T, byte[]> serializer)
 23        {
 224            serializers[componentId] = serializer;
 225        }
 26
 27        public void RemoveComponentSerializer(int componentId)
 28        {
 029            serializers.Remove(componentId);
 030        }
 31
 32        public void PutComponent<T>(IParcelScene scene, IDCLEntity entity, int componentId, T model, ECSComponentWriteTy
 33        {
 134            PutComponent(scene.sceneData.id, entity.entityId, componentId, model, -1, writeType);
 135        }
 36
 37        public void PutComponent<T>(string sceneId, long entityId, int componentId, T model, ECSComponentWriteType write
 38        {
 039            PutComponent(sceneId, entityId, componentId, model, -1, writeType);
 040        }
 41
 42        public void PutComponent<T>(string sceneId, long entityId, int componentId, T model, long minTimeStamp, ECSCompo
 43        {
 144            if (!serializers.TryGetValue(componentId, out object serializer))
 45            {
 046                Debug.LogError($"Trying to write component but no serializer was found for {componentId}");
 047                return;
 48            }
 49
 150            if (serializer is Func<T, byte[]> typedSerializer)
 51            {
 152                writeComponent(sceneId, entityId, componentId, typedSerializer(model), minTimeStamp, writeType);
 153            }
 54            else
 55            {
 056                Debug.LogError($"Trying to write component but serializer for {componentId} does not match {nameof(T)}")
 57            }
 058        }
 59
 60        public void RemoveComponent(IParcelScene scene, IDCLEntity entity, int componentId, ECSComponentWriteType writeT
 61        {
 162            RemoveComponent(scene.sceneData.id, entity.entityId, componentId, writeType);
 163        }
 64
 65        public void RemoveComponent(string sceneId, long entityId, int componentId, ECSComponentWriteType writeType)
 66        {
 167            RemoveComponent(sceneId, entityId, componentId, -1, writeType);
 168        }
 69
 70        public void RemoveComponent(string sceneId, long entityId, int componentId, long minTimeStamp, ECSComponentWrite
 71        {
 172            writeComponent(sceneId, entityId, componentId, null, minTimeStamp, writeType);
 173        }
 74
 75        public void Dispose()
 76        {
 077            serializers.Clear();
 078            writeComponent = null;
 079        }
 80    }
 81}