コード例 #1
0
        public async Task <Guid> Read()
        {
            Guid guid = Guid.Empty;

            foreach (var i in Enumerable.Range(0, accessPattern[0].Length))
            {
                var b       = accessPattern[0][i];
                var p       = accessPattern[1][i];
                var request = IORequest.CreateReadRequest(new Address(AddressScope.Page, (ushort)b, (ushort)p));
                var result  = await scheduler.ScheduleFileSystemRequest(request).ConfigureAwait(false);

                guid = result.Id;
                ArrayPool <byte> .Shared.Return(result.Payload);
            }

            return(guid);
        }
コード例 #2
0
        public async Task AddAndWaitForResult()
        {
            using DefaultScheduler fileSystemScheduler = new DefaultScheduler(new MemoryFileSystemService(new DatatentSettings(), Constants.BLOCK_SIZE_INCL_HEADER * 2, new NullLogger <FileSystemServiceBase>()));
            var bytes = new byte[Constants.PAGE_SIZE_INCL_HEADER];

            UnitTestHelper.FillArray(ref bytes, 0x01);

            var       address      = new Address(AddressScope.Page, 1, 1);
            IORequest writeRequest = new IORequest(IORequestDirection.Write, address, bytes);

            var writeResponse = await fileSystemScheduler.ScheduleFileSystemRequest(writeRequest).ConfigureAwait(false);

            writeResponse.Id.Should().Be(writeRequest.Id);

            IORequest readRequest  = IORequest.CreateReadRequest(address);
            var       readResponse = await fileSystemScheduler.ScheduleFileSystemRequest(readRequest).ConfigureAwait(false);

            readResponse.Address.FullAddress.Should().Be(address.FullAddress);
            readResponse.Payload.Take(bytes.Length).Should().BeEquivalentTo(bytes);
        }