public List <string> ListFiles() { var protocol = new TCPProtocol(); try { var request = new ListFilesRequest(); //Me conecto al servidor de archivos protocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort); SendRemotingConnectionRequest(); //Envio pedido y obtengo respuesta var response = request.ListFiles(protocol); List <string> fileList = response.Data.Split(',').ToList(); fileList.Remove(fileList.Last()); CurrentStatus = "Listado recibido con exito."; return(fileList); } catch (Exception e) { CurrentStatus = "Ocurrio un error desconocido."; return(new List <string>()); } finally { protocol.Disconnect(); SendRemotingDisconnectionRequest(); } }
public void SyncServers() { var protocol = new TCPProtocol(); try { var request = new ListFilesRequest(); //Me conecto al servidor de archivos protocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort); SendRemotingConnectionRequest(); //Reutilizo este mensaje, cambiandole el CMD request.Cmd = CommandEnum.Backup; //Envio pedido var response = request.ListFiles(protocol); } catch { CurrentStatus = "Ocurrio un error."; } finally { protocol.Disconnect(); SendRemotingDisconnectionRequest(); } }
public void Listen(TcpListener tcpListener) { while (!_shouldStop) { var protocol = new TCPProtocol(); var clientName = String.Empty; protocol.Listen(tcpListener); try { var message = protocol.RecieveMessage(); clientName = message.ClientName; //Le comunico al servidor de conciliacion que un cliente se conecto. var remotingRequest = new ClientConnectionRequest() { ClientName = clientName }; _remotingService.SendMessage(remotingRequest); if (message.Header == MessageTypeEnum.REQ) { if (message.Cmd == CommandEnum.Download) { DownloadFile(protocol, (DownloadRequest)message); } else if (message.Cmd == CommandEnum.Upload) { UploadFile(protocol, (UploadRequest)message); } else if (message.Cmd == CommandEnum.ListFiles) { SendFileList(protocol, (ListFilesRequest)message); } else if (message.Cmd == CommandEnum.Backup) { SyncFiles(protocol, (ListFilesRequest)message); } } } catch (Exception ex) { Console.WriteLine("Ocurrio un error.", ex.Message); } finally { protocol.Disconnect(); //Le comunico al servidor de conciliacion que un cliente se desconecto. var remotingRequest = new ClientDisconnectionRequest() { ClientName = clientName }; _remotingService.SendMessage(remotingRequest); } } }
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 void SendFile(string pathArchivo) { var portocol = new TCPProtocol(); try { //Obtengo el archivo byte[] fileBytes = FileHelper.ReadFile(pathArchivo); var request = new UploadRequest(); request.ClientName = ClientData.Instance.ClientName; request.FileName = Path.GetFileName(pathArchivo); request.FileLength = fileBytes.LongLength; request.File = fileBytes; //Me conecto al servidor de archivos portocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort); SendRemotingConnectionRequest(); //Envio el archivo y obtengo respuesta var response = request.SendFile(portocol); //Le comunico al servidor de registro de pedi subir un archivo. var remotingRequest = new ClientUploadRequest() { ClientName = ClientData.Instance.ClientName, FileName = Path.GetFileName(pathArchivo) }; _remotingService.SendMessage(remotingRequest); if (response.Result == TransferResponseEnum.OK) { CurrentStatus = "Archivo subido con exito"; } else if (response.Result == TransferResponseEnum.FileExists) { CurrentStatus = "Error: El archivo ya existia en el servidor."; } else { CurrentStatus = "Ocurrio un error."; } } catch { CurrentStatus = "Ocurrio un error."; } finally { portocol.Disconnect(); SendRemotingDisconnectionRequest(); } }