protected override void Run() { Debug.WriteLine("#> [DeployRpcService]: Started Deploy App " + appName + "/" + appVersion + " on Remote Server (" + server.Ip + ":" + server.DeployAppPort + ")"); ClientTcp socket = null; //async programming, but run synch mode task = new DependenceFileLoadTask(); task.RunSynchronous(); try { socket = new ClientTcp(false); socket.Connect(server.Ip, server.DeployAppPort); string deployRequest = "mpos_deploy_app:" + appName + ":" + appVersion; //Debug.WriteLine("[DEBUG]: sent -> " + deployRequest); Sent(socket, deployRequest); if (!ReceiveFeedbackMessage(socket)) { throw new NetworkException("Problems in deploy request"); } string mposDependence = "mpos_dependence_size:" + task.dependenceFiles.Count; //Debug.WriteLine("[DEBUG]: sent -> " + mposDependence); Sent(socket, mposDependence); if (!ReceiveFeedbackMessage(socket)) { throw new NetworkException("Problems in deploy request"); } SentFiles(socket); server.RpcServicePort = ReceiveServicePort(socket); } catch (Exception e) { Debug.WriteLine("## [DeployRpcService]: Any problem in I/O processing!\n" + e.ToString()); } finally { Debug.WriteLine("#> [DeployRpcService]: Finished Deploy App " + appName + "/" + appVersion + " on Remote Server port: " + server.RpcServicePort); socket.Close(); } }