< 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:75
Line coverage:80% (12 of 15)
Covered branches:0
Total branches:0
Covered methods:3
Total methods:3
Method coverage:100% (3 of 3)

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                  .RegisterService(RestrictedActionsServiceImpl.RegisterService)
 32                  .Build();
 33        }
 34
 35        public static RPCServerBuilder<RPCContext> BuildServer(RPCContext context, ITransport transport)
 36        {
 37            return new RPCServerBuilder<RPCContext>(transport, context);
 38        }
 39    }
 40
 41    public class RPCServerBuilder<T>
 42    {
 43        private readonly ITransport transport;
 44        private readonly T context;
 42545        private readonly List<Action<RpcServerPort<T>>> servicesRegisterer = new List<Action<RpcServerPort<T>>>();
 46
 42547        internal RPCServerBuilder(ITransport transport, T context)
 48        {
 42549            this.transport = transport;
 42550            this.context = context;
 42551        }
 52
 53        public RPCServerBuilder<T> RegisterService(Action<RpcServerPort<T>> serviceRegisterer)
 54        {
 255055            servicesRegisterer.Add(serviceRegisterer);
 255056            return this;
 57        }
 58
 59        public RpcServer<T> Build()
 60        {
 42561            var services = servicesRegisterer.ToArray();
 42562            var rpcServer = new RpcServer<T>();
 42563            rpcServer.AttachTransport(transport, context);
 64
 42565            rpcServer.SetHandler((port, t, c) =>
 66            {
 067                for (int i = 0; i < services.Length; i++)
 68                {
 069                    services[i].Invoke(port);
 70                }
 071            });
 42572            return rpcServer;
 73        }
 74    }
 75}