private void CommandAddContact(Connection Connection, Data dato) { string[] payloadSplitted = dato.Payload.Message.Split('|'); string login = payloadSplitted[0]; string contactToAdd = payloadSplitted[1]; bool ok = UsersContactsPersistenceHandler.GetInstance().AddContact(login, contactToAdd); string statusMessage = ok ? "SUCCESS" : "ERROR"; string message = contactToAdd + STATUS_DELIMITER + "0" + CONTACT_DELIMITER + statusMessage; Data retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_ADD_CONTACT, Payload = new MultiplePayload() { Message = message, Destination = login } }; foreach (var item in retDato.GetBytes()) { Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item)); Connection.WriteToStream(item); } }
private void CommandGetContactList(Connection Connection, Data dato) { string login = dato.Payload.Message; List <string> contacts = UsersContactsPersistenceHandler.GetInstance().GetContacts(login); StringBuilder message = new StringBuilder(); bool first = true; foreach (var item in contacts) { if (first) { first = false; } else { message.Append(CONTACT_DELIMITER); } message.Append(item).Append(STATUS_DELIMITER).Append("0"); } Data retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_CONTACT_LIST, Payload = new MultiplePayload() { Message = message.ToString(), Destination = login } }; foreach (var item in retDato.GetBytes()) { Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item)); Connection.WriteToStream(item); } Console.WriteLine("termina :CommandGetContactList"); }
public void SetupConn() // Setup connection and login { connection = new Connection("DNS", new TcpClient(DNSServer, DNSPort), new ReceiveEventHandler(), delegado); string payload = Settings.GetInstance().GetProperty("server.name", "rodrigo-nb") + ":" + Settings.GetInstance().GetProperty("server.ip", "127.0.0.1") + ":" + Settings.GetInstance().GetProperty("server.port", "2001") + ":" + Settings.GetInstance().GetProperty("server.transfers.port", "20001") + ":" + UsersContactsPersistenceHandler.GetInstance().Count; Data data = new Data() { Command = Command.REQ, OpCode = 3,//REQ_SERVER_CONNECT Payload = new Payload(payload) }; int cont = 0; foreach (var item in data.GetBytes()) { Console.WriteLine("line " + cont++ + " --->" + ConversionUtil.GetString(item)); log.Info("Enviando linea " + cont++ + " --->" + ConversionUtil.GetString(item)); connection.WriteToStream(item); } log.Info("End Register Server"); }
private void CommandGetFile(Connection connection, Data dato) { string[] payload = dato.Payload.Message.Split(new string[] { PIPE_SEPARATOR }, StringSplitOptions.None); string login = payload[0]; string owner = payload[1]; string hashfile = payload[2]; FileInfo fi = FileOperationsSingleton.GetInstance().GetFile(hashfile, login); Data retDato; if (fi == null) { retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_SEARCH_FILES, Payload = new Payload() { Message = "ERROR [wrong file or not found]" } }; } else { string port = Settings.GetInstance().GetProperty("server.transfers.port", "20001"); string ip = Settings.GetInstance().GetProperty("server.ip", "127.0.0.1"); long size = fi.Length; string message = login + PIPE_SEPARATOR + owner + PIPE_SEPARATOR + hashfile + PIPE_SEPARATOR + ip + PIPE_SEPARATOR + port + PIPE_SEPARATOR + size; retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_SEARCH_FILES, Payload = new Payload() { Message = message } }; } foreach (var item in retDato.GetBytes()) { Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item)); connection.WriteToStream(item); } }
private void CommandSearchFiles(Connection connection, Data dato) {//REQ07 // login + "|" + hashQuery + "|" + pattern; string[] payload = dato.Payload.Message.Split(new string[] { PIPE_SEPARATOR }, StringSplitOptions.None); string login = payload[0]; string queryHash = payload[1]; string pattern = payload[2]; List <FileObject> results = FileOperationsSingleton.GetInstance().SearchFilesMatching(pattern); StringBuilder message = new StringBuilder(); string destination = login + ARROBA_SEPARATOR + queryHash + ARROBA_SEPARATOR + Settings.GetInstance().GetProperty("server.name", "DEFAULT_SERVER"); bool first = true; foreach (var item in results) { if (first) { first = false; } else { message.Append(PIPE_SEPARATOR); } message.Append(item.ToNetworkString()); } string tmp = message.ToString(); Data retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_SEARCH_FILES, Payload = new MultiplePayload() { Message = tmp, Destination = destination } }; foreach (var item in retDato.GetBytes()) { Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item)); connection.WriteToStream(item); } }
private void SendReadyToReceiveFile(Connection clientConnection) { Data retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_UPLOAD_FILE, Payload = new Payload() { Message = MessageConstants.MESSAGE_SERVER_READY } }; foreach (var item in retDato.GetBytes()) { clientConnection.WriteToStream(item); } }
private void CommandCreateNewUser(Connection Connection, Data dato) { string login = dato.Payload.Message; bool ok = UsersContactsPersistenceHandler.GetInstance().RegisterNewUser(login); Data retDato = new Data() { Command = Command.RES, OpCode = OpCodeConstants.RES_CREATE_USER, Payload = new MultiplePayload() { Message = (ok? "SUCCESS" : "ERROR"), Destination = login } }; foreach (var item in retDato.GetBytes()) { Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item)); Connection.WriteToStream(item); } }