Esempio n. 1
0
        public void DownloadFile(string fileName)
        {
            var protocol = new TCPProtocol();

            try
            {
                string path = string.Format("{0}\\{1}", ClientData.Instance.FileRepository, fileName);

                var request = new DownloadRequest();
                request.ClientName = ClientData.Instance.ClientName;
                request.FileName   = fileName;
                request.Rest       = FileHelper.FileExists(path) ? FileHelper.ReadFile(path).LongLength : 0;

                //Me conecto al servidor de archivos
                protocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort);

                SendRemotingConnectionRequest();

                var response = request.DownloadFile(protocol, ClientData.Instance.FileRepository);

                //Le comunico al servidor de registro de pedi descargar un archivo.
                var remotingRequest = new ClientDownloadRequest()
                {
                    ClientName = ClientData.Instance.ClientName,
                    FileName   = fileName
                };
                _remotingService.SendMessage(remotingRequest);

                if (response.Result == TransferResponseEnum.OK)
                {
                    CurrentStatus = "Archivo descargado con exito";
                }
                else if (response.Result == TransferResponseEnum.FileDoesntExist)
                {
                    CurrentStatus = "Error el archivo que quiere descargar no existe. Actualize la lista de archivos.";
                }
                else if (response.Result == TransferResponseEnum.ConnectionError)
                {
                    CurrentStatus = "Ocurrio un error de conexion.";
                }
                else
                {
                    CurrentStatus = "Ocurrio un error desconocido.";
                }
            }
            catch
            {
                CurrentStatus = "Ocurrio un error desconocido.";
            }
            finally
            {
                protocol.Disconnect();
                SendRemotingDisconnectionRequest();
            }
        }
Esempio n. 2
0
 public ClientDownloadResponse NotifyDownloadRequest(ClientDownloadRequest message)
 {
     try
     {
         Logger.LogMessage(string.Format("Info: El cliente de nombre: {0} solicito la descarga del archivo: {1}", message.ClientName, message.FileName));
         CommunicationMQ.EnviarMensaje(CommunicationMQ.QueueComunicaciones, message, string.Format("Info: El cliente de nombre: {0} solicito la descarga del archivo: {1}", message.ClientName, message.FileName));
         return(new ClientDownloadResponse()
         {
             Cmd = CommandEnum.ClientDisconnection,
             Header = MessageTypeEnum.RES,
             Result = TransferResponseEnum.OK
         });
     }
     catch (Exception ex)
     {
         throw new Exception(string.Format("Error: no se pudo notificar la conexion: {0}", ex.Message));
     }
 }
        private void DownloadFile(TCPProtocol protocol, DownloadRequest request)
        {
            var response = new DownloadResponse();

            try
            {
                //Le comunico al servidor de conciliacion que un usuario pidio descargar un archivo.
                var remotingRequest = new ClientDownloadRequest()
                {
                    ClientName = request.ClientName,
                    FileName   = request.FileName
                };
                _remotingService.SendMessage(remotingRequest);


                byte[] archivo = null;


                response.Result = ServerData.Instance.FileExists(request.FileName) ? TransferResponseEnum.OK : TransferResponseEnum.FileDoesntExist;


                if (response.Result == TransferResponseEnum.OK)
                {
                    archivo             = FileHelper.ReadFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName));
                    response.FileLength = archivo.LongLength;
                }

                protocol.SendMessage(response);

                if (response.Result == TransferResponseEnum.OK)
                {
                    request = (DownloadRequest)protocol.RecieveMessage();

                    byte[] archivoAEnviar = new byte[archivo.LongLength - request.Rest];
                    Array.Copy(archivo, request.Rest, archivoAEnviar, 0, archivoAEnviar.LongLength);

                    protocol.SendFile(archivoAEnviar);
                }
                else
                {
                    throw new Exception("Error enviando archivo");
                }
            }
            catch (System.IO.FileNotFoundException e)
            {
                response.Result = TransferResponseEnum.FileDoesntExist;
                //Actualizo mi lista, por las dudas.
                ServerData.Instance.FileList = new List <string>();

                foreach (string pathArchivo in FileHelper.SearchFilesInLocation(ServerData.Instance.FileRepository))
                {
                    ServerData.Instance.FileList.Add(Path.GetFileName(pathArchivo));
                }

                //Envio respuesta.
                protocol.SendMessage(response);
            }
            catch (Exception ex)
            {
                response.Result = TransferResponseEnum.ConnectionError;

                protocol.SendMessage(response);
            }
        }