public void Initialize(string settingFolder, string settingFile)
        {
            if (string.IsNullOrEmpty(settingFolder) || string.IsNullOrEmpty(settingFile))
            {
                Debug.WriteLine("Couldn't init empty setting folder and setting file name");
                return;
            }

            _settingFolder = settingFolder;
            _settingFile   = settingFile;
            _filePath      = _fileStore.PathCombine(_settingFolder, _settingFile);
            _fileStore.EnsureFolderExists(_settingFolder);

            if (!_fileStore.Exists(_settingFile))
            {
                return;
            }

            if (!_fileStore.TryReadBinaryFile(_settingFile, LoadFrom))
            {
                _resourceLoader.GetResourceStream(_settingFile, inputStream => LoadFrom(inputStream));
            }
        }
Пример #2
0
        private void Write(string message)
        {
            try
            {
                var messageWithUserName = message + GetMessageBase();

                lock (_threadLock)
                {
                    if (_isWriting)
                    {
                        _waitingQueue.Add(messageWithUserName);
                        return;
                    }

                    _isWriting = true;

                    _waitingQueue.Add(messageWithUserName);

                    byte[] fileContentBytes = new byte[0];

                    if (_fileStoreService.Exists(GetLogFileName()))
                    {
                        _fileStoreService.TryReadBinaryFile(GetLogFileName(), out fileContentBytes);
                    }

                    if (_fileStoreService.Exists(GetLogFileName()) && fileContentBytes.Length + messageWithUserName.Length > LogFileMaximumSize)
                    {
                        #if DEBUG
                        Debug.WriteLine("**********************  Log is too long, removing older entries.");
                                                #endif
                        DeleteOldEntries(GetLogFileName(), (int)(fileContentBytes.Length + messageWithUserName.Length - LogFileMaximumSize));
                    }

                    var stream       = _fileStoreService.OpenWrite(GetLogFileName());
                    var streamWriter = new StreamWriter(stream);

                    while (_waitingQueue.Any())
                    {
                        var additionalLine = _waitingQueue.FirstOrDefault();

                        _waitingQueue.RemoveAt(0);

                        Debug.WriteLine(additionalLine);
                        streamWriter.WriteLine(additionalLine);
                    }

                    streamWriter.Flush();

                    // Forcing dispose of file handle to attempt to reduce the possibility of "Too many files opened".
                    streamWriter.Dispose();
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
            }
            finally
            {
                GC.Collect();
                _isWriting = false;
            }
        }
Пример #3
0
 public byte[] Load(string name)
 {
     byte[] bytes;
     return(_store.TryReadBinaryFile(name, out bytes) ? bytes : null);
 }