History

GSF.ServiceProcess: Added customizable message serialization format to ServiceHelper and ClientHelper.

ritchiecarroll committed 12 years ago

Commit bcb45dd1 parent 1b7f0693 files · +64 −8Browse files

Showing the changes to Source/Libraries/GSF.ServiceProcess (2 of 3 files). Show all

Unified · Split

2 files
  1. Source/Libraries/GSF.ServiceProcess/ClientHelper.cs +25 −3
  2. Source/Libraries/GSF.ServiceProcess/ServiceHelper.cs +33 −5
Source/Libraries/GSF.ServiceProcess/ClientHelper.cs+25−3
@@ -156,6 +156,7 @@ namespace GSF.ServiceProcess · 155 unmodified lines
156156 private ClientBase m_remotingClient;
157157 private string m_username;
158158 private string m_password;
159+ private SerializationFormat m_serializationFormat;
159160 private bool m_persistSettings;
160161 private string m_settingsCategory;
161162 private bool m_attemptReconnection;
@@ -274,6 +275,24 @@ namespace GSF.ServiceProcess · 112 unmodified lines
274275 }
275276 }
276277
278+ /// <summary>
279+ /// Gets or sets a value that indicates the desired message <see cref="GSF.SerializationFormat"/> for interaction with <see cref="ServiceHelper"/>.
280+ /// </summary>
281+ [Category("Settings"),
282+ DefaultValue(ServiceHelper.DefaultSerializationFormat),
283+ Description("Indicates messaging serialization format for interactions with ServiceHelper.")]
284+ public SerializationFormat SerializationFormat
285+ {
286+ get
287+ {
288+ return m_serializationFormat;
289+ }
290+ set
291+ {
292+ m_serializationFormat = value;
293+ }
294+ }
295+
277296 /// <summary>
278297 /// Gets or sets a boolean value that indicates whether the settings of <see cref="ClientHelper"/> are to be saved to the config file.
279298 /// </summary>
@@ -423,6 +442,7 @@ namespace GSF.ServiceProcess · 143 unmodified lines
423442
424443 settings["Username", true].Update(m_username);
425444 settings["Password", true].Update(m_password);
445+ settings["SerializationFormat", true].Update(m_serializationFormat);
426446
427447 settings["Username"].Scope = SettingScope.User;
428448 settings["Password"].Scope = SettingScope.User;
@@ -450,9 +470,11 @@ namespace GSF.ServiceProcess · 21 unmodified lines
450470
451471 settings.Add("Username", m_username, "Username to be used for authentication with the service.", false, SettingScope.User);
452472 settings.Add("Password", m_password, "Password to be used for authentication with the service.", true, SettingScope.User);
473+ settings.Add("SerializationFormat", m_password, "Message serialization format for interactions with service, one of: Xml, Json or Binary. Default is Binary.");
453474
454475 Username = settings["Username"].ValueAs(m_username);
455476 Password = settings["Password"].ValueAs(m_password);
477+ SerializationFormat = settings["SerializationFormat"].ValueAs(m_serializationFormat);
456478 }
457479 }
458480
@@ -686,7 +708,7 @@ namespace GSF.ServiceProcess · 227 unmodified lines
686708 {
687709 ServiceResponse response;
688710
689− Serialization.TryDeserialize(e.Argument1.BlockCopy(0, e.Argument2), SerializationFormat.Binary, out response);
711+ Serialization.TryDeserialize(e.Argument1.BlockCopy(0, e.Argument2), m_serializationFormat, out response);
690712
691713 if ((object)response != null)
692714 {
@@ -792,7 +814,7 @@ namespace GSF.ServiceProcess · 99 unmodified lines
792814 }
793815
794816 /// <summary>
795− /// Attempts to parse an actionable reponse sent from the service.
817+ /// Attempts to parse an actionable response sent from the service.
796818 /// </summary>
797819 /// <param name="serviceResponse"><see cref="ServiceResponse"/> to test for actionable response.</param>
798820 /// <param name="sourceCommand">Command that invoked <paramref name="serviceResponse"/>.</param>
@@ -812,7 +834,7 @@ namespace GSF.ServiceProcess · 13 unmodified lines
812834 // Attempt to parse response message
813835 if (!string.IsNullOrWhiteSpace(response))
814836 {
815− // Reponse types are formatted as "Command:Success" or "Command:Failure"
837+ // Response types are formatted as "Command:Success" or "Command:Failure"
816838 string[] parts = response.Split(':');
817839
818840 if (parts.Length > 1)
Source/Libraries/GSF.ServiceProcess/ServiceHelper.cs+33−5
@@ -225,6 +225,11 @@ namespace GSF.ServiceProcess · 224 unmodified lines
225225 /// </summary>
226226 public const bool DefaultSecureRemoteInteractions = false;
227227
228+ /// <summary>
229+ /// Specifies the default value for the <see cref="ServiceHelper.SerializationFormat"/> property.
230+ /// </summary>
231+ public const SerializationFormat DefaultSerializationFormat = SerializationFormat.Binary;
232+
228233 /// <summary>
229234 /// Specifies the default value for the <see cref="PersistSettings"/> property.
230235 /// </summary>
@@ -353,6 +358,7 @@ namespace GSF.ServiceProcess · 122 unmodified lines
353358 private bool m_supportTelnetSessions;
354359 private bool m_supportSystemCommands;
355360 private bool m_secureRemoteInteractions;
361+ private SerializationFormat m_serializationFormat;
356362 private bool m_persistSettings;
357363 private string m_settingsCategory;
358364 private string m_telnetSessionPassword;
@@ -370,15 +376,15 @@ namespace GSF.ServiceProcess · 11 unmodified lines
370376 private readonly Dictionary<ISupportLifecycle, bool> m_componentEnabledStates;
371377 private TryGetClientPrincipalFunctionSignature m_tryGetClientPrincipalFunction;
372378 private readonly ProcessQueue<StatusUpdate> m_statusUpdateQueue;
373− private bool m_enabled;
374− private bool m_disposed;
375− private bool m_initialized;
376379 private bool m_suppressUpdates;
377380 private Guid m_remoteCommandClientID;
378381 private Process m_remoteCommandProcess;
379382 private Ticks m_lastStatusUpdateTime;
380383 private long m_statusUpdateCount;
381384 private bool m_supressStatusUpdates;
385+ private bool m_enabled;
386+ private bool m_initialized;
387+ private bool m_disposed;
382388
383389 #endregion
384390
@@ -399,6 +405,7 @@ namespace GSF.ServiceProcess · 14 unmodified lines
399405 m_supportTelnetSessions = DefaultSupportTelnetSessions;
400406 m_supportSystemCommands = DefaultSupportSystemCommands;
401407 m_secureRemoteInteractions = DefaultSecureRemoteInteractions;
408+ m_serializationFormat = DefaultSerializationFormat;
402409 m_persistSettings = DefaultPersistSettings;
403410 m_settingsCategory = DefaultSettingsCategory;
404411 m_processes = new List<ServiceProcess>();
@@ -622,6 +629,24 @@ namespace GSF.ServiceProcess · 217 unmodified lines
622629 }
623630 }
624631
632+ /// <summary>
633+ /// Gets or sets a value that indicates the desired message <see cref="GSF.SerializationFormat"/> for interaction with <see cref="ClientHelper"/>.
634+ /// </summary>
635+ [Category("Settings"),
636+ DefaultValue(DefaultSerializationFormat),
637+ Description("Indicates messaging serialization format for interactions with ClientHelper.")]
638+ public SerializationFormat SerializationFormat
639+ {
640+ get
641+ {
642+ return m_serializationFormat;
643+ }
644+ set
645+ {
646+ m_serializationFormat = value;
647+ }
648+ }
649+
625650 /// <summary>
626651 /// Gets or sets a boolean value that indicates whether the settings of <see cref="ServiceHelper"/> are to be saved to the config file.
627652 /// </summary>
@@ -1049,6 +1074,7 @@ namespace GSF.ServiceProcess · 421 unmodified lines
10491074 settings["SupportTelnetSessions", true].Update(m_supportTelnetSessions);
10501075 settings["SupportSystemCommands", true].Update(m_supportSystemCommands);
10511076 settings["SecureRemoteInteractions", true].Update(m_secureRemoteInteractions);
1077+ settings["SerializationFormat", true].Update(m_serializationFormat);
10521078 config.Save();
10531079 }
10541080
@@ -1103,6 +1129,7 @@ namespace GSF.ServiceProcess · 48 unmodified lines
11031129 settings.Add("SupportTelnetSessions", m_supportTelnetSessions, "True to enable the support for remote telnet-like sessions; otherwise False.");
11041130 settings.Add("SupportSystemCommands", m_supportSystemCommands, "True to enable system-level access (-system switch) via the build-in commands; otherwise False.");
11051131 settings.Add("SecureRemoteInteractions", m_secureRemoteInteractions, "True to enable security of remote client interactions; otherwise False.");
1132+ settings.Add("SerializationFormat", m_serializationFormat, "Message serialization format for interactions with clients, one of: Xml, Json or Binary. Default is Binary.");
11061133
11071134 if ((object)settings["TelnetSessionPassword"] != null)
11081135 m_telnetSessionPassword = settings["TelnetSessionPassword"].ValueAs(m_telnetSessionPassword);
@@ -1116,6 +1143,7 @@ namespace GSF.ServiceProcess · 7 unmodified lines
11161143 SupportTelnetSessions = settings["SupportTelnetSessions"].ValueAs(m_supportTelnetSessions);
11171144 SupportSystemCommands = settings["SupportSystemCommands"].ValueAs(m_supportSystemCommands);
11181145 SecureRemoteInteractions = settings["SecureRemoteInteractions"].ValueAs(m_secureRemoteInteractions);
1146+ SerializationFormat = settings["SerializationFormat"].ValueAs(m_serializationFormat);
11191147 }
11201148
11211149 /// <summary>
@@ -2146,7 +2174,7 @@ namespace GSF.ServiceProcess · 1024 unmodified lines
21462174 if ((object)client == null)
21472175 {
21482176 // First message from a remote client should be its info.
2149− Serialization.TryDeserialize(e.Argument2.BlockCopy(0, e.Argument3), SerializationFormat.Binary, out client);
2177+ Serialization.TryDeserialize(e.Argument2.BlockCopy(0, e.Argument3), m_serializationFormat, out client);
21502178
21512179 try
21522180 {
@@ -2210,7 +2238,7 @@ namespace GSF.ServiceProcess · 57 unmodified lines
22102238 ClientRequest request;
22112239 ClientRequestInfo requestInfo = null;
22122240
2213− Serialization.TryDeserialize(e.Argument2.BlockCopy(0, e.Argument3), SerializationFormat.Binary, out request);
2241+ Serialization.TryDeserialize(e.Argument2.BlockCopy(0, e.Argument3), m_serializationFormat, out request);
22142242
22152243 if ((object)request != null)
22162244 {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t