Example #1
0
		public override void ClientRequest(object connection)
		{
			logger.Info("Starting deploy service!");
			RpcService service = new RpcService();

			TcpClient clientSocket = (TcpClient)connection;
			//tem que sinalizar quando chegar a mensagem...
			NetworkStream networkStream = clientSocket.GetStream();

			try
			{
				// e.g.: mpos_deploy_app:wp:<Name_App>:<Version_App>
				string clientMessage = null;
				if ((clientMessage = ReadMessage(networkStream, "mpos_deploy_app")) == null)
				{
					return;// finished a conex from side client
				}

				service.ProcessDeployMessage(clientMessage);
				string dir = "./app_dep/windowsphone/" + service.Name + "_" + service.VersionApp + "v";
				CheckDiretory(dir);

				if ((clientMessage = ReadMessage(networkStream, "mpos_dependence_size")) == null)
				{
					return;
				}

				service.Dependencies = ProcessDependence(networkStream, Convert.ToInt32(clientMessage.Split(':')[1]), dir);
				service.Port = GenerateServicePort();

				FachadeDao.Instance.RpcServiceDao.Add(service);
				SentMessage(networkStream, "mpos_dependence_port:" + service.Port);

				ServiceController.Instance.StartServiceRpc(service);
				logger.Info("Service: " + service.Name + ", deployed on port: " + service.Port);
			}
			finally
			{
				Close(ref clientSocket, ref networkStream);
			}
		}