public void ShouldVerifyBufferAlignment() { var buffer = new UnsafeBuffer(BufferUtil.AllocateDirect(1024)); try { buffer.VerifyAlignment(); } catch (InvalidOperationException ex) { Assert.Fail("All buffers should be aligned " + ex); } }
public void ShouldVerifyBufferAlignment() { var buffer = new UnsafeBuffer(new byte[1024]); try { buffer.VerifyAlignment(); } catch (InvalidOperationException ex) { Assert.Fail("All buffers should be aligned " + ex); } }
public LogBuffers(string logFileName, MapMode mapMode) { var fileInfo = new FileInfo(logFileName); var logLength = fileInfo.Length; var termLength = LogBufferDescriptor.ComputeTermLength(logLength); LogBufferDescriptor.CheckTermLength(termLength); _termLength = termLength; // if log length exceeds MAX_INT we need multiple mapped buffers, (see FileChannel.map doc). if (logLength < int.MaxValue) { var mappedBuffer = IoUtil.MapExistingFile(logFileName, mapMode); _mappedByteBuffers = new[] { mappedBuffer }; for (var i = 0; i < LogBufferDescriptor.PARTITION_COUNT; i++) { termBuffers[i] = new UnsafeBuffer(mappedBuffer.Pointer, i * termLength, termLength); } logMetaDataBuffer = new UnsafeBuffer(mappedBuffer.Pointer, (int)(logLength - LogBufferDescriptor.LOG_META_DATA_LENGTH), LogBufferDescriptor.LOG_META_DATA_LENGTH); } else { _mappedByteBuffers = new MappedByteBuffer[LogBufferDescriptor.PARTITION_COUNT + 1]; var memoryMappedFile = IoUtil.OpenMemoryMappedFile(logFileName, mapMode); for (var i = 0; i < LogBufferDescriptor.PARTITION_COUNT; i++) { _mappedByteBuffers[i] = new MappedByteBuffer(memoryMappedFile, termLength * (long)i, termLength); termBuffers[i] = new UnsafeBuffer(_mappedByteBuffers[i].Pointer, 0, termLength); } var metaDataMappedBuffer = new MappedByteBuffer(memoryMappedFile, logLength - LogBufferDescriptor.LOG_META_DATA_LENGTH, LogBufferDescriptor.LOG_META_DATA_LENGTH); _mappedByteBuffers[_mappedByteBuffers.Length - 1] = metaDataMappedBuffer; logMetaDataBuffer = new UnsafeBuffer(metaDataMappedBuffer.Pointer, 0, LogBufferDescriptor.LOG_META_DATA_LENGTH); } // TODO try/catch foreach (var buffer in termBuffers) { buffer.VerifyAlignment(); } logMetaDataBuffer.VerifyAlignment(); }
public void ShouldThrowExceptionWhenBufferNotAligned() { var buffer = new UnsafeBuffer(new byte[1024], 1, 1023); buffer.VerifyAlignment(); }