Exemplo n.º 1
0
        public NodeModule()
        {
            //Get ("/", _ => "Hello World!");

            Get("/greet/", _ => "Hello Anonymous!");

            Get("/greet/{name}", x => {
                return(string.Concat("Hello ", x.name));
            });
            Post("/", async x => {
                var reader = new StreamReader(this.Request.Body);

                var data = await reader.ReadToEndAsync();
                //var data = reader.ReadToEnd();
                //Console.WriteLine("info: "+ data.ToString());
                lock (Node.mylock){
                    string[] data_list = data.ToString().Split();
                    //Console.WriteLine(data_list[0]);
                    if (data_list.Length == 3)
                    {
                        //Console.WriteLine("666");
                        DavidNet.releaseMessage(data_list[1], data_list[2]);
                        return("233");
                    }
                    else if (String.Equals(data_list[2], "0"))
                    {
                        Console.WriteLine($"... {data_list[0]}+ 0 > {data_list[1]} {data_list[2]} {data_list[3]} {data_list[4]}");
                        //Console.WriteLine("The network size is " + data_list[4]);
                        return("112");
                    }



                    try{
                        //DavidNet.NoDelayTest(data_list);
                        Console.WriteLine($"... {data_list[0]}+ 0 > {data_list[1]} {data_list[2]} {data_list[3]} {data_list[4]}");

                        int curr_Time = Int32.Parse(data_list[0]) + DavidNet.getDelay(data_list[1], data_list[2]);
                        //Console.WriteLine(curr_Time.ToString());
                        data_list[0] = curr_Time.ToString();
                        MsgBlock mes = new MsgBlock(data_list);
                        Node.traffic.Enqueue(mes);
                        if (String.Equals(mes.tok, "1") || String.Equals(mes.tok, "3"))
                        {
                            Node.traffic.boundary = mes.logicalTime;
                        }

                        //Node.traffic.boundary = mes;
                        //Console.WriteLine("234");
                        DavidNet.DeliverMessage();
                        //Console.WriteLine("out");
                    }
                    catch (Exception excp) {
                        Console.WriteLine(excp.ToString());
                    }
                    // Console.WriteLine("go");
                }
                return("111");
            });
        }
Exemplo n.º 2
0
        /* public static int getBoundary(){
         * foreach(MsgBlock msg in Node.traffic){
         *     if (String.Equals(msg.tok, "1") || String.Equals(msg.tok, "3"))
         *         return msg.logicalTime;
         * }
         * return -1;
         * }*/

        public static void DeliverMessage()
        {
            if (Node.traffic.boundary < 0)
            {
                return;
            }

            MsgBlock msg;
            bool     pass = true;

            while (Node.traffic.Count() > 0 && pass)
            {
                msg = Node.traffic.Peek();
                if (msg.logicalTime > Node.traffic.boundary)
                {
                    break;
                }
                if (String.Equals(msg.tok, "1") || String.Equals(msg.tok, "3"))
                {
                    //boundary = msg.logicalTime;
                    Node.traffic.boundary = -1;
                    pass = false;
                }
                msg = Node.traffic.Dequeue();
                string destPort = Node.confData[msg.to].ToString();
                string message  = msg.ToString();
                DavidNet.sendData("http://localhost:" + destPort, message);
                Console.WriteLine($"... {msg.time} 0 < {msg.from} {msg.to} {msg.tok} {msg.pay}");
            }
        }
Exemplo n.º 3
0
        //Console.WriteLine(uri.GetType());
        public static void NoDelayTest(string[] data_list)
        {
            //data_list[0] = data_list[0].Substring(0,data_list[0].Length -1);

            string message  = String.Join(" ", data_list);
            string destPort = Node.confData[data_list[2]].ToString();

            DavidNet.sendData("http://localhost:" + destPort, message);
            Console.WriteLine($"... {data_list[0]} 0 < {data_list[1]} {data_list[2]} {data_list[3]} {data_list[4]}");
        }
Exemplo n.º 4
0
 public static void releaseMessage(string from, string to)
 {
     while (Node.traffic.Count() > 0)
     {
         MsgBlock msg      = Node.traffic.Dequeue();
         string   destPort = Node.confData[msg.to].ToString();
         string   message  = msg.ToString();
         DavidNet.sendData("http://localhost:" + destPort, message);
         Console.WriteLine($"... {msg.time} 0 < {msg.from} {msg.to} {msg.tok} {msg.pay}");
         if (String.Equals(msg.from, from) && String.Equals(msg.to, to))
         {
             //Console.WriteLine("111");
             return;
         }
     }
 }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            HostConfiguration hostConfigs = new HostConfiguration()
            {
                UrlReservations = new UrlReservations()
                {
                    CreateAutomatically = true
                }
            };


            ReadFile(args[0]);
            //Console.WriteLine(Node.confData["-"]);
            Node.myPort = Node.confData["0"] + "";
            using (var host = new NancyHost(new Uri("http://localhost:" + Node.myPort), new DefaultNancyBootstrapper(), hostConfigs)) {
                host.Start();

                Console.WriteLine("Running on http://localhost:" + Node.myPort); //Start sending message;
                string portNumber = Node.confData["1"].ToString();
                string ThisNode   = Node.nodeNum;
                string time       = "0";
                string from       = "0";
                string to         = "1";
                string tok        = "1";
                string pay        = "0";
                string message    = string.Format("{0} {1} {2} {3} {4}", time, from, to, tok, pay);
                DavidNet.sendData("http://localhost:" + portNumber, message);
                Console.WriteLine($"... 0 0 < {from} {to} {tok} {pay}");

                /*var startTimeSpan = new TimeSpan(0);
                 * var periodTimeSpan = TimeSpan.FromSeconds(5);
                 *
                 * var timer = new System.Threading.Timer((e) =>
                 * {
                 * DeliverMessage();
                 * }, null, startTimeSpan, periodTimeSpan);*/
                Console.ReadLine();
            }

            //Console.WriteLine("The file name is: " + confData[2]);
            //Console.ReadLine();
        }