ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/Qzhteln/trunk/TELTest/QuizDraftManager.cs
Revision: 2
Committed: Wed Feb 11 13:07:01 2026 UTC (8 weeks, 3 days ago) by figdor32
File size: 2799 byte(s)
Log Message:
Initial check-in

File Contents

# User Rev Content
1 figdor32 2 using System;
2     using System.Collections.Generic;
3     using System.IO;
4     using System.Linq;
5     using System.Text;
6     using System.Threading;
7     using System.Threading.Tasks;
8     using TELTest.Gamemodes;
9    
10     namespace TELTest {
11     internal static class QuizDraftManager {
12     static QuizDraftManager() {
13     tmr.Interval = 15000;
14     tmr.Elapsed += Tmr_Elapsed;
15     tmr.AutoReset = false;
16     //LoadAll();
17    
18     }
19     static BasicKeyValue bk = new BasicKeyValue("Drafts1");
20     private static void Tmr_Elapsed(Object sender, System.Timers.ElapsedEventArgs e) {
21     Program.WriteWithTime("Begin write drafts...");
22     bk.SavePendingChanges();
23     Program.WriteWithTime("Done. {0} tuples out, ~{1}B memory in use.", bk.LastTuplesOut, bk.CurrentMemoryPressure);
24     }
25     //DumpAllDrafts();
26    
27     public static bool Contains(string id) {
28     return bk.ContainsKey(id);
29     }
30     private static void Retime() {
31     tmr.Stop();
32     tmr.Start();
33     }
34     public static string SaveNewDraft(QuizContainer container) {
35     string id = null;
36     while (true) {
37     id = Utilities.RandomString(15);
38     if (bk.ContainsKey(id)) continue;
39     var bytes = System.Text.Encoding.UTF8.GetBytes(container.SerializeXML());
40     lock (bk) bk[id] = bytes;
41     break;
42     }
43     Retime();
44     return id;
45     }
46     public static bool SaveDraft(QuizContainer container, string id) {
47     //lock (AllDrafts) {
48     // if (!AllDrafts.ContainsKey(id)) return false;
49     // AllDrafts[id] = container;
50     //}
51     bk[id] = System.Text.Encoding.UTF8.GetBytes(container.SerializeXML());
52     Retime();
53     return true;
54     }
55     public static bool DeleteDraft(string id) {
56     //lock (AllDrafts) {
57     bk.Remove(id);
58     Retime();
59     //return AllDrafts.Remove(id);
60    
61     return true;
62     //}
63     }
64     public static QuizContainer GetDraft(string id) {
65     if (bk.ContainsKey(id)) {
66     byte[] sr = bk[id];
67     QuizContainer qc = QuizContainer.FromXml(System.Text.Encoding.UTF8.GetString(sr));
68     return qc;
69     }
70     return null;
71     //lock (AllDrafts) {
72     // if (AllDrafts.ContainsKey(id)) return AllDrafts[id];
73     //}
74     //return null;
75     }
76     private static object _dmpLock = new object();
77     static System.Timers.Timer tmr = new System.Timers.Timer();
78    
79     }
80     }