Ejemplo n.º 1
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 1)
            {
                UnknowCommand();
                return;
            }
            List <string> workers = new List <string>(StateHelper.GetChildren("ISE://system/state/worker"));

            foreach (string t in workers)
            {
                string[] ip =
                    t.Substring(t.LastIndexOf('/') + 1,
                                t.Length - t.LastIndexOf('/') - 1)
                    .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                         int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes("Get task list"), string.Empty,
                                                           string.Empty, string.Empty,
                                                           ExcutePacket.Type.Task);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                codePacket.WaiteCallBack = true;
                List <string> result = transfer.Send <List <string> >(codePacket);
                foreach (string s in result)
                {
                    Console.WriteLine("    " + s);
                }
            }
        }
Ejemplo n.º 2
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 3)
            {
                UnknowCommand();
                return;
            }
            List <string> workers     = new List <string>(StateHelper.GetChildren("ISE://system/state/worker"));
            string        filePath    = args[1];
            string        fileNewName = args[2];

            foreach (string t in workers)
            {
                string[] ip =
                    t.Substring(t.LastIndexOf('/') + 1,
                                t.Length - t.LastIndexOf('/') - 1)
                    .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                         int.Parse(ip[1]));
                Tuple <string, string> fileTuple  = new Tuple <string, string>(filePath, args[2]);
                ExcutePacket           codePacket = new ExcutePacket(Serializer.SerializeToBytes(fileTuple), string.Empty,
                                                                     string.Empty, string.Empty,
                                                                     ExcutePacket.Type.Rename);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send <bool>(codePacket);
                StateHelper.Rename("ISE://File/" + filePath, fileNewName);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 初始化
 /// </summary>
 private static void Init()
 {
     if (_client == null)
     {
         string    remoteServer = SettingItem.GetInstance().MergeServerIP;
         const int remotePort   = 8801;
         _client = new Framework.Network.Synchronous.Client(remoteServer, remotePort);
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 发送心跳
 /// </summary>
 private static void SendHeartbeat()
 {
     while (true)
     {
         Framework.Network.Synchronous.Client client = new Framework.Network.Synchronous.Client(Dns.GetHostName(),
                                                                                                8600);
         string information = Process.GetCurrentProcess().Id + "|" + _servicePort + "?" + DateTime.UtcNow.ToString();
         Packet packet      = new Packet(Encoding.UTF8.GetBytes(information));
         packet.WaiteCallBack = false;
         client.Send <bool>(packet);
         Thread.Sleep(30 * 1000);
     }
 }
Ejemplo n.º 5
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 1)
            {
                UnknowCommand();
                return;
            }

            List <string> Workers = new List <string>(StateHelper.GetChildren("ISE://system/state/worker"));

            Hashtable IpCollection = new Hashtable();

            for (int i = 0; i < Workers.Count; i++)
            {
                string[] ip = Workers[i].Substring(Workers[i].LastIndexOf('/') + 1,
                                                   Workers[i].Length - Workers[i].LastIndexOf('/') - 1)
                              .Split(',');
                if (!IpCollection.Contains(ip[0]))
                {
                    IpCollection[ip[0]] = 1;
                }
                else
                {
                    IpCollection[ip[0]] = int.Parse(IpCollection[ip[0]].ToString()) + 1;
                }
            }

            foreach (string eachWorker in Workers)
            {
                string[] ip = eachWorker.Substring(eachWorker.LastIndexOf('/') + 1,
                                                   eachWorker.Length - eachWorker.LastIndexOf('/') - 1)
                              .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                         int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(IpCollection[ip[0]].ToString()), string.Empty,
                                                           string.Empty, string.Empty,
                                                           ExcutePacket.Type.Disk);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                codePacket.WaiteCallBack = true;
                List <string> result = transfer.Send <List <string> >(codePacket);
                foreach (string s in result)
                {
                    Console.WriteLine("    " + s);
                }
            }
        }
