Ejemplo n.º 1
0
 public void ResponseArrived(CrawlerSqlResponse sqlResponse)
 {
     if (WaitingRequests.ContainsKey(sqlResponse.Guid))
     {
         var resetEvent = WaitingRequests[sqlResponse.Guid];
         WaitingRequests.Remove(sqlResponse.Guid);
         ResponsesCompleted.Add(sqlResponse.Guid, sqlResponse);
         resetEvent.Set();
     }
 }
Ejemplo n.º 2
0
        private void OnRequestReceived(CrawlerSqlRequest x)
        {
            Logger.Information("Executing {@sql}", x.Statement);
            var response = new CrawlerSqlResponse(x.Guid);

            if (x.Statement.StartsWith("SELECT"))
            {
                try
                {
                    var objects = DbConnection.Query(x.Statement).ToList();
                    response.QueryResult = JsonConvert.SerializeObject(objects, Formatting.None,
                                                                       new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    });
                    Logger.Information("Querying {@sql} resulted in {@objectCount} objects", x.Statement,
                                       objects.Count);
                }
                catch (Exception e)
                {
                    response.HasFailed = true;
                    response.Exception = e;
                }
            }
            else
            {
                try
                {
                    var affectedRows = DbConnection.Execute(x.Statement);
                    Logger.Information("Querying {@sql} affected {@rowsAffected} rows", x.Statement,
                                       affectedRows);
                }
                catch (Exception e)
                {
                    response.HasFailed = true;
                    response.Exception = e;
                }
            }

            using (var client = new HttpClient())
            {
                client.PostAsync($"{Addresses.ServerUrl}api/crawler", new JsonContent(response)).Wait();
            }
        }
Ejemplo n.º 3
0
 public void PostResponse([FromBody] CrawlerSqlResponse response)
 {
     CrawlerService.ResponseArrived(response);
 }