public async Task <long> PushAsync(ServerPushData data)
        {
            var timer = new Stopwatch();

            timer.Start();
            await InternalPushDataAsync(data);

            timer.Stop();

            return(timer.ElapsedMilliseconds);
        }
        public async Task PushAsync(ServerPushData data)
        {
            DateTime now = DateTime.UtcNow;

            if (data == null)
            {
                return;
            }

            var serverInfo = _servers.AddOrUpdate(data.Server.Id, i => data.Server, (i, u) => data.Server);

            serverInfo.LastPush = now;

            await _serversData.GetOrAdd(data.Server.Id, hash => new InMemoryServerData()).InternalPush(data.Items);
        }
        public override async Task InternalPushDataAsync(ServerPushData data)
        {
            var request = (HttpWebRequest)WebRequest.Create(_host + "/monitoring/push");

            request.Method      = "POST";
            request.ContentType = "application/json; charset=UTF-8";
            request.Accept      = "application/json";

            var jsonData = GetObjectJson(data);

            request.ContentLength = jsonData.Length;

            using (var requestStream = await request.GetRequestStreamAsync())
            {
                byte[] postBytes = Encoding.UTF8.GetBytes(jsonData);

                requestStream.Write(postBytes, 0, postBytes.Length);
                requestStream.Close();
            }

            await request.GetResponseAsync();
        }
 private static string GetObjectJson(ServerPushData data)
 {
     return(new JavaScriptSerializer().Serialize(data));
 }
        public async Task <IActionResult> Push([FromBody] ServerPushData data)
        {
            await _monitoringStorage.PushAsync(data);

            return(Ok());
        }
 public abstract Task InternalPushDataAsync(ServerPushData data);