示例#1
0
 public static void WriteGossipMsg(List <string> msg, Random RNG)
 {
     byte[] msgheader = new byte[] { 2, 0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
     for (int i = GossipStart; i < GossipEnd; i++)
     {
         if (GossipExclude.Contains(i))
         {
             continue;
         }
         ;
         MMMsg m = FindMsg(i);
         if (m == null)
         {
             continue;
         }
         ;
         int j;
         int l = m.Size + 1;
         do
         {
             j = RNG.Next(msg.Count);
             if (IsBadMsg(msg[j]))
             {
                 if (RNG.Next(8) != 0)
                 {
                     continue;
                 }
                 ;
             }
             ;
             l = msg[j].Length + msgheader.Length;
         } while (l > m.Size);
         byte[] data = new byte[l];
         Arr_Insert(msgheader, 0, msgheader.Length, data, 0);
         for (int k = 0; k < msg[j].Length; k++)
         {
             data[k + msgheader.Length] = (byte)msg[j][k];
         }
         ;
         WriteMsg(m.Addr, data);
         msg.RemoveAt(j);
     }
     ;
 }
示例#2
0
        public static void WriteGossipMessage(List <string> messages, Random RNG)
        {
            for (int i = GossipStart; i < GossipEnd; i++)
            {
                if (GossipExclude.Contains(i))
                {
                    continue;
                }

                MMMesssage message = FindMesssage(i);
                if (message == null)
                {
                    continue;
                }

                int randomMessageIndex;
                int length = message.Size + 1;
                do
                {
                    randomMessageIndex = RNG.Next(messages.Count);

                    if (IsBadMesssage(messages[randomMessageIndex]) && RNG.Next(8) != 0)
                    {
                        continue;
                    }

                    length = messages[randomMessageIndex].Length + Values.MessageHeader.Count;
                } while (length > message.Size);

                byte[] data = new byte[length];
                Arr_Insert(Values.MessageHeader.ToArray(), 0, Values.MessageHeader.Count, data, 0);

                for (int k = 0; k < messages[randomMessageIndex].Length; k++)
                {
                    data[k + Values.MessageHeader.Count] = (byte)messages[randomMessageIndex][k];
                }

                WriteMessage(message.Address, data);
                messages.RemoveAt(randomMessageIndex);
            }
            ;
        }