示例#1
0
 /// <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));
     }
 }
示例#2
0
        /// <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++;
            }
        }