< Summary - ReFlex - Library

Information
Class: ReFlex.Core.Networking.Components.NetworkClient
Assembly: ReFlex.Core.Networking
File(s): D:\a\reflex\reflex\library\src\Core\Networking\Components\NetworkClient.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 62
Coverable lines: 62
Total lines: 107
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
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_IsInitialized()100%210%
get_IsConnected()100%210%
get_Type()100%210%
get_Id()100%210%
get_Address()100%210%
Init()100%210%
OnDisconnected(...)100%210%
OnConnected(...)100%210%
Connect()0%620%
Disconnect()100%210%
OnNewDataReceived(...)0%620%
Send(...)0%620%
OnNewDataReceived(...)0%620%
Encode(...)100%210%

File(s)

D:\a\reflex\reflex\library\src\Core\Networking\Components\NetworkClient.cs

#LineLine coverage
 1using System;
 2using System.Text;
 3using System.Threading.Tasks;
 4using NLog;
 5using ReFlex.Core.Networking.Interfaces;
 6using ReFlex.Core.Networking.Util;
 7using WatsonTcp;
 8
 9namespace ReFlex.Core.Networking.Components
 10{
 11    public class NetworkClient : IClient
 12    {
 013        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 14
 015        private readonly Guid _clientId = Guid.NewGuid();
 16
 017        private readonly string _address = "";
 18        private readonly int _port;
 19        private WatsonTcpClient _networkClient;
 20
 21        public event EventHandler<NetworkingDataMessage> NewDataReceived;
 022        public bool IsInitialized { get; private set; }
 023        public bool IsConnected { get; private set; }
 24
 025        public NetworkInterface Type => NetworkInterface.Tcp;
 26
 027        public string Id => _clientId.ToString();
 28
 029        public string Address => $"{_address}:{_port}";
 30
 031        public NetworkClient(string address, int port)
 032        {
 033            _address = address;
 034            _port = port;
 035            Init();
 036        }
 37
 38        private void Init()
 039        {
 040            _networkClient = new WatsonTcpClient(_address, _port);
 041            _networkClient.Events.MessageReceived += OnNewDataReceived;
 042            _networkClient.Events.ServerConnected += OnConnected;
 043            _networkClient.Events.ServerDisconnected += OnDisconnected;
 044            IsInitialized = _networkClient != null;
 045        }
 46
 47        private void OnDisconnected(object sender, EventArgs e)
 048        {
 049            IsConnected = false;
 050        }
 51
 52        private void OnConnected(object sender, EventArgs e)
 053        {
 054            IsConnected = true;
 055        }
 56
 57        public bool Connect()
 058        {
 059            if (IsConnected)
 060                return true;
 61
 62            try
 063            {
 064                _networkClient.Connect();
 065                return true;
 66            }
 067            catch (Exception e)
 068            {
 069                Logger.Error(e);
 070            }
 71
 072            return false;
 073        }
 74
 75        public void Disconnect()
 076        {
 077            _networkClient.Dispose();
 078            _networkClient.Events.MessageReceived -= OnNewDataReceived;
 079            _networkClient.Events.ServerConnected -= OnConnected;
 080            _networkClient.Events.ServerDisconnected -= OnDisconnected;
 081            _networkClient = null;
 82
 083            IsConnected = false;
 084            IsInitialized = false;
 085        }
 86
 87        public void OnNewDataReceived(object sender, NetworkingDataMessage message) =>
 088            NewDataReceived?.Invoke(sender, message);
 89
 90        public void Send(NetworkingDataMessage message)
 091        {
 092          var result = Task.Run(() => _networkClient.SendAsync(message.Message)).GetAwaiter().GetResult();
 093          if (result == false)
 094          {
 095            Logger.Warn($"Sending message {message.Message} to server {_address}:{_port} failed.");
 096          }
 097        }
 98
 99        public void OnNewDataReceived(object sender, MessageReceivedEventArgs evtData)
 0100        {
 0101            var rawData = evtData.Data;
 0102            var message = Encoding.UTF8.GetString(rawData);
 0103            NewDataReceived?.Invoke(sender, new NetworkingDataMessage(message, _clientId));
 0104        }
 0105        public static string Encode(byte[] data) => Encoding.UTF8.GetString(data);
 106    }
 107}