Ejemplo n.º 6
0
 public void WriteToConsole(string information)
 {
     Console.WriteLine(information);
     try
     {
         if (Sender == null)
         {
             //BUG:传递parameter这个参数,非常不友好
             string fromIp = Parameters[0].ToString();
             string port   = Parameters[1].ToString();
             Sender = new Framework.Network.Synchronous.Client(fromIp, int.Parse(port));
         }
         Packet packet = new Packet(Serializer.SerializeToBytes("[result from:" + Parameters[2] + ",+" + Parameters[3] + "] " + information))
         {
             WaiteCallBack = false
         };
         //无需等待反馈1207
         Sender.Send <Packet>(packet);
     }
     catch (Exception exception)
     {
         LogHelper.Warn(exception);
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 发送心跳
 /// </summary>
 private static void SendHeartbeat()
 {
     while (true)
     {
         Framework.Network.Synchronous.Client client = new Framework.Network.Synchronous.Client(Dns.GetHostName(),
     8600);
         string information = Process.GetCurrentProcess().Id + "|" + _servicePort + "?" + DateTime.UtcNow.ToString();
         Packet packet = new Packet(Encoding.UTF8.GetBytes(information));
         packet.WaiteCallBack = false;
         client.Send<bool>(packet);
         Thread.Sleep(30 * 1000);
     }
 }
Ejemplo n.º 8
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length < 3 || args.Length == 4)
            {
                UnknowCommand();
                return;
            }
            //2.1 将文件切分成块
            List <string> workers  = new List <string>(StateHelper.GetChildren("ISE://system/state/worker"));
            string        filePath = args[1];

            if (File.Exists(filePath))
            {
                //普通切分模式
                if (args.Length == 3)
                {
                    FileBlock.Split(filePath, workers.Count);
                }
                //用户自定义切分
                else
                {
                    string     splitStr = args[3];
                    List <int> keys     = new List <int>();
                    for (int i = 4; i < args.Length; i++)
                    {
                        int index;
                        if (!int.TryParse(args[i], out index))
                        {
                            Logger.Error("index should be an int.");
                            break;
                        }
                        keys.Add(index);
                    }
                    FileBlock.Split(filePath, workers.Count, splitStr, keys.ToArray());
                }
            }
            else
            {
                Logger.Error(filePath + " is not found.");
                return;
            }

            //2.2 告诉worker即将发送文件块
            string remotePath = args[2];

            string[] childFiles = Directory.GetFiles(filePath + ".part");
            for (int i = 0; i < workers.Count; i++)
            {
                string[] ip =
                    workers[i].Substring(workers[i].LastIndexOf('/') + 1, workers[i].Length - workers[i].LastIndexOf('/') - 1)
                    .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                         int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(remotePath), string.Empty, string.Empty, string.Empty,
                                                           ExcutePacket.Type.FileFragment);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send <bool>(codePacket);
                Logger.Info(ip[0] + "," + ip[1] + " has been noticed to receive the file.");

                int maxRetryCount = 5;
                while (maxRetryCount > 0)
                {
                    try
                    {
                        FileTransfer fileTransfer = new FileTransfer();
                        fileTransfer.Send(childFiles[i], ip[0], 7001);
                        maxRetryCount = -1;
                    }
                    catch (Exception exception)
                    {
                        Logger.Error(exception.Message);
                        maxRetryCount--;
                        if (maxRetryCount > 0)
                        {
                            Console.WriteLine("Now retry...");
                            Thread.Sleep(1000);
                        }
                    }
                }
                if (maxRetryCount == 0)
                {
                    Logger.Info(ip[0] + "," + ip[1] + " do not get the file.");
                }
            }
            //2.4 删掉切分的文件
            Directory.Delete(filePath + ".part", true);
            StateHelper.Put("ISE://File/" + remotePath, new FileInfo(filePath).Length / 1024);
        }
Ejemplo n.º 9
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 3)
            {
                UnknowCommand();
                return;
            }
            //3.1 创建子文件存放的文件夹
            string fileName       = args[2];
            string remoteFilePath = args[1];

            if (remoteFilePath.EndsWith(".part"))
            {
                string partFileFolder = fileName + ".part";
                if (Directory.Exists(partFileFolder))
                {
                    Directory.Delete(partFileFolder, true);
                }
                Directory.CreateDirectory(partFileFolder);

                List <string> workers = new List <string>(StateHelper.GetChildren("ISE://system/state/worker"));
                for (int i = 0; i < workers.Count; i++)
                {
                    //3.2 通知下载文件
                    string[] ip =
                        workers[i].Substring(workers[i].LastIndexOf('/') + 1,
                                             workers[i].Length - workers[i].LastIndexOf('/') - 1)
                        .Split(',');
                    Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                             int.Parse(ip[1]));
                    ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(remoteFilePath), string.Empty,
                                                               string.Empty, string.Empty,
                                                               ExcutePacket.Type.Download);
                    codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                    //1207
                    codePacket.WaiteCallBack = false;
                    transfer.Send <bool>(codePacket);
                    Logger.Info(ip[0] + "," + ip[1] + " has been noticed to send file " + fileName);

                    //3.3 准备接收文件块
                    FileTransfer fileTransfer = new FileTransfer();
                    fileTransfer.Receive(7002, partFileFolder + "/" + i);
                }

                //3.4 合并文件
                FileBlock.Merge(partFileFolder, fileName);
                Directory.Delete(partFileFolder, true);
            }
            else
            {
                List <string> workers = new List <string>(StateHelper.GetChildren("ISE://system/state/worker"));
                string[]      ip      =
                    workers[0].Substring(workers[0].LastIndexOf('/') + 1,
                                         workers[0].Length - workers[0].LastIndexOf('/') - 1)
                    .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                         int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(remoteFilePath), string.Empty,
                                                           string.Empty, string.Empty,
                                                           ExcutePacket.Type.Download);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send <bool>(codePacket);
                Logger.Info(ip[0] + "," + ip[1] + " has been noticed to send file " + fileName);
                FileTransfer fileTransfer = new FileTransfer();
                fileTransfer.Receive(7002, fileName);
            }
        }
