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); } } } }); }
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); } } } }
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); } } } } }
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); } } } } }