< Summary

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

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BuildDefaultServer()0%2100%
BuildDefaultServer(...)0%2100%
BuildDefaultServer(...)0%2100%
BuildServer(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/KernelCommunication/RPC/ServerBuilder/RPCServerBuilder.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using rpc_csharp;
 5using rpc_csharp.transport;
 6using RPC.Services;
 7using RPC.Transports;
 8using Environment = DCL.Environment;
 9
 10namespace RPC
 11{
 12    public static class RPCServerBuilder
 13    {
 14        public static void BuildDefaultServer()
 15        {
 016            RPCContext context = DataStore.i.rpcContext.context;
 017            context.crdtContext.messageQueueHandler = Environment.i.world.sceneController;
 018            BuildDefaultServer(context);
 019        }
 20
 21        public static RpcServer<RPCContext> BuildDefaultServer(RPCContext context)
 22        {
 23#if UNITY_WEBGL && !UNITY_EDITOR
 24            var transport = new WebGLTransport();
 25#else
 026            var transport = new WebSocketTransport();
 27#endif
 028            return BuildDefaultServer(context, transport);
 29        }
 30
 31        public static RpcServer<RPCContext> BuildDefaultServer(RPCContext context, ITransport transport)
 32        {
 033            return BuildServer(context, transport)
 34                   .RegisterService(CRDTServiceImpl.RegisterService)
 35                   .Build();
 36        }
 37
 38        public static RPCServerBuilder<RPCContext> BuildServer(RPCContext context, ITransport transport)
 39        {
 040            return new RPCServerBuilder<RPCContext>(transport, context);
 41        }
 42    }
 43
 44    public class RPCServerBuilder<T>
 45    {
 46        private readonly ITransport transport;
 47        private readonly T context;
 48        private readonly List<Action<RpcServerPort<T>>> servicesRegisterer = new List<Action<RpcServerPort<T>>>();
 49
 50        internal RPCServerBuilder(ITransport transport, T context)
 51        {
 52            this.transport = transport;
 53            this.context = context;
 54        }
 55
 56        public RPCServerBuilder<T> RegisterService(Action<RpcServerPort<T>> serviceRegisterer)
 57        {
 58            servicesRegisterer.Add(serviceRegisterer);
 59            return this;
 60        }
 61
 62        public RpcServer<T> Build()
 63        {
 64            var services = servicesRegisterer.ToArray();
 65            var rpcServer = new RpcServer<T>();
 66            rpcServer.AttachTransport(transport, context);
 67
 68            rpcServer.SetHandler((port, t, c) =>
 69            {
 70                for (int i = 0; i < services.Length; i++)
 71                {
 72                    services[i].Invoke(port);
 73                }
 74            });
 75            return rpcServer;
 76        }
 77    }
 78}