internal SSPError SendUdpMessage(IMessage message, UdpPAcketId packetId)
 {
     lock (UdpHandle)
     {
         PayloadWriter pw = new PayloadWriter();
         pw.WriteDecimal(this.ClientId);
         pw.WriteByte((byte)packetId);
         pw.WriteUInteger(Connection.messageHandler.GetMessageId(message.GetType()));
         message.WritePacket(message, ref pw);
         this.UdpHandle.SendTo(pw.GetBuffer(), 0, pw.Length, SocketFlags.None, this.UdpEndPoint);
         return(SSPError.ErrorSuccess);
     }
 }
Пример #2
0
        private static void SaveMaskTable(ref List <double> Digits, ref DataShuffler dataShuffler, int ByteIndex, ref Stream OutStream)
        {
            if (Digits.Count == 0)
            {
                return;
            }

            Console.WriteLine("Digits:" + Digits.Count);
            PayloadWriter pw = new PayloadWriter();

            double[] Shuffled = dataShuffler.Shuffle <double>(Digits.ToArray(), 1, (double progress, TimeSpan TimeLeft, int speed) =>
            {
                if ((int)progress % 5 == 0.0F)
                {
                    Console.WriteLine("Shuffle progress:" + progress + ", Speed: " + speed + ", Time Left: " + TimeLeft.Hours.ToString("D2") + ":" + TimeLeft.Minutes.ToString("D2") + ":" + TimeLeft.Seconds.ToString("D2"));
                }
            });

            for (int k = 0; k < Shuffled.Length; k++)
            {
                int Target = (int)Shuffled[k];

                pw.WriteByte((byte)ByteIndex);        //byte length

                if (ByteIndex >= 1 || ByteIndex <= 3) //play it safe
                {
                    pw.WriteUInteger((uint)Target);
                }
                else
                {
                    pw.WriteDecimal(Target);
                }

                if (pw.Length >= 65535)
                {
                    OutStream.Write(pw.GetBuffer(), 0, pw.Length);
                    OutStream.Flush();
                    pw = new PayloadWriter();
                }
            }
            if (pw.Length > 0)
            {
                OutStream.Write(pw.GetBuffer(), 0, pw.Length);
                OutStream.Flush();
            }
            pw.Dispose();
            Digits.Clear();
        }