Esempio n. 1
0
 public void Dispose()
 {
     if (ListenerTask.Status == TaskStatus.Canceled)
     {
         ListenerTask.Dispose();
     }
     if (Socket.Connected)
     {
         Socket.Shutdown(SocketShutdown.Both);
     }
     Socket.Close();
     Socket.Dispose();
 }
Esempio n. 2
0
        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);
            }
        }