public ListFilesResponse ListFiles(TCPProtocol protocol) { try { ListFilesResponse response; //Envio mensaje pidiendo descargar archivo protocol.SendMessage(this); //Recibo respuesta response = (ListFilesResponse)protocol.RecieveMessage(); if (response.Result != TransferResponseEnum.OK) { return(response); } //Envio request nuevamente protocol.SendMessage(this); return(response); } catch (Exception ex) { throw new Exception("Error enviando mensaje " + ex.Message); } }
private void SendFileList(TCPProtocol protocol, ListFilesRequest request) { var response = new ListFilesResponse(); try { response.Cmd = CommandEnum.ListFiles; response.Result = TransferResponseEnum.OK; StringBuilder sb = new StringBuilder(); foreach (var file in ServerData.Instance.FileList) { sb.Append(file); sb.Append(","); } response.Data = sb.ToString(); response.FileLength = sb.Length; //Envio respuesta protocol.SendMessage(response); } catch (Exception ex) { response.Result = TransferResponseEnum.ConnectionError; protocol.SendMessage(response); } }
public DownloadResponse DownloadFile(TCPProtocol protocol, string repository) { try { DownloadResponse response; protocol.SendMessage(this); response = (DownloadResponse)protocol.RecieveMessage(); if (response.Result != TransferResponseEnum.OK) { return(response); } protocol.SendMessage(this); bool resp = protocol.RecieveFile(string.Format("{0}\\{1}", repository, this.FileName), Rest == 0, response.FileLength - this.Rest); response.Result = resp ? TransferResponseEnum.OK : TransferResponseEnum.Error; return(response); } catch (Exception ex) { throw new Exception("Error enviando mensaje " + ex.Message); } }
public void SyncRecieve(TcpListener tcpListener) { while (!_shouldStop) { var protocol = new TCPProtocol(); protocol.Listen(tcpListener); try { var mensaje = protocol.RecieveMessage(); if (mensaje.Header == MessageTypeEnum.REQ && mensaje.Cmd == CommandEnum.Backup) { //Recibo un req para listar archivos por este puerto, se que es un pedido de sync var response = new ListFilesResponse(); try { response.Cmd = CommandEnum.ListFiles; response.Result = TransferResponseEnum.OK; StringBuilder sb = new StringBuilder(); foreach (var file in ServerData.Instance.FileList) { sb.Append(file); sb.Append(","); } response.Data = sb.ToString(); response.FileLength = sb.Length; //Envio respuesta protocol.SendMessage(response); } catch (Exception ex) { response.Result = TransferResponseEnum.ConnectionError; protocol.SendMessage(response); } } else if (mensaje.Header == MessageTypeEnum.REQ && mensaje.Cmd == CommandEnum.Download) { this.DownloadFile(protocol, (DownloadRequest)mensaje); } } catch (Exception ex) { Console.WriteLine(string.Format("Error enviando datos {0}", ex.Message)); } } }
private void UploadFile(TCPProtocol protocol, UploadRequest request) { var response = new UploadResponse(); try { //Le comunico al servidor de conciliacion un usuario pidio subir un archivo. var remotingRequest = new ClientUploadRequest() { ClientName = request.ClientName, FileName = request.FileName }; _remotingService.SendMessage(remotingRequest); response.Result = ServerData.Instance.FileExists(request.FileName) ? TransferResponseEnum.FileExists : TransferResponseEnum.OK; protocol.SendMessage(response); if (response.Result == TransferResponseEnum.OK) { bool archivo = protocol.RecieveFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName), true, request.FileLength); response = new UploadResponse(); response.Result = (archivo) ? TransferResponseEnum.OK : TransferResponseEnum.Error; if (response.Result == TransferResponseEnum.OK) { ServerData.Instance.AddFile(request.FileName); } else { FileHelper.DeleteFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName)); } protocol.SendMessage(response); } else { Console.WriteLine("Error subiendo archivo"); } } catch (Exception ex) { FileHelper.DeleteFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName)); response.Result = TransferResponseEnum.ConnectionError; protocol.SendMessage(response); } }
public UploadResponse SendFile(TCPProtocol protocol) { try { UploadResponse response; //Envio mensaje pidiendo subir archivo protocol.SendMessage(this); //Recibo respuesta response = (UploadResponse)protocol.RecieveMessage(); if (response.Result != TransferResponseEnum.OK) { return(response); } //Envio el archivo protocol.SendFile(this.File); //Recibo respuesta response = (UploadResponse)protocol.RecieveMessage(); return(response); } catch (Exception ex) { throw new Exception("Error enviando mensaje " + ex.Message); } }
private void DownloadFile(TCPProtocol protocol, DownloadRequest request) { var response = new DownloadResponse(); try { 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 (Exception ex) { response.Result = TransferResponseEnum.ConnectionError; protocol.SendMessage(response); } }
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); } }