Ejemplo n.º 10
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length == 5)
            {
                _showMsgFromRemote = args[4] == "true";
            }

            if (args.Length != 4 && !_showMsgFromRemote)
            {
                UnknowCommand();
                return;
            }
            //1.1 编译应用程序
            Logger.Info("Start Compile your code...");
            string appName       = args[3];
            string className     = args[2];
            string filePath      = args[1];
            string timeStamp     = DateTime.Now.ToFileTimeUtc().ToString(CultureInfo.InvariantCulture);
            string compileResult = CompileCode(filePath);

            if (compileResult != string.Empty)
            {
                Logger.Error(compileResult);
                return;
            }

            //1.2 读取编译后的文件
            Logger.Info("Preparing for send your application to platform...");
            string sourceCode = File.ReadAllText(filePath);

            byte[] bytes = Encoding.UTF8.GetBytes(sourceCode);

            //1.3 上传程序至各个节点
            Thread thread = new Thread(StartListen);

            thread.Start();

            StateHelper.Put("ISE://history/" + timeStamp + "/" + appName,
                            Dns.GetHostName());

            IEnumerable <string> ipPathes = StateHelper.GetChildren("ISE://system/state/worker");
            var ipPaths = ipPathes as string[] ?? ipPathes.ToArray();

            foreach (var ipPath in ipPaths)
            {
                Logger.Info("Current worker ip path:" + ipPath);
                string[] ip =
                    ipPath.Substring(ipPath.LastIndexOf('/') + 1, ipPath.Length - ipPath.LastIndexOf('/') - 1)
                    .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                                                                                                         int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(bytes, className, appName, timeStamp,
                                                           ExcutePacket.Type.Code);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send <object>(codePacket);
            }

            //1.4 结点运行程序,直至结束
            DateTime submitTime = DateTime.UtcNow;

            while (!IsDelay(submitTime, 60))
            {
                if (CheckApplicationExit(timeStamp, appName, ipPaths.Count()))
                {
                    Console.WriteLine("Application has submitted, you can user [task] command to see the status.");
                    return;
                }
                Thread.Sleep(1000);
            }
            Console.WriteLine("Application failured as run too much time.");
        }
Ejemplo n.º 11
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 1)
            {
                UnknowCommand();
                return;
            }

            List<string> Workers = new List<string>(StateHelper.GetChildren("ISE://system/state/worker"));

            Hashtable IpCollection = new Hashtable();
            for (int i = 0; i < Workers.Count; i++)
            {
                string[] ip = Workers[i].Substring(Workers[i].LastIndexOf('/') + 1,
                    Workers[i].Length - Workers[i].LastIndexOf('/') - 1)
                    .Split(',');
                if (!IpCollection.Contains(ip[0]))
                {
                    IpCollection[ip[0]] = 1;
                }
                else
                {
                    IpCollection[ip[0]] = int.Parse(IpCollection[ip[0]].ToString()) + 1;
                }
            }

            foreach (string eachWorker in Workers)
            {
                string[] ip = eachWorker.Substring(eachWorker.LastIndexOf('/') + 1,
                    eachWorker.Length - eachWorker.LastIndexOf('/') - 1)
                    .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                    int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(IpCollection[ip[0]].ToString()), string.Empty,
                    string.Empty, string.Empty,
                    ExcutePacket.Type.Memory);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                codePacket.WaiteCallBack = true;

                String result = transfer.Send<String>(codePacket);
                Console.WriteLine("     " + result);

            }
        }
