Implemented DvbNipPrivateDataSpecifier for PostgreSQL.
This commit is contained in:
parent
d6a5f04b25
commit
693f3adc79
@ -71,8 +71,64 @@ namespace skyscraper5.Data.PostgreSql
|
|||||||
command.Dispose();
|
command.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Dictionary<Tuple<ushort, ushort, ushort, ushort, uint>, DateTime> _dvbNipPrivateDataSpecifiers;
|
||||||
public bool DvbNipPrivateDataSpecifier(NipActualCarrierInformation currentCarrierInformation, DateTime versionUpdate,
|
public bool DvbNipPrivateDataSpecifier(NipActualCarrierInformation currentCarrierInformation, DateTime versionUpdate,
|
||||||
uint privateDataSpecifier, List<string> privateDataSessions)
|
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();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -231,9 +231,10 @@ namespace skyscraper5.Data.PostgreSql
|
|||||||
|
|
||||||
private void UpdateDvbiServiceListEntryPointUpdateDateEx(NpgsqlConnection x, long hash, DateTime currentTime)
|
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();
|
NpgsqlCommand command = x.CreateCommand();
|
||||||
command.CommandText = "UPDATE dvbi_service_list_entry_points SET dateupdated = @dupdated WHERE sourcehash = @shash";
|
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.Parameters.AddWithValue("@shash",NpgsqlDbType.Bigint, hash);
|
||||||
command.ExecuteNonQuery();
|
command.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user