corrade-vassal – Blame information for rev 16

Subversion Repositories:
Rev:
Rev Author Line No. Line
7 zed 1 ///////////////////////////////////////////////////////////////////////////
2 // Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 //
3 // Please see: http://www.gnu.org/licenses/gpl.html for legal details, //
4 // rights of fair usage, the disclaimer and warranty conditions. //
5 ///////////////////////////////////////////////////////////////////////////
6  
7 using System;
2 zed 8 using System.Collections.Generic;
9 using System.ComponentModel;
10 using System.IO;
11 using System.Linq;
12 using System.Text;
13 using System.Xml.Serialization;
14  
15 namespace Vassal
16 {
17 /// <summary>
18 /// Possible input and output filters.
19 /// </summary>
20 public enum Filter : uint
21 {
13 eva 22 [XmlEnum(Name = "none")] [Description("none")] NONE = 0,
23 [XmlEnum(Name = "RFC1738")] [Description("RFC1738")] RFC1738,
24 [XmlEnum(Name = "RFC3986")] [Description("RFC3986")] RFC3986,
25 [XmlEnum(Name = "ENIGMA")] [Description("ENIGMA")] ENIGMA,
26 [XmlEnum(Name = "VIGENERE")] [Description("VIGENERE")] VIGENERE,
27 [XmlEnum(Name = "ATBASH")] [Description("ATBASH")] ATBASH,
28 [XmlEnum(Name = "BASE64")] [Description("BASE64")] BASE64
2 zed 29 }
30  
31 /// <summary>
32 /// ENIGMA machine settings.
33 /// </summary>
34 public struct ENIGMA
35 {
36 public char[] plugs;
37 public char reflector;
38 public char[] rotors;
39 }
13 eva 40  
2 zed 41 [Serializable]
42 public class VassalConfiguration
43 {
44 private static readonly object VassalConfigurationLock = new object();
16 eva 45 private uint _servicesTimeout = 60000;
2 zed 46  
47 private ENIGMA _enigma = new ENIGMA
48 {
13 eva 49 rotors = new[] {'3', 'g', '1'},
50 plugs = new[] {'z', 'p', 'q'},
2 zed 51 reflector = 'b'
52 };
13 eva 53  
54 private string _group = string.Empty;
55 private string _HTTPServerURL = @"http://127.0.0.1:8080/";
2 zed 56 private List<Filter> _inputFilters = new List<Filter>();
57 private List<Filter> _outputFilters = new List<Filter>();
13 eva 58 private string _password = string.Empty;
59 private uint _regionRestartDelay = 120;
60 private uint _teleportTimeout = 30000;
2 zed 61 private string _vigenereSecret = string.Empty;
62  
63 public string Group
64 {
65 get
66 {
67 lock (VassalConfigurationLock)
68 {
69 return _group;
70 }
71 }
72 set
73 {
74 lock (VassalConfigurationLock)
75 {
76 _group = value;
77 }
78 }
79 }
80  
81 public string Password
82 {
83 get
84 {
85 lock (VassalConfigurationLock)
86 {
87 return _password;
88 }
89 }
90 set
91 {
92 lock (VassalConfigurationLock)
93 {
94 _password = value;
95 }
96 }
97 }
98  
99 public ENIGMA ENIGMA
100 {
101 get
102 {
103 lock (VassalConfigurationLock)
104 {
105 return _enigma;
106 }
107 }
108 set
109 {
110 lock (VassalConfigurationLock)
111 {
112 _enigma = value;
113 }
114 }
115 }
116  
117 public string VIGENERESecret
118 {
119 get
120 {
121 lock (VassalConfigurationLock)
122 {
123 return _vigenereSecret;
124 }
125 }
126 set
127 {
128 lock (VassalConfigurationLock)
129 {
130 _vigenereSecret = value;
131 }
132 }
133 }
134  
135 public List<Filter> InputFilters
136 {
137 get
138 {
139 lock (VassalConfigurationLock)
140 {
13 eva 141 return !_inputFilters.Any() ? new List<Filter> {Filter.RFC1738} : _inputFilters;
2 zed 142 }
143 }
144 set
145 {
146 lock (VassalConfigurationLock)
147 {
148 _inputFilters = value;
149 }
150 }
151 }
152  
153 public List<Filter> OutputFilters
154 {
155 get
156 {
157 lock (VassalConfigurationLock)
158 {
13 eva 159 return !_outputFilters.Any() ? new List<Filter> {Filter.RFC1738} : _outputFilters;
2 zed 160 }
161 }
162 set
163 {
164 lock (VassalConfigurationLock)
165 {
166 _outputFilters = value;
167 }
168 }
169 }
170  
171 public string HTTPServerURL
172 {
173 get
174 {
175 lock (VassalConfigurationLock)
176 {
177 return _HTTPServerURL;
178 }
179 }
180 set
181 {
182 lock (VassalConfigurationLock)
183 {
184 _HTTPServerURL = value;
185 }
186 }
187 }
188  
189 public uint TeleportTimeout
190 {
191 get
192 {
193 lock (VassalConfigurationLock)
194 {
195 return _teleportTimeout;
196 }
197 }
198 set
199 {
200 lock (VassalConfigurationLock)
201 {
202 _teleportTimeout = value;
203 }
204 }
205 }
206  
16 eva 207 public uint ServicesTimeout
2 zed 208 {
209 get
210 {
211 lock (VassalConfigurationLock)
212 {
16 eva 213 return _servicesTimeout;
2 zed 214 }
215 }
216 set
217 {
218 lock (VassalConfigurationLock)
219 {
16 eva 220 _servicesTimeout = value;
2 zed 221 }
222 }
223 }
224  
5 eva 225 public uint RegionRestartDelay
226 {
227 get
228 {
229 lock (VassalConfigurationLock)
230 {
231 return _regionRestartDelay;
232 }
233 }
234 set
235 {
236 lock (VassalConfigurationLock)
237 {
238 _regionRestartDelay = value;
239 }
240 }
241 }
242  
2 zed 243 public static void Save(string file, ref VassalConfiguration configuration)
244 {
245 lock (VassalConfigurationLock)
246 {
247 using (StreamWriter writer = new StreamWriter(file, false, Encoding.UTF8))
248 {
13 eva 249 XmlSerializer serializer = new XmlSerializer(typeof (VassalConfiguration));
2 zed 250 serializer.Serialize(writer, configuration);
251 //writer.Flush();
252 }
253 }
254 }
255  
256 public static void Load(string file, ref VassalConfiguration configuration)
257 {
258 lock (VassalConfigurationLock)
259 {
260 using (StreamReader stream = new StreamReader(file, Encoding.UTF8))
261 {
262 XmlSerializer serializer =
13 eva 263 new XmlSerializer(typeof (VassalConfiguration));
264 configuration = (VassalConfiguration) serializer.Deserialize(stream);
2 zed 265 }
266 }
267 }
268 }
13 eva 269 }