Implemented DvbNipPrivateDataSpecifier for PostgreSQL.
This commit is contained in:
parent
d6a5f04b25
commit
693f3adc79
@ -71,8 +71,64 @@ namespace skyscraper5.Data.PostgreSql
|
||||
command.Dispose();
|
||||
}
|
||||
|
||||
private Dictionary<Tuple<ushort, ushort, ushort, ushort, uint>, DateTime> _dvbNipPrivateDataSpecifiers;
|
||||
public bool DvbNipPrivateDataSpecifier(NipActualCarrierInformation currentCarrierInformation, DateTime versionUpdate,
|
||||
uint privateDataSpecifier, List<string> privateDataSessions)
|
||||
{
|
||||
if (_dvbNipPrivateDataSpecifiers == null)
|
||||
_dvbNipPrivateDataSpecifiers = new Dictionary<Tuple<ushort, ushort, ushort, ushort, uint>, DateTime>();
|
||||
|
||||
Tuple<ushort, ushort, ushort, ushort, uint> coordinates = new Tuple<ushort, ushort, ushort, ushort, uint>(
|
||||
currentCarrierInformation.NipNetworkId, currentCarrierInformation.NipCarrierId,
|
||||
currentCarrierInformation.NipLinkId, currentCarrierInformation.NipServiceId, privateDataSpecifier);
|
||||
|
||||
if (_dvbNipPrivateDataSpecifiers.ContainsKey(coordinates))
|
||||
{
|
||||
//PDS bereits bekannt.
|
||||
DateTime lastChecked = _dvbNipPrivateDataSpecifiers[coordinates];
|
||||
if (versionUpdate > lastChecked)
|
||||
{
|
||||
//Ist neuer, also updaten.
|
||||
EnqueueTask(x => UpdateDvbNipPrivateDataSpecifier(x,coordinates,versionUpdate,privateDataSessions));
|
||||
_dvbNipPrivateDataSpecifiers[coordinates] = versionUpdate;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Ist älter oder hat sich nicht geändert.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//PDS noch nicht bekannt
|
||||
EnqueueTask(x => InsertDvbNipPrivateDataSpecifier(x,coordinates,versionUpdate,privateDataSessions));
|
||||
_dvbNipPrivateDataSpecifiers[coordinates] = versionUpdate;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void InsertDvbNipPrivateDataSpecifier(NpgsqlConnection connection, Tuple<ushort, ushort, ushort, ushort, uint> coordinates, DateTime versionUpdate, List<string> privateDataSessions)
|
||||
{
|
||||
DateTime localUpdate = new DateTime(versionUpdate.Year, versionUpdate.Month, versionUpdate.Day,
|
||||
versionUpdate.Hour, versionUpdate.Minute, versionUpdate.Second, DateTimeKind.Local);
|
||||
NpgsqlCommand command = connection.CreateCommand();
|
||||
command.CommandText = "INSERT INTO dvbnip_private_data_specifiers VALUES (@nid,@cid,@lid,@sid,@pds,DEFAULT,@vu,@s)";
|
||||
command.Parameters.AddWithValue("@nid", NpgsqlDbType.Integer, (int)coordinates.Item1);
|
||||
command.Parameters.AddWithValue("@cid", NpgsqlDbType.Integer, (int)coordinates.Item2);
|
||||
command.Parameters.AddWithValue("@lid", NpgsqlDbType.Integer, (int)coordinates.Item3);
|
||||
command.Parameters.AddWithValue("@sid", NpgsqlDbType.Integer, (int)coordinates.Item4);
|
||||
command.Parameters.AddWithValue("@pds", NpgsqlDbType.Bigint, (long)coordinates.Item5);
|
||||
command.Parameters.AddWithValue("@vu", NpgsqlDbType.Timestamp, localUpdate);
|
||||
command.Parameters.AddWithValue("@s", NpgsqlDbType.Json, JsonConvert.SerializeObject(privateDataSessions));
|
||||
int executeNonQuery = command.ExecuteNonQuery();
|
||||
if (executeNonQuery != 1)
|
||||
{
|
||||
throw new DataException(String.Format("Expected to insert {0} rows, but it were {1}", 1, executeNonQuery));
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateDvbNipPrivateDataSpecifier(NpgsqlConnection connection, Tuple<ushort, ushort, ushort, ushort, uint> coordinates, DateTime versionUpdate, List<string> privateDataSessions)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
@ -231,9 +231,10 @@ namespace skyscraper5.Data.PostgreSql
|
||||
|
||||
private void UpdateDvbiServiceListEntryPointUpdateDateEx(NpgsqlConnection x, long hash, DateTime currentTime)
|
||||
{
|
||||
DateTime currentTimeLocal = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Second, DateTimeKind.Local);
|
||||
NpgsqlCommand command = x.CreateCommand();
|
||||
command.CommandText = "UPDATE dvbi_service_list_entry_points SET dateupdated = @dupdated WHERE sourcehash = @shash";
|
||||
command.Parameters.AddWithValue("@dupdated", NpgsqlDbType.Timestamp, currentTime);
|
||||
command.Parameters.AddWithValue("@dupdated", NpgsqlDbType.Timestamp, currentTimeLocal);
|
||||
command.Parameters.AddWithValue("@shash",NpgsqlDbType.Bigint, hash);
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user