Example #1
0
        private void ApiWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                try
                {
                    PrintToLog logging = printLog;
                    // Create a Http server and start listening for incoming connections
                    listener = new HttpListener();
                    listener.Prefixes.Add(url);
                    listener.Start();
                    if (apiWorker.CancellationPending)
                    {
                        listener.Stop();
                        break;
                    }

                    logging.Invoke("Listening for connections on " + url.ToString());
                    Task listenTask = HandleIncomingConnections();
                    listenTask.GetAwaiter().GetResult();
                    listener.Close();
                }
                catch (Exception Ee)
                {
                    break;
                }
            }
        }
Example #2
0
 //Método de chamada com sincronização de threads para imprimir no log
 private void printToLog(string p_Text)
 {
     if (m_TbxLog.InvokeRequired)
     {
         PrintToLog v_Callback = new PrintToLog(printToLog);
         this.Invoke(v_Callback, new object[] { p_Text });
     }
     else
     {
         m_TbxLog.Text          += DateTime.Now.ToString("HH:mm:ss") + " - " + p_Text + Environment.NewLine;
         m_TbxLog.SelectionStart = m_TbxLog.Text.Length;
         m_TbxLog.ScrollToCaret();
     }
 }
Example #3
0
 private void printLog(String log)
 {
     if (listBox2.InvokeRequired)
     {
         var d = new PrintToLog(printLog);
         listBox2.Invoke(d, new object[] { log });
     }
     else
     {
         if (listBox2.Items.Count > 10)
         {
             listBox2.Items.Clear();
         }
         listBox2.Items.Add(log);
     }
 }
Example #4
0
        private async Task HandleIncomingConnections()
        {
            bool runServer = true;

            // While a user hasn't visited the `shutdown` url, keep on handling requests
            while (!apiWorker.CancellationPending)
            {
                // Will wait here until we hear from a connection
                HttpListenerContext ctx = await listener.GetContextAsync();

                // Peel out the requests and response objects
                HttpListenerRequest  req  = ctx.Request;
                HttpListenerResponse resp = ctx.Response;
                //CORS - KIRIM DATA REPLY LANGSUNG KE WMS
                if (req.HttpMethod == "OPTIONS")
                {
                    resp.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
                    resp.AddHeader("Access-Control-Allow-Methods", "GET, POST");
                    resp.AddHeader("Access-Control-Max-Age", "1728000");
                }
                resp.AppendHeader("Access-Control-Allow-Origin", "*");

                // Make sure we don't increment the page views counter if `favicon.ico` is requested
                if (req.Url.AbsolutePath != "/favicon.ico")
                {
                    Console.WriteLine(req.Url.ToString());
                    Console.WriteLine(req.HttpMethod);
                    Console.WriteLine(req.UserHostName);
                    Console.WriteLine("Request to route " + req.QueryString["route"]);
                    Console.WriteLine();
                    int route = Convert.ToInt32(req.QueryString["route"]);
                    dataRoute = route;
                }
                PrintToLog logging = printLog;
                logging.Invoke("RX<-" + req.RawUrl);

                string disableSubmit = !runServer ? "disabled" : "";
                byte[] data;

                if (String.IsNullOrEmpty(req.QueryString["route"]))
                {
                    data = Encoding.UTF8.GetBytes("Infiniti 4.0 AGV API");
                }
                else
                {
                    try
                    {
                        int route = Convert.ToInt32(req.QueryString["route"]);
                        dataRoute = route;
                        ////Send Route
                        //sendByte((byte)route);
                        sendByte(route);
                        data = Encoding.UTF8.GetBytes("Accepted, route=" + route.ToString());
                    }
                    catch
                    {
                        data = Encoding.UTF8.GetBytes("Wrong data type");
                    }
                }
                resp.ContentType     = "text/html";
                resp.ContentEncoding = Encoding.UTF8;
                resp.ContentLength64 = data.LongLength;

                logging.Invoke("TX->" + Encoding.UTF8.GetString(data));

                await resp.OutputStream.WriteAsync(data, 0, data.Length);

                resp.Close();
            }
        }