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(); } }
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(); } }
public void PostResponse([FromBody] CrawlerSqlResponse response) { CrawlerService.ResponseArrived(response); }