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