/// <summary> /// Raises the discovery packet recieved event. /// </summary> /// <param name="source">The source.</param> /// <param name="packet">The packet.</param> protected virtual void RaiseNewDiscovery(IPEndPoint source, StreamingAcnDiscoveryPacket packet) { if (NewDiscovery != null) { NewDiscovery(this, new NewPacketEventArgs <StreamingAcnDiscoveryPacket>(source, packet)); } }
/// <summary> /// Sends a discovery message to all interested parties containing the universes we are transmitting. /// </summary> /// <remarks> /// The discovery message allows interested parties to know what universes we are transmitting. /// </remarks> /// <param name="universes">The universes we are currently sending.</param> public void SendDiscovery(IEnumerable <int> universes) { var chunkedUniverses = universes.ChunkBy(512); byte index = 1; foreach (List <int> chunk in chunkedUniverses) { StreamingAcnDiscoveryPacket packet = new StreamingAcnDiscoveryPacket(); if (OverrideRootLayer) { packet.Root = GetRootLayer(); } packet.Framing.SourceName = SourceName; packet.UniverseDiscovery.Page = index; packet.UniverseDiscovery.TotalPages = (byte)chunkedUniverses.Count(); packet.UniverseDiscovery.Universes.AddRange(chunk); SendPacket(packet, GetUniverseEndPoint(DiscoveryUniverse)); index++; } }