< Summary - ReFlex - Library

Information
Class: Implementation.Components.NetworkManager
Assembly: ReFlex.Core.Implementation
File(s): D:\a\reflex\reflex\library\src\Core\Implementation\Components\NetworkManager.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 71
Coverable lines: 71
Total lines: 140
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 36
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%210%
.ctor(...)100%210%
get_ServerAddress()0%620%
get_IsRunning()0%620%
get_Address()100%210%
set_Address(...)0%620%
get_Endpoint()100%210%
set_Endpoint(...)0%620%
get_Port()100%210%
set_Port(...)0%620%
get_Type()0%620%
set_Type(...)100%210%
Run()0%4260%
Broadcast(...)0%7280%
Stop()0%2040%
ChangeServer(...)0%2040%
UpdateServerAddress()0%620%

File(s)

D:\a\reflex\reflex\library\src\Core\Implementation\Components\NetworkManager.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using Implementation.Interfaces;
 5using ReFlex.Core.Common.Components;
 6using ReFlex.Core.Networking.Components;
 7using ReFlex.Core.Networking.Interfaces;
 8using ReFlex.Core.Networking.Util;
 9using NLog;
 10using Prism.Events;
 11
 12namespace Implementation.Components
 13{
 14    public class NetworkManager : INetworkManager
 15    {
 16        private IServer _server;
 017        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 018        private string _address = Localhost;
 019        private string _endpoint = "/ReFlex";
 020        private int _port = 8080;
 21        private readonly IEventAggregator _evtAggregator;
 22
 23
 024        public static string Localhost = "127.0.0.1";
 25
 26        public string ServerAddress
 27        {
 028            get =>  _server?.Address;
 29        }
 30
 031        public bool IsRunning => _server?.IsStarted ?? false;
 32
 33        public string Address
 34        {
 035            get => _address;
 36            set
 037            {
 038                if (_address == value)
 039                    return;
 040                _address = value;
 041                UpdateServerAddress();
 042            }
 43        }
 44
 45        public string Endpoint
 46        {
 047            get => _endpoint;
 48            set
 049            {
 050                if (_endpoint == value)
 051                    return;
 052                _endpoint = value;
 053                UpdateServerAddress();
 054            }
 55        }
 56
 57        public int Port
 58        {
 059            get => _port;
 60            set
 061            {
 062                if (_port == value)
 063                    return;
 064                _port = value;
 065                UpdateServerAddress();
 066            }
 67        }
 68
 69        public NetworkInterface Type
 70        {
 071            get => _server?.Type ?? NetworkInterface.None;
 72            set
 073            {
 074                ChangeServer(value);
 075            }
 76        }
 77
 078        public NetworkManager(IEventAggregator eventAggregator)
 079        {
 080            _evtAggregator = eventAggregator;
 081        }
 82
 83        public void Run()
 084        {
 085            if (_server == null)
 086                return;
 87
 088            _server?.Start();
 089            Logger?.Info("Server started succesfully on port " + Port);
 090        }
 91
 92        public void Broadcast(ICollection<Interaction> interactions)
 093        {
 094            if (_server == null || !_server.IsStarted)
 095                return;
 96
 097            _server.Broadcast(interactions);
 098            Logger?.Trace("Server broadcast some interactions: " + interactions.FirstOrDefault());
 099        }
 100
 101        public void Stop()
 0102        {
 0103            if (_server == null)
 0104                return;
 105
 0106            _server.Stop();
 0107            Logger?.Info("Server stopped");
 0108        }
 109
 110        private void ChangeServer(NetworkInterface type)
 0111        {
 0112            Stop();
 113
 0114            switch (type)
 115            {
 116                case NetworkInterface.Websockets:
 0117                    _server = new WebSocketServer(Address, Port, Endpoint);
 0118                    break;
 119                case NetworkInterface.Tcp:
 0120                    _server = new NetworkServer(Address, Port);
 0121                    break;
 122                case NetworkInterface.None:
 0123                    break;
 124                default:
 0125                    throw new ArgumentOutOfRangeException(nameof(type), type, null);
 126            }
 0127        }
 128
 129        private void UpdateServerAddress()
 0130        {
 0131            if (_server == null)
 0132            {
 0133                ChangeServer(Type);
 0134                return;
 135            }
 136
 0137            _server.Address = $"{_address}:{_port}{_endpoint}";
 0138        }
 139    }
 140}