/// <summary> /// Agrega una lista de archivos de un usuario de la red a la ventana /// </summary> /// <param name="netUser">El usuario dueño de la lista de archivo</param> /// <param name="fileList">La lista de archivos</param> public void addFileList(NetUser netUser, FileInformationList fileList) { if (treeView.InvokeRequired) { NetUserFilesCallback d = new NetUserFilesCallback(addFileList); this.Invoke(d, new object[] { netUser, fileList }); } else { removeFileList(netUser); FileInformation[] fileListArray = fileList.toArray(); lock (thisLock) { foreach (FileInformation file in fileListArray) { TreeNode fileNode = new TreeNode(file.Name + " (" + (file.Size / 1024) + " KB) " + " [" + netUser.Name + "]"); fileNode.ImageIndex = 0; fileNode.SelectedImageIndex = 0; NetUserFile netUserFile = new NetUserFile(); netUserFile.NetUser = netUser; netUserFile.FileInformation = file; fileNode.Tag = netUserFile; assignMenuStrip(ref fileNode, netUserFile); treeView.Nodes.Add(fileNode); } } } }
/// <summary> /// Convierte un paquete de bytes en las propiedades del mensaje /// </summary> /// <param name="messagePack">El paquete de bytes</param> public override void unPack(byte[] messagePack) { FileList = new FileInformationList(); int listSize = BitConverter.ToInt32(messagePack, 0); int i = 4; for (int n = 0; n < listSize; n++) { FileInformation fileInformation = new FileInformation(); byte[] id = new byte[16]; Array.Copy(messagePack, i, id, 0, 16); fileInformation.Id = new Guid(id); i += 16; fileInformation.Size = BitConverter.ToInt64(messagePack, i); i += 8; int nameSize = BitConverter.ToInt32(messagePack, i); i += 4; fileInformation.Name = Encoding.Unicode.GetString(messagePack, i, nameSize); i += nameSize; FileList.add(fileInformation); } }
/// <summary> /// Constructor parametrizado /// </summary> /// <param name="targetNetUser">El receptor de este mensaje</param> /// <param name="fileList">La lista de archivos compartidos</param> public FileListMessage(NetUser targetNetUser, FileInformationList fileList) : this() { this.TargetNetUser = targetNetUser; this.FileList = fileList; }