public ChunkManager(string name, ChunkManagerConfig config, bool isMemoryMode, string relativePath = null) { Ensure.NotNull(name, "name"); Ensure.NotNull(config, "config"); Name = name; _config = config; _isMemoryMode = isMemoryMode; if (string.IsNullOrEmpty(relativePath)) { _chunkPath = _config.BasePath; } else { _chunkPath = Path.Combine(_config.BasePath, relativePath); } if (!Directory.Exists(_chunkPath)) { Directory.CreateDirectory(_chunkPath); } _chunks = new ConcurrentDictionary <int, Chunk>(); _scheduleService = ObjectContainer.Resolve <IScheduleService>(); _bytesWriteDict = new ConcurrentDictionary <int, BytesInfo>(); _fileReadDict = new ConcurrentDictionary <int, CountInfo>(); _unmanagedReadDict = new ConcurrentDictionary <int, CountInfo>(); _cachedReadDict = new ConcurrentDictionary <int, CountInfo>(); }
private Chunk(string filename, ChunkManager chunkManager, ChunkManagerConfig chunkConfig, bool isMemoryChunk) { Ensure.NotNullOrEmpty(filename, "filename"); Ensure.NotNull(chunkManager, "chunkManager"); Ensure.NotNull(chunkConfig, "chunkConfig"); _filename = filename; _chunkManager = chunkManager; _chunkConfig = chunkConfig; _isMemoryChunk = isMemoryChunk; _lastActiveTime = DateTime.Now; }
public static Chunk FromOngoingFile <T>(string filename, ChunkManager chunkManager, ChunkManagerConfig config, Func <byte[], T> readRecordFunc, bool isMemoryChunk) where T : ILogRecord { var chunk = new Chunk(filename, chunkManager, config, isMemoryChunk); try { chunk.InitOngoing(readRecordFunc); } catch (OutOfMemoryException) { chunk.Dispose(); throw; } catch (Exception ex) { _logger.Error(string.Format("Chunk {0} init from ongoing file failed.", chunk), ex); chunk.Dispose(); throw; } return(chunk); }
public static Chunk FromCompletedFile(string filename, ChunkManager chunkManager, ChunkManagerConfig config, bool isMemoryChunk) { var chunk = new Chunk(filename, chunkManager, config, isMemoryChunk); try { chunk.InitCompleted(); } catch (OutOfMemoryException) { chunk.Dispose(); throw; } catch (Exception ex) { _logger.Error(string.Format("Chunk {0} init from completed file failed.", chunk), ex); chunk.Dispose(); throw; } return(chunk); }
public static Chunk CreateNew(string filename, int chunkNumber, ChunkManager chunkManager, ChunkManagerConfig config, bool isMemoryChunk) { var chunk = new Chunk(filename, chunkManager, config, isMemoryChunk); try { chunk.InitNew(chunkNumber); } catch (OutOfMemoryException) { chunk.Dispose(); throw; } catch (Exception ex) { _logger.Error(string.Format("Chunk {0} create failed.", chunk), ex); chunk.Dispose(); throw; } return(chunk); }