public void Dispose() { if (ListenerTask.Status == TaskStatus.Canceled) { ListenerTask.Dispose(); } if (Socket.Connected) { Socket.Shutdown(SocketShutdown.Both); } Socket.Close(); Socket.Dispose(); }
static void Main(string[] args) { try { string serverIp = ConfigurationManager.AppSettings["serverIp"]; int serverPort = int.Parse(ConfigurationManager.AppSettings["serverPort"]); TcpClient connectionSocket = new SocketService(IPAddress.Parse(serverIp), serverPort).EstablishConnection(); ListenerTask listenerTask = new ListenerTask(connectionSocket); DiskTask diskTask = new DiskTask("sqlservr"); MemoryTask memoryTask = new MemoryTask("sqlservr"); EventWaitHandle waitHandle = new AutoResetEvent(false); TaskPool taskPool = new TaskPoolBuilder() .SubmitCompositeTask(listenerTask) .SubmitCompositeTask(diskTask).Observe(listenerTask) //.SubmitCompositeTask(memoryTask).Observe(listenerTask) .OnReturn(delegate(List <IDataSet> dataSets, State state) { lock (dataSets) { if (state == State.FAILED) { Console.WriteLine("Query failed"); return; } else if (state == State.DEAD) { waitHandle.Set(); return; } string jsonReport = new TimeDataReportBuilder(GetTimeDataSets(dataSets)).GenerateJsonReport(); if (jsonReport.Length > 0) { jsonReport += "}"; } string jsonData = "{\"data\":[{},{" + jsonReport + "}]}"; NetworkStream stream = connectionSocket.GetStream(); stream.Write(Encoding.ASCII.GetBytes("lets get this thing started|" + jsonData)); if (state == State.RESET) { Console.WriteLine("Resetting monitor..."); } } }) .Build(); waitHandle.WaitOne(); Console.WriteLine("Recieved shutdown signal! shutting down..."); connectionSocket.Close(); } catch (Exception exception) { Console.WriteLine("Exception thrown when communicating with the server: " + exception.StackTrace); } }