/// <summary> /// Create a storage device for the log /// </summary> /// <param name="logPath">Path to file that will store the log (empty for null device)</param> /// <param name="preallocateFile">Whether we try to preallocate the file on creation</param> /// <param name="deleteOnClose">Delete files on close</param> /// <param name="capacity">The maximal number of bytes this storage device can accommondate, or CAPACITY_UNSPECIFIED if there is no such limit</param> /// <param name="recoverDevice">Whether to recover device metadata from existing files</param> /// <param name="useIoCompletionPort">Whether we use IO completion port with polling</param> /// <returns>Device instance</returns> public static IDevice CreateLogDevice(string logPath, bool preallocateFile = false, bool deleteOnClose = false, long capacity = CAPACITY_UNSPECIFIED, bool recoverDevice = false, bool useIoCompletionPort = false) { IDevice logDevice; if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { logDevice = new ManagedLocalStorageDevice(logPath, preallocateFile, deleteOnClose, capacity, recoverDevice); } else { logDevice = new LocalStorageDevice(logPath, preallocateFile, deleteOnClose, true, capacity, recoverDevice, useIoCompletionPort); } return(logDevice); }
/// <summary> /// Create a storage device for the object log (for non-blittable objects) /// </summary> /// <param name="logPath">Path to file that will store the log (empty for null device)</param> /// <param name="preallocateFile">Whether we try to preallocate the file on creation</param> /// <param name="deleteOnClose">Delete files on close</param> /// <returns>Device instance</returns> public static IDevice CreateObjectLogDevice(string logPath, bool preallocateFile = true, bool deleteOnClose = false) { IDevice logDevice = new NullDevice(); if (String.IsNullOrWhiteSpace(logPath)) { return(logDevice); } #if DOTNETCORE if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { logDevice = new ManagedLocalStorageDevice(logPath + ".obj.log", preallocateFile, deleteOnClose); } else #endif { logDevice = new LocalStorageDevice(logPath + ".obj.log", preallocateFile, deleteOnClose); } return(logDevice); }
/// <summary> /// Create a storage device for the log /// </summary> /// <param name="logPath">Path to file that will store the log (empty for null device)</param> /// <param name="segmentSize">Size of each chunk of the log</param> /// <param name="deleteOnClose">Delete files on close</param> /// <returns>Device instance</returns> public static IDevice CreateLogDevice(string logPath, long segmentSize = 1L << 30, bool deleteOnClose = false) { IDevice logDevice = new NullDevice(); if (String.IsNullOrWhiteSpace(logPath)) { return(logDevice); } #if DOTNETCORE if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { logDevice = new ManagedLocalStorageDevice(logPath + ".log", segmentSize, true, false, deleteOnClose); } #else { logDevice = new LocalStorageDevice(logPath + ".log", segmentSize, true, false, deleteOnClose); } #endif return(logDevice); }
/// <summary> /// Create a storage device for the log /// </summary> /// <param name="logPath">Path to file that will store the log (empty for null device)</param> /// <param name="preallocateFile">Whether we try to preallocate the file on creation</param> /// <param name="deleteOnClose">Delete files on close</param> /// <param name="capacity">The maximal number of bytes this storage device can accommondate, or CAPACITY_UNSPECIFIED if there is no such limit</param> /// <param name="recoverDevice">Whether to recover device metadata from existing files</param> /// <returns>Device instance</returns> public static IDevice CreateLogDevice(string logPath, bool preallocateFile = true, bool deleteOnClose = false, long capacity = CAPACITY_UNSPECIFIED, bool recoverDevice = false) { if (string.IsNullOrWhiteSpace(logPath)) { return(new NullDevice()); } IDevice logDevice; #if DOTNETCORE if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { logDevice = new ManagedLocalStorageDevice(logPath, preallocateFile, deleteOnClose, capacity, recoverDevice); } else #endif { logDevice = new LocalStorageDevice(logPath, preallocateFile, deleteOnClose, true, capacity, recoverDevice); } return(logDevice); }