public bool Update() { using (owner.trace.NewNamedFrame("Updating {0}", this.fileName)) { CheckDisposed(); try { if (simpleMedia == null) { owner.trace.Info("SimpleMedia object not created yet. Creating"); simpleMedia = new SimpleFileMedia( owner.fileSystem, SimpleFileMedia.CreateConnectionParamsFromFileName(Path.Combine(owner.baseDirectory, FileName)) ); } owner.trace.Info("Updating simple media"); simpleMedia.Update(); if (!simpleMedia.IsAvailable) { owner.trace.Info("File is not avaliable (i.e. has been deleted)"); return(false); } if (firstMessageTime == null) { owner.trace.Info("First message time is unknown. Calcalating it"); using (IPositionedMessagesReader reader = (IPositionedMessagesReader)Activator.CreateInstance( owner.logReaderType, new MediaBasedReaderParams(owner.tempThreads, SimpleMedia, owner.tempFilesManager), owner.logFormatInfo)) { owner.trace.Info("Reader created"); reader.UpdateAvailableBounds(false); owner.trace.Info("Bounds found"); IMessage first = PositionedMessagesUtils.ReadNearestMessage(reader, reader.BeginPosition); if (first == null) { owner.trace.Warning("No messages found"); return(false); } owner.trace.Info("First message: {0} '{1}'", first.Time, first.Text); firstMessageTime = first.Time; } } owner.trace.Info("Part updated OK"); return(true); } catch (Exception e) { owner.trace.Error(e, "Failure during part update"); return(false); } } }
public static async Task <SimpleFileMedia> Create(IFileSystem fileSystem, IConnectionParams connectParams) { var media = new SimpleFileMedia(fileSystem, connectParams); try { await media.Init(); await media.Update(); return(media); } catch { media.Dispose(); throw; } }