public ReplicationResult ReplicateNextPage(NodeEndpoint replicationEndpoint,
                                                   ReplicationType type,
                                                   int segment)
        {
            writer.Write(new StorageMessageUnion.Builder
            {
                Type = StorageMessageType.ReplicateNextPageRequest,
                ReplicateNextPageRequest = new ReplicateNextPageRequestMessage.Builder
                {
                    ReplicationEndpoint = replicationEndpoint.GetNodeEndpoint(),
                    Segment             = segment,
                    Type = type == ReplicationType.Backup? Protocol.ReplicationType.Backup : Protocol.ReplicationType.Ownership
                }.Build()
            }.Build());
            writer.Flush();
            stream.Flush();

            var union = ReadReply(StorageMessageType.ReplicateNextPageResponse);

            return(new ReplicationResult
            {
                Done = union.ReplicateNextPageResponse.Done,
                PutRequests = union.ReplicateNextPageResponse.PutRequestsList.Select(
                    x => x.GetPutRequest()
                    ).ToArray(),
                RemoveRequests = union.ReplicateNextPageResponse.RemoveRequestsList.Select(
                    x => x.GetRemoveRequest()
                    ).ToArray()
            });
        }
示例#2
0
        public void CaughtUp(NodeEndpoint endpoint,
                             ReplicationType type,
                             params int[] caughtUpSegments)
        {
            Execute((writer,
                     stream) =>
            {
                writer.Write(new MasterMessageUnion.Builder
                {
                    Type     = MasterMessageType.CaughtUpRequest,
                    CaughtUp = new CaughtUpRequestMessage.Builder
                    {
                        CaughtUpSegmentsList = { caughtUpSegments },
                        Type     = type == ReplicationType.Backup ? Protocol.ReplicationType.Backup : Protocol.ReplicationType.Ownership,
                        Endpoint = new Protocol.NodeEndpoint.Builder
                        {
                            Async = endpoint.Async.ToString(),
                            Sync  = endpoint.Sync.ToString()
                        }.Build()
                    }.Build()
                }.Build());
                writer.Flush();
                stream.Flush();

                ReadReply(MasterMessageType.CaughtUpResponse, stream);
            });
        }
        public int[] AssignAllEmptySegments(NodeEndpoint replicationEndpoint,
                                            ReplicationType type, int[] segments)
        {
            writer.Write(new StorageMessageUnion.Builder
            {
                Type = StorageMessageType.AssignAllEmptySegmentsRequest,
                AssignAllEmptySegmentsRequest = new AssignAllEmptySegmentsRequestMessage.Builder
                {
                    ReplicationEndpoint = replicationEndpoint.GetNodeEndpoint(),
                    Type         = type == ReplicationType.Backup? Protocol.ReplicationType.Backup : Protocol.ReplicationType.Ownership,
                    SegmentsList = { segments }
                }.Build()
            }.Build());
            writer.Flush();
            stream.Flush();

            var union = ReadReply(StorageMessageType.AssignAllEmptySegmentsResponse);

            return(union.AssignAllEmptySegmentsResponse.AssignedSegmentsList.ToArray());
        }
        public int[] AssignAllEmptySegments(NodeEndpoint replicationEndpoint,
            ReplicationType type,   int[] segments)
        {
            writer.Write(new StorageMessageUnion.Builder
            {
                Type = StorageMessageType.AssignAllEmptySegmentsRequest,
                AssignAllEmptySegmentsRequest = new AssignAllEmptySegmentsRequestMessage.Builder
                {
                    ReplicationEndpoint = replicationEndpoint.GetNodeEndpoint(),
                    Type = type == ReplicationType.Backup? Protocol.ReplicationType.Backup : Protocol.ReplicationType.Ownership,
                    SegmentsList = { segments }
                }.Build()
            }.Build());
            writer.Flush();
            stream.Flush();

            var union = ReadReply(StorageMessageType.AssignAllEmptySegmentsResponse);

            return union.AssignAllEmptySegmentsResponse.AssignedSegmentsList.ToArray();
        }
        public ReplicationResult ReplicateNextPage(NodeEndpoint replicationEndpoint,
            ReplicationType type,
            int segment)
        {
            writer.Write(new StorageMessageUnion.Builder
            {
                Type = StorageMessageType.ReplicateNextPageRequest,
                ReplicateNextPageRequest = new ReplicateNextPageRequestMessage.Builder
                {
                    ReplicationEndpoint = replicationEndpoint.GetNodeEndpoint(),
                    Segment = segment,
                    Type = type == ReplicationType.Backup? Protocol.ReplicationType.Backup : Protocol.ReplicationType.Ownership
                }.Build()
            }.Build());
            writer.Flush();
            stream.Flush();

            var union = ReadReply(StorageMessageType.ReplicateNextPageResponse);

            return new ReplicationResult
            {
                Done = union.ReplicateNextPageResponse.Done,
                PutRequests = union.ReplicateNextPageResponse.PutRequestsList.Select(
                    x => x.GetPutRequest()
                    ).ToArray(),
                RemoveRequests = union.ReplicateNextPageResponse.RemoveRequestsList.Select(
                    x => x.GetRemoveRequest()
                    ).ToArray()
            };
        }