< 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:80
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.rpc.context;
 17            context.crdt.MessagingControllersManager = Environment.i.messaging.manager;
 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                   .RegisterService(TransportServiceImpl.RegisterService)
 36                   .RegisterService(EmotesRendererServiceImpl.RegisterService)
 37                   .Build();
 38        }
 39
 40        public static RPCServerBuilder<RPCContext> BuildServer(RPCContext context, ITransport transport)
 41        {
 42            return new RPCServerBuilder<RPCContext>(transport, context);
 43        }
 44    }
 45
 46    public class RPCServerBuilder<T>
 47    {
 48        private readonly ITransport transport;
 49        private readonly T context;
 050        private readonly List<Action<RpcServerPort<T>>> servicesRegisterer = new List<Action<RpcServerPort<T>>>();
 51
 052        internal RPCServerBuilder(ITransport transport, T context)
 53        {
 054            this.transport = transport;
 055            this.context = context;
 056        }
 57
 58        public RPCServerBuilder<T> RegisterService(Action<RpcServerPort<T>> serviceRegisterer)
 59        {
 060            servicesRegisterer.Add(serviceRegisterer);
 061            return this;
 62        }
 63
 64        public RpcServer<T> Build()
 65        {
 066            var services = servicesRegisterer.ToArray();
 067            var rpcServer = new RpcServer<T>();
 068            rpcServer.AttachTransport(transport, context);
 69
 070            rpcServer.SetHandler((port, t, c) =>
 71            {
 072                for (int i = 0; i < services.Length; i++)
 73                {
 074                    services[i].Invoke(port);
 75                }
 076            });
 077            return rpcServer;
 78        }
 79    }
 80}