Exemple #1
0
        private void ClearOXC(CommandLibrary.Command command, Socket handler)
        {
            //Chciałem poprawić, a zjebałem.Trzeba tu ustalić jakas funkcje zeby po routerach rozsylala

            Connection Conn = connectionList.Find(x => x.connectionId == command.connectionId);

            if (Conn == null)
            {
                Conn = new Connection();
                Conn.connectionId = command.connectionId;
                Conn.usedLinks    = command.linkList;
            }
            //List<string> desR = new List<string>();
            //foreach (CommandLibrary.Link link in Conn.usedLinks)
            //{
            //    if (!desR.Contains(link.Object1) && link.Object1.Contains('X') && link.Object1.Contains(self.ReturnName()))
            //        desR.Add(link.Object1);
            //    if (!desR.Contains(link.Object2) && link.Object2.Contains('X') && link.Object2.Contains(self.ReturnName()))
            //        desR.Add(link.Object2);
            //}



            CommandLibrary.Command response = new CommandLibrary.Command("Link Delete");
            response.connectionId  = command.connectionId;
            response.deletedLinkId = command.deletedLinkId;
            response.destinationId = self.ReturnName() + ":RC";
            response.sourceId      = ccId;
            //
            if (Conn != null)
            {
                response.linkList = Conn.usedLinks;
            }
            using (var stream = new NetworkStream(handler))
            {
                BinaryFormatter bformatter = new BinaryFormatter();
                bformatter.Serialize(stream, response);
                stream.Flush();
                stream.Close();
            }
            self.mainWindow.Invoke(new Action(() => self.Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> CC >> 'Link Delete' send to {response.destinationId}" + Environment.NewLine));

            response.commandType   = "Clear Link";
            response.destinationId = self.ReturnName() + ":LRM";

            using (var stream = new NetworkStream(handler))
            {
                BinaryFormatter bformatter = new BinaryFormatter();
                bformatter.Serialize(stream, response);
                stream.Flush();
                stream.Close();
            }
            self.mainWindow.Invoke(new Action(() => self.Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> CC >> 'Link Delete' send to {response.destinationId}" + Environment.NewLine));


            if (self.ReturnSubnetworks().Count != 0)
            {
                foreach (Subnetwork s in self.ReturnSubnetworks())
                {
                    // clear oxc
                    response.commandType   = "Clear OXC";
                    response.destinationId = s.ReturnName() + ":CC";
                    using (var stream = new NetworkStream(handler))
                    {
                        BinaryFormatter bformatter = new BinaryFormatter();
                        bformatter.Serialize(stream, response);
                        stream.Flush();
                        stream.Close();
                    }
                    self.mainWindow.Invoke(new Action(() => self.Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> CC >> 'Clear OXC' send to {response.destinationId}" + Environment.NewLine));
                }
            }
            else
            {
                Thread.Sleep(200);
                List <NetworkNode> nn = self.ReturnNodes();
                foreach (NetworkNode n in nn)
                {
                    CommandLibrary.Command oxcRequest = new CommandLibrary.Command("PortMatch Delete");
                    oxcRequest.connectionId  = command.connectionId;
                    oxcRequest.deletedLinkId = command.deletedLinkId;
                    oxcRequest.destinationId = n.ReturnName();
                    if (Conn != null)
                    {
                        oxcRequest.linkList = Conn.usedLinks;
                    }
                    using (var stream = new NetworkStream(handler))
                    {
                        BinaryFormatter bformatter = new BinaryFormatter();
                        bformatter.Serialize(stream, oxcRequest);
                        stream.Flush();
                        stream.Close();
                    }



                    CommandLibrary.Command back = new CommandLibrary.Command("OXC Clear");
                    back.connectionId  = command.connectionId;
                    back.deletedLinkId = command.deletedLinkId;
                    string[] s = self.ReturnName().Split(':');
                    back.destinationId = s[0] + ":" + s[1] + ":CC";
                    using (var stream = new NetworkStream(handler))
                    {
                        BinaryFormatter bformatter = new BinaryFormatter();
                        bformatter.Serialize(stream, back);
                        stream.Flush();
                        stream.Close();
                    }
                }
            }

            if (self.ReturnSubnetworks().Count != 0)
            {
                Thread.Sleep(500);
                CommandLibrary.Command back = new CommandLibrary.Command("OXC Cleared");
                back.connectionId  = command.connectionId;
                back.deletedLinkId = command.deletedLinkId;
                back.linkList      = command.linkList;
                back.destinationId = ccId;

                using (var stream = new NetworkStream(handler))
                {
                    BinaryFormatter bformatter = new BinaryFormatter();
                    bformatter.Serialize(stream, back);
                    stream.Flush();
                    stream.Close();
                }
            }
        }
Exemple #2
0
        private void SetPath(Command command, Socket handler)
        {
            if (String.IsNullOrEmpty(command.startOfPath))
            {
                self.mainWindow.Invoke(new Action(() => self.Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> RC >> Trying to solve route element ({command.startOfPathPort}, {command.endOfPathPort})" + Environment.NewLine));
            }
            else
            {
                self.mainWindow.Invoke(new Action(() => self.Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> RC >> Trying to solve route element ({command.startOfPath}, {command.endOfPath})" + Environment.NewLine));
            }

            if (String.IsNullOrEmpty(command.startOfPath) || String.IsNullOrEmpty(command.endOfPath))
            {
                List <NetworkNode> checkList = self.ReturnNodes();
                bool   flag     = false;
                string thatNode = string.Empty;
                foreach (NetworkNode n in checkList)
                {
                    List <int> tempInt = n.ReturnPorts();
                    if (tempInt.Contains(command.startOfPathPort) && tempInt.Contains(command.endOfPathPort))
                    {
                        //oba porty należą do jednego OXC! nie szukamy ścieżki
                        flag     = true;
                        thatNode = n.ReturnName();
                    }
                    else
                    {
                        //porty z różnych oxc, więc szukamy ścieżki w podsieci
                    }
                }
                if (!flag)
                {
                    Command       response = new Command("Path Ready");
                    List <string> temp     = new List <string>();
                    for (int i = 0; i < links.Count; i++)
                    {
                        if (links[i].portObject1 == command.startOfPathPort || links[i].portObject1 == command.endOfPathPort)
                        {
                            temp.Add(links[i].Object1);
                        }
                        if (links[i].portObject2 == command.endOfPathPort || links[i].portObject2 == command.startOfPathPort)
                        {
                            temp.Add(links[i].Object2);
                        }
                    }
                    if (temp.Count == 1)
                    {
                        command.startOfPath  = temp[0];
                        response.startOfPath = temp[0];
                        command.endOfPath    = temp[0];
                        response.endOfPath   = temp[0];
                    }
                    else
                    {
                        command.startOfPath  = temp[0];
                        response.startOfPath = temp[0];
                        command.endOfPath    = temp[1];
                        response.endOfPath   = temp[1];
                    }
                    response.startOfPathPort          = command.startOfPathPort;
                    response.endOfPathPort            = command.endOfPathPort;
                    response.linkList                 = getShortestPath(command.startOfPath, command.endOfPath);
                    response.sourceId                 = rcId;
                    response.destinationId            = command.sourceId;
                    response.startOfPath              = command.startOfPath;
                    response.endOfPath                = command.endOfPath;
                    response.domainOfRequestedClient  = command.domainOfRequestedClient;
                    response.domainOfRequestingClient = command.domainOfRequestingClient;
                    response.bandwidth                = command.bandwidth;
                    response.startCrack               = command.startCrack;
                    response.endCrack                 = command.endCrack;
                    using (var stream = new NetworkStream(handler))
                    {
                        BinaryFormatter bformatter = new BinaryFormatter();
                        bformatter.Serialize(stream, response);
                        stream.Flush();
                        stream.Close();
                    }
                }
                else
                {
                    Command response = new Command("Just Confirm");
                    response.linkList = new List <Link>();
                    foreach (Link l in command.linkList)
                    {
                        if (l.Object1 == self.ReturnName())
                        {
                            l.Object1 = thatNode;
                        }
                        if (l.Object2 == self.ReturnName())
                        {
                            l.Object2 = thatNode;
                        }
                    }
                    response.linkList.AddRange(command.linkList);
                    response.sourceId                 = rcId;
                    response.destinationId            = command.sourceId;
                    response.domainOfRequestedClient  = command.domainOfRequestedClient;
                    response.domainOfRequestingClient = command.domainOfRequestingClient;
                    response.bandwidth                = command.bandwidth;
                    using (var stream = new NetworkStream(handler))
                    {
                        BinaryFormatter bformatter = new BinaryFormatter();
                        bformatter.Serialize(stream, response);
                        stream.Flush();
                        stream.Close();
                    }
                }
            }
            else
            {
                Command response = new Command("Path Ready");
                response.startOfPathPort          = command.startOfPathPort;
                response.endOfPathPort            = command.endOfPathPort;
                response.linkList                 = getShortestPath(command.startOfPath, command.endOfPath);
                response.sourceId                 = rcId;
                response.destinationId            = command.sourceId;
                response.startOfPath              = command.startOfPath;
                response.endOfPath                = command.endOfPath;
                response.domainOfRequestedClient  = command.domainOfRequestedClient;
                response.domainOfRequestingClient = command.domainOfRequestingClient;
                response.bandwidth                = command.bandwidth;
                using (var stream = new NetworkStream(handler))
                {
                    BinaryFormatter bformatter = new BinaryFormatter();
                    bformatter.Serialize(stream, response);
                    stream.Flush();
                    stream.Close();
                }
            }
        }