Пример #1
0
        public override void DistanceUpdatingHandler(DistanceUpdatingMessageReader request)
        {
            List <DistanceUpdatingMessage> DistanceUpdatingMessageList = new List <DistanceUpdatingMessage>();

            request.recipients.ForEach((cellId) =>
            {
                using (var cell = Global.LocalStorage.UseSSSPCell(cellId))
                {
                    if (cell.distance > request.distance + 1)
                    {
                        cell.distance = request.distance + 1;
                        cell.parent   = request.senderId;
                        Console.Write(cell.distance + " ");
                        MessageSorter sorter = new MessageSorter(cell.neighbors);

                        for (int i = 0; i < Global.ServerCount; i++)
                        {
                            DistanceUpdatingMessageWriter msg = new DistanceUpdatingMessageWriter(cell.CellID.Value,
                                                                                                  cell.distance, sorter.GetCellRecipientList(i));
                            Global.CloudStorage.DistanceUpdatingToSSSPServer(i, msg);
                        }
                    }
                }
            });
        }
Пример #2
0
        public override void StartSSSPHandler(StartSSSPMessageReader request)
        {
            if (Global.CloudStorage.IsLocalCell(request.root))
            {
                using (var rootCell = Global.LocalStorage.UseSSSPCell(request.root)) {
                    rootCell.distance = 0;
                    rootCell.parent   = -1;

                    MessageSorter sorter = new MessageSorter(rootCell.neighbors);
                    for (int i = 0; i < Global.ServerCount; i++)
                    {
                        DistanceUpdatingMessageWriter msg = new DistanceUpdatingMessageWriter(rootCell.CellId, 0, sorter.GetCellRecipientList(i));
                        Global.CloudStorage.DistanceUpdatingToSSSPServer(i, msg);
                    }
                }
            }
        }
Пример #3
0
        private void step_one(long node_count)
        {
            for (int k = 0; k < node_count; k++)
            {
                if (Global.CloudStorage.Contains(k) && Global.CloudStorage.IsLocalCell(k))
                {
                    using (var rootCell = Global.LocalStorage.UseSSSPCell(k))
                    {
                        if (rootCell.neighbors.Count == 0)
                        {
                            continue;
                        }

                        double        rankValueP = rootCell.rankValue / rootCell.neighbors.Count;
                        MessageSorter sorter     = new MessageSorter(rootCell.neighbors);
                        for (int i = 0; i < Global.SlaveCount; i++)
                        {
                            DistanceUpdatingMessageWriter msg = new DistanceUpdatingMessageWriter(rootCell.CellID.Value, rankValueP, sorter.GetCellRecipientList(i));
                            Global.CloudStorage.DistanceUpdatingToSlave(i, msg);
                        }
                    }
                }
            }
        }
Пример #4
0
        private void step_one(long node_count)
        {
            for (int k = 0; k < node_count; k++)
            {
                if (Global.CloudStorage.Contains(k) && Global.CloudStorage.IsLocalCell(k))
                {
                    using (var rootCell = Global.LocalStorage.UseSSSPCell(k))
                    {
                        if (rootCell.neighbors.Count == 0) continue;

                        double rankValueP = rootCell.rankValue / rootCell.neighbors.Count;
                        MessageSorter sorter = new MessageSorter(rootCell.neighbors);
                        for (int i = 0; i < Global.SlaveCount; i++)
                        {
                            DistanceUpdatingMessageWriter msg = new DistanceUpdatingMessageWriter(rootCell.CellID.Value, rankValueP, sorter.GetCellRecipientList(i));
                            Global.CloudStorage.DistanceUpdatingToSlave(i, msg);
                        }
                    }
                }
            }
        }