static IEnumerable <Message> GetPreConfiguredDiscussionMessages(ApplicationContext context)
            {
                var messages = new List <Message>();

                for (int i = 0; i < 200; ++i)
                {
                    messages.Add(new Message(GetDiscussion(context, 0), GetApplicationUser(context, 0), RandomMessageGenerator.Generate(1, 1, 5, 1, 20)));
                }
                return(messages);
            }
Esempio n. 2
0
        /// <summary>
        /// Funkcja uruchamiana w momencie naciśnięcia przycisku odpowiedzialnego za wysyłanie wiadomości o losowej długości
        /// </summary>
        /// <param name="sender">Obiekt, który odpowiedzialny jest za wysłanie eventu</param>
        /// <param name="e">Otrzymany event po naciśnięciu przycisku</param>
        private void buttonDifferentMessages_Click(object sender, EventArgs e)
        {
            if (comboBoxClients.SelectedItem != null)
            {
                //Pobranie celu do którego wysłana zostanie wiadomość
                string destination = comboBoxClients.SelectedItem.ToString();
                //Zmiana ustawienia przycisku kończącego wysyłanie
                buttonStopSendingClicked = false;
                if (buttonSendRandomClicked == false)
                {
                    t = Task.Run(async() =>
                    {
                        while (buttonStopSendingClicked != true)
                        {
                            short frameID  = (short)(new Random()).Next(0, short.MaxValue);
                            string message = null;
                            //Wygnenerowanie losowej wiadomości o maksymalnej długości
                            message = RandomMessageGenerator.generateRandomMessage(37);
                            //Pobranie wiadomości
                            short messageLength = (short)message.Length;
                            byte[] bytemessage;
                            List <byte[]> packageList = new List <byte[]>();
                            if (messageLength > Package.usableInfoMaxLength)
                            {
                                double numberOfPackages = (Math.Ceiling((double)messageLength / Package.usableInfoMaxLength));
                                short tmpLength         = Convert.ToInt16(messageLength - (short)((short)(numberOfPackages - 1) * Package.usableInfoMaxLength));
                                for (int i = 0; i < numberOfPackages; i++)
                                {
                                    if (i < numberOfPackages - 1)
                                    {
                                        bytemessage = null;
                                        EONpackage  = new Package(message.Substring(i * Package.usableInfoMaxLength, Package.usableInfoMaxLength), 1, destination, _ClientApplication.ClientIP,
                                                                  Convert.ToInt16(Package.usableInfoMaxLength), Convert.ToInt16(i + 1), (short)-1, (short)(-1), (short)(-1), (short)(-1), frameID, Convert.ToInt16(numberOfPackages));
                                        bytemessage = EONpackage.toBytes();
                                    }
                                    else
                                    {
                                        bytemessage = null;
                                        EONpackage  = new Package(message.Substring(i * Package.usableInfoMaxLength, messageLength - i * Package.usableInfoMaxLength), 1,
                                                                  destination, _ClientApplication.ClientIP, tmpLength, Convert.ToInt16(i + 1), (short)-1, (short)(-1), (short)(-1), (short)(-1), frameID, Convert.ToInt16(numberOfPackages));
                                        bytemessage = EONpackage.toBytes();
                                    }
                                    packageList.Add(bytemessage);
                                }

                                if (send.Connected)
                                {
                                    for (int i = 0; i < packageList.Count(); i++)
                                    {
                                        string timestamp2 = Timestamp.generateTimestamp();

                                        //Wysłanie wiadomości (tablicy bajtów) za pośrednictwem gniazda
                                        sS.SendingPackageBytes(send, packageList[i]);
                                        //  _ClientApplication.updateLogTextBox("[" + timestamp2 + "] == SENDING PACKAGE number: " + (i + 1) + " == ");

                                        var wait = await Task.Run(async() =>
                                        {
                                            Stopwatch sw = Stopwatch.StartNew();
                                            await Task.Delay(10);
                                            sw.Stop();
                                            return(sw.ElapsedMilliseconds);
                                        });
                                    }
                                }

                                //Stworzenie znacznika czasowego
                                string timestamp = Timestamp.generateTimestamp();

                                _ClientApplication.updateLogTextBox("[" + timestamp + "] == SENDING MESSAGE in " + numberOfPackages + " packages  == " + " D_ClientIP " + destination);
                            }
                            else
                            {
                                //Stworzenie wysyłanej paczki
                                bytemessage = null;
                                EONpackage  = new Package(message, 1, destination, _ClientApplication.ClientIP, messageLength, Convert.ToInt16(1), (short)(-1),
                                                          (short)(-1), (short)(-1), (short)(-1), frameID, 1);
                                bytemessage = EONpackage.toBytes();
                                //Stworzenie znacznika czasowego
                                string timestamp = Timestamp.generateTimestamp();
                                //Zamiana paczki na tablicę bajtów

                                if (send.Connected)
                                {
                                    //Wysłanie wiadomości (tablicy bajtów) za pośrednictwem gniazda
                                    sS.SendingPackageBytes(send, bytemessage);
                                    //Zaktualizowanie LogEventTextBoxa
                                    _ClientApplication.updateLogTextBox("[" + timestamp + "] == SENDING MESSAGE ==  D_ClientIP " + destination);
                                }
                            }

                            //Task, który służy wprowadzeniu opóźnienia między kolejnymi wysłanymi pakietami
                            var delay = await Task.Run(async() =>
                            {
                                Stopwatch sw = Stopwatch.StartNew();
                                await Task.Delay(3000);
                                sw.Stop();
                                return(sw.ElapsedMilliseconds);
                            });
                        }
                    });
                }
                //Zablokowanie podwójnego naciśnięcia przycisku wysyłania
                buttonSendRandomClicked = true;
            }
        }
        /// <summary>
        /// Funkcja uruchamiana w momencie naciśnięcia przycisku odpowiedzialnego za wysyłanie wiadomości o losowej długości
        /// </summary>
        /// <param name="sender">Obiekt, który odpowiedzialny jest za wysłanie eventu</param>
        /// <param name="e">Otrzymany event po naciśnięciu przycisku</param>
        private void buttonDifferentMessages_Click(object sender, EventArgs e)
        {
            if (comboBoxClients.SelectedItem != null)
            {
                //Pobranie celu do którego wysłana zostanie wiadomość
                //string destination = comboBoxClients.SelectedItem.ToString();

                string DestinationID = comboBoxClients.SelectedItem.ToString();


                //Zmiana ustawienia przycisku kończącego wysyłanie
                buttonStopSendingClicked = false;

                t = Task.Run(async() =>
                {
                    //Wygenerowanie losowego ID
                    short frameID  = (short)(new Random()).Next(0, short.MaxValue);
                    string message = null;
                    //Liczba wysyłanych wiadomości
                    int nbOfMessages = Int32.Parse(textBoxHowManyMessages.Text);
                    //Wiadomość w postaci bytes
                    byte[] bytemessage;
                    //Pętla odpowiedzialna za wysłanie odpowiedniej ilości wiadomości.
                    for (int i = 0; i < nbOfMessages; i++)
                    {
                        //Generowanie losowej wiadomości o maksymalnej długości 37 bitów
                        message = RandomMessageGenerator.generateRandomMessage(37);
                        //Pobranie długości wygenerowanej wiadomości
                        short messageLength = (short)message.Length;
                        bytemessage         = null;
                        //Stworzenie wysyłanej paczki
                        int portA = 0;
                        if (ClientIP == "127.0.0.2")
                        {
                            portA = 2;
                        }
                        else
                        {
                            portA = 1;
                        }

                        int index = _CPCC.establishedConnections.FindIndex(x => x.Equals(DestinationID)) + 1;

                        EONpackage = new Package(message, (short)portA, _CPCC.establishedConnections[index], _ClientApplication.ClientIP, messageLength, Convert.ToInt16(1), (short)(-1),
                                                 (short)(-1), (short)(-1), (short)(-1), frameID, 1);
                        bytemessage = EONpackage.toBytes();
                        //Stworzenie znacznika czasowego
                        string timestamp = Timestamp.generateTimestamp();
                        //Zamiana paczki na tablicę bajtów

                        if (send.Connected)
                        {
                            //Wysłanie wiadomości (tablicy bajtów) za pośrednictwem gniazda
                            sS.SendingPackageBytes(send, bytemessage);
                            //Zaktualizowanie LogEventTextBoxa
                            _ClientApplication.updateLogTextBox("[" + timestamp + "] == SENDING MESSAGE number " + (i + 1) + "==  D_ClientID: " + DestinationID + " with frameID: " + frameID);
                        }

                        var wait = await Task.Run(async() =>
                        {
                            Stopwatch sw = Stopwatch.StartNew();
                            await Task.Delay(10);
                            sw.Stop();
                            return(sw.ElapsedMilliseconds);
                        });
                    }
                });
            }
            else
            {
                MessageBox.Show("You need to select a client!", "Important Message.",
                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }