protected override void OnStart(string[] args) { var version_strings = Assembly.GetExecutingAssembly().GetName().Version.ToString().Split('.'); var version_string = "DeviceServer v" + version_strings[0] + "." + version_strings[1] + " Prerelease " + version_strings[2] + "." + version_strings[3]; logger.AppendLog(DateTime.Now, version_string); logger.AppendLog(DateTime.Now, "Service - Starting"); DeviceConnectionManager.Start(); ServerAdvertiser.Start(); ServerListener.Start(); logger.AppendLog(DateTime.Now, "Service - Started"); }
public DeviceServer() { InitializeComponent(); var version_strings = Assembly.GetExecutingAssembly().GetName().Version.ToString().Split('.'); var version_string = "DeviceServer v" + version_strings[0] + "." + version_strings[1] + " Prerelease " + version_strings[2] + "." + version_strings[3]; logger.AppendLog(DateTime.Now, version_string); logger.AppendLog(DateTime.Now, "Service - Starting"); DeviceConnectionManager.Start(); ServerAdvertiser.Start(); ServerListener.Start(); logger.AppendLog(DateTime.Now, "Service - Started"); }
protected override void OnStop() { Task.Run(() => { var version_strings = Assembly.GetExecutingAssembly().GetName().Version.ToString().Split('.'); var version_string = "DeviceServer v" + version_strings[0] + "." + version_strings[1] + " Prerelease " + version_strings[2] + "." + version_strings[3]; logger.AppendLog(DateTime.Now, version_string); logger.AppendLog(DateTime.Now, "Service - Stopping"); var handle = ServerListener.Stop(); handle.WaitOne(); handle = ServerAdvertiser.Stop(); handle.WaitOne(); handle = DeviceConnectionManager.Stop(); handle.WaitOne(); logger.AppendLog(DateTime.Now, "Service - Stopped"); }); }
public static void HandleClient(TcpClient client) { Task.Run(() => { DeviceServer.logger.AppendLog("SL - Client Connected"); while (true) { CommandTransactionContainer ctc = null; try { ctc = (CommandTransactionContainer)XMLSerdes.Decode(XMLSerdes.ReceivePacket(client, typeof(CommandTransactionContainer)), typeof(CommandTransactionContainer)); } catch (Exception ex) { DeviceServer.logger.AppendLog("SL - An exception occured while attempting to deserialize received container."); DeviceServer.logger.AppendLog(ex.Message); break; } if (ctc != null) { DeviceServer.logger.AppendLog("SL - Opening Device Connection"); var connection = DeviceConnectionManager.GetConnecion(ctc.DeviceID); var handles = connection.EnqueueCommands(ctc.ExpanderCommands); var sw = new Stopwatch(); sw.Start(); var t = new System.Timers.Timer(1000); t.AutoReset = true; t.Elapsed += (a, b) => { DeviceServer.logger.AppendLog("SL - Waiting for command execution to complete." + TimeSpan.FromTicks(sw.ElapsedTicks).ToString()); }; t.Start(); foreach (var handle in handles) { handle.Handle.WaitOne(); } sw.Stop(); t.Stop(); DeviceServer.logger.AppendLog("SL - Command Execution Complete"); var commands = handles.Select(x => x.Command).ToArray(); var r_ctc = new CommandTransactionContainer(ctc.DeviceID, commands); try { XMLSerdes.SendPacket(client, r_ctc); } catch (Exception ex) { DeviceServer.logger.AppendLog("SL - An exception occured while attempting to serialize transmit container."); DeviceServer.logger.AppendLog(ex.Message); break; } } break; } try { if (client != null && client.Connected) { client.Close(); } } catch (Exception ex) { } }); }