private void DeployCommand(MessageBody messageBody) { AssemblyExcuteEnvironment.Current.UnloadDomain(excuteDomainKey); var file1 = FileTask.GetObjectBySerializeString(messageBody.Datas); string datas = TinctSlaveNode.Current.NodeInfo.NodeName; try { File.WriteAllBytes(file1.FileName, file1.Content.ToArray()); datas += ",true"; } catch { //write failed datas += ",false"; } TinctMessage message = new TinctMessage(); message.MessageHeader = new MessageHeader() { CommandType = CommandType.Deploy }; MessageBody body = new MessageBody(); message.MessageBody = body; TinctSlaveNode.Current.SendMessage(TinctNodeCongratulations.MasterName, message); }
public bool SendMessage(string machineName, TinctMessage message) { PackageMessage pmsg = new PackageMessage(); pmsg.SourceName = NodeInfo.NodeName; pmsg.DestinationName = machineName; pmsg.SendTimeStamp = DateTimeExtension.GetTimeStamp(); pmsg.Message = message; return(SendMessage(machineName, masterPort, pmsg)); }
private TinctMessage BuildTaskMessage(TinctTask tinctTask, CommandType type) { TinctMessage tmsg = new TinctMessage(); tmsg.MessageHeader = new MessageHeader() { CommandType = type }; tmsg.MessageBody = new MessageBody(); tmsg.MessageBody.Datas = tinctTask.ToJsonSerializeString(); return(tmsg); }
public bool HanderMessage(TinctMessage message) { switch (message.MessageHeader.CommandType) { case CommandType.Return: new Task(() => { ReturnCommand(message.MessageBody); }).Start(); break; case CommandType.Deploy: // new Task(() => { DeployCommand(message.MessageBody); }).Start(); break; } return(true); }
public static void StartSlaveService(string loggerName, string loggerFileName) { if (!slaveServiceIsOn) { TinctMessage msg = new TinctMessage(); msg.MessageBody = new MessageBody(); msg.MessageBody.Datas = "connect"; var slavehandler = new TinctMessageSlaveHandler(); slavehandler.LoggerName = loggerName; slavehandler.loggerFileName = loggerFileName; TinctSlaveNode.Current.MessageHandlers.Add(slavehandler); TinctSlaveNode.Current.StartSlave(); TinctSlaveNode.Current.SendMessage(TinctNodeCongratulations.MasterName, msg); slaveServiceIsOn = true; } }
public bool HanderMessage(TinctMessage message) { try { var deploycontent = DeployContent.GetObjectBySerializeString(message.MessageBody); if (deploycontent.FileName == null) { return(true); } foreach (var appdomain in ExcuteEnvironment.Current.AppDomainDicts) { try { AppDomain.Unload(appdomain.Value); } catch { } } ExcuteEnvironment.Current.AppDomainDicts.Clear(); try { File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + "//" + deploycontent.FileName, deploycontent.Content); deploycontent.Status = "Completed"; } catch { deploycontent.Status = "Failed"; TinctSlaveNode.Current.NodeInfo.Status = NodeStatus.DeployFailed; } // deploycontent.TargetNodeName =Dns.GetHostName(); //TinctSlaveNode.Current.(TinctSlaveNode.Current.NodeInfo.ToJsonSerializeString(), masterName); //TinctSlaveNode.Current.SendMessageToMaster(deploycontent.ToJsonSerializeString(), masterName); } catch { return(true); } return(false); }
public bool HanderMessage(TinctMessage message) { var deploycontent = DeployContent.GetObjectBySerializeString(message.MessageBody); if (deploycontent.FileName == null) { return(true); } else { var node = NodeRepository.Current.NodeInfoList.FirstOrDefault(t => t.NodeName == deploycontent.TargetNodeName); if (deploycontent.Status == "Failed") { node.Status = NodeStatus.DeployFailed; } else { node.Status = NodeStatus.Running; } } return(false); }
public bool HanderMessage(TinctMessage message) { switch (message.MessageHeader.CommandType) { case CommandType.Run: new Task(() => { RunCommand(message.MessageBody); }).Start(); break; case CommandType.Search: break; case CommandType.Cancel: new Task(() => { CancelCommand(message.MessageBody); }).Start(); break; case CommandType.SyncTask: SyncTaskCommand(message.MessageBody); break; case CommandType.Deploy: DeployCommand(message.MessageBody); break; } return(true); }
public void ReceviceMessageTest() { TinctSlaveNode slavePoint = new TinctSlaveNode(); var handler = new TestMessageHandler(); slavePoint.MessageHandlers.Add(handler); bool result = slavePoint.StartSlave(); TinctMessage msg = new TinctMessage(); msg.MessageBody = new MessageBody(); msg.MessageBody.Datas = "test"; TinctMasterNode sendPoint = new TinctMasterNode(); sendPoint.SendMessage(slavePoint.NodeInfo.NodeName, msg); Thread.Sleep(1000); //msg.MessageBody = "test1"; sendPoint.SendMessage(slavePoint.NodeInfo.NodeName, msg); Assert.IsTrue(handler.Message == "test"); }
public static void DeployFile(FileTask file) { var bytes = File.ReadAllBytes(file.SourcePath); file.Content.AddRange(bytes); TinctMessage msg = new TinctMessage(); msg.MessageHeader = new MessageHeader(); msg.MessageHeader.CommandType = CommandType.Deploy; msg.MessageBody = new MessageBody(); msg.MessageBody.Datas = file.ToJsonSerializeString(); TinctTaskRepository.Current.ClearAllTinctTasks(); for (int i = 0; i < TinctMasterNode.Current.SlaveNodes.Count; i++) { try { TinctMasterNode.Current.SendMessage(TinctMasterNode.Current.SlaveNodes[i].NodeName, msg); } catch { ///when change salve node status,ingore that } } }
public void ExuteTask(string datas, string loggerName, string loggerFileName) { var logger = TinctLoggerManger.GetLogger(loggerName, loggerFileName); var task = TinctTask.GetObjectBySerializeString(datas); if (logger != null) { logger.LogMessage(task.ToJsonSerializeString()); } AssemblyExcuteEnvironment.Current.AppDomainDicts.TryGetValue(task.ClassName + "\\" + task.MethodName, out AppDomain runTimeActionDomain); if (runTimeActionDomain == null) { runTimeActionDomain = AppDomain.CreateDomain(task.ClassName + "\\" + task.MethodName, AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation); AssemblyExcuteEnvironment.Current.AppDomainDicts.TryAdd(runTimeActionDomain.FriendlyName, runTimeActionDomain); } try { dynamic controler = runTimeActionDomain.CreateInstanceFrom(task.DllName + ".dll", task.NamespaceName + "." + task.ClassName).Unwrap(); MethodInfo method = controler.GetType().GetMethod(task.MethodName); int parametercount = method.GetParameters().Count(); if (parametercount == 0) { method.Invoke(controler, null); } else { method.Invoke(controler, new object[] { task.Datas }); } task.Status = TinctTaskStatus.Completed; } catch (AppDomainUnloadedException e) { Console.WriteLine(e); //log task.Status = TinctTaskStatus.Exception; task.Exption = e; task.HasException = true; task.ExceptionString = e.ToString(); } catch (Exception e) { Console.WriteLine(e); //log task.Status = TinctTaskStatus.Exception; task.Exption = e; task.HasException = true; task.ExceptionString = e.ToString(); } AssemblyExcuteEnvironment.Current.UnloadDomain(runTimeActionDomain.FriendlyName); task.EndTime = DateTimeExtension.GetTimeStamp(); if (logger != null) { logger.LogMessage(task.ToJsonSerializeString()); } TinctMessage message = new TinctMessage(); message.MessageHeader = new MessageHeader() { CommandType = CommandType.Return }; MessageBody body = new MessageBody(); body.Datas = task.ToJsonSerializeString(); message.MessageBody = body; TinctSlaveNode.Current.SendMessage(TinctNodeCongratulations.MasterName, message); }
public bool HanderMessage(TinctMessage message) { Message = message.MessageBody.Datas; return(true); }