コード例 #1
0
            public void WillAssignAllSegmentsWeAskForImmediately()
            {
                var ranges           = Enumerable.Range(0, 500).ToArray();
                var assignedSegments = replication.AssignAllEmptySegments(NodeEndpoint.ForTest(1), ReplicationType.Ownership, ranges);

                Assert.Equal(ranges, assignedSegments);
            }
コード例 #2
0
            public void WillSkipSegmentsThatHasItemsInThem()
            {
                var ranges           = Enumerable.Range(0, 500).ToArray();
                var assignedSegments = replication.AssignAllEmptySegments(NodeEndpoint.ForTest(1), ReplicationType.Ownership, ranges);

                Assert.Equal(ranges.Skip(1).ToArray(), assignedSegments);
            }
コード例 #3
0
        private List <Segment> AssignAllEmptySegmentsFromEndpoint(List <int> processedSegments)
        {
            var remainingSegments = new List <Segment>();
            var assignedSegments  = otherNode.AssignAllEmptySegments(
                node.Endpoint,
                type,
                segments.Select(x => x.Index).ToArray());

            processedSegments.AddRange(assignedSegments);
            node.DoneReplicatingSegments(type, assignedSegments);

            log.DebugFormat("{0} empty segments assigned from {1}", assignedSegments.Length, endpoint.Sync);
            remainingSegments.AddRange(
                segments.Where(x => assignedSegments.Contains(x.Index) == false)
                );
            return(remainingSegments);
        }
コード例 #4
0
        private void HandleAssignEmpty(StorageMessageUnion wrapper,
                                       MessageStreamWriter <StorageMessageUnion> writer)
        {
            var segments = replication.AssignAllEmptySegments(
                wrapper.AssignAllEmptySegmentsRequest.ReplicationEndpoint.GetNodeEndpoint(),
                wrapper.AssignAllEmptySegmentsRequest.Type == ReplicationType.Backup ? Internal.ReplicationType.Backup : Internal.ReplicationType.Ownership,
                wrapper.AssignAllEmptySegmentsRequest.SegmentsList.ToArray()
                );

            writer.Write(new StorageMessageUnion.Builder
            {
                Type = StorageMessageType.AssignAllEmptySegmentsResponse,
                AssignAllEmptySegmentsResponse = new AssignAllEmptySegmentsResponseMessage.Builder
                {
                    AssignedSegmentsList = { segments }
                }.Build()
            }.Build());
        }