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"); }); }
/* 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}"); } }
//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]}"); }
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; } } }
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(); }