public override void BatchUpdatingHandler(BatchUpdatingMessageReader request) { //Console.WriteLine("In rank updating handler"); //gather(request); List<long> senders = request.senders; List<long> receivers = request.receivers; List<double> weights = request.weights; for (int k = 0; k < receivers.Count; k++) { long receiverId = receivers[k]; long senderId = senders[k]; double weight = weights[k]; double sum = 0; double pre_sum = 0; Boolean b = true; using (var cell = Global.LocalStorage.UseSSSPCell(receiverId)) { try { for (int i = 0; i < cell.inNeighbors.Count; i++) { if (cell.inNeighbors[i] == senderId) { //sum = cell.sum; //pre_sum = cell.pre_sum; b = false; Double last = cell.ranks[i]; if (weight > last) { cell.ranks[i] = weight; cell.sum += weight - last; //get value sum = cell.sum; pre_sum = cell.pre_sum; } break; } } } catch (Exception e) { Console.Error.WriteLine(e); //Console.WriteLine("Sender: " + sender); } } if (b) { Console.WriteLine("Error!"); } if (sum - pre_sum > level) { using (var cell = Global.LocalStorage.UseSSSPCell(receiverId)) { cell.pre_sum = sum; } addToSend(receiverId, sum); } } }
public override void RankUpdatingHandler(BatchUpdatingMessageReader request) { //Console.WriteLine("In rank updating handler"); long sender = request.senderId; double value = request.value; request.recipients.ForEach((cellId) => { double sum = 0; double pre_sum = 0; Boolean b = true; using (var cell = Global.LocalStorage.UseSSSPCell(cellId)) { try { for (int i = 0; i < cell.inNeighbors.Count; i++) { if (cell.inNeighbors[i] == sender) { //sum = cell.sum; //pre_sum = cell.pre_sum; b = false; Double last = cell.ranks[i]; //if (value > last + precision) //{ cell.ranks[i] = value; cell.sum += value - last; sum = cell.sum; pre_sum = cell.pre_sum; //} break; } } } catch (Exception e) { Console.Error.WriteLine(e); Console.WriteLine("Sender: " + sender); } } if (b) { Console.WriteLine("Error!"); } if (sum - pre_sum > returnLevel()) { using (var cell = Global.LocalStorage.UseSSSPCell(cellId)) { cell.pre_sum = sum; } send(cellId, sum); } }); }