Ejemplo n.º 12
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length < 3 || args.Length == 4)
            {
                UnknowCommand();
                return;
            }
            //2.1 将文件切分成块
            List<string> workers = new List<string>(StateHelper.GetChildren("ISE://system/state/worker"));
            string filePath = args[1];
            if (File.Exists(filePath))
            {
                //普通切分模式
                if (args.Length == 3)
                {
                    FileBlock.Split(filePath, workers.Count);
                }
                //用户自定义切分
                else
                {
                    string splitStr = args[3];
                    List<int> keys = new List<int>();
                    for (int i = 4; i < args.Length; i++)
                    {
                        int index;
                        if (!int.TryParse(args[i], out index))
                        {
                            Logger.Error("index should be an int.");
                            break;
                        }
                        keys.Add(index);
                    }
                    FileBlock.Split(filePath, workers.Count, splitStr, keys.ToArray());
                }
            }
            else
            {
                Logger.Error(filePath + " is not found.");
                return;
            }

            //2.2 告诉worker即将发送文件块
            string remotePath = args[2];
            string[] childFiles = Directory.GetFiles(filePath + ".part");
            for (int i = 0; i < workers.Count; i++)
            {
                string[] ip =
                    workers[i].Substring(workers[i].LastIndexOf('/') + 1, workers[i].Length - workers[i].LastIndexOf('/') - 1)
                        .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                    int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(remotePath), string.Empty, string.Empty, string.Empty,
                    ExcutePacket.Type.FileFragment);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send<bool>(codePacket);
                Logger.Info(ip[0] + "," + ip[1] + " has been noticed to receive the file.");

                int maxRetryCount = 5;
                while (maxRetryCount > 0)
                {
                    try
                    {
                        FileTransfer fileTransfer = new FileTransfer();
                        fileTransfer.Send(childFiles[i], ip[0], 7001);
                        maxRetryCount = -1;
                    }
                    catch (Exception exception)
                    {
                        Logger.Error(exception.Message);
                        maxRetryCount--;
                        if (maxRetryCount > 0)
                        {
                            Console.WriteLine("Now retry...");
                            Thread.Sleep(1000);
                        }
                    }
                }
                if (maxRetryCount == 0)
                {
                    Logger.Info(ip[0] + "," + ip[1] + " do not get the file.");
                }
            }
            //2.4 删掉切分的文件
            Directory.Delete(filePath + ".part", true);
            StateHelper.Put("ISE://File/" + remotePath, new FileInfo(filePath).Length / 1024);
        }
Ejemplo n.º 13
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 1)
            {
                UnknowCommand();
                return;
            }
            List<string> workers = new List<string>(StateHelper.GetChildren("ISE://system/state/worker"));
            foreach (string t in workers)
            {
                string[] ip =
                    t.Substring(t.LastIndexOf('/') + 1,
                        t.Length - t.LastIndexOf('/') - 1)
                        .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                    int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes("Get task list"), string.Empty,
                    string.Empty, string.Empty,
                    ExcutePacket.Type.Task);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                codePacket.WaiteCallBack = true;
                List<string> result = transfer.Send<List<string>>(codePacket);
                foreach (string s in result)
                {
                    Console.WriteLine("    " + s);
                }
            }

        }
Ejemplo n.º 14
0
 public override void ProcessCmd(string[] args)
 {
     if (args.Length != 3)
     {
         UnknowCommand();
         return;
     }
     List<string> workers = new List<string>(StateHelper.GetChildren("ISE://system/state/worker"));
     string filePath = args[1];
     string fileNewName = args[2];
     foreach (string t in workers)
     {
         string[] ip =
             t.Substring(t.LastIndexOf('/') + 1,
                 t.Length - t.LastIndexOf('/') - 1)
                 .Split(',');
         Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
             int.Parse(ip[1]));
         Tuple<string, string> fileTuple = new Tuple<string, string>(filePath, args[2]);
         ExcutePacket codePacket = new ExcutePacket(Serializer.SerializeToBytes(fileTuple), string.Empty,
             string.Empty, string.Empty,
             ExcutePacket.Type.Rename);
         codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
         //1207
         codePacket.WaiteCallBack = false;
         transfer.Send<bool>(codePacket);
         StateHelper.Rename("ISE://File/" + filePath, fileNewName);
     }
 }
