/// <summary> /// Ergänzt die Beschreibung der aktuellen Aufzeichnungen. /// </summary> /// <param name="info">Die Beschreibung der Gesamtaufgabe des aktuellen Aufzeichnungsprozesses.</param> /// <param name="finalCall">Gesetzt, wenn es sich um den abschließenden Aufruf handelt. Dieser /// wird ausschließlich für die Erstellung des Protokolleintrags verwendet.</param> /// <param name="state">Der aktuelle Zustand.</param> protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state) { // Set static data info.IsDynamic = true; info.CanStream = true; // Synchronize access lock (m_recordings) { // Load all files we've seen so far info.Recording.RecordingFiles.Clear(); info.Recording.RecordingFiles.AddRange(m_files); // Create the file mapping var files = m_files .Where(file => !string.IsNullOrEmpty(file.ScheduleIdentifier)) .GroupBy(file => new Guid(file.ScheduleIdentifier), file => file.Path) .ToDictionary(group => group.Key, group => group.ToArray()); // Process all recordings info .Streams .AddRange((finalCall ? m_allRecordings : m_recordings) .Select(recording => { // Collect the data var streamInfo = (state == null) ? null : state.Streams.Find(recording.Match); var target = (streamInfo == null) ? null : streamInfo.StreamTarget; // Create record return(StreamInfo.Create(recording, target, files)); })); } }
public EditWindow(int id) { ID_Towaru = id; var sql = "SELECT * FROM Produkt"; Produkt[] produkts = _sqlConnection.Query <Produkt>(sql).ToArray(); var sqlProducenci = "SELECT * FROM Producenci"; Producenci[] producencis = _sqlConnection.Query <Producenci>(sqlProducenci).ToArray(); InitializeComponent(); foreach (Producenci producenci in producencis) { comboProducer.Items.Add(producenci); } var sqlEdit = "SELECT Produkt.ID_Produktu, ID_Towaru, Nazwa_Produktu, Nazwa_Producenta, Data, Ilosc, Cena FROM Produkt INNER JOIN Towary ON Produkt.ID_Produktu = Towary.ID_Produktu INNER JOIN Producenci ON Produkt.ID_Producenta = Producenci.ID_Producenta WHERE ID_Towaru = @SelectedTowarID"; string ID = ID_Towaru.ToString(); FullInfo fullInfo = _sqlConnection.Query <FullInfo>(sqlEdit, new { SelectedTowarID = ID }).FirstOrDefault(); txtPrice.Text = fullInfo.Cena.ToString(); txtQuantity.Text = fullInfo.Ilosc.ToString(); comboProducer.Text = fullInfo.Nazwa_Producenta; ID_Produktu = fullInfo.ID_Produktu; }
private void InfoBtn(object sender, RoutedEventArgs e) { if (listbox.SelectedItem != null) { Result selectedTowar = listbox.SelectedItem as Result; var selectedTowarID = selectedTowar.ID_Towaru; var sql = "SELECT ID_Towaru, Nazwa_Produktu, Nazwa_Producenta, Data, Ilosc, Cena FROM Produkt INNER JOIN Towary ON Produkt.ID_Produktu = Towary.ID_Produktu INNER JOIN Producenci ON Produkt.ID_Producenta = Producenci.ID_Producenta WHERE ID_Towaru = @SelectedTowarID"; FullInfo fullInfo = _sqlConnection.Query <FullInfo>(sql, new { SelectedTowarID = selectedTowarID }).FirstOrDefault(); MessageBox.Show(fullInfo.ToString()); } }
static void Main6(string[] args) { // Attach to job manager VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs")); JobManager jobs = server.JobManager; // Create EPG collection using (ZappingRequest request = ZappingRequest.CreateDefault("Nexus Scan", jobs)) if (null != request) { // Get the information FullInfo info0 = request.CreateFullInformation(); // Report Console.WriteLine(info0.Recording.JobType); // Start it request.BeginExecute(false); // Go to ZDF LiveModeStatus stat1 = request.SetSource(VCRProfiles.FindSource("Nexus Scan", "ZDF [ZDFvision]"), "localhost:5555"); // Report Console.WriteLine("ZDF on"); Console.ReadLine(); // Get status LiveModeStatus stat2 = request.CreateStatus(); // Go to PREMIERE LiveModeStatus stat3 = request.SetSource(VCRProfiles.FindSource("Nexus Scan", "PREMIERE DIREKT [PREMIERE]"), "localhost:5555"); // Report Console.WriteLine("PREMIERE on"); Console.ReadLine(); // Get status LiveModeStatus stat4 = request.CreateStatus(); // Stop it request.Stop(); // Get the information FullInfo info1 = request.CreateFullInformation(); } // Done Console.WriteLine("Done"); Console.ReadLine(); }
/// <summary> /// Erzeugt eine Beschreibung der mit diesem Zugriff verbundenen Aufzeichnungen. /// </summary> /// <param name="finalCall">Es handelt sich hier um den abschliessenden Aufruf.</param> /// <returns>Die gewünschte Beschreibung.</returns> private FullInfo CreateFullInformation(bool finalCall) { // Create var info = new FullInfo { Recording = Representative.Clone(), CanStream = false }; // Complete info.EndsAt = info.Recording.EndsAt; // Fill depending on the current task OnFillInformation(info, finalCall, m_state); // Report return(info); }
/// <summary> /// Ergänzt den aktuellen Zustand des Suchlaufs. /// </summary> /// <param name="info">Die bereits vorbereitete Informationsstruktur.</param> /// <param name="finalCall">Gesetzt, wenn dieser Zustand als Protokoll verwendet wird.</param> /// <param name="state">Der zuletzt erhaltene Zustand.</param> protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state) { // Copy current result if (state == null) { info.Recording.TotalSize = 0; } else if (!state.UpdateProgress.HasValue) { info.Recording.TotalSize = 0; } else { info.Recording.TotalSize = (uint)state.UpdateSourceCount; } }
/// <summary> /// Ermittelt eine Beschreibung der aktuellen Aufzeichnung. /// </summary> /// <param name="info">Vorabinformation der Basisklasse.</param> /// <param name="finalCall">Gesetzt, wenn das Ergebnis zum Protokolleintrag wird.</param> /// <param name="state">Die zuletzt erhaltenen Zustandsinformationen.</param> protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state) { // Just copy the progress if (state == null) { info.Recording.TotalSize = 0; } else if (!state.ProgramGuideProgress.HasValue) { info.Recording.TotalSize = 0; } else { info.Recording.TotalSize = (uint)state.CurrentProgramGuideItems; } }
/// <summary> /// Ermittelt eine Beschreibung der aktuellen Nutzung. /// </summary> /// <param name="info">Von der Basisklasse bereits vorbereitete Daten.</param> /// <param name="finalCall">Gesetzt, wenn das Ergebnis ein Protokolleintrag werden soll.</param> /// <param name="state">Der zuletzt ermittelte Zustand des Aufzeichnungsprozesses.</param> protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state) { // Reset info.Recording.TotalSize = 0; // Attach to the current state if (state == null) { return; } // Get the first stream if (state.Streams.Count > 0) { info.Recording.TotalSize = (uint)(state.Streams[0].BytesReceived / 1024); } }
static void Main5(string[] args) { // Attach to job manager VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs")); JobManager jobs = server.JobManager; // Create EPG collection using (SourceScanRequest request = SourceScanRequest.CreateDefault("Nexus Scan", jobs)) if (null != request) { // Get the information FullInfo info0 = request.CreateFullInformation(); // Report Console.WriteLine(info0.Recording.JobType); // Start it request.BeginExecute(false); // Wait for end Console.WriteLine("Updateing..."); // Process for (string line; !string.IsNullOrEmpty(line = Console.ReadLine());) { // Get the information FullInfo info2 = request.CreateFullInformation(); // Report Console.WriteLine(info2.Recording.TotalSize); } // Stop it request.Stop(); // Get the information FullInfo info1 = request.CreateFullInformation(); } // Done Console.WriteLine("Done"); Console.ReadLine(); }
/// <summary> /// Erstellt eine Beschreibung zu einer einzelnen Aufzeichnung auf einem Gerät. /// </summary> /// <param name="active">Beschreibt die gesamte Aufzeichnung.</param> /// <param name="stream">Die zu verwendende Teilaufzeichnung.</param> /// <param name="streamIndex">Die laufende Nummer dieses Datenstroms.</param> /// <param name="server">Der zugehörige Dienst.</param> /// <returns>Die gewünschte Beschreibung.</returns> private static IEnumerable <PlanCurrent> Create(FullInfo active, StreamInfo stream, int streamIndex, VCRServer server) { // Static data var recording = active.Recording; var profileName = recording.Source.ProfileName; var sizeHint = GetSizeHint(recording.TotalSize) + " (Gerät)"; // Process all - beginning with VCR.NET 4.1 there is only one schedule per stream foreach (var scheduleInfo in stream.Schedules) { // Try to locate the context var job = string.IsNullOrEmpty(scheduleInfo.JobUniqueID) ? null : server.JobManager[new Guid(scheduleInfo.JobUniqueID)]; var schedule = ((job == null) || string.IsNullOrEmpty(scheduleInfo.ScheduleUniqueID)) ? null : job[new Guid(scheduleInfo.ScheduleUniqueID)]; // Create var start = RoundToSecond(scheduleInfo.StartsAt); var end = RoundToSecond(scheduleInfo.EndsAt); var current = new PlanCurrent { Identifier = (schedule == null) ? null : ServerRuntime.GetUniqueWebId(job, schedule), PlanIdentifier = scheduleInfo.ScheduleUniqueID, Files = scheduleInfo.Files ?? _NoFiles, StreamTarget = stream.StreamsTo, m_source = scheduleInfo.Source, ProfileName = profileName, Name = scheduleInfo.Name, Duration = end - start, Index = streamIndex, SizeHint = sizeHint, StartTime = start, }; // Finish current.Complete(server); // Report yield return(current); } }
static void Main_EPGScan(string[] args) { // Create the server using (VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs"))) { // Attach to the profile state of interest ProfileState state = server.FindProfile("DVB-S2"); // Report all Console.WriteLine(ProgramGuideManager.UpdateEnabled); Console.WriteLine(state.ProgramGuide.NextUpdateTime); // Create request using (ProgramGuideRequest request = state.CreateProgramGuideRequest()) if (null != request) { // Manipulate request.Recording.EndsAt = DateTime.UtcNow.AddSeconds(30); // Get the information FullInfo info0 = request.CreateFullInformation(); // Start it request.Start(); // Wait for end for (; request.IsRunning; Thread.Sleep(2500)) { Console.WriteLine("Collecting... {0}", DateTime.Now); } // Get the information FullInfo info1 = request.CreateFullInformation(); // Report Console.WriteLine(info1.Recording.TotalSize); } } }
static void Main3(string[] args) { // Attach to job manager VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs")); JobManager jobs = server.JobManager; // Get the profile Profile nexus = VCRProfiles.FindProfile("Nexus"); // Find the next recording VCRRecordingInfo rec = jobs.FindNextJob(new DateTime(2009, 2, 19, 20, 0, 0), null, nexus); if (null != rec) { if (rec.StartsAt.HasValue) { using (RecordingRequest recording = jobs.CreateRecording(rec, rec.StartsAt.Value, nexus)) { // Get the information FullInfo info0 = recording.CreateFullInformation(); // Start it recording.BeginExecute(false); // Report Console.WriteLine("Recording..."); Console.ReadLine(); // Get the information FullInfo info1 = recording.CreateFullInformation(); } } } // Done Console.WriteLine("Done"); Console.ReadLine(); }
static void Main_FindRecording(string[] args) { // Create the server using (VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs"))) { // Attach to the state of a profile ProfileState nexus = server.FindProfile("Nexus"); // Get the next job to execute VCRRecordingInfo next = nexus.NextJob; // Get recording information for the next jon bool incomplete; VCRRecordingInfo[] hidden; FullInfo full = nexus.FindNextRecording(DateTime.UtcNow, out incomplete, out hidden); // Prepare it using (HardwareRequest request = nexus.CreateRecordingRequest(next, DateTime.UtcNow)) { // Set end time request.Recording.EndsAt = DateTime.UtcNow.AddSeconds(30); // Report Console.WriteLine("Recording {0}", request.Recording.FileName); // Process it request.Start(); // Wait while (request.IsRunning) { Thread.Sleep(100); } } } }
public async Task AddInfo(FullInfo item) { await _context.Informations.InsertOneAsync(item); }
/// <summary> /// Erstellt eine neue Liste von Beschreibungen für eine aktive Aufzeichnung. /// </summary> /// <param name="active">Die Daten zur aktiven Aufzeichnung.</param> /// <param name="server">Der zugehörige Dienst.</param> /// <returns>Die gewünschten Beschreibungen.</returns> public static PlanCurrent[] Create(FullInfo active, VCRServer server) { // Validate if (active == null) { throw new ArgumentNullException(nameof(active)); } // Validate var recording = active.Recording; if (recording == null) { throw new ArgumentNullException("recording"); } // Multiple recordings var streams = active.Streams; if (streams != null) { if (streams.Count > 0) { return(streams.SelectMany((stream, index) => Create(active, stream, index, server)).ToArray()); } } // Single recording - typically a task var start = RoundToSecond(active.Recording.PhysicalStart.GetValueOrDefault(DateTime.UtcNow)); var end = RoundToSecond(recording.EndsAt); var source = recording.Source; var sourceName = source.DisplayName; // Create var current = new PlanCurrent { PlanIdentifier = recording.ScheduleUniqueID.Value.ToString("N"), ProfileName = source.ProfileName, Duration = end - start, Name = recording.Name, m_source = source, StartTime = start, Files = _NoFiles, IsLate = false, Index = -1, }; // Finish if (VCRJob.ProgramGuideName.Equals(sourceName)) { current.SizeHint = $"{recording.TotalSize:N0} Einträge"; } else if (VCRJob.SourceScanName.Equals(sourceName)) { current.SizeHint = $"{recording.TotalSize:N0} Quellen"; } else if (VCRJob.ZappingName.Equals(sourceName)) { current.SizeHint = GetSizeHint(recording.TotalSize); } else { current.Complete(server); } // Report return(new[] { current }); }
static void Main1(string[] args) { // Attach to job manager VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs")); JobManager jobs = server.JobManager; // Process all profiles foreach (Profile profile in VCRProfiles.Profiles) { // Report Console.WriteLine(profile.Name); // Start time DateTime start = DateTime.UtcNow; // Process a bit for (int i = 10; i-- > 0;) { // Helper data VCRRecordingInfo[] included; bool inComplete; // Find the recording FullInfo info = jobs.FindNextRecording(start, profile, out inComplete, out included); VCRRecordingInfo rec = info.Recording; VCRJob job = jobs[rec.JobUniqueID.Value]; VCRSchedule sched = job[rec.ScheduleUniqueID.Value]; // Report Console.WriteLine("\t{0} {1} {2} ({3}) {4} {5} {6} {7}", rec.StartsAt.Value.ToLocalTime(), rec.EndsAt.ToLocalTime().TimeOfDay, job.Name, sched.Name, inComplete, included.Length, rec.JobUniqueID, rec.ScheduleUniqueID); // Report foreach (VCRRecordingInfo include in included) { Console.WriteLine("\t\t{0} {1} {2} {3} {4}", include.Source.GetUniqueName(), include.StartsAt.Value.ToLocalTime(), include.EndsAt.ToLocalTime().TimeOfDay, include.JobUniqueID, include.ScheduleUniqueID); } // Report foreach (StreamInfo stream in info.Streams) { foreach (ScheduleInfo schedule in stream.Schedules) { Console.WriteLine("\t\t{0} {1} {2} {3}", schedule.JobUniqueID, schedule.ScheduleUniqueID, schedule.StartsAt.ToLocalTime(), schedule.EndsAt.ToLocalTime().TimeOfDay); } } // Advance start = rec.EndsAt; } // Helper data VCRRecordingInfo[] incDummy; bool dummyFlag; // Start timer Stopwatch timer = Stopwatch.StartNew(); // Measure for (int n = 0; ++n > 0;) { // Find the recording jobs.FindNextRecording(DateTime.UtcNow, profile, out dummyFlag, out incDummy); // Get the time TimeSpan delta = timer.Elapsed; if (delta.TotalSeconds >= 5) { // Report Console.WriteLine("{0}ms", delta.TotalMilliseconds / n); // Done break; } } } // Get the profile Profile nexus = VCRProfiles.FindProfile("Nexus"); // Find the next recording VCRRecordingInfo rec2 = jobs.FindNextJob(new DateTime(2009, 2, 19, 20, 0, 0), null, nexus); if (null != rec2) { if (rec2.StartsAt.HasValue) { using (RecordingRequest recording = jobs.CreateRecording(rec2, rec2.StartsAt.Value, nexus)) { // Get the information FullInfo info0 = recording.CreateFullInformation(); #if EXEC // Start it recording.BeginExecute(false); // Report Console.WriteLine("Recording..."); Console.ReadLine(); // Get the information FullInfo info1 = recording.CreateFullInformation(); #endif } } } // Done Console.WriteLine("Done"); Console.ReadLine(); }
/// <summary> /// Erzeugt eine Beschreibung der mit diesem Zugriff verbundenen Aufzeichnungen. /// </summary> /// <param name="finalCall">Es handelt sich hier um den abschliessenden Aufruf.</param> /// <param name="info">Die bereits erzeugte Beschreibung.</param> /// <param name="state">Der aktuelle Zustand.</param> protected abstract void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state);