Ejemplo n.º 1
0
    public void msgFromGui(String msg)
    {
        // this is WRONG!
        MsgStorage m = new MsgStorage(msg, myName, "sdfsdfsd");

        sendToPeers(m);

        MsgStorage m2 = new MsgStorage(m.getEncodedMessage());
    }
Ejemplo n.º 2
0
        public void AddTest()
        {
            MsgStorage msgStor = new MsgStorage();

            msgStor.MsgAdded += OnMsgChanged;
            SMSMessage        msg     = new SMSMessage("trsa", "hello");
            List <SMSMessage> expList = new List <SMSMessage> {
                msg
            };

            msgStor.Add(msg);

            Assert.IsTrue(expList.SequenceEqual(msgStor.MsgList));
        }
Ejemplo n.º 3
0
        public void DateAndMessageFilter()
        {
            List <SMSMessage> msgList    = new List <SMSMessage>();
            List <SMSMessage> expMsgList = new List <SMSMessage>();

            msgList.Add(msg1);
            msgList.Add(msg2);
            msgList.Add(msg3);
            expMsgList.Add(msg1);

            List <SMSMessage> fltrdList = MsgStorage.RetrieveMessages(msgList, String.Empty, "h", new DateTime(2018, 9, 25), new DateTime(2018, 9, 26), true);

            Assert.IsTrue(fltrdList.SequenceEqual(expMsgList));
        }
Ejemplo n.º 4
0
        public void TestTextFilter()
        {
            List <SMSMessage> msgList    = new List <SMSMessage>();
            List <SMSMessage> expMsgList = new List <SMSMessage>();

            msgList.Add(msg1);
            msgList.Add(msg2);
            msgList.Add(msg3);
            expMsgList.Add(msg2);

            List <SMSMessage> fltrdList = MsgStorage.RetrieveMessages(msgList, String.Empty, "yvi", new DateTime(1900, 1, 1), new DateTime(2099, 9, 27), true);

            Assert.IsTrue(fltrdList.SequenceEqual(expMsgList));
        }
Ejemplo n.º 5
0
        private void DisplayMessages(List <SMSMessage> msgList)
        {
            string   searchText = SearchTextBox.Text.ToString();
            DateTime fromDate   = FromDatePicker.Value.Date;
            DateTime toDate     = ToDatePicker.Value.Date;
            bool     andcond    = OrAndCheckBox.Checked;
            string   fltrSender = (Sender == allSenderItem) ? String.Empty : Sender;

            IEnumerable <SMSMessage> fltrdList = MsgStorage.RetrieveMessages(msgList, fltrSender, searchText, fromDate, toDate, andcond);

            foreach (var message in fltrdList)
            {
                ShowMessage(message);
            }
        }
Ejemplo n.º 6
0
        public void RemoveTest()
        {
            SMSMessage        msg1    = new SMSMessage("trsa", "hello");
            SMSMessage        msg2    = new SMSMessage("mksk", "pryvit");
            List <SMSMessage> expList = new List <SMSMessage> {
                msg1
            };
            MsgStorage msgStor = new MsgStorage(new List <SMSMessage> {
                msg1, msg2
            });

            msgStor.MsgRemoved += OnMsgChanged;

            msgStor.Remove(msg2);

            Assert.IsTrue(expList.SequenceEqual(msgStor.MsgList));
        }
Ejemplo n.º 7
0
 private void sendToPeers(MsgStorage msg)
 {
     //Console.WriteLine(msg.getMsgId());
     if (!seenIDs.Contains(msg.getMsgId()))
     {
         foreach (Peer peer in peers)
         {
             // Set up a new msg storage object with the current peer
             MsgStorage msg2 = new MsgStorage(msg.getEncodedMessage());
             // set the peer we send message to
             msg2.setToPeer(peer);
             msg2.ipAddr = "sdfjksdfsdf";                //(String)(peer.addrs.get(0).toString());
             // add message to sent list
             sentMsgs.Add(msg2);
             // start the timeout
             msg2.startTimer();
             peer.send(msg2.getEncodedMessage());
             //Console.WriteLine(peer.betterName);
         }
     }
     seenIDs.Add(msg.getMsgId());
 }
Ejemplo n.º 8
0
    // This is used to store which messages we've got Acks for
    // add message ID when send a message, add srcs when receive Acks
    //private List<List<String>> msgIdToSrc = new List<List<String>>();

    // We connect our UDP socket's readyRead() signal to this method,
    // so this method gets called whenever packets have been received
    // that are waiting to be read.
    private void receive()
    {
        while (true)
        {
            int len = sock.readDatagram(recvbuf, recvsrc);
            if (len < 0)
            {
                break;                  // no more datagrams to receive
            }
            // Extract the datagram's source address and port
            QHostAddress srcaddr = recvsrc.address;
            int          srcport = recvsrc.port;


            //Console.WriteLine(myName + ": datagram of size " + len +
            //	" received from " + srcaddr + ":" + srcport);

            byte[] recvbufLen = new byte[len];
            for (int i = 0; i < len; i++)
            {
                recvbufLen[i] = recvbuf[i];
            }

            // Check not a ping
            ASCIIEncoding enc = new ASCIIEncoding();
            String        msg = enc.GetString(recvbufLen);

            if (!msg.Equals("PING"))
            {
                try{
                    // now check whether it's and ACK
                    if (msg.Contains("Control: ihave"))
                    {
                        // ACK packet
                        msg = msg.Replace("\r\n", "");
                        String[] lines = msg.Split(" ".ToCharArray());
                        // ignore first two elements of lines as these are control: and ihave
                        for (int i = 2; i < lines.Length; i++)
                        {
                            if (lines[i].Length > 0)
                            {
                                MsgStorage doneMsg = getMsgStorage(lines[i], findPeer(srcaddr.ToString(), srcport));
                                // set all messages acked to be done
                                doneMsg.setDone();
                            }
                        }
                    }
                    else
                    {
                        MsgStorage msgObj = new MsgStorage(recvbufLen);

                        // Send an Ack
                        String ackStr = "Control: ihave ";
                        ackStr = ackStr + msgObj.getMsgId();

                        MsgStorage ack = new MsgStorage(ackStr, findPeer(srcaddr.ToString(), srcport));
                        //Console.WriteLine(ack.ackInfo);

                        //Console.WriteLine(msg);


                        // remove first part of boolean test below to test retransmit
                        if (seenIDs.Contains(msgObj.getMsgId()) || msgObj.getFromWho().Equals(myName))
                        {
                            // already seen the message so ignore it
                            // or I sent it so ignore
                        }
                        else
                        {
                            // Only fire if new msg id
                            NewMsgHandler newHandler = newMsg;
                            if (newHandler != null)                                                     // Forward it as a C# event,
                            {
                                newHandler(msgObj.getFromWho(), msgObj.getMsgBody());                   // only if there is a handler.
                            }
                            sendToPeers(msgObj);
                        }
                    }
                }catch (Exception e) {
                    Console.WriteLine("Received bad packet, dropping it");
                    Console.WriteLine(msg);
                    //Console.WriteLine(e.ToString());
                }
            }
        }
    }