using skyscraper5.Skyscraper.Scraper.Storage.Split; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MySqlConnector; namespace skyscraper5.Data.MySql { public partial class MySqlDataStorage : DataStorage { private bool TestForPatEntry(int currentNetworkId, int currentTransportStreamId, ushort programId, MySqlConnection connection) { PmtCoordinate coordinate = new PmtCoordinate(currentNetworkId, currentTransportStreamId, programId); MySqlCommand command = connection.CreateCommand(); command.CommandText = "SELECT dateadded FROM dvb_pat WHERE cnid = @cnid AND ctsid = @ctsid AND program_id = @program_id"; command.Parameters.AddWithValue("@cnid", currentNetworkId); command.Parameters.AddWithValue("@ctsid", currentTransportStreamId); command.Parameters.AddWithValue("@program_id", programId); MySqlDataReader dataReader = command.ExecuteReader(); bool result = dataReader.Read(); if (result) { knownPats.Add(coordinate); } dataReader.Close(); return result; } private HashSet knownPats; public bool StorePatEntry(int currentNetworkId, int currentTransportStreamId, int pmtPid, ushort programId) { if (knownPats == null) knownPats = new HashSet(); PmtCoordinate coordinate = new PmtCoordinate(currentNetworkId, currentTransportStreamId, programId); if (knownPats.Contains(coordinate)) return false; using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString())) { connection.Open(); int result = 0; if (!TestForPatEntry(currentNetworkId, currentTransportStreamId, programId, connection)) { EnqueueSpeedhack(SpeedhackType.StorePat, currentNetworkId, currentTransportStreamId, pmtPid, programId); knownPats.Add(coordinate); } connection.Close(); return result > 0; } } } }