Ejemplo n.º 15
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length != 3)
            {
                UnknowCommand();
                return;
            }
            //3.1 创建子文件存放的文件夹
            string fileName = args[2];
            string remoteFilePath = args[1];
            if (remoteFilePath.EndsWith(".part"))
            {
                string partFileFolder = fileName + ".part";
                if (Directory.Exists(partFileFolder))
                {
                    Directory.Delete(partFileFolder, true);
                }
                Directory.CreateDirectory(partFileFolder);

                List<string> workers = new List<string>(StateHelper.GetChildren("ISE://system/state/worker"));
                for (int i = 0; i < workers.Count; i++)
                {
                    //3.2 通知下载文件
                    string[] ip =
                        workers[i].Substring(workers[i].LastIndexOf('/') + 1,
                            workers[i].Length - workers[i].LastIndexOf('/') - 1)
                            .Split(',');
                    Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                        int.Parse(ip[1]));
                    ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(remoteFilePath), string.Empty,
                        string.Empty, string.Empty,
                        ExcutePacket.Type.Download);
                    codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                    //1207
                    codePacket.WaiteCallBack = false;
                    transfer.Send<bool>(codePacket);
                    Logger.Info(ip[0] + "," + ip[1] + " has been noticed to send file " + fileName);

                    //3.3 准备接收文件块
                    FileTransfer fileTransfer = new FileTransfer();
                    fileTransfer.Receive(7002, partFileFolder + "/" + i);
                }

                //3.4 合并文件
                FileBlock.Merge(partFileFolder, fileName);
                Directory.Delete(partFileFolder, true);
            }
            else
            {
                List<string> workers = new List<string>(StateHelper.GetChildren("ISE://system/state/worker"));
                string[] ip =
                    workers[0].Substring(workers[0].LastIndexOf('/') + 1,
                        workers[0].Length - workers[0].LastIndexOf('/') - 1)
                        .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                    int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(Encoding.UTF8.GetBytes(remoteFilePath), string.Empty,
                    string.Empty, string.Empty,
                    ExcutePacket.Type.Download);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send<bool>(codePacket);
                Logger.Info(ip[0] + "," + ip[1] + " has been noticed to send file " + fileName);
                FileTransfer fileTransfer = new FileTransfer();
                fileTransfer.Receive(7002, fileName);
            }
        }
Ejemplo n.º 16
0
        public override void ProcessCmd(string[] args)
        {
            if (args.Length == 5)
            {
                _showMsgFromRemote = args[4] == "true";
            }

            if (args.Length != 4 && !_showMsgFromRemote)
            {
                UnknowCommand();
                return;
            }
            //1.1 编译应用程序
            Logger.Info("Start Compile your code...");
            string appName = args[3];
            string className = args[2];
            string filePath = args[1];
            string timeStamp = DateTime.Now.ToFileTimeUtc().ToString(CultureInfo.InvariantCulture);
            string compileResult = CompileCode(filePath);
            if (compileResult != string.Empty)
            {
                Logger.Error(compileResult);
                return;
            }

            //1.2 读取编译后的文件
            Logger.Info("Preparing for send your application to platform...");
            string sourceCode = File.ReadAllText(filePath);
            byte[] bytes = Encoding.UTF8.GetBytes(sourceCode);

            //1.3 上传程序至各个节点
            Thread thread = new Thread(StartListen);
            thread.Start();

            StateHelper.Put("ISE://history/" + timeStamp + "/" + appName,
                Dns.GetHostName());

            IEnumerable<string> ipPathes = StateHelper.GetChildren("ISE://system/state/worker");
            var ipPaths = ipPathes as string[] ?? ipPathes.ToArray();
            foreach (var ipPath in ipPaths)
            {
                Logger.Info("Current worker ip path:" + ipPath);
                string[] ip =
                    ipPath.Substring(ipPath.LastIndexOf('/') + 1, ipPath.Length - ipPath.LastIndexOf('/') - 1)
                        .Split(',');
                Framework.Network.Synchronous.Client transfer = new Framework.Network.Synchronous.Client(ip[0],
                    int.Parse(ip[1]));
                ExcutePacket codePacket = new ExcutePacket(bytes, className, appName, timeStamp,
                    ExcutePacket.Type.Code);
                codePacket.SetReturnAddress(Dns.GetHostName(), 8800);
                //1207
                codePacket.WaiteCallBack = false;
                transfer.Send<object>(codePacket);
            }

            //1.4 结点运行程序,直至结束
            DateTime submitTime = DateTime.UtcNow;
            while (!IsDelay(submitTime, 60))
            {
                if (CheckApplicationExit(timeStamp, appName, ipPaths.Count()))
                {
                    Console.WriteLine("Application has submitted, you can user [task] command to see the status.");
                    return;
                }
                Thread.Sleep(1000);
            }
            Console.WriteLine("Application failured as run too much time.");

        }