Пример #1
0
        public ReportSinkPositionMessage(SinksAgentsRow reportSinkPosition)
        {
            counter = new NetworkOverheadCounter();
            reportSinkPosition.RingAccessPointDestination = reportSinkPosition.AgentNode.getDestinationForRingAccess();
            Packet ANPI = GeneratePacket(reportSinkPosition);

            SendPacket(reportSinkPosition.AgentNode, ANPI);
        }
Пример #2
0
        /// <summary>
        /// find x in inlist
        /// </summary>
        /// <param name="x"></param>
        /// <param name="inlist"></param>
        /// <returns></returns>
        private bool Find(SinksAgentsRow x, List <SinksAgentsRow> inlist)
        {
            foreach (SinksAgentsRow rec in inlist)
            {
                if (rec.Sink.ID == x.Sink.ID)
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #3
0
        public List <SinksAgentsRow> CopyFewSinks(Dictionary <int, SinksAgentsRow> list, List <int> SinkIDs)
        {
            List <SinksAgentsRow> re = new List <SinksAgentsRow>();

            foreach (int id in SinkIDs)
            {
                SinksAgentsRow row = new SinksAgentsRow();
                row.Sink      = PublicParamerters.MainWindow.mySinks[id - 1];
                row.AgentNode = row.Sink.MySinksAgentsRow.AgentNode;
                re.Add(row);
            }
            return(re);
        }
Пример #4
0
        private Packet GeneragtePacket(Sensor firstRingNode, SinksAgentsRow reportSinkPositionRow)
        {
            PublicParamerters.NumberofGeneratedPackets += 1;
            Packet pck = new Packet();

            pck.Source             = firstRingNode;
            pck.ReportSinkPosition = reportSinkPositionRow;
            pck.Path        = "" + firstRingNode.ID;
            pck.Destination = null;
            pck.PacketType  = PacketType.ShareSinkPosition;
            pck.PID         = PublicParamerters.NumberofGeneratedPackets;
            counter.DisplayRefreshAtGenertingPacket(firstRingNode, PacketType.ShareSinkPosition);
            return(pck);
        }
Пример #5
0
        private Packet GeneragtePacket(Sensor sender, SinksAgentsRow row)
        {
            //Should not enter here if its an agent
            PublicParamerters.NumberofGeneratedPackets += 1;
            Packet pck = new Packet();

            pck.Source      = sender;
            pck.Path        = "" + sender.ID;
            pck.Destination = row.AgentNode;
            pck.PacketType  = PacketType.Data;
            pck.PID         = PublicParamerters.NumberofGeneratedPackets;
            pck.TimeToLive  = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(sender.CenterLocation, pck.Destination.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3)));
            pck.TimeToLive += PublicParamerters.HopsErrorRange;
            counter.DisplayRefreshAtGenertingPacket(sender, PacketType.Data);
            return(pck);
        }
Пример #6
0
        private Packet GeneratePacket(SinksAgentsRow reportSinkPosition)
        {
            PublicParamerters.NumberofGeneratedPackets += 1;
            Packet pck = new Packet();

            pck.Source           = reportSinkPosition.AgentNode;
            pck.Path             = "" + reportSinkPosition.AgentNode.ID;
            pck.Destination      = null; // has no destination.
            pck.PacketType       = PacketType.ReportSinkPosition;
            pck.DestinationPoint = reportSinkPosition.RingAccessPointDestination;
            pck.PID = PublicParamerters.NumberofGeneratedPackets;
            pck.ReportSinkPosition = reportSinkPosition;
            pck.TimeToLive         = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(reportSinkPosition.AgentNode.CenterLocation, reportSinkPosition.RingAccessPointDestination) / (PublicParamerters.CommunicationRangeRadius / 3)));
            pck.TimeToLive        += PublicParamerters.HopsErrorRange;
            counter.DisplayRefreshAtGenertingPacket(reportSinkPosition.AgentNode, PacketType.ReportSinkPosition);
            return(pck);
        }
Пример #7
0
        public ShareSinkPositionIntheHighTier(Sensor ringNodeGateway, SinksAgentsRow reportSinkPositionRow)
        {
            if (ringNodeGateway.IsHightierNode)
            {
                ringNodeGateway.AddSinkRecordInHighTierNode(reportSinkPositionRow);


                counter = new NetworkOverheadCounter();
                Packet clock = GeneragtePacket(ringNodeGateway, reportSinkPositionRow);
                clock.PacketDirection = PacketDirection.Left;
                Packet anticlock = GeneragtePacket(ringNodeGateway, reportSinkPositionRow);
                anticlock.PacketDirection = PacketDirection.Right;
                SendPacket(ringNodeGateway, clock);
                SendPacket(ringNodeGateway, anticlock);


                //: SAVE Sink positions.// this is not agent record. becarful here
            }
        }