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(); } }
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); } }