< 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:12
Uncovered lines:3
Coverable lines:15
Total lines:74
Line coverage:80% (12 of 15)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
RPCServerBuilder(...)0%110100%
RegisterService(...)0%110100%
Build()0%110100%

File(s)

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

#LineLine coverage
 1using DCl.Social.Friends;
 2using RPC.Services;
 3using RPC.Transports;
 4using rpc_csharp;
 5using rpc_csharp.transport;
 6using System;
 7using System.Collections.Generic;
 8
 9namespace RPC
 10{
 11    public static class RPCServerBuilder
 12    {
 13        public static RpcServer<RPCContext> BuildDefaultServer(RPCContext context)
 14        {
 15#if UNITY_WEBGL && !UNITY_EDITOR
 16            var transport = new WebGLTransport();
 17#else
 18            var transport = new WebSocketTransport();
 19#endif
 20            return BuildDefaultServer(context, transport);
 21        }
 22
 23        public static RpcServer<RPCContext> BuildDefaultServer(RPCContext context, ITransport transport)
 24        {
 25            return BuildServer(context, transport)
 26                   .RegisterService(CRDTServiceImpl.RegisterService)
 27                   .RegisterService(TransportServiceImpl.RegisterService)
 28                   .RegisterService(EmotesRendererServiceImpl.RegisterService)
 29                   .RegisterService(RPCFriendsApiBridge.RegisterService)
 30                   .RegisterService(SceneControllerServiceImpl.RegisterService)
 31                   .Build();
 32        }
 33
 34        public static RPCServerBuilder<RPCContext> BuildServer(RPCContext context, ITransport transport)
 35        {
 36            return new RPCServerBuilder<RPCContext>(transport, context);
 37        }
 38    }
 39
 40    public class RPCServerBuilder<T>
 41    {
 42        private readonly ITransport transport;
 43        private readonly T context;
 49344        private readonly List<Action<RpcServerPort<T>>> servicesRegisterer = new List<Action<RpcServerPort<T>>>();
 45
 49346        internal RPCServerBuilder(ITransport transport, T context)
 47        {
 49348            this.transport = transport;
 49349            this.context = context;
 49350        }
 51
 52        public RPCServerBuilder<T> RegisterService(Action<RpcServerPort<T>> serviceRegisterer)
 53        {
 246554            servicesRegisterer.Add(serviceRegisterer);
 246555            return this;
 56        }
 57
 58        public RpcServer<T> Build()
 59        {
 49360            var services = servicesRegisterer.ToArray();
 49361            var rpcServer = new RpcServer<T>();
 49362            rpcServer.AttachTransport(transport, context);
 63
 49364            rpcServer.SetHandler((port, t, c) =>
 65            {
 066                for (int i = 0; i < services.Length; i++)
 67                {
 068                    services[i].Invoke(port);
 69                }
 070            });
 49371            return rpcServer;
 72        }
 73    }
 74}