< Summary

Class:RPC.RPCServerBuilder[T]
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:15
Coverable lines:15
Total lines:78
Line coverage:0% (0 of 15)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
RPCServerBuilder(...)0%2100%
RegisterService(...)0%2100%
Build()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        {
 16            RPCContext context = DataStore.i.rpcContext.context;
 17            context.crdtContext.messageQueueHandler = Environment.i.world.sceneController;
 18            BuildDefaultServer(context);
 19        }
 20
 21        public static RpcServer<RPCContext> BuildDefaultServer(RPCContext context)
 22        {
 23#if UNITY_WEBGL && !UNITY_EDITOR
 24            var transport = new WebGLTransport();
 25#else
 26            var transport = new WebSocketTransport();
 27#endif
 28            return BuildDefaultServer(context, transport);
 29        }
 30
 31        public static RpcServer<RPCContext> BuildDefaultServer(RPCContext context, ITransport transport)
 32        {
 33            return BuildServer(context, transport)
 34                   .RegisterService(CRDTServiceImpl.RegisterService)
 35                   .Build();
 36        }
 37
 38        public static RPCServerBuilder<RPCContext> BuildServer(RPCContext context, ITransport transport)
 39        {
 40            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;
 048        private readonly List<Action<RpcServerPort<T>>> servicesRegisterer = new List<Action<RpcServerPort<T>>>();
 49
 050        internal RPCServerBuilder(ITransport transport, T context)
 51        {
 052            this.transport = transport;
 053            this.context = context;
 054        }
 55
 56        public RPCServerBuilder<T> RegisterService(Action<RpcServerPort<T>> serviceRegisterer)
 57        {
 058            servicesRegisterer.Add(serviceRegisterer);
 059            return this;
 60        }
 61
 62        public RpcServer<T> Build()
 63        {
 064            var services = servicesRegisterer.ToArray();
 065            var rpcServer = new RpcServer<T>();
 066            rpcServer.AttachTransport(transport, context);
 67
 068            rpcServer.SetHandler((port, t, c) =>
 69            {
 070                for (int i = 0; i < services.Length; i++)
 71                {
 072                    services[i].Invoke(port);
 73                }
 074            });
 075            return rpcServer;
 76        }
 77    }
 78}