private void RaiseAfterReceiveMessage(TinctConnectReceiveArgs e) { if (AfterReceiveMessage != null) { AfterReceiveMessage(this, e); } }
private void RaiseConnectMessage(TinctConnectReceiveArgs e) { if (ConnectMessage != null) { ConnectMessage(this, e); } }
public void MapToHandlerByMessage(object sender, TinctConnectReceiveArgs args) { var RoutData = route.GetRouteData(args.ReceivedMessage); var controllerName = RoutData.Controller; var actionName = RoutData.ActionName; var taskID = RoutData.TaskID; lock (syncMachinestatus) { machineInfo.MachineInvokeInfos.Add(new MachineInvokeInfo(taskID, controllerName, actionName, MachineInvokeStatus.Running)); } new Task(() => { var remainMessage = route.RouteHandler.MapToControllerExcute(RoutData); remainMessage.MachineName = slaveName; SendMessageToMaster(remainMessage.ToJsonSerializeString(), masterName); lock (syncMachinestatus) { var macinfos = machineInfo.MachineInvokeInfos.Where(t => t.ControllerName == remainMessage.ControllerName && t.ActionName == remainMessage.ActionName && t.TaskID == remainMessage.TaskID).First(); macinfos.Status = remainMessage.MachineInvokeStatus; if (macinfos.Status == MachineInvokeStatus.Completed || macinfos.Status == MachineInvokeStatus.Exception || macinfos.Status == MachineInvokeStatus.Fault || macinfos.Status == MachineInvokeStatus.PartCompleted) { machineInfo.MachineInvokeInfos.Remove(macinfos); } } }).Start(); }
public bool StartMasterServer(int port) { try { IPAddress myIPAddress = null; IPAddress[] myIPAddresses = (IPAddress[])Dns.GetHostAddresses(Dns.GetHostName()); foreach (var add in myIPAddresses) { try { long a = add.ScopeId; } catch { myIPAddress = add; } } if (myIPAddress == null) { //log return false; } Console.WriteLine("IPAddress is {0}", myIPAddress.ToString()); server = new TcpListener(myIPAddress, port); server.Start(); List<byte> messagebytes = new List<byte>(); String data = null; while (true) { messagebytes.Clear(); Console.Write("Waiting for a connection... "); TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Connected!"); data = null; Byte[] bytes = new Byte[256]; NetworkStream stream = client.GetStream(); StringBuilder messagebuilder = new StringBuilder(); int i; while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { data = System.Text.Encoding.Unicode.GetString(bytes, 0, i); if (data == "Tinct") { byte[] msg = System.Text.Encoding.Unicode.GetBytes(data); stream.Write(msg, 0, msg.Length); } messagebuilder.Append(data); // messagebytes.AddRange(bytes); bytes = new Byte[256]; } string message = messagebuilder.ToString(); // string message = System.Text.Encoding.Unicode.GetString(messagebytes.ToArray()); if (message.IndexOf('\0') != -1) { message = message.Substring(0, message.IndexOf('\0')); } TinctConnectReceiveArgs args = new TinctConnectReceiveArgs(); args.ReceivedMessage = message; if (message.Trim() != "Tinct") { RaiseReceiveRestMessage(args); } client.Close(); } } catch (SocketException e) { Console.WriteLine(e.Message); //log return false; } finally { server.Stop(); } }