From 26ee56172c8fbdf5569495768095612f83a85233 Mon Sep 17 00:00:00 2001 From: feyris-tan <4116042+feyris-tan@users.noreply.github.com> Date: Sat, 28 Jun 2025 23:50:22 +0200 Subject: [PATCH] Implemented DvbNipTestForMulticastSession and DvbNipInsertMulticastSession in PostgreSQL. --- .../MinioObjectStorage.cs | 15 +- .../skyscraper5.Data.PostgreSql/DvbNip.cs | 285 +++++++++++++++++- .../Skyscraper/Scraper/SkyscraperContext.cs | 2 +- .../Filesystem/FilesystemScraperStorage.cs | 2 +- .../Scraper/Storage/IScraperStorage.cs | 2 +- .../InMemory/InMemoryScraperStorage.cs | 8 +- .../Scraper/Storage/Split/DataStorage.cs | 2 +- .../Storage/Split/SplitScraperStorage.cs | 2 +- 8 files changed, 297 insertions(+), 21 deletions(-) diff --git a/BlobStorages/skyscraper5.Data.Minio/MinioObjectStorage.cs b/BlobStorages/skyscraper5.Data.Minio/MinioObjectStorage.cs index f16530b..59ac932 100644 --- a/BlobStorages/skyscraper5.Data.Minio/MinioObjectStorage.cs +++ b/BlobStorages/skyscraper5.Data.Minio/MinioObjectStorage.cs @@ -35,7 +35,7 @@ namespace skyscraper5.Data putObjectArgs = putObjectArgs.WithBucket(_minioBucket); putObjectArgs = putObjectArgs.WithObject(fullName); putObjectArgs = putObjectArgs.WithStreamData(buffer); - putObjectArgs = putObjectArgs.WithObjectSize(buffer.Length); + //putObjectArgs = putObjectArgs.WithObjectSize(buffer.Length); putObjectArgs = putObjectArgs.WithContentType(mime); putObjectArgs = putObjectArgs.WithHeaders(optionalData); @@ -44,6 +44,8 @@ namespace skyscraper5.Data _tasks.Add(_minioClient.PutObjectAsync(putObjectArgs).ContinueWith(task => { droppedFiles.Add(fullName); + definetlyKnownFiles.Add(fullName); + definetlyMissingFiles.Remove(fullName); buffer.Close(); buffer.Dispose(); })); @@ -108,11 +110,15 @@ namespace skyscraper5.Data public bool FileExists(string combine) { + if (definetlyMissingFiles == null) + definetlyMissingFiles = new HashSet(); if (definetlyKnownFiles == null) definetlyKnownFiles = new HashSet(); if (definetlyKnownFiles.Contains(combine)) return true; + if (definetlyMissingFiles.Contains(combine)) + return false; if (droppedFiles != null) { @@ -132,6 +138,7 @@ namespace skyscraper5.Data MinioException minioException = e.InnerExceptions[0] as MinioException; if (minioException.Message.Contains("Minio.Exceptions.ObjectNotFoundException")) { + definetlyMissingFiles.Add(combine); return false; } else @@ -226,6 +233,8 @@ namespace skyscraper5.Data } private int uiVersion; + private HashSet definetlyMissingFiles; + public void UiSetVersion(int version) { this.uiVersion = version; @@ -244,8 +253,8 @@ namespace skyscraper5.Data public bool DvbNipTestForFile(string announcedFileContentLocation) { - string path = "/nip/" + announcedFileContentLocation; - return FileExists(path); + string path = "/nip/" + DvbNipUtilities.MakeFilename(announcedFileContentLocation); + return FileExists(path); } public void DvbNipFileArrival(NipActualCarrierInformation carrier, FluteListener listener) diff --git a/DataTableStorages/skyscraper5.Data.PostgreSql/DvbNip.cs b/DataTableStorages/skyscraper5.Data.PostgreSql/DvbNip.cs index 21d4a53..7a4cd40 100644 --- a/DataTableStorages/skyscraper5.Data.PostgreSql/DvbNip.cs +++ b/DataTableStorages/skyscraper5.Data.PostgreSql/DvbNip.cs @@ -8,7 +8,10 @@ using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; +using System.Xml; using Newtonsoft.Json; +using Npgsql.Replication.PgOutput.Messages; +using skyscraper8.Skyscraper.Scraper.Storage.Utilities; namespace skyscraper5.Data.PostgreSql { @@ -101,10 +104,55 @@ namespace skyscraper5.Data.PostgreSql } else { - //PDS noch nicht bekannt - EnqueueTask(x => InsertDvbNipPrivateDataSpecifier(x,coordinates,versionUpdate,privateDataSessions)); - _dvbNipPrivateDataSpecifiers[coordinates] = versionUpdate; - return true; + //PDS noch nicht bekannt, also in DB nachgucken + + bool result = false; + DateTime lastUpdated = DateTime.MinValue; + NpgsqlConnection connection = new NpgsqlConnection(connectionStringBuilder.ToString()); + connection.Open(); + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = + "SELECT version_update FROM dvbnip_private_data_specifiers WHERE nid = @nid AND cid = @cid AND lid = @lid AND sid = @sid AND private_data_specifier = @pds"; + 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); + NpgsqlDataReader dataReader = command.ExecuteReader(); + result = dataReader.Read(); + if (result) + { + lastUpdated = dataReader.GetDateTime(0); + } + + dataReader.Close(); + command.Dispose(); + connection.Close(); + + if (result) + { + //schon in DB + if (lastUpdated < versionUpdate) + { + //Gesendetes Paket neuer als das in DB + EnqueueTask(x => UpdateDvbNipPrivateDataSpecifier(x, coordinates, versionUpdate, privateDataSessions)); + _dvbNipPrivateDataSpecifiers[coordinates] = versionUpdate; + return true; + } + else + { + //Keine Änderung. + _dvbNipPrivateDataSpecifiers[coordinates] = versionUpdate; + return false; + } + } + else + { + //noch nicht in DB + EnqueueTask(x => InsertDvbNipPrivateDataSpecifier(x, coordinates, versionUpdate, privateDataSessions)); + _dvbNipPrivateDataSpecifiers[coordinates] = versionUpdate; + return true; + } } } @@ -273,26 +321,245 @@ namespace skyscraper5.Data.PostgreSql _knownDvbNipServices.Add(coordinates); } + private HashSet _knownDvbNipMulticastSessions; public bool DvbNipTestForMulticastSession(MulticastSessionType multicastSession) { - throw new NotImplementedException(); + if (_knownDvbNipMulticastSessions == null) + _knownDvbNipMulticastSessions = new HashSet(); + + if (_knownDvbNipMulticastSessions.Contains(multicastSession.serviceIdentifier)) + return true; + + bool result; + NpgsqlConnection connection = new NpgsqlConnection(connectionStringBuilder.ToString()); + connection.Open(); + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = "SELECT dateadded FROM dvbnip_multicast_sessions WHERE service_identifier = @si"; + command.Parameters.AddWithValue("@si", NpgsqlDbType.Text, multicastSession.serviceIdentifier); + NpgsqlDataReader dataReader = command.ExecuteReader(); + if (result = dataReader.Read()) + { + _knownDvbNipMulticastSessions.Add(multicastSession.serviceIdentifier); + } + dataReader.Close(); + command.Dispose(); + connection.Close(); + return result; } public void DvbNipInsertMulticastSession(MulticastSessionType multicastSession) { - throw new NotImplementedException(); + EnqueueTask(x => DvbNipInsertMulticastSessionEx(x, multicastSession)); } + private void DvbNipInsertMulticastSessionEx(NpgsqlConnection connection, MulticastSessionType multicastSession) + { + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = + "INSERT INTO dvbnip_multicast_sessions (service_identifier, content_playback_availability_offset) VALUES (@si,@cpao) RETURNING serial"; + command.Parameters.AddWithValue("@si", multicastSession.serviceIdentifier); + command.Parameters.AddWithValue("@cpao", multicastSession.contentPlaybackAvailabilityOffset); + NpgsqlDataReader dataReader = command.ExecuteReader(); + dataReader.Read(); + int serial = dataReader.GetInt32(0); + dataReader.Close(); + command.Dispose(); + + if (multicastSession.MulticastGatewaySessionReporting != null) + { + throw new NotImplementedException(nameof(multicastSession.MulticastGatewaySessionReporting)); + } + + if (multicastSession.MulticastTransportSession != null) + { + for (int i = 0; i < multicastSession.MulticastTransportSession.Length; i++) + { + DvbNipInsertMulticastSessionTransport(connection,serial,i,multicastSession.MulticastTransportSession[i]); + } + } + + if (multicastSession.PresentationManifestLocator != null) + { + for (int i = 0; i < multicastSession.PresentationManifestLocator.Length; i++) + { + DvbNipInsertPresentationManifestLocator(connection, serial, i, multicastSession.PresentationManifestLocator[i]); + } + } + } + + private void DvbNipInsertPresentationManifestLocator(NpgsqlConnection connection, int serial, int ordinal, MulticastSessionTypePresentationManifestLocator multicastSessionTypePresentationManifestLocator) + { + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = "INSERT INTO dvbnip_presentation_manifest_locator VALUES (@parent,@ordinal,DEFAULT,@cppp,@ct,@mi,@to)"; + command.Parameters.AddWithValue("@parent", NpgsqlDbType.Integer, serial); + command.Parameters.AddWithValue("@ordinal", NpgsqlDbType.Integer, ordinal); + command.Parameters.AddWithValue("@cppp", NpgsqlDbType.Text, multicastSessionTypePresentationManifestLocator.contentPlaybackPathPattern); + command.Parameters.AddWithValue("@ct", NpgsqlDbType.Text, multicastSessionTypePresentationManifestLocator.contentType); + command.Parameters.AddWithValue("@mi", NpgsqlDbType.Uuid, Guid.Parse(multicastSessionTypePresentationManifestLocator.manifestId)); + command.Parameters.AddWithValue("@to", NpgsqlDbType.Text, multicastSessionTypePresentationManifestLocator.transportObjectURI); + 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 DvbNipInsertMulticastSessionTransport(NpgsqlConnection connection, int serial, int ordinal, MulticastTransportSessionType transport) + { + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = + "INSERT INTO dvbnip_multicast_transport_session VALUES " + + "(@serial,@ordinal,DEFAULT,DEFAULT,@id,@average,@maximum,@mediaTsi,@dstaddr,@srcaddr,@dstport,@protocolId,@protocolVersion,@contentIngestMethod," + + " @sessionIdleTimeout,@transmissionMode,@transportSecurity) " + + "RETURNING uuid"; + command.Parameters.AddWithValue("@serial", NpgsqlDbType.Integer, serial); + command.Parameters.AddWithValue("@ordinal", NpgsqlDbType.Integer, ordinal); + command.Parameters.AddWithValue("@id", NpgsqlDbType.Text, transport.id); + command.Parameters.AddWithValue("@average", NpgsqlDbType.Integer, int.Parse(transport.BitRate.average)); + command.Parameters.AddWithValue("@maximum", NpgsqlDbType.Integer, int.Parse(transport.BitRate.maximum)); + command.Parameters.AddWithValue("@mediaTsi", NpgsqlDbType.Integer, int.Parse(transport.EndpointAddress[0].MediaTransportSessionIdentifier)); + command.Parameters.AddWithValue("@dstaddr", NpgsqlDbType.Inet, IPAddress.Parse(transport.EndpointAddress[0].NetworkDestinationGroupAddress)); + command.Parameters.AddWithValue("@srcaddr", NpgsqlDbType.Inet, IPAddress.Parse(transport.EndpointAddress[0].NetworkSourceAddress)); + command.Parameters.AddWithValue("@dstport", NpgsqlDbType.Integer, int.Parse(transport.EndpointAddress[0].TransportDestinationPort)); + command.Parameters.AddWithValue("@protocolId", NpgsqlDbType.Text, transport.TransportProtocol.protocolIdentifier); + command.Parameters.AddWithValue("@protocolVersion", NpgsqlDbType.Integer, int.Parse(transport.TransportProtocol.protocolVersion)); + command.Parameters.AddWithValue("@contentIngestMethod", NpgsqlDbType.Integer, (int)transport.contentIngestMethod); + command.Parameters.AddWithValue("@sessionIdleTimeout", NpgsqlDbType.Integer, int.Parse(transport.sessionIdleTimeout)); + command.Parameters.AddWithValue("@transmissionMode", NpgsqlDbType.Integer, (int)transport.transmissionMode); + command.Parameters.AddWithValue("@transportSecurity", NpgsqlDbType.Integer, (int)transport.transportSecurity); + NpgsqlDataReader dataReader = command.ExecuteReader(); + dataReader.Read(); + Guid uuid = dataReader.GetGuid(0); + dataReader.Close(); + command.Dispose(); + + if (transport.ForwardErrorCorrectionParameters != null) + { + throw new NotImplementedException(nameof(transport.ForwardErrorCorrectionParameters)); + } + + if (transport.EndpointAddress.Length > 1) + { + throw new NotImplementedException(nameof(transport.EndpointAddress)); + } + + if (transport.ServiceComponentIdentifier != null) + { + for (int i = 0; i < transport.ServiceComponentIdentifier.Length; i++) + { + ServiceComponentIdentifierType serviceComponentIdentifier = transport.ServiceComponentIdentifier[i]; + DvbNipInsertServiceComponentIdentifier(connection,uuid, i, serviceComponentIdentifier); + } + } + + if (transport.UnicastRepairParameters != null) + { + throw new NotImplementedException(nameof(transport.UnicastRepairParameters)); + } + } + + private void DvbNipInsertServiceComponentIdentifier(NpgsqlConnection connection, Guid uuid, int i, ServiceComponentIdentifierType serviceComponentIdentifier) + { + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = "INSERT INTO dvbnip_service_component_identifier VALUES (@guid,@ordinal,@xsiType,@manifestId,@representation_id,@period_id,@adaption_set_id,@media_playlist_locator)"; + command.Parameters.AddWithValue("@guid", NpgsqlDbType.Uuid, uuid); + command.Parameters.AddWithValue("@ordinal", NpgsqlDbType.Integer, i); + command.Parameters.Add("@xsiType", NpgsqlDbType.Integer); + command.Parameters.AddWithValue("@manifestId", NpgsqlDbType.Uuid, Guid.Parse(serviceComponentIdentifier.manifestIdRef)); + command.Parameters.Add("@representation_id", NpgsqlDbType.Text); + command.Parameters.Add("@period_id", NpgsqlDbType.Text); + command.Parameters.Add("@adaption_set_id", NpgsqlDbType.Integer); + command.Parameters.Add("@media_playlist_locator", NpgsqlDbType.Text); + + XmlAttribute xmlAttribute = serviceComponentIdentifier.AnyAttr[0]; + string xsiType = xmlAttribute.Value; + switch (xsiType) + { + case "DASHComponentIdentifierType": + command.Parameters["@xsiType"].Value = 1; + DASHComponentIdentifierType dash = (DASHComponentIdentifierType)serviceComponentIdentifier; + command.Parameters["@representation_id"].Value = dash.representationIdentifier; + command.Parameters["@period_id"].Value = dash.periodIdentifier; + command.Parameters["@adaption_set_id"].Value = (int)dash.adaptationSetIdentifier; + break; + case "HLSComponentIdentifierType": + command.Parameters["@xsiType"].Value = 2; + HLSComponentIdentifierType hls = (HLSComponentIdentifierType)serviceComponentIdentifier; + command.Parameters["@media_playlist_locator"].Value = hls.mediaPlaylistLocator; + break; + default: + throw new NotImplementedException(xsiType); + } + + SetNulls(command); + int executeNonQuery = command.ExecuteNonQuery(); + if (executeNonQuery != 1) + throw new DataException(String.Format("Expected to insert {0} rows, but it were {1}", 1, executeNonQuery)); + command.Dispose(); + } + + private HashSet _knownNipMulticastGatewayConfigurationTransportSessions; public bool DvbNipTestForMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastEndpointAddressType) { - throw new NotImplementedException(); + if (_knownNipMulticastGatewayConfigurationTransportSessions == null) + _knownNipMulticastGatewayConfigurationTransportSessions = new HashSet(); + + DatabaseKeyNipMulticastGatewayConfigurationTransportSession key = new DatabaseKeyNipMulticastGatewayConfigurationTransportSession(carrier, multicastEndpointAddressType); + if (_knownNipMulticastGatewayConfigurationTransportSessions.Contains(key)) + return true; + + bool result; + NpgsqlConnection connection = new NpgsqlConnection(connectionStringBuilder.ToString()); + connection.Open(); + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = + "SELECT dateadded " + + "FROM dvbnip_multicast_gateway_configuration_transport_sessions " + + "WHERE network_id = @nid AND carrier_id = @cid AND link_id = @lid AND service_id = @sid " + + "AND source_address = @srcaddr AND destination_address = @dstaddr AND destination_port = @dstport AND tsi = @tsi"; + command.Parameters.AddWithValue("@nid", NpgsqlDbType.Integer, (int)key.NetworkId); + command.Parameters.AddWithValue("@cid", NpgsqlDbType.Integer, (int)key.CarrierId); + command.Parameters.AddWithValue("@lid", NpgsqlDbType.Integer, (int)key.LinkId); + command.Parameters.AddWithValue("@sid", NpgsqlDbType.Integer, (int)key.ServiceId); + command.Parameters.AddWithValue("@srcaddr", NpgsqlDbType.Inet, key.SourceAddress); + command.Parameters.AddWithValue("@dstaddr", NpgsqlDbType.Inet, key.DestinationAddress); + command.Parameters.AddWithValue("@dstport", NpgsqlDbType.Integer, (int)key.DestinationPort); + command.Parameters.AddWithValue("@tsi", NpgsqlDbType.Integer, key.TSI); + SetNulls(command); + NpgsqlDataReader dataReader = command.ExecuteReader(); + if (result = dataReader.Read()) + { + _knownNipMulticastGatewayConfigurationTransportSessions.Add(key); + } + dataReader.Close(); + command.Dispose(); + connection.Close(); + return result; } public void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, - MulticastGatewayConfigurationTransportSessionType multicastGatewayConfigurationTransportSession) + MulticastEndpointAddressType multicastGatewayConfigurationTransportSession) { - throw new NotImplementedException(); + EnqueueTask(x => DvbNipInsertMulticastGatewayConfigurationTransportSessionEx(x, carrier, multicastGatewayConfigurationTransportSession)); + } + + private void DvbNipInsertMulticastGatewayConfigurationTransportSessionEx(NpgsqlConnection connection, NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastEndpointAddressType) + { + DatabaseKeyNipMulticastGatewayConfigurationTransportSession key = new DatabaseKeyNipMulticastGatewayConfigurationTransportSession(carrier, multicastEndpointAddressType); + _knownNipMulticastGatewayConfigurationTransportSessions.Add(key); + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = "INSERT INTO dvbnip_multicast_gateway_configuration_transport_sessions VALUES (@nid,@cid,@lid,@sid,@srcaddr,@dstaddr,@dstport,@tsi,DEFAULT)"; + command.Parameters.AddWithValue("@nid", NpgsqlDbType.Integer, (int)key.NetworkId); + command.Parameters.AddWithValue("@cid", NpgsqlDbType.Integer, (int)key.CarrierId); + command.Parameters.AddWithValue("@lid", NpgsqlDbType.Integer, (int)key.LinkId); + command.Parameters.AddWithValue("@sid", NpgsqlDbType.Integer, (int)key.ServiceId); + command.Parameters.AddWithValue("@srcaddr", NpgsqlDbType.Inet, key.SourceAddress); + command.Parameters.AddWithValue("@dstaddr", NpgsqlDbType.Inet, key.DestinationAddress); + command.Parameters.AddWithValue("@dstport", NpgsqlDbType.Integer, (int)key.DestinationPort); + command.Parameters.AddWithValue("@tsi", NpgsqlDbType.Integer, key.TSI); + int executeNonQuery = command.ExecuteNonQuery(); + if (executeNonQuery != 1) + throw new DataException(String.Format("Expected to insert {0} rows, but it were {1}", 1, executeNonQuery)); + command.Dispose(); } } } diff --git a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs index b2ef1b8..bb3f021 100644 --- a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs +++ b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs @@ -2486,7 +2486,7 @@ namespace skyscraper5.Skyscraper.Scraper endpointAddress.NetworkDestinationGroupAddress, endpointAddress.TransportDestinationPort, endpointAddress.MediaTransportSessionIdentifier); LogEvent(SkyscraperContextEvent.DvbNipMulticastGatewayConfigurationTransportSession, name); - ScraperStorage.DvbNipInsertMulticastGatewayConfigurationTransportSession(carrier, multicastGatewayConfigurationTransportSession); + ScraperStorage.DvbNipInsertMulticastGatewayConfigurationTransportSession(carrier, endpointAddress); } } } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemScraperStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemScraperStorage.cs index 586e4ea..0f2947b 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemScraperStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemScraperStorage.cs @@ -1496,7 +1496,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem } public void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, - MulticastGatewayConfigurationTransportSessionType multicastGatewayConfigurationTransportSession) + MulticastEndpointAddressType multicastGatewayConfigurationTransportSession) { throw new NotImplementedException(); } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/IScraperStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/IScraperStorage.cs index a5c6901..4d762c5 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/IScraperStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/IScraperStorage.cs @@ -193,7 +193,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage bool DvbNipTestForMulticastSession(MulticastSessionType multicastSession); void DvbNipInsertMulticastSession(MulticastSessionType multicastSession); bool DvbNipTestForMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastEndpointAddressType); - void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastGatewayConfigurationTransportSessionType multicastGatewayConfigurationTransportSession); + void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastGatewayConfigurationTransportSession); bool DvbNipTestForCarrier(NipActualCarrierInformation currentCarrierInformation); void DvbNipInsertCarrier(NipActualCarrierInformation currentCarrierInformation); } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs index dbddc4d..145162e 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs @@ -1538,7 +1538,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.InMemory } private Dictionary _nipMulticastGatewayConfigurationTransportSessions; + MulticastEndpointAddressType> _nipMulticastGatewayConfigurationTransportSessions; public bool DvbNipTestForMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastEndpointAddressType) @@ -1552,16 +1552,16 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.InMemory } public void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, - MulticastGatewayConfigurationTransportSessionType multicastGatewayConfigurationTransportSession) + MulticastEndpointAddressType multicastGatewayConfigurationTransportSession) { if (_nipMulticastGatewayConfigurationTransportSessions == null) _nipMulticastGatewayConfigurationTransportSessions = new Dictionary(); + MulticastEndpointAddressType>(); DatabaseKeyNipMulticastGatewayConfigurationTransportSession key = new DatabaseKeyNipMulticastGatewayConfigurationTransportSession(carrier, - multicastGatewayConfigurationTransportSession.EndpointAddress[0]); + multicastGatewayConfigurationTransportSession); _nipMulticastGatewayConfigurationTransportSessions.Add(key, multicastGatewayConfigurationTransportSession); } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/Split/DataStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/Split/DataStorage.cs index fa8f620..6ecb94f 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/Split/DataStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/Split/DataStorage.cs @@ -191,7 +191,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Split bool DvbNipTestForMulticastSession(MulticastSessionType multicastSession); void DvbNipInsertMulticastSession(MulticastSessionType multicastSession); bool DvbNipTestForMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastEndpointAddressType); - void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastGatewayConfigurationTransportSessionType multicastGatewayConfigurationTransportSession); + void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastGatewayConfigurationTransportSession); bool DvbNipTestForCarrier(NipActualCarrierInformation currentCarrierInformation); void DvbNipInsertCarrier(NipActualCarrierInformation currentCarrierInformation); diff --git a/skyscraper8/Skyscraper/Scraper/Storage/Split/SplitScraperStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/Split/SplitScraperStorage.cs index 3cf796d..38384b2 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/Split/SplitScraperStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/Split/SplitScraperStorage.cs @@ -953,7 +953,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Split } [DebuggerStepThrough] - public void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastGatewayConfigurationTransportSessionType multicastGatewayConfigurationTransportSession) + public void DvbNipInsertMulticastGatewayConfigurationTransportSession(NipActualCarrierInformation carrier, MulticastEndpointAddressType multicastGatewayConfigurationTransportSession) { dataStorage.DvbNipInsertMulticastGatewayConfigurationTransportSession(carrier, multicastGatewayConfigurationTransportSession); }