示例#1
0
        /*
         * Order should not change. New statuses should be added as higher ordinal and old statuses should not be replaced.
         */
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldMaintainOrderOfStatuses()
        public virtual void ShouldMaintainOrderOfStatuses()
        {
            StoreCopyFinishedResponse.Status[] givenValues    = values();
            StoreCopyFinishedResponse.Status[] expectedValues = new StoreCopyFinishedResponse.Status[] { SUCCESS, E_STORE_ID_MISMATCH, E_TOO_FAR_BEHIND, E_UNKNOWN };

            assertArrayEquals(givenValues, expectedValues);
        }
示例#2
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private boolean successfulRequest(StoreCopyFinishedResponse response, org.neo4j.causalclustering.messaging.CatchUpRequest request) throws StoreCopyFailedException
        private bool SuccessfulRequest(StoreCopyFinishedResponse response, CatchUpRequest request)
        {
            StoreCopyFinishedResponse.Status responseStatus = response.Status();
            if (responseStatus == StoreCopyFinishedResponse.Status.Success)
            {
                _log.info(format("Request was successful '%s'", request));
                return(true);
            }
            else if (StoreCopyFinishedResponse.Status.ETooFarBehind == responseStatus || StoreCopyFinishedResponse.Status.EUnknown == responseStatus || StoreCopyFinishedResponse.Status.EStoreIdMismatch == responseStatus)
            {
                _log.warn(format("Request failed '%s'. With response: %s", request, response.Status()));
                return(false);
            }
            else
            {
                throw new StoreCopyFailedException(format("Request responded with an unknown response type: %s. '%s'", responseStatus, request));
            }
        }
示例#3
0
                protected internal override void channelRead0(ChannelHandlerContext ctx, GetStoreFileRequest msg)
                {
                    // create the files and write the given content
                    File file     = new File(_outerInstance.fileName);
                    File fileCopy = new File(_outerInstance.copyFileName);
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                    string thisConent = _outerInstance.contents.next();

                    WriteContents(_outerInstance.outerInstance.fsa, file, thisConent);
                    WriteContents(_outerInstance.outerInstance.fsa, fileCopy, thisConent);

                    sendFile(ctx, file);
                    sendFile(ctx, fileCopy);
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                    StoreCopyFinishedResponse.Status status = _outerInstance.contents.hasNext() ? StoreCopyFinishedResponse.Status.EUnknown : StoreCopyFinishedResponse.Status.Success;
                    (new StoreFileStreamingProtocol()).End(ctx, status);
                    _catchupServerProtocol.expect(CatchupServerProtocol.State.MESSAGE_TYPE);
                }
示例#4
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: protected void channelRead0(io.netty.channel.ChannelHandlerContext ctx, T request) throws Exception
        protected internal override void ChannelRead0(ChannelHandlerContext ctx, T request)
        {
            _log.debug("Handling request %s", request);
            StoreCopyFinishedResponse.Status responseStatus = StoreCopyFinishedResponse.Status.EUnknown;
            try
            {
                NeoStoreDataSource neoStoreDataSource = _dataSource.get();
                if (!hasSameStoreId(request.expectedStoreId(), neoStoreDataSource))
                {
                    responseStatus = StoreCopyFinishedResponse.Status.EStoreIdMismatch;
                }
                else if (!isTransactionWithinReach(request.requiredTransactionId(), _checkPointerService))
                {
                    responseStatus = StoreCopyFinishedResponse.Status.ETooFarBehind;
                    _checkPointerService.tryAsyncCheckpoint(e => _log.error("Failed to do a checkpoint that was invoked after a too far behind error on store copy request", e));
                }
                else
                {
                    File databaseDirectory = neoStoreDataSource.DatabaseLayout.databaseDirectory();
                    using (ResourceIterator <StoreFileMetadata> resourceIterator = Files(request, neoStoreDataSource))
                    {
                        while (resourceIterator.MoveNext())
                        {
                            StoreFileMetadata storeFileMetadata = resourceIterator.Current;
                            StoreResource     storeResource     = new StoreResource(storeFileMetadata.File(), relativePath(databaseDirectory, storeFileMetadata.File()), storeFileMetadata.RecordSize(), _fs);
                            _storeFileStreamingProtocol.stream(ctx, storeResource);
                        }
                    }
                    responseStatus = StoreCopyFinishedResponse.Status.Success;
                }
            }
            finally
            {
                _storeFileStreamingProtocol.end(ctx, responseStatus);
                _protocol.expect(CatchupServerProtocol.State.MESSAGE_TYPE);
            }
        }
示例#5
0
 public virtual void Fail(ChannelHandlerContext ctx, StoreCopyFinishedResponse.Status failureCode)
 {
     _protocol.end(ctx, failureCode);
 }
示例#6
0
 internal virtual Future <Void> End(ChannelHandlerContext ctx, StoreCopyFinishedResponse.Status status)
 {
     ctx.write(ResponseMessageType.STORE_COPY_FINISHED);
     return(ctx.writeAndFlush(new StoreCopyFinishedResponse(status)));
 }