private void UpdateInstance()
        {
            if (!EventArgs.Success)
            {
                return;
            }

            var response = EventArgs.Response;

            if (_lastConnectionResponse != null)
            {
                var timeDiff = (response.Total.At - _lastConnectionResponse.Total.At).TotalSeconds;
                var inDiff   =
                    (long)((response.Total.InBytesTotal - _lastConnectionResponse.Total.InBytesTotal) / timeDiff);
                var outDiff =
                    (long)((response.Total.OutBytesTotal - _lastConnectionResponse.Total.OutBytesTotal) / timeDiff);

                ManagedInstance.Statistics.DownloadTotal     = EventArgs.Response.Total.InBytesTotal;
                ManagedInstance.Statistics.DownloadPerSecond = inDiff;

                ManagedInstance.Statistics.UploadTotal     = EventArgs.Response.Total.OutBytesTotal;
                ManagedInstance.Statistics.UploadPerSecond = outDiff;

                ManagedInstance.Statistics.OnlineDeviceCount = EventArgs.Response.AvailableConnections;
            }

            _lastConnectionResponse = response;
        }
예제 #2
0
        public async Task <GetConnetionResponse> GetConnectionsAsync(CancellationToken token)
        {
            var request  = GetBaseRequest("connections");
            var response = await _restClient.ExecuteTaskAsync(request, token);

            HandleRestErrors(response);

            var result       = new GetConnetionResponse();
            var jsonSettings = new JsonSerializerSettings
            {
                ContractResolver = new LowercaseContractResolver()
            };

            var desResult =
                JsonConvert.DeserializeObject <Dictionary <string, GetConnetionResponse.TotalDetails> >(response.Content,
                                                                                                        jsonSettings);

            result.Total = desResult.Single(x => x.Key == "total").Value;
            result.AvailableConnections = desResult.Count;

            return(result);
        }
        private static void AssertGetConnectionsRequest(GetConnetionResponse response)
        {
            // total sub object
            Assert.IsNotNull(response.Total);

            var total = response.Total;

            if (total == null)
            {
                return;
            }

            // total.At property
            DateTime dummy;

            Assert.IsTrue(DateTime.TryParse(total.At.ToLongTimeString(), out dummy));
            Assert.IsNotNull(dummy);

            // total.InBytesTotal property
            Assert.IsTrue(total.InBytesTotal >= 0);

            // total.OutBytesTotal property
            Assert.IsTrue(total.OutBytesTotal >= 0);
        }
예제 #4
0
        public GetConnetionResponse GetConnetions()
        {
            var customRestClient = GetRestClient();

            var request  = GetBaseRequest("connections");
            var response = customRestClient.Execute(request);

            HandleRestErrors(response);

            var result       = new GetConnetionResponse();
            var jsonSettings = new JsonSerializerSettings
            {
                ContractResolver = new LowercaseContractResolver()
            };

            var desResult =
                JsonConvert.DeserializeObject <Dictionary <string, GetConnetionResponse.TotalDetails> >(response.Content,
                                                                                                        jsonSettings);

            result.Total = desResult.Single(x => x.Key == "total").Value;
            result.AvailableConnections = desResult.Count - 1;

            return(result);
        }