コード例 #1
0
ファイル: ProposerEvent.cs プロジェクト: kavindu23110/CDN
 public void ResponseRecieved(CDN.GRPC.protobuf.PaxosResponse response)
 {
     try
     {
         OnResponserecieved(this, new ProposerEventArgs(response));
     }
     catch (Exception ex)
     {
     }
 }
コード例 #2
0
        public CDN.GRPC.protobuf.PaxosResponse NodeResponse(CDN.GRPC.protobuf.PaxosRequest request)
        {
            var distance = new Vote.GeoDistance().calcuateIpDistance(request.ClientIp);

            var response = new CDN.GRPC.protobuf.PaxosResponse()
            {
                Distance = distance,
                FileURL  = $"http://{BOD.NodeDetails.Ip}:{BOD.NodeDetails.Port}" + request.FileURL,//kts
                PID      = request.PID,
            };

            return(response);
        }
コード例 #3
0
ファイル: Learner.cs プロジェクト: kavindu23110/CDN
 private void sendResponseToLeader(CDN.GRPC.protobuf.PaxosResponse paxosResponse)
 {
     try
     {
         Console.WriteLine("Send paxos response to leader  " + BOD.NodeDetails.LeaderNode + "  " + DateTime.Now.ToString());
         var GRPCClient = new BLL.GRPC.NodeVoting.GRPCClien_NodeVoting(BOD.NodeDetails.LeaderNode, BOD.SystemPorts.nearestnode);
         GRPCClient.Client.SendPaxosAccptanceToLeader(paxosResponse);
         GRPCClient.Stop_Channel();
         Statics.learners.Remove(this);
     }
     catch (Exception ex)
     {
     }
 }
コード例 #4
0
ファイル: Learner.cs プロジェクト: kavindu23110/CDN
        internal void AddResponseToLearners(CDN.GRPC.protobuf.PaxosResponse request)
        {
            CDN.BLL.Leraner.Learner learner;

            learner = Statics.learners.Where(p => p.PId == request.PID).FirstOrDefault();
            if (learner == null)
            {
                learner = new Leraner.Learner()
                {
                    PId = request.PID
                };
                Statics.learners.Add(learner);
            }
            learner.lstPaxosResponses.Add(request);
            Console.WriteLine("Add request to queue  " + DateTime.Now.ToString());
        }
コード例 #5
0
ファイル: Learner.cs プロジェクト: kavindu23110/CDN
        private CDN.GRPC.protobuf.PaxosResponse SelectLowestDistance()
        {
            CDN.GRPC.protobuf.PaxosResponse result = null;
            var distance  = lstPaxosResponses.Min(p => p.Distance);
            var distances = lstPaxosResponses.FindAll(p => p.Distance == distance);

            if (distances.Count > 1)
            {
                int index = new Random().Next(distances.Count);
                result = distances[index];
            }
            else
            {
                result = distances.FirstOrDefault();
            }
            return(result);
        }
コード例 #6
0
 public ProposerEventArgs(CDN.GRPC.protobuf.PaxosResponse Response)
 {
     this.Response = Response;
 }